Upgrade freetype to VER-2-10-1
Exempt-From-Owner-Approval: Upgrade library
Test: None
Change-Id: I2d49bf289d4db461879e023967e1a03cd112a7ad
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3f58337..e3ffb83 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
# CMakeLists.txt
#
-# Copyright 2013-2018 by
+# Copyright (C) 2013-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# Written originally by John Cary <cary@txcorp.com>
@@ -134,7 +134,7 @@
project(freetype C)
set(VERSION_MAJOR "2")
-set(VERSION_MINOR "9")
+set(VERSION_MINOR "10")
set(VERSION_PATCH "1")
# SOVERSION scheme: CURRENT.AGE.REVISION
@@ -234,12 +234,20 @@
endif ()
string(REPLACE "/undef " "#undef "
FTCONFIG_H "${FTCONFIG_H}")
-else()
+else ()
file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
FTCONFIG_H)
endif ()
-file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
- "${FTCONFIG_H}")
+
+set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
+if (EXISTS "${FTCONFIG_H_NAME}")
+ file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H)
+else ()
+ set(ORIGINAL_FTCONFIG_H "")
+endif ()
+if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H))
+ file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}")
+endif ()
# Create the options file
@@ -265,8 +273,16 @@
"/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1"
FTOPTION_H "${FTOPTION_H}")
endif ()
-file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h"
- "${FTOPTION_H}")
+
+set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
+if (EXISTS "${FTOPTION_H_NAME}")
+ file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H)
+else ()
+ set(ORIGINAL_FTOPTION_H "")
+endif ()
+if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H))
+ file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}")
+endif ()
file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h")
@@ -333,7 +349,7 @@
if (NOT DISABLE_FORCE_DEBUG_POSTFIX)
set(CMAKE_DEBUG_POSTFIX d)
-endif()
+endif ()
add_library(freetype
@@ -372,7 +388,7 @@
$<INSTALL_INTERFACE:include/freetype2>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- PRIVATE
+ PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/include)
@@ -456,7 +472,15 @@
string(REPLACE "%LIBS_PRIVATE%" "" # All libs support pkg-config
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
- file(WRITE ${PROJECT_BINARY_DIR}/freetype2.pc ${FREETYPE2_PC_IN})
+ set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc")
+ if (EXISTS "${FREETYPE2_PC_IN_NAME}")
+ file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN)
+ else ()
+ set(ORIGINAL_FREETYPE2_PC_IN "")
+ endif ()
+ if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN))
+ file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN})
+ endif ()
install(
FILES ${PROJECT_BINARY_DIR}/freetype2.pc
@@ -469,6 +493,7 @@
EXPORT freetype-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
FRAMEWORK DESTINATION Library/Frameworks
COMPONENT libraries)
install(
@@ -492,9 +517,9 @@
if (WIN32)
set(CPACK_GENERATOR ZIP)
-else()
+else ()
set(CPACK_GENERATOR TGZ)
-endif()
+endif ()
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers")
diff --git a/ChangeLog b/ChangeLog
index b6cb46b..6450a60 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1747 @@
+2019-07-01 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.10.1 released.
+ ==========================
+
+
+ Tag sources with `VER-2-10-1'.
+
+ * docs/VERSION.TXT: Add entry for version 2.10.1.
+
+ * README, Jamfile (RefDoc), src/base/ftver.rc,
+ 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.10.0/2.10.1/, s/2100/2101/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+ * builds/unix/configure.raw (version_info): Set to 23:1:17.
+ * CMakeLists.txt (VERSION_PATCH): Set to 1.
+
+ * include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.
+
+2019-06-26 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.
+
+ Reported by Armin Hasitzka.
+
+2019-06-16 Werner Lemberg <wl@gnu.org>
+
+ * src/tools/apinames.c: Formatting, minor edits.
+
+2019-06-16 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Disable hinting if no blue zones are available (#56450).
+
+ * src/autofit/afglobal.c (af_face_global_get_metrics): Start again
+ (with dummy hinter module) if no blue zones are present.
+
+ * src/autofit/aflatin.c (af_latin_metrics_init_blues): Change
+ signature to return error code.
+ If no blue zones are found, update `glyph_styles' array to hold
+ AF_STYLE_NONE_DFLT instead of the current style.
+ (af_latin_metrics_init): Return internal error code if no blue zones
+ are found.
+
+2019-06-16 Werner Lemberg <wl@gnu.org>
+
+ Towards better VMS support.
+
+ More to come.
+
+ * builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,
+ builds/vms/vmslib.dat: New files provided by Jouk Jansen
+ <joukj@hrem.nano.tudelft.nl>.
+
+ * builds/vms/ftconfig.h: Update, also from Jouk.
+
+2019-06-13 Werner Lemberg <wl@gnu.org>
+
+ * src/autofit/aflatin.c (af_latin_metrics_init_widths): Minor.
+
+2019-06-13 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Restore the span buffering for direct mode only.
+
+ The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be
+ enough to cover the entire scanline for simple glyphs in most cases:
+ each slightly slanted edge needs up to two spans, plus a filling span
+ in-between. This is not new, we used to do it before cb4388783cecc.
+
+ * src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'.
+ (gray_hline, gray_sweep): Implement the span buffering.
+ (gray_raster_render): Use negative `num_spans' to avoid the direct
+ mode.
+
+2019-06-12 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.
+
+ Fix a warning by adding a return value as in `TT_RunIns',
+ which should not be a compatibility issue.
+
+2019-06-11 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'.
+
+2019-06-11 Moazin Khatti <moazinkhatri@gmail.com>
+
+ [gzip] Add support for `gzip' encoded header.
+
+ * src/gzip/ftgzip.c (FT_Gzip_Uncompress): Modify the the call to
+ `inflateInit2' to enable support for `gzip' encoded headers.
+
+2019-06-10 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [type1,type42] Use `const' for string literals.
+
+ * include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.
+ * include/freetype/internal/t1types.h (T1_EncodingRec): Updated.
+ * src/psaux/psobjs.[ch] (ps_table_add): Updated.
+ * src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.
+ * src/type42/t42objs.c (T42_Open_Face): Updated.
+ * src/type42/t42parse.c (t42_parse_encoding): Updated.
+
+ * src/cff/cffobjs.c (cff_face_init): Minor.
+
+2019-06-10 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf,pcf] Use `const' for string literals.
+
+ * src/bdf/bdf.h (bdf_property_t): Updated `name'.
+ * src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,
+ _bdf_add_property,_bdf_ato*): Updated.
+ * src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.
+ * src/pcf/pcfread.c (pcf_intrpret_style): Ditto.
+
+2019-06-07 Philip Race <philip.race@oracle.com>
+
+ * src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.
+
+ Terminate loop at end of environment.
+
+2019-05-31 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Solidify VC2005 builds.
+
+ * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly
+ declare `_BitScanReverse' intrinsic.
+ * builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.
+
+2019-05-30 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
+
+ [sfnt] Separate WOFF sources and headers.
+
+ Move WOFF sources and headers to separate files.
+
+ * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,
+ src/sfnt/sfwoff.h: New files.
+
+ * include/freetype/internal/fttrace.h: Register `sfwoff.c'.
+
+ * include/freetype/internal/internal.h: Define
+ FT_INTERNAL_WOFF_TYPES_H.
+
+ * include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.
+
+ * include/freetype/internal/tttypes.h: Move out WOFF structures.
+
+ * src/sfnt/rules.mk: Add `sfwoff.c'.
+
+ * src/sfnt/sfnt.c: Include `sfwoff.c'.
+
+ * src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources.
+
+2019-05-30 Werner Lemberg <wl@gnu.org>
+
+ [base] Fix `make multi'.
+
+ Reported by Nikhil.
+
+ * src/base/fterrors.c: Include FT_INTERNAL_DEBUG_H.
+
+2019-05-29 Ben Wagner <bungeman@google.com>
+
+ [truetype] Fix copy-and-paste error (#56409).
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Use correct indices
+ into `unrounded' array for phantom points.
+
+2019-05-29 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix 32bit builds (#56404).
+
+ Patch suggested by Ben Wagner <bungeman@google.com>.
+
+ * src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove
+ harmful cast to unsigned type.
+
+2019-05-26 Ben Wagner <bungeman@google.com>
+
+ * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.
+
+2019-05-23 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Draw glyphs without deltas in variation font (#56374).
+
+ * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill
+ `unrounded' array.
+
+2019-05-21 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttinterp.c (opcode_name): Improve mnemonics.
+
+2019-05-16 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Actually scale varied CVT values.
+
+ Up to now, only the unscaled CVT values were varied; in other words,
+ the `CVAR' data was never used for bytecode hinting.
+
+ * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
+ function.
+ (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.
+
+2019-05-16 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Use 26.6 format for storing unscaled CVT values.
+
+ If `CVAR' data is applied to variation fonts, fractional values are
+ possible.
+
+ * include/freetype/internal/tttypes.h (TT_FaceRec): Change type of
+ `cvt' from `FT_Short' to `FT_Int32'.
+
+ * src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.
+ (tt_face_vary_cvt): Use it to update code to 26.6 format.
+
+ * src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6
+ format.
+
+ * src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6
+ format.
+
+2019-05-16 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'.
+
+ This fixes linear advance width values for spacing glyphs. Bug
+ introduced 2019-05-09.
+
+2019-05-16 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Avoid code duplication.
+
+ * src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this
+ function.
+ (tt_size_ready_bytecode): Updated.
+ * src/truetype/ttgload.c (tt_loader_init): Updated.
+
+2019-05-13 Jouk Jansen <joukj@hrem.nano.tudelft.nl>
+
+ * vms_make.com: Updated. Handle `bzip2' directory, too.
+
+2019-05-13 Werner Lemberg <wl@gnu.org>
+
+ * src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.
+
+2019-05-12 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Doh. Fix last commit to make it work.
+
+ Very embarassing :-)
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14701
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14705
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14710
+
+ * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add
+ argument; update all callers.
+ (TT_Process_Simple_Glyph): Use it. The `unrounded' array is active
+ for variation fonts only, thus also enclose related code with
+ `#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ... #endif' where
+ necessary.
+ Revert commit a113e5d from 2019-05-09, and don't use `extra_points2'
+ but allocate a temporary array.
+ Speed up the scaling of the `unrounded' array.
+
+ * src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type
+ conversions and rounding. The unsigned type must have more or equal
+ bits to the signed type.
+
+2019-05-09 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Increase precision of font variation (#54371).
+
+ This patch makes FreeType use font units in 26.6 format internally
+ instead of integers.
+
+ * src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.
+ (TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font
+ coordinates.
+ * src/truetype/ttgxvar.h: Updated.
+
+ * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use
+ `extra_points2' array to temporarily hold unrounded point
+ coordinates; use them to compute scaled coordinates and linear
+ advance width and height.
+ (load_truetype_code): Adjust similarly.
+
+2019-05-09 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Minor.
+
+2019-05-08 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Faster fractions.
+
+ * src/smooth/ftgrays.c (SUBPIXELS): Replace with...
+ (FRACT): A fractional coordinate macro to use in...
+ (gray_render_line, gray_render_scanline): ... here.
+
+2019-05-07 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/raster/ftraster.c (Draw_Sweep): Unbreak.
+
+2019-05-05 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/raster/ftraster.c: Clean-ups.
+
+2019-05-05 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'.
+
+2019-05-04 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/smooth/ftgrays.c (gray_render_line): Small shortcut.
+
+2019-05-04 Werner Lemberg <wl@gnu.org>
+
+ Various clang 8.0 static analyzer fixes.
+
+ Reported by Sender Ghost <lightside@gmx.com>.
+
+ * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner
+ case where `edge->first' could be NULL.
+
+ * src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of
+ `size'.
+
+ * src/raster/ftraster.c (Draw_Sweep): Catch a corner case where
+ `draw_right' might be NULL.
+
+ * src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for
+ `aadvance'.
+ Ensure `abearing' always hold a meaningful result.
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is
+ not NULL before accessing it.
+ * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary
+ test of `namedstyle'.
+
+ * src/type42/t42parse.c (t42_parser_done): Ensure
+ `parser->root.funcs.done' is not NULL before accessing it.
+
+2019-05-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Miscellaneous macro updates.
+
+ * src/base/ftoutln.c (SCALED): Updated.
+ * src/smooth/ftgrays.c (SCALED): Ditto.
+ (FLOOR, ROUND, CEILING): Removed.
+ * src/psaux/psfixed.h (cf2_fracToFixed): Updated.
+
+2019-05-02 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Tweak LCD filtering.
+
+ * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
+ Choose direction from bitmap's pixel_mode.
+ * include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):
+ Updated.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
+
+2019-05-02 Werner Lemberg <wl@gnu.org>
+
+ * vms_make.com: Updated (#56253).
+
+ Remove no longer existing directories (`autohint', `otlayout').
+ Update used base extensions.
+ Activate `autofit' module.
+ Add `gxvalid' module.
+ Update copyright notices.
+
+2019-04-29 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Simplify cubic Bézier flattening.
+
+ The previous implementation is correct but it is too complex.
+ The revised algorithm is based on the fact that each split moves
+ the control points closer to the trisection points on the chord.
+ The corresponding distances are good surrogates for the curve
+ deviation from the straight line.
+
+ This cubic flattening algorithm is somewhat similar to the conic
+ algorithm based the distance from the control point to the middle of
+ the chord. The cubic distances, however, decrease less predictably
+ but are easy enough to calculate on each step.
+
+ The new algorithm produces slightly larger number of splits, which is
+ compensated by its simplicity. The overall rendering performance is
+ improved by 1-2%. The larger number of splits does not necessarily
+ result in higher quality, which stays comparable.
+
+ * src/smooth/ftgrays.c (gray_render_cubic): Replace the split
+ condition.
+
+2019-04-26 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Bithacks and cosmetics.
+
+ * src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,
+ gray_render_conic, gray_convert_glyph_inner): Updated.
+
+2019-04-25 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Optimize Bézier bisections.
+
+ This change makes bisections faster by 20-30%. When inlined into
+ `gray_render_cubic', this makes the function faster by 10% and is
+ noticeable in the overall rendering performance.
+
+ * src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and
+ refactor.
+ * src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.
+ * src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.
+ * src/base/ftbbox.c (cubic_peak): Use shifts.
+
+2019-04-23 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.
+
+ Found by clang 8.0's static analyzer and reported by Sender Ghost
+ <lightside@gmx.com>.
+
+2019-04-23 Werner Lemberg <wl@gnu.org>
+
+ [base] Fix thinko in previous commit.
+
+ * src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not
+ target pitch.
+
+ Problem reported by Sender Ghost <lightside@gmx.com>.
+
+2019-04-22 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.
+
+ Problem reported by Sender Ghost <lightside@gmx.com>.
+
+2019-04-22 Werner Lemberg <wl@gnu.org>
+
+ Fix return value of `FT_Set_Named_Instance' (#56186).
+
+ * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle
+ internal return value -1 of `TT_Set_Var_Design'.
+
+2019-04-18 Werner Lemberg <wl@gnu.org>
+
+ [pcf] Fix handling of undefined glyph (#56067).
+
+ This commit fixes the changes from 2018-07-21, which broke charmap
+ iteration. We now add the default character as a new glyph with
+ index 0, thus increasing the number of glyphs by one (as before).
+
+ * src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial
+ glyph with index 0.
+ Limit number of elements to 65534.
+ (pcf_get_bitmaps): Ditto.
+ Unify two loops into one; this avoids allocation of an intermediate
+ array.
+ (pcf_get_encodings): Don't flip indices but copy glyph metrics of
+ default character to index 0.
+ Also handle invalid default character.
+
+ * docs/CHANGES: Updated.
+
+2019-04-15 Minmin Gong <gongminmin@msn.com>
+
+ * CMakeLists.txt: Avoid rewriting of unchanged configuration files.
+
+ Reported as
+
+ https://savannah.nongnu.org/patch/index.php?9755
+
+2019-04-15 JDG <JonathanG@iQmetrix.com>
+
+ * src/tools/apinames.c (main): Fix error message.
+
+ Reported as
+
+ https://savannah.nongnu.org/patch/?9796
+
+2019-04-11 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Fix segfault in direct mode (#56092).
+
+ * src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for
+ direct mode.
+ * src/smooth/ftgrays.c (gray_raster_render): Use it.
+
+2019-04-06 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).
+
+ This is for Visual Studio 2019 on ARM.
+
+2019-04-06 Werner Lemberg <wl@gnu.org>
+
+ For distribution, replace `.tar.bz2' with `.tar.xz' bundles.
+
+ * builds/toplevel.mk (build): Do it.
+
+ * README, docs/CHANGES, docs/release: Updated.
+
+2019-04-06 Antony Lee <anntzer.lee@gmail.com>
+
+ Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'.
+
+ * include/freetype/freetype.h (FT_Get_Name_Index),
+ include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),
+ include/freetype/internal/services/svgldict.h
+ (FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),
+ src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c
+ (sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),
+ src/type42/t42drivr.c (t42_get_name_index): Add `const' to second
+ argument.
+
+2019-03-31 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [cff] Fix boundary checks.
+
+ 642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically
+ allocated memory when parsing CFF files with the "old" engine. Bounds
+ checks have never been updated, however, leading to pointless
+ comparisons of pointers in some cases. This commit presents a
+ solution for bounds checks in the CFF module with an extended logic
+ for the "old" engine while staying as concise as possible for the
+ "new" one.
+
+ * src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and
+ the additional field `t2_strings' within `CFF_ParserRec'.
+
+ * src/cff/cffparse.c (cff_parser_within_limits): Move all boundary
+ checks into this new function and update the rest of `cffparse.c' to
+ use it.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12137
+
+2019-03-20 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Fix Mongolian blue zone characters.
+
+ * src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters
+ to get medial forms for some Mongolian characters.
+ * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+2019-03-19 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Add support for Mongolian script.
+
+ As a de-facto standard, layouts using this script are constructed
+ horizontally line by line, then the lines are rotated clockwise for
+ vertical display.
+
+ * src/autofit/afblue.dat: Add blue zone data for Mongolian.
+ * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+ * src/autofit/afscript.h: Add Mongolian standard characters.
+
+ * src/autofit/afranges.c, src/autofit/afstyles.h: Add Mongolian
+ data.
+
+2019-03-15 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.10.0 released.
+ ==========================
+
+
+ Tag sources with `VER-2-10-0'.
+
+ * docs/VERSION.TXT: Add entry for version 2.10.0.
+ * docs/CHANGES: Updated.
+
+ * README, Jamfile (RefDoc), src/base/ftver.rc,
+ 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.9.1/2.10.0/, s/291/2100/.
+
+ * include/freetype/freetype.h (FREETYPE_MINOR): Set to 10.
+ (FREETYPE_PATCH): Set to 0.
+
+ * builds/unix/configure.raw (version_info): Set to 23:0:17.
+ * CMakeLists.txt (VERSION_MINOR): Set to 10.
+ (VERSION_PATCH): Set to 0.
+
+ * builds/toplevel.mk (version, winversion): Since the minor version
+ number has two digits now, never omit the patch number. We would
+ get ambiguous zip file names otherwise.
+ (dist): Remove remnants of `docmaker' tool.
+ (do-dist): Remove unused intermediate files.
+
+ * src/cff/cffparse.c (destrict_c2s_item): Guard function with
+ CFF_CONFIG_OPTION_OLD_ENGINE macro.
+
+2019-03-07 Andrei Alexeyev <0x416b617269@gmail.com>
+ Werner Lemberg <wl@gnu.org>
+
+ Fix invalid function pointer casts.
+
+ This change should allow Freetype to work on WASM/Emscripten without
+ needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.
+
+ * src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.
+
+ * src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
+ parse_expansion_factor, parse_font_name): Return `void', not
+ `FT_Error'.
+
+ * include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
+ Fix signature.
+
+2019-03-05 Werner Lemberg <wl@gnu.org>
+
+ [base] Handle numeric overflow (#55827).
+
+ * src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'.
+
+2019-03-05 Sebastian Rasmussen <sebras@gmail.com>
+
+ [psaux] Fix use of uninitialized memory (#55832).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString): The call to
+ `cf2_arrstack_setCount' may fail because the allocator ran out of
+ memory. When this happens the stack is still written to before the
+ error condition is checked. This means that FreeType writes outside
+ of allocated memory. This commit moves the error check prior to the
+ stack assignment, hence the function now properly returns with an
+ error condition.
+
+2019-02-23 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.
+
+ The function only provided a framework without an actual
+ implementation, which this commit removes.
+
+2019-02-23 Werner Lemberg <wl@gnu.org>
+
+ * src/tools/update-copyright-year: Insert `(C)'.
+
+2019-02-21 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [truetype] Mask numeric overflows.
+
+ * src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):
+ Mask numeric overflows.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11681
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11734
+
+2019-02-21 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [psaux] Mask numeric overflow.
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric
+ overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13041
+
+2019-02-16 Wink Saville <wink@saville.com>
+
+ * src/autofit/afwarp.h (af_warper_compute): Fix declaration.
+
+2019-02-02 Nikolaus Waxweiler <madigens@gmail.com>
+
+ [truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.
+
+ Instead of setting typo or win metrics as the new `FT_Face' metrics
+ indiscriminately, apply only typo deltas to the currently active
+ `FT_Face' metrics. This prevents line height differences when the
+ default outlines were used as the regular face and instances for
+ everything else, for example.
+
+ * src/truetype/ttgxvar.c (tt_apply_mvar): Implement.
+
+2019-02-02 Nikolaus Waxweiler <madigens@gmail.com>
+
+ [sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.
+
+ If the `OS/2' table exists and `fsSelection' bit 7
+ (USE_TYPO_METRICS) is set, use the `sTypo*' set of values to compute
+ the `FT_Face's ascender, descender, and height. Otherwise, fall
+ back to old behavior.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): Implement.
+
+2019-01-18 John Tytgat <John.Tytgat@esko.com>
+
+ [sfnt] Handle TT fonts having two PostScript font names (#55471).
+
+ * src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any
+ other language found for PostScript font names.
+
+2019-01-08 Chris Liddell <chris.liddell@artifex.com>
+
+ [psaux] Fix closepath (#55414).
+
+ All of the Type 1 path building is done with code common to the
+ revised CFF engine, with the exception of closepath, which was still
+ calling ps_builder_close_contour(), thus previously cached segments
+ were not always written to the path, and glyph corruption, or even
+ invalid outlines were possible.
+
+ * src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>:
+ Switch to calling `cf2_glyphpath_closeOpenPath'.
+
+2018-12-29 Werner Lemberg <wl@gnu.org>
+
+ * src/autofit/aflatin2.c: Some fixes from `aflatin.c' (#55310).
+
+2018-12-25 Werner Lemberg <wl@gnu.org>
+
+ * src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11915
+
+2018-12-12 Werner Lemberg <wl@gnu.org>
+
+ [gxvalid] Fix compiler warnings.
+
+ * src/gxvalid/gxvjust.c (gxv_just_check_max_gid),
+ src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED'.
+
+2018-12-11 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test.
+
+ `control_len' only gets its value from `n_ins' (and vice versa),
+ which is always read as `unsigned short' and thus can't be larger
+ than 0xFFFF.
+
+2018-12-04 Werner Lemberg <wl@gnu.org>
+
+ [bdf] Ignore data after `ENDFONT'.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10798
+
+ * src/bdf/bdflib.c (_bdf_parse_end): New function.
+ (_bdf_parse_glyphs): Switch to `_bdf_parse_end' after `ENDFONT' has
+ been encountered.
+
+2018-12-02 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/visualc/freetype.dsp: Dust off.
+
+2018-11-27 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/vc2010/freetype.vcxproj: Simplify.
+
+2018-11-27 Chris Liddell <chris.liddell@artifex.com>
+
+ [type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls.
+
+ For multiple master fonts, common usage (in Postscript) is to modify
+ the WeightVector of an existing font instance, this addition
+ supports that use.
+
+ * include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector,
+ FT_Get_MM_WeightVector): New API functions.
+
+ * include/freetype/internalservices/svmm.h
+ (FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New
+ function types.
+ (MultiMasters): Add `set_mm_weightvector' and `get_mm_weightvector'
+ members.
+ (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
+
+ * src/cffcffdrivr.c (cff_set_mm_weightvector,
+ cff_get_mm_weightvector): New functions.
+ (cff_service_multi_masters): Register them.
+
+ * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
+ This driver doesn't use the new interface.
+
+ * src/type1/t1load.c (T1_Set_MM_WeightVector,
+ T1_Get_MM_WeightVector): New functions.
+ * src/type1/t1driver.c (t1_service_multi_masters): Register them.
+ * src/type1/t1load.h: Updated.
+
+2018-11-27 Ben Wagner <bungeman@google.com>
+
+ [cff] Fix compiler warning (#55105).
+
+ * src/cff/cffparse.c (cff_parser_run): Guard label only used if
+ CFF_CONFIG_OPTION_OLD_ENGINE is active.
+
+2018-11-27 Ben Wagner <bungeman@google.com>
+
+ [truetype] Fix numeric overflow (#55103).
+
+ * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.
+
+2018-11-25 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [builds] Belated DLL support with vc2002-vc2008.
+
+ The solution and project files should be automatically upgraded for
+ the approriate Visual C++ version.
+
+ * builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades.
+ * builds/windows/visualc/index.html: Document the change.
+ * builds/windows/vc2005, builds/windows/vc2008: Removed as redundant.
+
+2018-11-22 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ * src/cff/cffparse.c: Please the compiler.
+
+2018-11-22 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [cff] Fix memory overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9869
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10869
+
+ * src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store
+ evaluated T2 charstrings in separately allocated memory.
+
+2018-11-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it.
+
+2018-11-10 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Placeholder only for library-enabled LCD filtering.
+
+ * src/smooth/ftsmooth.c (ft_smooth_init): Add disabled
+ `FT_Library_SetLcdFilter' call.
+
+2018-11-09 Young Xiao <yangx92@hotmail.com>
+
+ [psaux] Add safety guard (#54985).
+
+ * src/psaux/psobjs.c (cff_builder_close_contour): Do it.
+
+2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/unix/configure.raw: Require `windows.h' for windres.
+
+2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [ftstroke] Fix unpredictable failures (#54986).
+
+ * src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check.
+
+2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [ftstroke] Fix unpredictable failures (#54976).
+
+ * src/base/ftstroke.c (ft_sroke_border_close): Set the start tags.
+
+2018-11-07 Ben Wagner <bungeman@google.com>
+
+ [truetype] Fix VF check from 2018-09-12 (#54973).
+
+ * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct
+ offsets for estimates.
+
+2018-11-06 Werner Lemberg <wl@gnu.org>
+
+ [pshinter] Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11242
+
+ * src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it.
+
+2018-11-06 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Fix timeout in old CFF engine.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11260
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ <cff_op_sqrt> [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless
+ loop.
+
+2018-11-04 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttgxvar.c: Use enum definitions.
+
+2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition.
+
+2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks.
+
+2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Revert due to specs: [truetype] Speed up variation IUP.
+
+2018-11-02 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.
+
+ Reported and tested by Behdad.
+
+2018-11-02 Shailesh Mistry <shailesh.mistry@hotmail.co.uk>
+
+ [autofit] Prevent SEGV.
+
+ See
+
+ https://bugs.ghostscript.com/show_bug.cgi?id=697545
+
+ for more details on how the bug was found.
+
+ * src/autofit/afloader.c (af_loader_load_glyph): Propagate error
+ code.
+
+2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [truetype] Speed up variation IUP.
+
+ * src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial
+ snapping to the same position from true interpolation.
+
+2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/type1/t1load.c (t1_set_mm_blend): Optimized.
+
+2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.
+
+2018-10-29 Werner Lemberg <wl@gnu.org>
+
+ [base] Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11080
+
+ * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG'.
+
+2018-10-29 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10988
+
+ * src/cff/cffparse.c (cff_parser_run)
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG'.
+
+2018-10-27 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [sfnt] Make `head' timestamps unsigned.
+
+ It's been more than 2^31 seconds since 1904.
+
+ * include/freetype/tttables.h (TT_Header): Change field types.
+ * src/sfnt/ttload.c (tt_face_load_generic_header): Updated.
+
+2018-10-27 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Revert: Align FreeType with standard C memory management.
+
+2018-10-27 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Fix numeric overflow.
+
+ Triggered by
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11157
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_blend>
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow.
+
+2018-10-20 Werner Lemberg <wl@gnu.org>
+
+ Avoid endless loop while tracing (#54858).
+
+ * src/type1/t1load.c (parse_buildchar): Guard tracing stuff with
+ FT_DEBUG_LEVEL_TRACE.
+
+2018-10-17 David Demelier <markand@malikania.fr>
+
+ * CMakeLists.txt: Specify `RUNTIME DESTINATION'.
+
+ This is needed for DLL builds.
+
+2018-10-07 Werner Lemberg <wl@gnu.org>
+
+ A missing Unicode cmap is not a fatal error.
+
+ This is a follow-up to the previous commit.
+
+ * src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c
+ (sfnt_load_face), src/type1/t1objs.c (T1_Face_Init),
+ src/type42/t42objs.c (T42_Face_Init): Implement it.
+
+2018-10-07 Werner Lemberg <wl@gnu.org>
+
+ Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).
+
+ * src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c
+ (t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init):
+ Check `unicodes_init' field.
+
+2018-10-03 Werner Lemberg <wl@gnu.org>
+
+ [ftgrays] Fix typo in stand-alone mode (#54771).
+
+ * src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ &&
+ FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT'.
+
+2018-10-02 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Fix segfault.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10768
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ <cff_op_callothersubr> [CFF_CONFIG_OPTION_OLD_ENGINE]: Check
+ argument.
+
+2018-10-02 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10740
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT.
+
+2018-10-02 Werner Lemberg <wl@gnu.org>
+
+ [pshinter] Handle numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10550
+
+ * src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric
+ overflow.
+
+2018-09-27 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Align FreeType with standard C memory management.
+
+ * include/freetype/ftsystem.h: Include FT_TYPES_H.
+ (*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments.
+ * src/raster/ftmisc.h: Ditto.
+
+ * builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c,
+ * builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc):
+ Use size_t for the size arguments.
+
+ * src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use
+ FT_Offset, aka size_t, for the size arguments.
+
+2018-09-25 Werner Lemberg <wl@gnu.org>
+
+ Fix handling of `FT_Bool'.
+
+ Before this commit we had code like
+
+ (FT_Bool)( globals->glyph_styles[gindex] & 0x8000)
+
+ Since `FT_Bool' is defined to be an `unsigned char', the code
+ evaluated to something like
+
+ (unsigned char)( 0x8532 & 0x8000)
+
+ which in turn expanded to
+
+ (unsigned char)( 0x8000)
+
+ and finally yielded 0x00 – i.e., false – not as expected.
+
+ Problem reported and analyzed by Tony Smith <tony.smith@macro4.com>.
+
+ * include/freetype/fttypes.h (FT_BOOL): Add a comparison against
+ zero so that we always have a Boolean expression.
+
+ */*: Replace castings to `FT_Bool' with calls to `FT_BOOL' where
+ possible.
+
+2018-09-23 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf] Speed up charmap access.
+
+ This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.
+
+ * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search
+ with continuous prediction.
+
+2018-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Another tweak.
+
+ This one should be clearer. When the rounded monochrome bbox collapses
+ we add a pixel that covers most if not all original cbox.
+
+2018-09-21 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Further tweak.
+
+2018-09-21 Ben Wagner <bungeman@google.com>
+
+ Improve auto-hinter handling of bitmap fonts (#54681).
+
+ For bitmap fonts, `FT_Load_Glyph' should either return an error or
+ not set the format to `FT_GLYPH_FORMAT_OUTLINE'. However, in this
+ case `FT_Load_Glyph' calls into the auto-hinter which calls back
+ into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which
+ marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path
+ (even though it doesn't have any path). It appears that the
+ auto-hinter should not be called when the face doesn't have
+ outlines. The current test for using the auto-hinter in
+ `FT_Load_Glyph' checks whether the driver supports scalable
+ outlines, but not if the face supports scalable outlines.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have
+ scalable outlines.
+
+2018-09-21 Werner Lemberg <wl@gnu.org>
+
+ [raster] Fix disappearing vertical lines (#54589).
+
+ * src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case
+ where both left and right outline exactly pass pixel centers.
+
+2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Tiny rounding tweak.
+
+ This adds pixels in case a contour goes through the center
+ and they need to be turned on in the b/w rasterizer.
+
+2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [pcf] Replace charmap implementation.
+
+ PCF comes with charmap lookup table, aka PCF encodings. Using it
+ directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times
+ faster than the original BDF-like binary searches.
+
+ * src/pcf/pcf.h (PCF_EncodingRec): Removed.
+ (PCF_FaceRec): Remove `nencodings' and `encodings'.
+ * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.
+ * src/pcf/pcfread.c (pcf_get_encodings): Store data differently.
+
+2018-09-20 Werner Lemberg <wl@gnu.org>
+
+ [base] Remove unused function `FT_GlyphLoader_CopyPoints'.
+
+ * include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c
+ (FT_GlyphLoader_CopyPoints): Do it.
+
+2018-09-19 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [pcf] Prepare to replace charmap implementation.
+
+ * src/pcf/pcf.h (PCF_FaceRec): Updated to include...
+ (PCF_EncRec): ... this new structure to store charmap geometry.
+
+ * src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.
+
+2018-09-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Remove unused fields.
+
+ * src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'.
+ * src/bdfdrvr.h (BDF_FaceRec): Ditto.
+ * src/winfonts/winfnt.h (FNT_FaceRec): Ditto.
+
+2018-09-17 Werner Lemberg <wl@gnu.org>
+
+ [pshinter] Handle numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10396
+
+ * src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.
+ (psh_blues_snap_stem): Mask numeric overflow.
+
+2018-09-13 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Some fixes for VF checks.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10317
+
+ * src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory
+ frame if we have invalid glyph variation data offsets.
+ (tt_face_vary_cvt): Protect against missing `tuplecoords' array.
+ Fix typo.
+
+2018-09-13 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit.
+
+2018-09-13 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10316
+
+2018-09-12 John Tytgat <John.Tytgat@esko.com>
+
+ [sfnt] Better PS name handling (#54629).
+
+ * src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.
+ (get_win_string, get_apple_string): Return NULL when the PostScript
+ font name characters is not according to specification.
+ (get_win_string): Make trace output work if the high byte if
+ non-zero.
+ (sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred
+ Win PS name (when there is also an Apple PS name); change this into
+ a fallback to Apple PS name in case the Win PS name is invalid.
+
+2018-09-12 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Improve VF check.
+
+ Triggered by
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10255
+
+ * src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check
+ for `tupleCount'.
+
+2018-09-12 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'.
+
+2018-09-10 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ * src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10215
+
+2018-09-09 Ben Wagner <bungeman@google.com>
+
+ * builds/freetype.mk (refdoc-venv): Ensure python version (#54631).
+
+2018-09-07 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix assertion failure.
+
+ Triggered by
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10212
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Reintroduce
+ `opened_frame' (removed in a change from 2018-08-26) to handle
+ deallocation of the second frame.
+
+2018-09-05 Werner Lemberg <wl@gnu.org>
+
+ Synchronize `ftdebug.c' files.
+
+ * builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
+ builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.
+
+2018-09-05 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
+
+ Add documentation guidelines file.
+
+ * docs/DOCGUIDE: New file.
+
+2018-09-04 Werner Lemberg <wl@gnu.org>
+
+ * devel/ftoption.h: Synchronize with master `ftoption.h'.
+
+2018-09-03 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
+
+ [docwriter] Don't break code snippets accross lines.
+
+ Reported as
+
+ https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html
+
+ * docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
+ Add rule `white-space'.
+
+2018-09-03 Werner Lemberg <wl@gnu.org>
+
+ */*: s/PSNames/psnames/.
+
+ Only tracing messages are affected.
+
+2018-09-03 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Fix heap buffer overflow in CPAL handling.
+
+ * src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
+ (tt_face_load_cpal): Updated.
+
+2018-09-01 Werner Lemberg <wl@gnu.org>
+
+ Remove `FT_Outline_{New,Done}_Internal'.
+
+ These public API functions(!) were always undocumented and have
+ escaped all clean-up efforts until now.
+
+ * include/freetype/ftoutln.h (FT_Outline_New_Internal,
+ FT_Outline_Done_Internal): Removed.
+
+ * src/base/ftoutln.h (FT_Outline_New_Internal,
+ FT_Outline_Done_Internal): Merge into...
+ (FT_Outline_New, FT_Outline_Done): ... these functions.
+
+ * docs/README: Updated.
+
+2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.
+
+2018-08-31 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [errors] Refine the macro logic surrounding `FT_Error_String'.
+
+ * include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
+ FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
+ checking it and introduce a new macro that takes proper care of
+ multiple-inclusion protection.
+
+2018-08-31 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls.
+
+2018-08-31 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftdebug.c (FT_Throw): Reduce chattiness.
+
+2018-08-31 Werner Lemberg <wl@gnu.org>
+
+ * src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.
+
+2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Consolidate bitmap presetting and size assessment.
+
+ * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
+ Change return type.
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
+ size assessment.
+
+ * src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
+ rendering of enourmous or far-fetched outlines.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
+
+2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.
+
+2018-08-30 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [errors] Introduce a macro to control `FT_Error_String'.
+
+ * devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),
+ include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):
+ New macro.
+
+2018-08-30 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ [errors] Introduce `FT_Error_String'.
+
+ * include/freetype/fterrors.h (FT_Error_String),
+ src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.
+
+ * src/base/ftbase.c, src/base/Jamfile (_source),
+ src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.
+
+ * src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.
+
+2018-08-30 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Trace `before' and `after' edges of strong points.
+
+ * src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
+ `before' and `after'.
+
+ * src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
+ function.
+ (af_glyph_hints_dump_points): Trace `before' and `after' edges.
+ (af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
+ `before' and `after' information.
+
+2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Overflow-resistant bitmap presetting.
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.
+
+2018-08-29 Armin Hasitzka <prince.cherusker@gmail.com>
+
+ Fix numeric overflows.
+
+ * src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,
+ psh_hint_table_find_strong_points): Fix numeric overflows.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10083
+
+2018-08-29 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix handling of `roll' op in old engine.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10080
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as
+ documented in the specification.
+
+2018-08-26 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.
+
+2018-08-26 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
+
+ * configure: Copy assets required by docwriter.
+
+ Copy directory `docs/reference/markdown' when FreeType is compiled in a
+ different directory.
+
+ Fixes `make refdoc' if builddir != srcdir.
+
+ Reported as
+
+ https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html
+
+2018-08-26 Werner Lemberg <wl@gnu.org>
+
+ * src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10057
+
+2018-08-26 Werner Lemberg <wl@gnu.org>
+
+ Minor tracing adjustments.
+
+ * src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):
+ Trace.
+
+ * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.
+
+2018-08-26 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Avoid nested frames.
+
+ Triggered by
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10054
+
+ * src/truetype/ttgload.c (load_truetype_glyph): Don't use variable
+ `opened_frame' to trace whether a frame must be closed at the end of
+ function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which
+ gets called for space glyphs) uses a frame by itself. Instead,
+ close the frame after loading the header, then use another frame for
+ the remaining part of the glyph later on.
+
+ Also avoid calling `tt_get_metrics' twice under some circumstances.
+
+2018-08-26 Werner Lemberg <wl@gnu.org>
+
+ Various minor clean-ups.
+
+ * src/base/ftapi.c: Remove. Unused.
+ * src/base/Jamfile (_sources): Updated.
+
+ * src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant
+ code.
+
+2018-08-25 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
+
+ Convert documentation markup to Markdown.
+
+ It is the result of a GSoC 2018 project; this separate ChangeLog
+ commit covers the last four commits
+
+ ae5d1a4cec37557f31aec270332cfe886a62f9a0
+ 53c69ce04faed3dcc68ca0f54cb8d703d8babf69
+ 195728d5ba38f34fb2c2c20807c01656f2f59b66
+ c962db28ea59225f0105c03d907d4a9b71765687
+
+ * docs/reference/markdown/images/favico.ico,
+ docs/reference/markdown/javascripts/extra.js,
+ docs/reference/markdown/stylesheets/extra.css: New files.
+
+ * docs/reference/.gitignore, docs/reference/README: Updated.
+
+ * src/tools/docmaker/*: Removed. It has been replaced with
+ `docwriter', a python package available at
+
+ https://pypi.org/project/docwriter/
+
+ * Jamfile: Updated.
+ * builds/ansi/ansi-def.mk, builds/beos/beos-def.mk,
+ builds/dos/dos-def.mk, builds/os2/os2-def.mk (BIN),
+ builds/unix/unixddef.mk, builds/windows/win32-def.mk: New variable.
+
+ * builds/unix/configure.raw: Check for `python' and `pip'.
+ If not present, warn that `make refdoc' will fail.
+ * builds/unix/unix-def.in (PYTHON, PIP, BIN): New variables.
+
+ * builds/freetype.mk (PYTHON, PIP, VENV_NAME, VENV_DIR, ENV_PYTHON,
+ ENV_PIP): New variables.
+ (refdoc): Updated.
+ (refdoc-venv): New target.
+ (.PHONY): Updated.
+
+2018-08-23 Werner Lemberg <wl@gnu.org>
+
+ Add macros for handling over-/underflowing `FT_Int64' values.
+
+ * include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,
+ MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.
+
+ * src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use
+ `SUB_INT64' and `MUL_INT64'.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10028
+
+2018-08-22 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Improve legibility of `glyf' parsing.
+
+ * src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,
+ Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,
+ OVERLAP_SIMPLE): New macros.
+ (TT_Load_Simple_Glyph): Use new macros to make code more readable.
+ Remove useless adjustment of `outline->tags' elements.
+
+2018-08-21 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9981
+
+2018-08-18 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Avoid slow PS font parsing in case of error.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9955
+
+ * src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even
+ in case of error to avoid potential re-scanning.
+
+2018-08-18 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix heap buffer overflow in old engine.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9967
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ <cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be
+ non-zero.
+
+2018-08-16 Young Xiao <yangx92@hotmail.com>
+
+ * builds/mac/ftmac.c (parse_fond): Fix buffer overrun.
+
+ Reported as bug #54515, duplicate of #43540.
+
+2018-08-16 Werner Lemberg <wl@gnu.org>
+
+ * builds/*/ftsystem.c (FT_COMPONENT): Updated also.
+
+2018-08-15 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf] Don't track duplicate encodings.
+
+ There is no harm except some umbiguity in broken fonts with duplicate
+ encodings.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.
+ (_bdf_parse_t): Remove large `have' bitfield.
+
+2018-08-15 Werner Lemberg <wl@gnu.org>
+
+ Don't use `trace_' prefix for FT_COMPONENT arguments.
+
+ * include/freetype/internal/ftdebug.h (FT_TRACE_COMP,
+ FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix.
+ (FT_TRACE): Use `FT_TRACE_COMP'.
+
+ */* (FT_COMPONENT): Updated.
+
+2018-08-14 Werner Lemberg <wl@gnu.org>
+
+ Use formatting string in FT_TRACEX calls for non-simple arguments.
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ <cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>:
+ Do it.
+
+ * src/psaux/pshints.c (cf2_hintmap_build): Ditto.
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
+ cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,
+ cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto.
+
+ * src/truetype/ttinterp.c (TT_RunIns): Ditto.
+
+2018-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf] Remove unused fields.
+
+ * src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified',
+ which were set but never used.
+ * src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):
+ Updated accordingly.
+
+2018-08-14 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix another segv in old engine.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9872
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in
+ dictionaries.
+
+2018-08-14 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix missing error handling.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9865
+
+ * src/psaux/cffparse.c (cff_parser_run)
+ [CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of
+ `parse_charstrings_old'.
+
+2018-08-14 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf] Remove unused overflow storage.
+
+ * src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.
+ (bdf_font_t): Remove `overflow' field.
+ * src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing.
+
+2018-08-14 Werner Lemberg <wl@gnu.org>
+
+ [cff] Fix segv in old engine.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9864
+
+ * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
+ <cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's
+ `random' field directly if parsing dictionaries.
+
+2018-08-13 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [bdf] Use unsigned types.
+
+ * src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'.
+ (bdf_font_t): Unsign `default_char'.
+ * src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'.
+
+ * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,
+ _bdf_parse_start): Updated accordingly.
+ * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.
+
+2018-08-13 Werner Lemberg <wl@gnu.org>
+
+ * src/type42/t42parse.c (t42_parse_sfnts): One more format check.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9832
+
+2018-08-11 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9811
+
+2018-08-10 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.
+
2018-08-10 Ben Wagner <bungeman@google.com>
* src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).
@@ -77,7 +1821,7 @@
* src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
`value'.
- * src/pcf/pcfread.c (pcf_get_propeerties, pcf_load_font): Updated
+ * src/pcf/pcfread.c (pcf_get_properties, pcf_load_font): Updated
parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
RESOLUTION_X and RESOLUTION_Y.
@@ -146,7 +1890,7 @@
[cid] Trace PostScript dictionaries.
- * src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H
+ * src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
(cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
parse_expansion_factor, cid_parse_dict): Add tracing calls.
(parse_font_name): New function to trace `/FontName' keywords in
@@ -181,7 +1925,7 @@
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501
* src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
- after each rendering in case of failure.
+ after each rendering in case of failure.
2018-07-28 Werner Lemberg <wl@gnu.org>
@@ -269,7 +2013,7 @@
[type1] Check relationship between number of axes and designs.
- For Multiple Masters fonts We don't support intermediate designs;
+ For Multiple Masters fonts we don't support intermediate designs;
this implies that
number_of_designs == 2 ^^ number_of_axes
@@ -1357,2345 +3101,10 @@
src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
Removed.
-2018-05-01 Werner Lemberg <wl@gnu.org>
-
- * Version 2.9.1 released.
- =========================
-
-
- Tag sources with `VER-2-9-1'.
-
- * docs/VERSION.TXT: Add entry for version 2.9.1.
- * docs/CHANGES: Updated.
-
- * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
- src/base/ftver.rc, 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.9/2.9.1/, s/29/291/.
-
- * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
-
- * builds/unix/configure.raw (version_info): Set to 22:1:16.
- * CMakeLists.txt (VERSION_PATCH): Set to 1.
-
- * include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
-
-2018-04-26 Werner Lemberg <wl@gnu.org>
-
- Another fix for handling invalid format 2 cmaps.
-
- Sigh.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
- an endless loop.
-
-2018-04-24 Ben Wagner <bungeman@google.com>
-
- [base] Avoid undefined behaviour in lcd filtering code (#53727).
-
- * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
- Ensure `height > 0'.
-
-2018-04-22 Werner Lemberg <wl@gnu.org>
-
- * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.
-
-2018-04-22 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [base] Fix bitmap emboldening.
-
- Bug introduced after release 2.8.
-
- * src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
- `FT_QALLOC_MULT', which doesn't zero out the buffer. Adjust the
- bitmap copying code to take care of this fact.
-
-2018-04-22 Werner Lemberg <wl@gnu.org>
-
- Another fix for handling invalid format 2 cmaps.
-
- The previous commit was incomplete.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
- an endless loop.
-
-2018-04-19 Werner Lemberg <wl@gnu.org
-
- [autofit] Add support for Georgian Mtavruli characters.
-
- This will be part of the forthcoming Unicode 11.0.
-
- * src/autofit/afblue.dat: Add blue zone data for Mtavruli.
- * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
- * src/autofit/afscript.h: Add Mtavruli standard character.
-
-2018-04-18 Werner Lemberg <wl@gnu.org>
-
- Fix handling of invalid format 2 cmaps.
-
- The problem was introduced after the last release.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
-
-2018-04-17 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow issues.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739
-
- * src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
-
-2018-04-16 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow issues.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718
-
- * src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
-
-2018-04-15 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Use `info' function of make 3.81.
-
- * configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
- docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.
-
- * builds/detect.mk (std_setup): Replace `echo' with `info'.
- (dos_setup): Removed.
- * builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
- builds/windows/detect.mk, builds/os2/detect.mk: Updated.
- * builds/newline: No longer needed.
-
-2018-04-15 Werner Lemberg <wl@gnu.org>
-
- [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
-
- This fixes
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707
-
- * src/truetype/ttinterp.c (Ins_SLOOP): Do it.
-
-2018-04-14 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow issues.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652
-
- * src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
-
-2018-04-14 Werner Lemberg <wl@gnu.org>
-
- [autofit] Update to Unicode 11.0.0.
-
- But no support new scripts (volunteers welcomed).
-
- * src/autofit/afranges.c (af_arab_nonbase_uniranges,
- af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
- af_deva_nonbase_uniranges, af_geor_uniranges,
- af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
- af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
- af_hani_uniranges): Add new data.
-
-2018-04-10 Nikolaus Waxweiler <madigens@gmail.com>
-
- * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
- modernization measures.
-
- This brings up the minimum required CMake version to 2.8.12.
-
- The installation paths follow the GNU defaults now, e.g. installing on a
- 64 bit host will place binaries into the lib64/ folder on e.g. Fedora.
-
- Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).
-
- CMake will no longer look for a C++ compiler.
-
- Library and .so version now match the Autotools build.
-
- Comments in the build file and informational messages now use platform
- agnostic example commands.
-
- ftoption.h and ftconfig.h are written directly without a redundant `-new'
- copy.
-
- External dependencies are expressed as option()s and will turn up as such
- in cmake-gui.
-
- Internal: Properties such as dependencies and include directories are now
- privately set on the freetype library instead of globally.
-
- The CPack definitions have been cleaned up, the `make dist' has been
- removed. Source packages generated with CPack don't contain Autotools
- files and aren't used by the maintainers anyway.
-
- On Windows, src/base/ftver.rc is compiled to decorate the library with
- version and copyright information.
-
- A pkg-config file is now generated and installed.
-
-2018-04-09 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow issues.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453
-
- * src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
- ADD_LONG and SUB_LONG.
-
-2018-04-06 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [windows, wince] Clean up legacy project files.
-
- * builds/wince/vc2005-ce/freetype.vcproj,
- builds/wince/vc2008-ce/freetype.vcproj,
- builds/windows/vc2005/freetype.vcproj,
- builds/windows/vc2008/freetype.vcproj,
- builds/windows/visualce/freetype.vcproj,
- builds/windows/visualce/freetype.dsp,
- builds/windows/visualc/freetype.vcproj,
- builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
-
-2018-04-04 Werner Lemberg <wl@gnu.org>
-
- [cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371
-
- * src/cff/cffload.c (cff_load_private_dict): Sanitize
- `priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
- on.
-
- * src/type1/t1load.c (T1_Open_Face): Ditto.
-
-2018-04-04 Ben Wagner <bungeman@google.com>
-
- * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
- `DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
- (tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
- in above.
-
-2018-04-01 Werner Lemberg <wl@gnu.org>
-
- * builds/toplevel.mk (work): Use $(SEP).
-
- This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
- platform, and this program only understands backslashes in paths.
-
- Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
-
-2018-03-30 Werner Lemberg <wl@gnu.org>
-
- [truetype] Fix memory leak (only if tracing is on).
-
- * src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
- it.
-
-2018-03-23 Ben Wagner <bungeman@google.com>
-
- [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
-
- * src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
-
-2018-03-23 Ben Wagner <bungeman@google.com>
-
- [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
-
- * src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
- for empty bitmaps.
-
-2018-03-22 Werner Lemberg <wl@gnu.org>
-
- Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
-
- builds/amiga/makefile, builds/amiga/makefile.os4,
- builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
- builds/mac/FreeType.m68k_far.make.txt,
- builds/mac/FreeType.ppc_carbon.make.txt,
- builds/mac/FreeType.ppc_classic.make.txt,
- builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
- builds/wince/vc2008-ce/freetype.vcproj,
- builds/windows/vc2005/freetype.vcproj,
- builds/windows/vc2008/freetype.vcproj,
- builds/windows/vc2010/freetype.vcxproj,
- builds/windows/vc2010/freetype.vcxproj.filters,
- builds/windows/visualc/freetype.dsp,
- builds/windows/visualc/freetype.vcproj,
- builds/windows/visualce/freetype.dsp,
- builds/windows/visualce/freetype.vcproj, vms_make.com: Do it.
-
-2018-03-13 Werner Lemberg <wl@gnu.org>
-
- * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
- overflow.
-
-2018-03-13 Werner Lemberg <wl@gnu.org>
-
- Fix cmap format 2 handling (#53320).
-
- The patch introduced for #52646 was not correct.
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
-
-2018-03-10 Nikolaus Waxweiler <madigens@gmail.com>
-
- * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
-
-2018-03-09 Chun-wei Fan <fanc999@yahoo.com.tw>
-
- * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
-
- Do not limit DLL builds to MinGW, since we already have
- `__declspec(dllexport)' directives in `ftconfig.h'.
- Also suppress more warnings for POSIX functions.
-
-2018-03-08 Hugh McMaster <hugh.mcmaster@outlook.com>
-
- Make installation of `freetype-config' optional (#53093).
-
- * builds/unix/configure.raw: Add option `--enable-freetype-config'
- and set `INSTALL_FT2_CONFIG'.
- * builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define.
- * builds/unix/install.mk (install): Handle it.
-
-2018-03-05 Werner Lemberg <wl@gnu.org>
-
- Make `ftlcdfil.c' part of the `base' module.
-
- `ftobjs.c' needs `ft_lcd_padding'.
-
- Problem reported by duhuanpeng <548708880@qq.com>.
-
- * modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.
-
- * src/base/ftbase.c: Include `ftlcdfil.c'.
- * src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
- * src/base/Jamfile (_sources): Adjusted.
-
- * docs/INSTALL.ANY: Updated.
-
-2018-03-05 Werner Lemberg <wl@gnu.org>
-
- Make `ftfntfmt.c' part of the `base' module.
-
- `ftobjs.c' needs `FT_Get_Font_Format'.
-
- Problem reported by duhuanpeng <548708880@qq.com>.
-
- * modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.
-
- * src/base/ftbase.c: Include `ftfntfmt.c'.
- * src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
- * src/base/Jamfile (_sources): Adjusted.
-
- * docs/INSTALL.ANY: Updated.
-
-2018-03-01 Werner Lemberg <wl@gnu.org>
-
- * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.
-
-2018-02-23 Werner Lemberg <wl@gnu.org>
-
- * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
-
- Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
-
-2018-02-17 Werner Lemberg <wl@gnu.org>
-
- [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).
-
-2018-02-06 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow issues.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027
-
- * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
- SUB_LONG; avoid FT_ABS.
-
-2018-02-04 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [unix] Use -fvisibility=hidden.
-
- It is now widely recommended that ELF shared libraries hide symbols
- except those with explicit __attribute__((visibility("default"))).
- This is supported by all major compilers and should rather be an
- option in libtool.
-
- * builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
- * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
- include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
- attribute.
-
-2018-01-27 Werner Lemberg <wl@gnu.org>
-
- [truetype] Better protection against invalid VF data.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739
-
- Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.
-
- * src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
- `normalizedcoords'.
-
-2018-01-27 Werner Lemberg <wl@gnu.org>
-
- * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
-
-2018-01-27 Werner Lemberg <wl@gnu.org>
-
- * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.
-
-2018-01-27 Werner Lemberg <wl@gnu.org>
-
- [truetype] Better trace VF instances.
-
- * src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
- of coordinates.
- (TT_Get_MM_Var): Trace instance indices names.
- (TT_Set_Var_Design): Updated.
-
-2018-01-27 Werner Lemberg <wl@gnu.org>
-
- [truetype] Beautify tracing of VF axis records.
-
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
- table-like manner.
-
-2018-01-26 Ben Wagner <bungeman@google.com>
-
- [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
-
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
- `face->blend->num_axis' in case we have to initialize the
- `face->blend'.
-
-2018-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [apinames] Anonymous version map for GNU linker.
-
- * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
- (OutputFormat): Add `OUTPUT_GNU_VERMAP'.
- (names_dump): Handle it.
- (usage): Updated.
- (main): Handle new command line flag `-wL'.
-
-2018-01-21 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [unix] Call libtool to clean up.
-
- * builds/unix/install.mk (clean_project_unix, distclean_project_unix):
- Use libtool.
- * builds/freetype.mk: Minor.
-
-2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * src/base/ftver.rc: Fix mingw-w64 compilation.
-
-2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Enable VERSIONINFO resource for Cygwin/MinGW.
-
- * builds/unix/configure.raw: Check for resource compiler.
- * builds/unix/unix-cc.in: Conditionally set up resource compiler.
- * builds/freetype.mk: Add conditional rule for `ftver.rc'.
- * src/base/ftver.rc: Copyright notice and year update.
-
-2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Move VERSIONINFO resource.
-
- * builds/windows/vc2010/freetype.vcxproj: Updated.
- * builds/windows/ftver.rc: Move file from here...
- * src/base/ftver.rc: ... to here.
-
-2018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Expand dllexport/dllimport to Cygwin/MinGW.
-
- * include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
- s/_MSC_VER/_WIN32/.
- * builds/unix/ftconfig.in: Replicate here.
- * builds/vms/ftconfig.h: Replicate here.
-
-2018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Improve and document MSVC build.
-
- * include/freetype/config/ftconfig.h: Guard dllexport/dllimport
- attributes with _DLL and FT2_DLLIMPORT.
- * builds/windows/vc2010/index.html: Update documentation.
-
-2018-01-10 Steve Robinson <ssrobins@gmail.com>
-
- * CMakeLists.txt [win32]: Suppress warnings for POSIX functions.
-
-2018-01-10 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Correctly handle Flex features (#52846).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
- cf2_cmdHMOVETO>: Do not move if doing Flex.
-
-2018-01-09 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * builds/windows/vc2010/freetype.sln: Synchronize with the project.
-
-2018-01-08 Werner Lemberg <wl@gnu.org>
-
- * Version 2.9 released.
- =======================
-
-
- Tag sources with `VER-2-9'.
-
- * docs/VERSION.TXT: Add entry for version 2.9.
-
- * 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/windows/ftver.rc,
- builds/wince/vc2005-ce/freetype.vcproj,
- builds/wince/vc2005-ce/index.html,
- builds/wince/vc2008-ce/freetype.vcproj,
- builds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/.
-
- * include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.
- (FREETYPE_PATCH): Set to 0.
-
- * builds/unix/configure.raw (version_info): Set to 22:0:16.
- * CMakeLists.txt (VERSION_PATCH): Set to 0.
-
-2018-01-07 Werner Lemberg <wl@gnu.org>
-
- Add check for librt, needed for `ftbench' (#52824).
-
- * builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will
- hold `-lrt' if necessary.
-
- * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
-
-2018-01-07 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Fix Type 1 glyphs with too many stem hints.
-
- According to the CFF specification, charstrings can have up to 96 stem
- hints. Due to hint replacement routines in Type 1 charstrings, some
- glyphs are rejected by the Adobe engine, which implements the above
- limit. This fix turns off hinting for such glyphs.
-
- * src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
- `cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
- hinting.
-
-2018-01-06 Werner Lemberg <wl@gnu.org>
-
- Add `FT_Done_MM_Var'.
-
- This is necessary in case the application's memory routines differ
- from FreeType. A typical example is a Python application on Windows
- that calls FreeType compiled as a DLL via the `ctypes' interface.
-
- * include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
- and define.
-
- * docs/CHANGES: Updated.
-
-2018-01-03 Werner Lemberg <wl@gnu.org>
-
- [truetype] Round offsets of glyph components only if hinting is on.
-
- * src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
- it.
-
-2018-01-03 Werner Lemberg <wl@gnu.org>
-
- * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
-
- This is a better fix than the previous commit, which is now
- reverted.
-
-2018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- Move internal LCD-related declarations.
-
- * include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
- Move from here...
- * include/freetype/internal/ftobjs.h: ... to here.
-
-2018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
- [_MSC_VER]: Limit Visual C++ attributes.
-
-2018-01-03 Werner Lemberg <wl@gnu.org>
-
- [truetype] Make blend/design coordinate round-tripping work.
-
- Behdad reported that setting blend coordinates, then getting design
- coordinates did incorrectly return the default instance's
- coordinates.
-
- * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
-
-2017-12-31 Werner Lemberg <wl@gnu.org>
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838
-
-2017-12-31 Werner Lemberg <wl@gnu.org>
-
- Synchronize other Windows project files.
-
- * builds/windows/*: Add missing files.
-
-2017-12-31 Werner Lemberg <wl@gnu.org>
-
- Update Visual C 2010 project files.
-
- Problem reported by Hin-Tak.
-
- * builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and
- `ftcid.c'.
- Sort entries.
- * builds/windows/vc2010/freetype.vcxproj.filter: Ditto.
- Fix members of `FT_MODULE' group.
-
-2017-12-30 Werner Lemberg <wl@gnu.org>
-
- * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file.
-
-2017-12-28 Werner Lemberg <wl@gnu.org>
-
- * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.
-
- Reported by Nikolaus.
-
-2017-12-27 Werner Lemberg <wl@gnu.org>
-
- Fix compiler warnings.
-
- * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
- `new_pitch' unsigned.
-
- * src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.
-
-2017-12-27 Werner Lemberg <wl@gnu.org>
-
- Fixes for `make multi'.
-
- * include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
- (ps_property_get): Harmonize declaration with corresponding
- function typedef.
-
- * include/freety[e/internal/fttrace.h: Add `trace_psprops'.
-
- * src/base/ftpsprop.c: Include necessary header files.
- (FT_COMPONENT): Define.
- (ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'.
- (ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'.
- Harmonize declaration with corresponding function typedef.
-
-2017-12-27 Werner Lemberg <wl@gnu.org>
-
- Provide support for intra-module callback functions.
-
- This is needed especially for `make multi' with C++.
-
- * include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
- FT_BASE_CALLBACK_DEF): New macros.
-
-2017-12-25 Ewald Hew <ewaldhew@gmail.com>
-
- Move PostScript drivers' property handlers to `base'.
-
- This reduces the amount of duplicated code across PostScript
- drivers.
-
- * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c
- ({cff,cid,t1}_property_{get,set}): Moved to...
- * include/freetype/internal/ftpsprop.h: ...this new file.
- (ps_property_{get,set}): New functions to replace moved ones.
-
- * src/base/ftpsprop.c: New file that implements above functions.
-
- * include/freetype/internal/internal.h
- (FT_INTERNAL_POSTSCRIPT_PROPS_H): New macro.
-
- * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c:
- Updated.
-
- * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
- Updated.
-
-2017-12-20 Werner Lemberg <wl@gnu.org>
-
- Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.
-
- We exit early if the current design or blend coordinates are
- identical to the new ones.
-
- * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design):
- Implement it, returning internal error code -1 if there will be no
- variation change.
-
- * src/type1/t1load.c (t1_set_mm_blend): Ditto.
-
- * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
- FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.
-
-2017-12-18 Werner Lemberg <wl@gnu.org>
-
- [sfnt] Fix charmap type 2 iterator (#52646).
-
- The subsetted demo font of the report that exhibits the bug has a
- very unusual type 2 cmap for Unicode(!): It contains only two
- sub-headers, one for one-byte characters (covering the range 0x20 to
- 0xFA), and a second one for higher byte 0x01 (just for character
- code U+0131).
-
- Before this commit, the iterator wasn't able to correctly handle a
- sub-header for higher byte 0x01.
-
- * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
- for outer loop.
-
-2017-12-18 Matthias Clasen <matthias.clasen@gmail.com>
-
- [truetype] Fix clamping, minor tracing code beautification.
-
- * src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
- design coordinates.
- Use clamped value.
-
-2017-12-18 Werner Lemberg <wl@gnu.org>
-
- * src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff.
-
-2017-12-18 Werner Lemberg <wl@gnu.org>
-
- * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688).
-
-2017-12-18 Werner Lemberg <wl@gnu.org>
-
- [truetype] Fix previous commit.
-
- * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
- unhinted phantom points, which must be properly scaled.
-
-2017-12-18 Werner Lemberg <wl@gnu.org>
-
- [truetype] Don't apply HVAR and VVAR deltas twice (#52683).
-
- * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust
- `pp1' to `pp4', except if we have an HVAR and/or VVAR table.
-
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle
- alternative code branch identically w.r.t. presence of an HVAR
- and/or VVAR table.
-
-2017-12-17 Jonathan Kew <jfkthame@gmail.com>
-
- [truetype] Correctly handle variation font phantom points (#52683).
-
- * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
- point indices.
-
-2017-12-17 Jonathan Kew <jfkthame@gmail.com>
-
- Fix incorrect advance width scaling (#52683).
-
- * src/base/ftadvance.c (FT_Get_Advances): Always respect the
- FT_LOAD_NO_SCALE flag if present.
-
-2017-12-16 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
- * objs/.gitignore: Ignore almost everything.
-
-2017-12-11 Werner Lemberg <wl@gnu.org>
-
- Fix compiler warning (#52640).
-
- * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
- variable.
-
-2017-12-08 Azzuro <azzuro@team-mediaportal.com>
-
- * builds/windows/vc2010/freetype.vcxproj: Adjust output directory.
-
- This allows builds with different configurations in parallel.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- Fix `make setup dos', second try (#52622).
-
- * builds/detect.mk (dos_setup): Don't use literal `>' character at
- all. Mixing the different escaping rules from make, dos, and
- windows is too fragile.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- [docmaker] Fix code section parsing.
-
- Stuff like
-
- {
- <bla>
- }
-
- confused the parser, which incorrectly treated `<bla>' as a markup
- tag.
-
- * src/tools/docmaker/content.py (ContentProcessor::process_content):
- Apply `re_markup_tags' only outside of code sections.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- New `ftdriver.h' file, covering all driver modules.
-
- This reduces redundancy and increases synergy; it also reduces the
- number of header files.
-
- * include/freetype/config/ftheader.h (FT_DRIVER_H): New macro.
- (FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H,
- FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to
- FT_DRIVER_H.
-
- * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
- include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h,
- include/freetype/ftttdrv.h: Replaced with...
- * include/freetype/ftdriver.h: ...this new file.
- (FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to...
- (FT_HINTING_ADOBE): ... this new macro.
- (FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to...
- (FT_HINTING_FREETYPE): ... this new macro.
-
- * src/*/*: Updated accordingly.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- Move `ftdriver.h' to `ftdrv.h'.
-
- * include/freetype/internal/ftdriver.h: Renamed to...
- * include/freetype/internal/ftdrv.h: ... this name.
-
- * include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
- Updated.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- Fix access to uninitalized memory (#52613).
-
- Also reported as
-
- https://bugs.chromium.org/p/chromium/issues/detail?id=791317
-
- * src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the
- bitmap size needs a larger bitmap buffer, assure that the new memory
- areas are initialized also.
-
-2017-12-08 Werner Lemberg <wl@gnu.org>
-
- Fix `make setup dos' (#52622).
-
- * builds/detect.mk (dos_setup): Properly escape literal `>'
- character.
-
-2017-12-07 Werner Lemberg <wl@gnu.org>
-
- Fix C++ compilation.
-
- * src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.
-
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.
-
-2017-12-07 Werner Lemberg <wl@gnu.org>
-
- Fix `make multi'.
-
- * include/freetype/internal/fttrace.h: Remove unused tracing macros.
- s/pshalgo2/pshalgo/.
- Add `trace_cffdecode'.
- * src/pshinter/pshalgo.c (FT_COMPONENT): Updated.
-
- * src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
- * src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and
- FT_SERVICE_CFF_TABLE_LOAD_H.
-
- * src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
-
- * src/psaux/cffdecode.c: Include FT_FREETYPE_H and
- FT_INTERNAL_DEBUG_H.
- (FT_COMPONENT): Define.
- * src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
- * src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
- Declare `cff_builder_funcs' and `ps_builder_funcs'.
- * src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'.
- * src/psaux/psobjs.c : Include `psauxmod.h'.
-
-2017-12-07 Werner Lemberg <wl@gnu.org>
-
- * include/freetype/config/ftheader.h: Some clean-up.
-
- This commit removes documentation of deprecated macros and does some
- minor streamlining.
-
-2017-12-06 Werner Lemberg <wl@gnu.org>
-
- * builds/symbian/bld.inf: Updated.
-
-2017-12-06 Werner Lemberg <wl@gnu.org>
-
- New header file `ftparams.h' that collects all parameter tags.
-
- * include/freetype/config/ftheader.h (FT_PARAMETER_TAGS_H): New
- macro.
- (FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to
- `ftparams.h'.
-
- * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
- include/freetype/ftincrem.h, include/freetype/ftlcdfil.h,
- include/freetype/ftsnames.h, include/freetype/ftt1drv.h: Include
- FT_PARAMETER_TAGS_H.
- Move FT_PARAM_TAG_XXX definitions to...
- * include/freetype/ftparams.h: ...this new file.
-
- * include/freetype/ttunpat.h: Remove. No longer needed.
-
-2017-12-05 Werner Lemberg <wl@gnu.org>
-
- Improve tracing messages by using singular and plural forms.
-
- * src/*/*.c: Implement it.
-
-2017-12-04 Werner Lemberg <wl@gnu.org>
-
- [truetype] Allow shared points in `cvar' table (#52532).
-
- * src/truetype/ttgxvar.c (tt_face_vary_cvt): Implement it by copying
- and adjusting the corresponding code from
- `TT_Vary_Apply_Glyph_Deltas'.
-
-2017-11-28 Werner Lemberg <wl@gnu.org>
-
- [truetype] Improving tracing of composite glyphs.
-
- * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
- [FT_DEBUG_LEVEL_TRACE]: Show composite glyph information.
-
-2017-11-27 Werner Lemberg <wl@gnu.org>
-
- [type1] Allow (again) `/Encoding' with >256 elements (#52464).
-
- In version 2.6.1, this has been disallowed to better reject
- malformed fonts; however, this restriction was too strong. This
- time, we only take the first 256 elements into account, since
- encoding arrays are always accessed with a 8bit integer, according
- to the PostScript Language Reference.
-
- * src/type1/t1load.c (parse_encoding): Implement it.
-
-2017-11-27 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-
- Fix last commit (#52522).
-
- * builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG'
- properly if we have `ftoption.h' in `BUILD_DIR'.
-
-2017-11-24 Werner Lemberg <wl@gnu.org>
-
- [unix] Install a massaged `ftoption.h' file (#51780).
-
- * builds/unix/configure.raw (ftoption_set, ftoption_unset): New
- auxiliary functions to construct...
- (FTOPTION_H_SED): ... this new variable.
- Apply it as a sed argument while copying `ftoption.h' to the
- `builds/unix' directory (using `AC_CONFIG_FILES').
- Simplify code of test that checks cpp's computation of bit length
- (the test previously created an empty `ftoption.h' file and deleted
- it immediately afterwards); without this change, it can happen on my
- GNU/Linux box that `configure's execution of `config.status' doesn't
- create `ftoption.h' (no idea why this happens).
-
- * builds/unix/install.mk (install): Install
- `builds/unix/ftoption.h'.
-
- * builds/unix/unix-def.in (DISTCLEAN): Updated.
-
- * builds/unix/.gitignore: Updated.
-
-2017-11-23 Tor Andersson <tor.andersson@artifex.com>
-
- Silence unused function warnings (#52465).
-
- Some static function declarations cause unused function warnings if
- certain config options are turned off via `ftoption.h'.
-
- * src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h,
- src/truetype/ttgxvar.h: Add #ifdef guards around these sections.
-
-2017-11-22 Ewald Hew <ewaldhew@gmail.com>
-
- * src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377
-
-2017-11-22 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Fix CFF advance widths. (#52466)
-
- Glyph advance widths were being written to the new `PS_Decoder' but not
- saved to the underlying format specific decoder. This caused pure CFF
- fonts to have bad advance width.
-
- * include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
- field to pointer.
- Remove unused fields.
- * src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
- to reference.
- Remove unused.
- * src/psaux/psft.c (cf2_setGlyphWidth): Update code.
-
-2017-11-15 Vlad Tsyrklevich <vtsyrklevich@google.com>
-
- * include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.
-
-2017-11-14 Nikolaus Waxweiler <madigens@gmail.com>
-
- Use Adobe hinting engine for `light' hinting of both CFF and Type 1.
-
- Since Ewald Hew factored the Adobe hinting engine out of the CFF
- driver code, we can now use it on Type 1 (and CID) font formats, as
- both have the same hinting philosophy.
-
- This change activates the Adobe hinter when in LIGHT mode, and
- therefore always unless explicitly asking for the auto-hinter. This
- makes LIGHT behavior consistent with CFF fonts. As of this commit,
- the hinting engine table looks as follows.
-
- LIGHT NORMAL
- -------------------------
- TrueType Auto v40
- CFF Adobe Adobe
- Type 1 Adobe Adobe
-
-2017-11-10 Yuri Levchenko <yuri_levchenko@boolat.com>
-
- * CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option.
-
-2017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * src/base/ftobjs.c (FT_Load_Glyph): Relocate condition.
-
-2017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables.
-
-2017-11-03 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251)
-
- The interpreter in Type 1 mode rewinds the charstring after collecting
- all hints for building the initial hintmap (commit d52dd7f). However,
- some charstrings use `endchar' in a final subroutine call, rewinding to
- the start of that subroutine, and only a small section of the actual
- glyph is drawn.
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>:
- Ensure we are on the top level charstring before rewinding.
-
-2017-11-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
-
- [truetype] Add more tricky fonts.
-
- See the report by Yang Yinsen.
- https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html
-
- * src/truetype/ttobjs.c (trick_names): Add `DFGothic-EB',
- `DFGyoSho-Lt', `DFHSGothic-W5', `DFHSMincho-W3' and `DFHSMincho-W7'.
- (tt_check_trickyness_sfnt_ids): Add checksums for DFGothic-EB,
- DFGyoSho-Lt, DFHSGothic-W5, DFHSMincho-W3 and DFHSMincho-W7. Also
- add checksums for DLCLiShu and DLCHayBold which their family names
- were already listed but their checksums were previously unknown.
-
-2017-11-01 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [smooth] Fix complex rendering at high ppem.
-
- We used to split large glyphs into horizontal bands and continue
- bisecting them still horizontally if that was not enough. This is
- guaranteed to fail when a single scanline cannot fit into the
- rendering memory pool. Now we bisect the bands vertically so that
- the smallest unit is a column of the band height, which is guranteed
- to fit into memory.
-
- * src/smooth/ftgrays.c (gray_convert_glyph): Implement it.
-
-2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [smooth] Improve complex rendering at high ppem.
-
- At large sizes almost but not exactly horizontal segments can quickly
- drain the rendering pool. This patch at least avoids filling the pool
- with trivial cells. Beyond this, we can only increase the pool size.
-
- Reported, analyzed, and tested by Colin Fahey.
-
- * src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
-
-2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [base] Improve tracing in FT_Load_Glyph, FT_*_Size.
-
- * src/base/ftobjs.c (FT_Load_Glyph): Tag tracing messages with
- function name, glyph index, and load flags.
- (FT_Select_Metrics, FT_Request_Metrics): Remove all tracing.
- (FT_Select_Size, FT_Request_Size): Improve tracing.
-
-2017-10-18 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [base] Improve tracing in FT_Render_Glyph.
-
- * src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage
- calculations and downgrade Netpbm dump to bitmap:7.
-
-2017-10-15 Ewald Hew <ewaldhew@gmail.com>
-
- [cff] Fix segfault on missing `psaux' (#52218)
-
- * src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr.
-
- * modules.cfg: Update dependency list.
-
-2017-10-15 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [base, cff] Fix MSVC warnings.
-
- * src/base/ftobjs.c (FT_New_Library): C4702: unreachable code.
- (ft_glyphslot_preset_bitmap): C4244: possible loss of data.
- * src/cff/cffload.c (cff_blend_doBlend): C4244: possible loss of data.
- Turn `sum' into unsigned.
-
-2017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [base] Netpbm image tracing.
-
- * src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size.
- (FT_Render_Glyph_Internal): Trace bitmap in Netpbm format.
-
- * src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing.
-
-2017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- * builds/windows/ftdebug.c (FT_Message): Print to stderr.
- * builds/wince/ftdebug.c (FT_Message): Ditto.
-
-2017-10-14 Behdad Esfahbod <behdad@behdad.org>
-
- [afshaper] Delay creating `hb_set' objects until needed.
-
- In runs on Noto Naskh Arabic, this results in 89 sets created
- instead of 340 before. Makes auto-hinter setup with HarfBuzz
- enabled 20% to 30% faster.
-
- * src/autofit/afshaper.c (af_shaper_get_coverage): Implement it.
-
-2017-10-12 Ewald Hew <ewaldhew@gmail.com>
-
- [type1, cid] Add hinting engine switch.
-
- Implement property service in `type1' and `cid' drivers to allow
- switching between FreeType or Adobe hinting engine when both are
- available.
-
- * src/cid/cidriver.c (cid_property_{set,get}, cid_services),
- src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add
- Properties service.
-
- * src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c
- (T1_Driver_Init): Add default property values.
-
-2017-10-12 Ewald Hew <ewaldhew@gmail.com>
-
- Add T1_CONFIG_OPTION_OLD_ENGINE configuration option.
-
- This controls whether the old Type 1 engine gets compiled into FreeType.
- It is disabled by default.
-
- * devel/ftoption.h, include/freetype/config/ftoption.h
- (T1_CONFIG_OPTION_OLD_ENGINE): New macro.
-
- * include/freetype/internal/psaux.h (PS_Decoder): Remove unused field.
- * include/freetype/internal/psaux.h, src/cid/cidgload.c
- (cid_load_glyph), src/psaux/psauxmod.c, src/psaux/psobjs.c
- (ps_builder_add_point), src/psaux/t1decode.c
- (t1_lookup_glyph_by_stdcharcode, t1_decoder_parse_glyph,
- t1operator_seac, t1_decoder_parse_charstrings), src/psaux/t1decode.h,
- src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Surround
- relevant code with macro.
- Minor code changes.
-
-2017-10-12 Ewald Hew <ewaldhew@gmail.com>
-
- Extract width parsing from Type 1 parser.
-
- Duplicate the fast advance width calculations from the old parser.
- This is to facilitate adding options for compiling out the old parser.
-
- * src/psaux/t1decode.{c,h} (t1_decoder_parse_metrics): New function.
- * include/freetype/internal/psaux.h (T1_Decoder_Funcs): New entry
- `parse_metrics'.
- * src/psaux/psauxmod.c: Set the new entry.
-
- * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String),
- src/cid/cidgload.c (cid_load_glyph): Separate
- conditional for selecting engine.
-
-2017-10-09 Werner Lemberg <wl@gnu.org>
-
- * src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow.
-
- Reported as
-
- https://bugs.chromium.org/p/chromium/issues/detail?id=772775
-
-2017-10-08 Werner Lemberg <wl@gnu.org>
-
- * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- [sfnt] Adjust behaviour of PS font names for variation fonts.
-
- * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's
- PS name only if no variation is applied.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- [cff, truetype] Adjust behaviour of named instances.
-
- This commit completely separates the interaction between named
- instances and variation functions. In particular, resetting the
- variation returns to the current named instance (if set) and not to
- the base font.
-
- As a side effect, variation functions no longer change the named
- instance index.
-
- * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
- function.
- Also apply `MVAR' table to named instances.
-
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add cast.
- (tt_set_mm_blend): No longer check whether requested variation
- coincides with a named instance.
- (TT_Set_Var_Design): Use current named instance for default
- coordinates.
- * src/truetype/ttobjs.c (tt_face_init): Use `TT_Set_Named_Instance'.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- Make `FT_Set_Named_Instance' work.
-
- * src/cff/cffdrivr.c (cff_set_instance): New function.
- (cff_service_multi_masters): Register it.
-
- * src/truetype/ttgxvar.c (TT_Set_Named_Instance): New function.
- * src/truetype/ttgxvar.h: Updated.
- * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Register
- it.
-
- * src/type1/t1load.c (T1_Reset_MM_Blend): New function.
- * src/type1/t1load.h: Updated.
- * src/type1/t1driver.c (t1_service_multi_masters): Register it.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- Make `FT_FACE_FLAG_VARIATION' work.
-
- * include/freetype/internal/tttypes.h (TT_Face): Remove
- `is_default_instance'; this can be replaced with a combination of
- `FT_IS_VARIATION' and `FT_IS_INSTANCE'.
-
- * src/cff/cffdrivr.c (cff_get_advances): Updated.
-
- * src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c
- (sfnt_init_face): Updated.
-
- * src/truetype/ttdriver.c (tt_get_advances), src/truetype/ttgload.c
- (TT_Process_Simple_Glyph, load_truetype_glyph, IS_DEFAULT_INSTANCE),
- src/truetype/ttgxvar.c (tt_set_mm_blend): Updated.
- * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
- Handle `FT_FACE_FLAG_VARIATION'.
-
- * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle
- `FT_FACE_FLAG_VARIATION'.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- New function `FT_Set_Named_Instance'.
-
- No effect yet.
-
- * src/base/ftmm.c (FT_Set_Named_Instance): New function.
-
- * include/freetype/ftmm.h: Updated.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- Add macros for checking whether a font variation is active.
-
- * include/freetype/freetype.h (FT_FACE_FLAG_VARIATION,
- FT_IS_VARIATION): New macros.
- No effect yet.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- Add framework for setting named instance in MM service.
-
- * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func):
- New function typedef.
- (MultiMasters): Add `set_instance' member.
- (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
-
- * src/cff/cffdrivr.c (cff_service_multi_masters),
- src/truetype/ttdriver (tt_service_gx_multi_masters),
- src/type1/t1driver.c (t1_service_multi_masters): Updated.
-
-2017-10-07 Werner Lemberg <wl@gnu.org>
-
- [type1] Minor code shuffling.
-
- * src/type1/t1load.c (T1_Set_MM_Blend): Make it a wrapper of...
- (t1_set_mm_blend): ...this new function.
- (T1_Set_MM_Design): Use `t1_set_mm_blend'.
-
-2017-10-05 Werner Lemberg <wl@gnu.org>
-
- * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer
- overflow.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539
-
-2017-10-05 Werner Lemberg <wl@gnu.org>
-
- Fix compiler warnings.
-
- * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
- on numeric overflow.
- Add cast.
-
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
- types, add cast.
-
-2017-10-04 John Tytgat <John.Tytgat@esko.com>
-
- [cff] Add support for `FSType'.
-
- * include/freetype/internal/cfftypes.h (CFF_FontRec): Add
- `font_extra' entry.
-
- * src/cff/cffdrivr.c (cff_ps_get_font_extra): New function to
- retrieve FSType info from the embedded PostScript data.
- (cff_service_ps_info): Register function.
-
- * src/cff/cffload.c (cff_font_done): Free `font_extra'.
-
-2017-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- Signedness fixes in bitmap presetting.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.
-
- * src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height.
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
- * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned
- subtraction.
-
-2017-09-29 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- Bitmap metrics presetting [2/2].
-
- * src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when
- appropriate but `FT_Render_Glyph' is not called.
- * include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.
-
-2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [smooth, raster] Miscellaneous cleanups.
-
- * src/raster/ftrend1.c (ft_raster1_render): Clean up the exit.
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Reduce
- translations and clean up the exit.
- (ft_smooth_render_lcd, ft_smooth_render_lcd): Remove unused `error'.
-
-2017-09-28 Ben Wagner <bungeman@google.com>
-
- [truetype] Really, really fix #52082.
-
- * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
-
-2017-09-28 Werner Lemberg <wl@gnu.org>
-
- * src/psaux/psintrp.c (cf2_doStems): Fix integer overflow.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510
-
-2017-09-28 Ewald Hew <ewaldhew@gmail.com>
-
- * src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak.
-
- Reported as
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489
-
-2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- Bitmap metrics presetting [1/2].
-
- This mainly just extracts the code for presetting the bitmap metrics
- from the monochrome, grayscale, and LCD renderers into a separate
- function.
-
- * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
- calculates prospective bitmap metrics for the given rendering mode.
- * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
- Declare it.
-
- * src/base/ftlcdfil.c (ft_lcd_padding): New helper function that adds
- padding to CBox taking into account pecularities of LCD rendering.
- * include/freetype/ftlcdfil.h (ft_lcd_padding): Declare it.
-
- * src/raster/ftrend1.c (ft_raster1_render): Reworked to use
- `ft_glyphslot_preset_bitmap'.
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
- (ft_smooth_render_lcd, ft_smooth_render_lcd): The pixel_mode setting
- is moved to `ft_glyphslot_preset_bitmap'.
-
-2017-09-28 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Fix compiler warning.
-
- * src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing
- code.
-
-2017-09-27 Werner Lemberg <wl@gnu.org>
-
- * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
-
-2017-09-25 Werner Lemberg <wl@gnu.org>
-
- [psaux] Fix compiler warnings.
-
- * src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant
- test.
-
- * src/psaux/psintrp.c (cf2_interpT2CharString)
- <cf2_escCALLOTHERSUBR>: Add casts.
-
- * src/psaux/psobjs.c (ps_decoder_init): Add cast.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Minor fixes.
-
- * include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}:
- Rearrange `ps_builder_init' arguments to conventional order.
-
- * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and
- notice for `SubFont' in Type 1 mode.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Move `psdecode' into `psobjs'.
-
- As the former only contains a single procedure, move it into
- `psobjs' for simplicity. Also change the parameter order to the
- conventional one.
-
- * src/psaux/psdecode.c (ps_decoder_init): Moved to...
- * src/psaux/psobjs.c: ...Here.
- * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto.
-
- * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
- `ps_decoder_init' function signature.
-
- * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
- Update calls.
-
- * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.
-
- * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
- Update file references.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Fix Type 1 hinting.
-
- Type 1 hinting breaks sometimes when mid-charstring hints should
- have been in the initial hintmap. This fix adds a preprocessing
- pass that reads all hints and builds the correct initial hintmap
- first, before proceeding to build the glyph outline.
-
- * src/psaux/psintrp.c (cf2_interpT2CharString): New
- `initial_map_ready' boolean flag.
- Ignore outline commands and hint changes on first pass.
- <cf2_cmdENDCHAR>: Add section to build hintmap and rewind.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Add tracing for hints.
-
- * src/psaux/pshints.c (cf2_hintmap_dump): New function.
- (cf2_hintmap_insertHint): Trace incoming and inserted hints.
- (cf2_hintmap_build): Dump hintmap before and after hint adjustment.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Minor fixes.
-
- * src/psaux/psintrp.c (cf2_interpT2CharString): Fix check for pop
- results.
- s/font->decoder/decoder/ where necessary.
- <cf2_cmdHSTEM, cf2_cmdVSTEM, cf2_escHSTEM3, cf2_escVSTEM3>: Use
- offset parameter in `cf2_doStems' instead of doing correction for
- left-sidebearing.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [cid] Use the new engine.
-
- * src/cid/cidgload.c: Update includes.
- (cid_load_glyph, cid_slot_load_glyph): Implement changes to glyph
- loading code as with `type1' module.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [cid] Add Adobe engine configuration.
-
- This is similar to what was done in the `type1' module.
-
- * src/cid/cidriver.c (t1cid_driver_class): Update declaration.
- * src/cid/cidobjs.c: Include FT_TYPE1_DRIVER_H.
- (cid_driver_init): Update code.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Change subfont synthesis for CID fonts.
-
- Change `t1_make_subfont' to take in the Private dict record as an
- argument. This is because Type 1 and CID font records in FreeType
- have this in different places.
-
- * src/psaux/psobjs.c (t1_make_subfont): Change `T1_Face' to
- `FT_Face' so that CID is also accepted.
- Take `PS_Private' as an argument and let caller figure out where the
- Private dict actually is.
- Update references.
-
- * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
- declaration.
-
- * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
- call.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [type1] Switch to Adobe engine.
-
- * src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (seac).
-
- This concludes the changes needed to add Type 1 support.
-
- * src/psaux/psintrp.c: Update includes.
- (cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to
- implied seac for CFF.
-
- * src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New
- function to look up the glyph index.
-
- * src/psaux/psft.c (cf2_getT1SeacComponent,
- cf2_freeT1SeacComponent): New functions to get the charstrings for
- seac components.
-
- * src/psaux/t1decode.h, src/psaux/psft.h: Update declarations.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (flex in callothersubr).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString)
- <cf2_escCALLOTHERSUBR>: Fix Flex feature handling (OtherSubrs 0, 1,
- 2).
- <cf2_cmdRMOVETO>: Do not actually move the `glyphPath' while doing
- flex. This is to avoid closing the current contour.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (callothersubr).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString)
- <cf2_escCALLOTHERSUBR>: Copy code from
- `t1_decoder_parse_charstrings' (in `t1decode.c').
- OtherSubr 3 (change hints) should reset the hintmask, so that the
- new hints are applied.
- Fix function calls and stack access.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (pop).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString): Change how unhandled
- OtherSubr results are stored. Implement the PostScript stack using
- an array.
- <cf2_escPOP>: Ensure that the stack is not cleared after getting
- `OtherSubr' results.
- Fix stack access.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (callsubr).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
- Type 1 mode.
-
- * src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (div, four-byte numbers).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escDIV>: Add
- Type 1 mode. Type 1 requires large integers to be followed by
- `div'; cf. `Adobe Type 1 Font Format', section 6.2.
- <op == 255>: Push Type 1 four-byte numbers as `Int' always. This is
- to ensure `div' and `callsubr' get values they can use.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (hints).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
- cf2_cmdVSTEM>: Add correction for left sidebearing in Type 1 mode.
- Allow adding hints mid-charstring.
- <cf2_escVSTEM3, cf2_escHSTEM3>: Translate into equivalent commands
- for three normal stem hints. This requires some recalculation of
- stem positions.
- Correction for left sidebearing.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (hsbw, sbw).
-
- * src/psaux/psintrp.c (cf2_doStems): `hsbw' or `sbw' must be the
- first operation in a Type 1 charstring.
- (cf2_interpT2CharString): Remove unused variables.
- <cf2_cmdHMOVETO, cf2_cmdVMOVETO, cf2_cmdRMOVETO>: `hsbw' or `sbw'
- must be the first operation in a Type 1 charstring.
- <cf2_cmdHSBW, cf2_escSBW>: Fix data access and add correction for
- left sidebearing.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (setcurrentpoint).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString)
- <cf2_escSETCURRENTPT>: Fix stack access.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Extend Adobe interpreter (closepath).
-
- * src/psaux/psintrp.c (cf2_interpT2CharString) <c2f_cmdCLOSEPATH>:
- Use the right builder function. We can use the `haveWidth' boolean
- already present, instead of implementing `parse_state'.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Add Type 1 operations to Adobe CFF interpreter.
-
- The following Type 1 specific ops have been added (copied from
- `t1decode'):
-
- closepath
- vstem3
- hstem3
- seac
- sbw
- callothersubr
- pop
- setcurrentpoint
- hsbw
-
- The following require a Type 1 mode, because of differences in
- specification:
-
- hstem
- vstem
- vmoveto
- callsubr
- div
- rmoveto
- hmoveto
- Numbers
-
- The subsequent commits will implement these changes and adapt
- accesses of data and objects to the new interpreter.
-
- NOTE: Will not compile in the meantime!
-
- * src/psaux/psintrp.c: Add opcodes to enum.
- (cf2_interpT2CharString): Copy relevant code over from
- `t1_decoder_parse_charstrings' (in `t1decode.c').
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [type1] Fixes for rendering.
-
- The Type 1 advance width calculation passes null for glyph slot,
- etc, which can cause null pointer access in the new interpreter.
- Fall back to the old one for now.
-
- Fix the large glyph retry code and ensure hinting and scaling flags
- are set properly.
-
- * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add a
- check for metrics_only.
- Set the `force_scaling' flag.
- (T1_Parse_Glyph): Updated.
- (T1_Load_Glyph): Add `hinting' and `scaled' flags.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Add missing objects (2/2).
-
- Synthesize a `SubFont' object for Type 1 fonts. This is used in the
- interpreter to access Private dict data, which are stored in
- different places for Type 1 and CFF. This allows the same data to
- be used in either mode.
-
- * src/psaux/psobjs.c (t1_make_subfont): New procedure to copy
- required values to a dummy `CFF_SubFont' object. This is similar to
- `cff_make_private_dict'.
- * src/psaux/psobjs.h: Add the new declaration.
-
- * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto.
- Add this to the PSAux Service for future use with CID fonts.
-
- * src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H.
- (T1_Parse_Glyph_And_Get_Char_String): Add the call.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Add missing objects for Type 1 (1/2).
-
- Move `CF2_Font' instance to `PS_Decoder'. This is the context for
- the interpreter and since it is currently stored in `CFF_Font', is
- unavailable in Type 1 mode.
-
- * include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New
- `cf2_instance' field.
-
- * src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to
- `PS_Decoder'.
-
- * src/psaux/t1decode.c (t1_decoder_done): Add finalization code.
-
- * src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- Allow `type1' module to use the Adobe engine.
-
- Add the callback and some conditionals to switch between the two
- engines.
-
- * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change
- function declarations.
- * src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the
- callbacks.
-
- * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
- number conversion.
-
- * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code
- to choose which renderer to use.
-
- * src/cid/cidgload.c (cid_load_glyph): Update call.
- * src/base/ftobjs.c, src/psaux/psobjs.c, src/type1/t1gload.c: Update
- includes.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [type1] Add Adobe engine configuration.
-
- Use the previously changed PS_Driver in type1 module to store
- hinting engine configuration.
-
- * include/freetype/ftt1drv.h: New file.
- Duplicate and rename config options from CFF.
- * include/freetype/config/ftheader.h (FT_TYPE1_DRIVER_H): New macro.
-
- * src/type1/t1driver.c (t1_driver_class): Update declaration.
- * src/type1/t1objs.c: Include FT_TYPE1_DRIVER_H.
- (T1_Driver_Init): Update code.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [cff] Move and rename `CFF_Driver'.
-
- This is so that we can use the same hinting engine parameters for
- Type 1.
-
- * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
- move to...
- * include/freetype/internal/psaux.h (PS_Driver): ...here.
-
- * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffload.c,
- src/cff/cffobjs.c, src/cff/cffobjs.h, src/psaux/psft.c,
- src/psaux/psobjs.c: Update references.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, type1] Reorganize object fields.
-
- Make some fields more generic, so that we can access them the same
- way regardless of Type 1 or CFF.
-
- * include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face'
- to `FT_Face'.
- Remove unused fields.
-
- * src/psaux/psft.c: Update all accesses of `PS_Builder.face'.
- Add some asserts to guard against casting `T1_Face' as `TT_Face'.
-
- * src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow
- `CFF_GlyphSlot', so that we can pretend they are the same in the
- interpreter.
-
- * src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point):
- Updated with above changes.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Prepare for Type 1 mode.
-
- Add some checks for Type 1 data passing through.
-
- * src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
- * src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
- code which is not applicable for Type 1.
-
- * src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
- `decoder->cff' in Type 1 mode.
- Copy `is_t1' flag to `CF2_Font'.
-
-2017-09-25 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Use the new objects.
-
- * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
- switching between new and old engines.
-
- * src/cff/cffgload.c, src/cff/cffparse.c: Update calls.
-
- * src/psaux/psblues.c, src/psaux/psfont.c, src/psaux/psfont.h,
- src/psaux/psft.c, src/psaux/psft.h, src/psaux/psintrp.c: Update all
- to use new objects.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Objects for new interpreter (part 2).
-
- Make the new objects copy over values. They are essentially wrapper
- types for the different decoders/builders.
-
- * include/freetype/internal/psaux.h: Update declarations.
- (PS_Builder): Add `is_t1' flag.
- (PS_Decoder_{Get,Free}_Glyph_Callback): Renamed to...
- (CFF_Decoder_{Get,Free}_Glyph_Callback: ... this.
- (PS_Decoder): Updated.
- Add `t1_parse_callback' member.
- (PSAux_ServiceRec): Add `ps_decoder_init' member.
-
- * src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations.
-
- * src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two
- modes.
-
- * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
- service.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Add objects for new interpreter.
-
- Introduce `PS_Decoder' and `PS_Builder' which include all fields
- from either Type 1 or CFF decoders/builders.
-
- * include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New
- structs.
-
- * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
- functions.
-
- * src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold
- `PS_Decoder' initialization functions.
-
- * src/psaux/psaux.c, src/psaux/Jamfile (_sources),
- src/psaux/rules.mk (PSAUX_DRV_SRC): Updated.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Rename files.
-
- Replace the `cf2' file name prefix with `ps' as the Adobe engine
- will be used for both PostScript Types 1 and 2 (CFF) instead of just
- CFF.
-
- s/cf2/ps/ for all following.
-
- * src/psaux/cf2*: Rename files.
- * src/psaux/*: Update includes.
-
- * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC,
- PSAUX_DRV_H): Update file references.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux] Minor fix.
-
- Use `MultiMasters' service in `psaux' instead of a call to `cff'.
- The project builds if CFF_CONFIG_OPTION_OLD_ENGINE is not defined.
-
- * src/psaux/cf2ft.c: Update includes.
- (cf2_getNormalizedVector): Use `mm->get_var_blend' instead of
- `cff_get_var_blend'.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Move `cff_random' into `psaux' service.
-
- NOTE: Does not compile!
-
- Minor fix to allow both `cff' and `psaux' to use `cff_random'.
-
- * src/cff/cffload.c (cff_random): Move to...
- * src/psaux/psobjs.c: Here.
- * src/cff/cffload.h: Move corresponding declaration to
- `src/psaux/psobjs.h'.
-
- * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
- function here...
- * src/psaux/psauxmod.c: And here.
-
- * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [cff] Move struct declarations to `freetype/internal'.
-
- NOTE: Does not compile!
-
- This is so that the CFF functions moved to `psaux' can access the
- same structs that they need.
-
- * src/cff/cfftypes.h: Moved to...
- * include/freetype/internal/cfftypes.h: ...Here.
-
- * src/cff/cffobjs.h: Moved the struct declarations to...
- * include/freetype/internal/cffotypes.h: ... this new file.
-
- * include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H,
- FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros.
-
- * src/cff/cffcmap.h, src/cff/cffdrivr.c, src/cff/cffgload.c,
- src/cff/cffgload.h, src/cff/cffload.h, src/cff/cffobjs.c,
- src/cff/cffobjs.h, src/cff/cffparse.h, src/psaux/psobjs.h,
- include/freetype/internal/psaux.h,
- include/freetype/internal/services/svcfftl.h: Update includes.
-
- * src/cff/rules.mk (CFF_DRV_H): Updated.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Add new service for inter-module calls.
-
- NOTE: Does not compile!
-
- This is to allow CFF functions moved to `psaux' to call functions
- declared in `src/cff/cffload.h'.
-
- * include/freetype/internal/services/svcfftl.h: New file, setting up
- a `CFFLoad' service.
-
- * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10,
- FT_DEFINE_SERVICEDESCREC): New macros.
- (FT_SERVICE_CFF_TABLE_LOAD_H): New macro.
-
- * src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service.
-
- * src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h
- (CF2_FontRec): Add service interface.
-
- * src/cff/cffobjs.c, src/psaux/cf2font.c, src/psaux/cf2ft.c,
- src/psaux/cf2intrp.c, src/psaux/cffdecode.c: Use the new service.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Add callbacks for inter-module calls.
-
- NOTE: Does not compile!
-
- * include/freetype/internal/psaux.h: Add function pointer
- declarations.
-
- * src/psaux/cffdecode.c (cff_decoder_init): Update to take in
- callbacks.
- * src/psaux/cffdecode.h: Ditto.
-
- * src/cff/cffgload.c (cff_compute_max_advance, cff_slot_load):
- Update calls to pass in callbacks.
- * src/psaux/cf2ft.c, src/psaux/cffdecode.c: Use them.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Create new `PSAux' service interface entries.
-
- NOTE: Does not compile!
-
- * include/freetype/internal/psaux.h: Include
- FT_INTERNAL_TRUETYPE_TYPES_H.
- (CFF_Builder_FuncsRec, CFF_Decocer_FuncsRec): New function tables.
- (CFF_Builder): Updated.
- Fix for forward declaration.
- (PSAux_ServiceRec): New field `cff_decoder_funcs'.
-
- * src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New
- function tables.
- (PSAux_Interface): Updated.
-
- * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
- service interface.
-
- * src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update
- function calls to use psaux service.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Move CFF builder components into `psaux' module.
-
- NOTE: Does not compile!
-
- * src/cff/cffgload.c
- (cff_builder_{init,done,add_point,add_point1,add_contour,start_point,close_contour},
- cff_check_points): Move to...
- * src/psaux/psobjs.c: Here.
-
- * src/cff/cffgload.h: Move corresponding declarations to
- `src/psaux/psobjs.h'.
-
- * src/cff/cffgload.h (CFF_Builder): Move struct declaration to...
- * include/freetype/internal/psaux.h: Here.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Move CFF decoder components into `psaux' module.
-
- NOTE: Does not compile!
-
- * src/cff/cffgload.c (CFF_Operator,
- CFF_COUNT_{CHECK_WIDTH,EXACT,CLEAR_STACK}, cff_argument_counts,
- cff_operator_seac, cff_compute_bias,
- cff_lookup_glyph_by_stdcharcode,
- cff_decoder_{parse_charstrings,init,prepare}): Move to...
- * src/psaux/cffdecode.c: This new file.
-
- * src/cff/cffgload.h: Move corresponding declarations to...
- * src/psaux/cffdecode.h: This new file.
-
- * src/cff/cffgload.h (CFF_MAX_{OPERANDS,SUBRS_CALLS,TRANS_ELEMENTS},
- CFF_Decoder_Zone, CFF_Decoder): Move declarations to...
- * include/freetype/internal/psaux.h: Here.
-
- * src/psaux/cf2ft.h: Update include.
-
- * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with
- the new file.
-
-2017-09-24 Ewald Hew <ewaldhew@gmail.com>
-
- [psaux, cff] Move Adobe's engine components into `psaux' module.
-
- This is the first patch of a sequence to move the Type 2 charstring
- processing capability from the `cff' module to the `psaux' module.
-
- NOTE: Does not compile!
-
- * src/cff/cf2*: Move these files to...
- * src/psaux/cf2*: Here.
-
- * src/cff/Jamfile (_sources), src/cff/rules.mk (CFF_DRV_SRC,
- CFF_DRV_H), src/cff/cff.c, src/cff/cffgload.c: Remove file
- references.
-
- * src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c
- (PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references.
-
-2017-09-24 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- Tweak per-face LCD filtering controls.
-
- Thing are simpler with a NULL-function pointer.
-
- * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
- pointer to the filter function.
- (FT_LibraryRec): Remove unused `lcd_filter'.
- (FT_Bitmap_LcdFilterFunc, ft_lcd_filter_fir): Move from here...
- * include/freetype/ftlcdfil.h (FT_Bitmap_LcdFilterFunc,
- ft_lcd_filter_fir): ... to here.
-
- * src/base/ftobjs.c (ft_open_face_internal): NULL-initialize the
- per-face filter.
- (FT_Face_Properties): Set it.
- * src/smooth/ftsmooth.c (ft_smooth_render_generic): Simplify.
-
- * src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter):
- Minor.
-
-2017-09-24 Jonathan Kew <jfkthame@gmail.com>
-
- [sfnt] Fix `premultiply_data' (#52092).
-
- * src/sfnt/pngshim.c (premultiply_data): Don't use vector extension
- if we have less than 16 bytes of data.
-
-2017-09-24 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Fix handling of ValueRecords.
-
- For GPOS pair positioning format 1 the description of ValueRecords
- in the OpenType specification (1.8.2, from today) is wrong – the
- offset has to be taken from the parent structure; in this case the
- `PairSet' table.
-
- * src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'.
- (otv_PairPos_validate): Adjust.
-
-2017-09-23 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Handle `GSUB' and `GPOS' v1.1 tables.
-
- * src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c
- (otv_GPOS_validate): Implement it.
-
-2017-09-23 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Update common table handling to OpenType 1.8.2.
-
- * src/otvalid/otvcommn.c (otv_Device_validate): Handle
- VariationIndex subtable.
- (otv_Lookup_validate): Handle MarkFilteringSet.
-
-2017-09-23 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Windows-style DLL versioning.
-
- * build/windows/ftver.rc: New VERSIONINFO resource.
- * build/windows/vc2010/freetype.vcxproj: Further improvements.
-
-2017-09-23 Ben Wagner <bungeman@google.com>
-
- [truetype] Really fix #52082.
-
- * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
-
-2017-09-23 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Handle `GDEF' v1.2 and v1.3 tables.
-
- No validation of variation stuff yet.
-
- * src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function.
- (otv_GDEF_validate): Implement it.
-
-2017-09-22 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Handle `BASE' v1.1 table.
-
- No validation of variation stuff yet.
-
- * src/otvalid/otvbase.c (otv_BASE_validate): Implement it.
-
-2017-09-22 Werner Lemberg <wl@gnu.org>
-
- [otvalid] Macros for 32bit offset support.
-
- * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32,
- OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros.
-
-2017-09-21 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Simplify Visual C++ 2010 project.
-
- * build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded
- configurations and tweak.
-
-2017-09-21 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflow (#52082).
-
- * src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS.
-
-2017-09-21 Werner Lemberg <wl@gnu.org>
-
- [sfnt] Fix postscript name for default instance of variation fonts.
-
- Problem reported by Behdad.
-
- * src/sfnt/sfdriver.c (sfnt_get_ps_name): Test
- `is_default_instance'.
-
-2017-09-21 Werner Lemberg <wl@gnu.org>
-
- [truetype] Fix `mmvar' array pointers, part 2.
-
- The previous commit was incomplete.
-
- * src/truetype/ttgxvar.c: Properly initialize sub-array offsets for
- `master' also.
-
-2017-09-21 Werner Lemberg <wl@gnu.org>
-
- [truetype] Fix `mmvar' array pointers.
-
- Without this change, clang's AddressSanitizer reports many runtime
- errors due to misaligned addresses.
-
- * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer
- size for sub-array offsets into `mmvar'.
-
-2017-09-20 Werner Lemberg <wl@gnu.org>
-
- [truetype] Integer overflows.
-
- Changes triggered by
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429
-
- * src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG.
- (Ins_MIAP): Use SUB_LONG.
-
-2017-09-19 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Fix DLL builds in Visual C++ project.
-
- * build/windows/vc2010/freetype.vcxproj: Use DynamicLibrary in Debug
- and Release configurations.
- * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
- [_DLL]: Use Visual C++ extensions.
-
-2017-09-19 John Tytgat <John.Tytgat@esko.com>
-
- [cff] Fix family name logic of pure CFF fontdata (#52056).
-
- 1. If `FamilyName' is present in the CFF font, use this for
- FT_Face's `family_name'.
- 2. Otherwise, use the face name and chop off any subset prefix.
- 3. If at this point FT_Face's `family_name' is set, use this
- together with the full name to determine the style.
- 4. Otherwise, use `CIDFontName' as FT_Face's `family_name'.
- 5. If we don't have a valid style, use "Regular".
-
- Previously, FT_Face's `family_name' entry for pure CFF fontdata
- nearly always was the fontname itself, instead of the `FamilyName'
- entry in the CFF font (assuming there is one).
-
- * src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it.
-
-2017-09-18 Alexei Podtelezhnikov <apodtele@gmail.com>
-
- [build] Declutter Visual C++ 2010-2017 project.
-
- * build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
- optimization for Release configuration throughout the project.
-
----------------------------------------------------------------------------
-Copyright 2017-2018 by
+Copyright (C) 2018-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.20 b/ChangeLog.20
index 63e3116..a589e13 100644
--- a/ChangeLog.20
+++ b/ChangeLog.20
@@ -1688,7 +1688,7 @@
2001-04-03 Werner Lemberg <wl@gnu.org>
- * src/*/Jamfile: Slight changes to make files more cryptic.
+ * src/*/Jamfile: Slight changes to make files more cryptic.
2001-04-03 Werner Lemberg <wl@gnu.org>
@@ -1928,7 +1928,7 @@
* src/autohint/ahtypes.h (AH_Hinter): Add elements
`disable_horz_edges', `disable_vert_edges'.
- * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use
+ * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use
them (and remove static variables with the same names).
* src/pcf/pcfutil.c (BitOrderInvert): Add `const'.
* docs/glnames.py: Updated to latest pstables.h changes.
@@ -2109,7 +2109,7 @@
* include/freetype/internal/t2types.h: This file was merged with
cfftypes.h and is no longer necessary.
- * include/freetype/internal/t2errors.h: Renamed to cfferrs.h.
+ * include/freetype/internal/t2errors.h: Renamed to cfferrs.h.
* src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c,
src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c,
@@ -2184,11 +2184,11 @@
2000-12-24 Tom Kacvinsky <tkacvins@freetype.org>
- * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font
+ * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font
transform is applied.
* src/cff/cffparse.c (cff_parse_font_matrix): Added code so that
- the font matrix numbers are scaled by 1/(matrix->yy). Also, the
+ the font matrix numbers are scaled by 1/(matrix->yy). Also, the
offset vector now contains integer values instead of 16.16 fixed
numbers.
@@ -2597,7 +2597,7 @@
----------------------------------------------------------------------------
-Copyright 2000-2018 by
+Copyright (C) 2000-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.21 b/ChangeLog.21
index 1adc817..ea889ee 100644
--- a/ChangeLog.21
+++ b/ChangeLog.21
@@ -553,7 +553,7 @@
(T1_New_Parser): Use it to check font header before allocating
anything on the heap.
- * src/type42/t42parse.c (t42_parser_init): Modify functions to check
+ * src/type42/t42parse.c (t42_parser_init): Modify functions to check
the font header before allocating anything on the heap.
* include/freetype/internal/ftmemory.h (FT_ARRAY_MAX,
@@ -9422,7 +9422,7 @@
----------------------------------------------------------------------------
-Copyright 2002-2018 by
+Copyright (C) 2002-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.22 b/ChangeLog.22
index 4517c32..feaab86 100644
--- a/ChangeLog.22
+++ b/ChangeLog.22
@@ -2821,7 +2821,7 @@
----------------------------------------------------------------------------
-Copyright 2005-2018 by
+Copyright (C) 2005-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.23 b/ChangeLog.23
index 85253f1..f137252 100644
--- a/ChangeLog.23
+++ b/ChangeLog.23
@@ -750,7 +750,7 @@
2009-07-31 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
sfnt: Cast a charcode to 32-bit in cmap format 14 parser.
-
+
* src/sfnt/ttcmap.c (tt_cmap14_char_var_index,
tt_cmap14_char_var_isdefault, tt_cmap14_char_variants,
tt_cmap14_variant_chars): Correct mismatches from
@@ -1344,24 +1344,24 @@
* include/freetype/config/ftstdlib.h: Introduce
FT_INT_MIN, to use in signed integer overflow in
16-bit and 64-bit platforms.
-
+
* include/freetype/internal/fttrace.h: Add a tracer
to ftsynth.c.
-
+
* src/base/ftbitmap.c (FT_Bitmap_Embolden): Check
invalid strength causing integer overflow on 16-bit
platform.
-
+
* src/base/ftcalc.c (ft_corner_orientation): Change
the internal calculation from FT_Int to FT_Long, to
avoid an overflow on 16-bit platforms. The caller of
this function should use only the sign of result,
so the cast to FT_Int is acceptable.
-
+
* src/base/ftsynth.c: Introduce a tracer for synth module.
(FT_GlyphSlot_Embolden): Check invalid strength causing
integer overflow on 16-bit platform.
-
+
* src/bdf/bdfdrivr.c (BDF_Face_Init): The glyph index
in FT2 API is typed as FT_UInt, although BDF driver
can handle unsigned long glyph index internally. To
@@ -1372,25 +1372,25 @@
glyph pitch internally. To avoid integer overflow on
16-bit platform, too large glyph pitch should not be
returned.
-
+
* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): The glyph
pitch in FT2 is typed as FT_UInt, although PFR font
format can include huge bitmap glyph with 24-bit pitch
(however, a glyph spends 16.7 pixel, it's not realistic).
To avoid integer overflow on 16-bit platform, huge
bitmap glyph should be excluded.
-
+
* src/smooth/ftgrays.c (gray_hline): As FT_Span.x is
truncated to fit its type (16-bit short), FT_Span.y
should be truncated to fit its type (FT_Int).
-
+
* src/cff/cffdrivr.c (cff_get_ros): CFF specification
defines the supplement in ROS as a real number.
Truncate it to fit public FT2 API.
-
+
* src/cff/cffparse.c (cff_parse_cid_ros): Warn the
supplement if it is truncated or rounded in cff_get_ros().
-
+
* src/cff/cfftypes.h: Change the type of internal variable
`supplement' from FT_Long to FT_ULong to fit the signedness
to the type in public API.
@@ -1653,7 +1653,7 @@
cff: Fix some data types mismatching with their sources.
- * src/cff/cffgload.c (cff_slot_load): The types of
+ * src/cff/cffgload.c (cff_slot_load): The types of
`top_upm' and `sub_upm' are matched with
CFF_FontRecDict->units_per_em.
@@ -1811,56 +1811,56 @@
gxv_XClassTable_lookupval_validate,
gxv_XClassTable_lookupfmt4_transit):
Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
-
+
* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
gxv_bsln_LookupFmt4_transit): Ditto.
-
+
* src/gxvalid/gxvjust.c
(gxv_just_pcTable_LookupValue_entry_validate,
gxv_just_classTable_entry_validate,
gxv_just_wdcTable_LookupValue_validate): Ditto.
-
+
* src/gxvalid/gxvkern.c
(gxv_kern_subtable_fmt1_entry_validate): Ditto.
-
+
* src/gxvalid/gxvlcar.c (gxv_lcar_LookupValue_validate,
gxv_lcar_LookupFmt4_transit): Ditto.
-
+
* src/gxvalid/gxvopbd.c (gxv_opbd_LookupValue_validate,
gxv_opbd_LookupFmt4_transit): Ditto.
-
+
* src/gxvalid/gxvprop.c (gxv_prop_LookupValue_validate,
gxv_prop_LookupFmt4_transit): Ditto.
-
+
* src/gxvalid/gxvmort4.c
(gxv_mort_subtable_type4_lookupval_validate): Ditto.
-
+
* src/gxvalid/gxvmort0.c
(gxv_mort_subtable_type0_entry_validate): Update
from GXV_StateTable_GlyphOffsetDesc
to GXV_StateTable_GlyphOffsetCPtr.
-
+
* src/gxvalid/gxvmort1.c
(gxv_mort_subtable_type1_entry_validate): Ditto.
-
+
* src/gxvalid/gxvmort2.c
(gxv_mort_subtable_type2_entry_validate): Ditto.
-
+
* src/gxvalid/gxvmort5.c
(gxv_mort_subtable_type5_entry_validate): Ditto.
-
+
* src/gxvalid/gxvmorx2.c
(gxv_morx_subtable_type2_entry_validate): Ditto.
-
+
* src/gxvalid/gxvmorx5.c
(gxv_morx_subtable_type5_entry_validate): Ditto.
-
+
* src/gxvalid/gxvmorx1.c
(gxv_morx_subtable_type1_entry_validate): Ditto.
(gxv_morx_subtable_type1_LookupValue_validate,
gxv_morx_subtable_type1_LookupFmt4_transit):
Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
-
+
* src/gxvalid/gxvmorx0.c
(gxv_morx_subtable_type0_entry_validate): Update
from GXV_XStateTable_GlyphOffsetDesc
@@ -1976,7 +1976,7 @@
Prevent the overflows by a glyph with too many points or contours.
The bug is reported by Boris Letocha <b.letocha@gmc.net>. See
https://lists.gnu.org/archive/html/freetype-devel/2009-06/msg00031.html
- https://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html
+ https://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html
* include/freetype/ftimage.h (FT_OUTLINE_CONTOURS_MAX,
FT_OUTLINE_POINTS_MAX): New macros to declare the maximum
@@ -6948,7 +6948,7 @@
2006-11-25 David Turner <david@freetype.org>
- * src/autofit/afhints.c (af_glyph_hints_dump_points,
+ * src/autofit/afhints.c (af_glyph_hints_dump_points,
af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
Add stubs to link the `ftgrid' test program when debugging is
disabled in the auto-hinter.
@@ -7932,7 +7932,7 @@
----------------------------------------------------------------------------
-Copyright 2006-2018 by
+Copyright (C) 2006-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.24 b/ChangeLog.24
index 44abc40..52004db 100644
--- a/ChangeLog.24
+++ b/ChangeLog.24
@@ -231,7 +231,7 @@
* src/base/md5.c, src/base/md5.h: New files, taken from
- http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
+ https://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
* include/freetype/internal/fttrace.h: Add `bitmap'.
@@ -774,7 +774,7 @@
(Font_Class): Rename to...
(SPH_Font_Class): This. Decorate with `const' where appropriate.
-
+
* src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
Decorate arguments with `const' where appropriate.
@@ -1271,7 +1271,7 @@
* src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
(af_cjk_metrics_init, af_cjk_script_class): Updated.
- * src/autofit/afindic.c (af_indic_metrics_init,
+ * src/autofit/afindic.c (af_indic_metrics_init,
af_indic_script_class): Updated.
* src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.
@@ -6344,7 +6344,7 @@
----------------------------------------------------------------------------
-Copyright 2010-2018 by
+Copyright (C) 2010-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.25 b/ChangeLog.25
index 59cf2bf..c4a3c53 100644
--- a/ChangeLog.25
+++ b/ChangeLog.25
@@ -3405,7 +3405,7 @@
The canonical URL to get updates for this file is
- http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
+ https://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
as the author told me in private communication.
@@ -4837,7 +4837,7 @@
Apply fixes for cppcheck nitpicks.
- http://cppcheck.sourceforge.net/
+ https://cppcheck.sourceforge.net/
The call was (from the top-level of the FreeType tree):
@@ -5145,7 +5145,7 @@
----------------------------------------------------------------------------
-Copyright 2013-2018 by
+Copyright (C) 2013-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.26 b/ChangeLog.26
index ea89e91..5e0911c 100644
--- a/ChangeLog.26
+++ b/ChangeLog.26
@@ -2393,7 +2393,7 @@
* src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
(af_cjk_writing_system_class): Updated.
- * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
+ * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
* src/autofit/afindic.c (af_cjk_get_standard_width): New function.
(af_indic_writing_system_class): Updated.
* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
@@ -5695,7 +5695,7 @@
----------------------------------------------------------------------------
-Copyright 2015-2018 by
+Copyright (C) 2015-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.27 b/ChangeLog.27
index 0e82b2f..e9d1ec1 100644
--- a/ChangeLog.27
+++ b/ChangeLog.27
@@ -2090,7 +2090,7 @@
----------------------------------------------------------------------------
-Copyright 2016-2018 by
+Copyright (C) 2016-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.28 b/ChangeLog.28
index ca1ff38..c288bb9 100644
--- a/ChangeLog.28
+++ b/ChangeLog.28
@@ -2489,8 +2489,8 @@
Based on ideas taken from
- http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
- http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
+ https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
+ https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
* builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to
set output variables if program is available.
@@ -3120,7 +3120,7 @@
----------------------------------------------------------------------------
-Copyright 2016-2018 by
+Copyright (C) 2016-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.29 b/ChangeLog.29
new file mode 100644
index 0000000..2134071
--- /dev/null
+++ b/ChangeLog.29
@@ -0,0 +1,2352 @@
+2018-05-01 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.9.1 released.
+ =========================
+
+
+ Tag sources with `VER-2-9-1'.
+
+ * docs/VERSION.TXT: Add entry for version 2.9.1.
+ * docs/CHANGES: Updated.
+
+ * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
+ src/base/ftver.rc, 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.9/2.9.1/, s/29/291/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+ * builds/unix/configure.raw (version_info): Set to 22:1:16.
+ * CMakeLists.txt (VERSION_PATCH): Set to 1.
+
+ * include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
+
+2018-04-26 Werner Lemberg <wl@gnu.org>
+
+ Another fix for handling invalid format 2 cmaps.
+
+ Sigh.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
+ an endless loop.
+
+2018-04-24 Ben Wagner <bungeman@google.com>
+
+ [base] Avoid undefined behaviour in lcd filtering code (#53727).
+
+ * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
+ Ensure `height > 0'.
+
+2018-04-22 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.
+
+2018-04-22 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Fix bitmap emboldening.
+
+ Bug introduced after release 2.8.
+
+ * src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
+ `FT_QALLOC_MULT', which doesn't zero out the buffer. Adjust the
+ bitmap copying code to take care of this fact.
+
+2018-04-22 Werner Lemberg <wl@gnu.org>
+
+ Another fix for handling invalid format 2 cmaps.
+
+ The previous commit was incomplete.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
+ an endless loop.
+
+2018-04-19 Werner Lemberg <wl@gnu.org
+
+ [autofit] Add support for Georgian Mtavruli characters.
+
+ This will be part of the forthcoming Unicode 11.0.
+
+ * src/autofit/afblue.dat: Add blue zone data for Mtavruli.
+ * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+ * src/autofit/afscript.h: Add Mtavruli standard character.
+
+2018-04-18 Werner Lemberg <wl@gnu.org>
+
+ Fix handling of invalid format 2 cmaps.
+
+ The problem was introduced after the last release.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
+
+2018-04-17 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow issues.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739
+
+ * src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
+
+2018-04-16 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow issues.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718
+
+ * src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
+
+2018-04-15 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Use `info' function of make 3.81.
+
+ * configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
+ docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.
+
+ * builds/detect.mk (std_setup): Replace `echo' with `info'.
+ (dos_setup): Removed.
+ * builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
+ builds/windows/detect.mk, builds/os2/detect.mk: Updated.
+ * builds/newline: No longer needed.
+
+2018-04-15 Werner Lemberg <wl@gnu.org>
+
+ [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
+
+ This fixes
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707
+
+ * src/truetype/ttinterp.c (Ins_SLOOP): Do it.
+
+2018-04-14 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow issues.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652
+
+ * src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
+
+2018-04-14 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Update to Unicode 11.0.0.
+
+ But no support new scripts (volunteers welcomed).
+
+ * src/autofit/afranges.c (af_arab_nonbase_uniranges,
+ af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
+ af_deva_nonbase_uniranges, af_geor_uniranges,
+ af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
+ af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
+ af_hani_uniranges): Add new data.
+
+2018-04-10 Nikolaus Waxweiler <madigens@gmail.com>
+
+ * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
+ modernization measures.
+
+ This brings up the minimum required CMake version to 2.8.12.
+
+ The installation paths follow the GNU defaults now, e.g. installing on a
+ 64 bit host will place binaries into the lib64/ folder on e.g. Fedora.
+
+ Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).
+
+ CMake will no longer look for a C++ compiler.
+
+ Library and .so version now match the Autotools build.
+
+ Comments in the build file and informational messages now use platform
+ agnostic example commands.
+
+ ftoption.h and ftconfig.h are written directly without a redundant `-new'
+ copy.
+
+ External dependencies are expressed as option()s and will turn up as such
+ in cmake-gui.
+
+ Internal: Properties such as dependencies and include directories are now
+ privately set on the freetype library instead of globally.
+
+ The CPack definitions have been cleaned up, the `make dist' has been
+ removed. Source packages generated with CPack don't contain Autotools
+ files and aren't used by the maintainers anyway.
+
+ On Windows, src/base/ftver.rc is compiled to decorate the library with
+ version and copyright information.
+
+ A pkg-config file is now generated and installed.
+
+2018-04-09 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow issues.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453
+
+ * src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
+ ADD_LONG and SUB_LONG.
+
+2018-04-06 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [windows, wince] Clean up legacy project files.
+
+ * builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/windows/vc2005/freetype.vcproj,
+ builds/windows/vc2008/freetype.vcproj,
+ builds/windows/visualce/freetype.vcproj,
+ builds/windows/visualce/freetype.dsp,
+ builds/windows/visualc/freetype.vcproj,
+ builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
+
+2018-04-04 Werner Lemberg <wl@gnu.org>
+
+ [cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371
+
+ * src/cff/cffload.c (cff_load_private_dict): Sanitize
+ `priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
+ on.
+
+ * src/type1/t1load.c (T1_Open_Face): Ditto.
+
+2018-04-04 Ben Wagner <bungeman@google.com>
+
+ * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
+ `DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
+ (tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
+ in above.
+
+2018-04-01 Werner Lemberg <wl@gnu.org>
+
+ * builds/toplevel.mk (work): Use $(SEP).
+
+ This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
+ platform, and this program only understands backslashes in paths.
+
+ Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
+
+2018-03-30 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix memory leak (only if tracing is on).
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
+ it.
+
+2018-03-23 Ben Wagner <bungeman@google.com>
+
+ [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
+
+ * src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
+
+2018-03-23 Ben Wagner <bungeman@google.com>
+
+ [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
+
+ * src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
+ for empty bitmaps.
+
+2018-03-22 Werner Lemberg <wl@gnu.org>
+
+ Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
+
+ builds/amiga/makefile, builds/amiga/makefile.os4,
+ builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
+ builds/mac/FreeType.m68k_far.make.txt,
+ builds/mac/FreeType.ppc_carbon.make.txt,
+ builds/mac/FreeType.ppc_classic.make.txt,
+ builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/windows/vc2005/freetype.vcproj,
+ builds/windows/vc2008/freetype.vcproj,
+ builds/windows/vc2010/freetype.vcxproj,
+ builds/windows/vc2010/freetype.vcxproj.filters,
+ builds/windows/visualc/freetype.dsp,
+ builds/windows/visualc/freetype.vcproj,
+ builds/windows/visualce/freetype.dsp,
+ builds/windows/visualce/freetype.vcproj, vms_make.com: Do it.
+
+2018-03-13 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
+ overflow.
+
+2018-03-13 Werner Lemberg <wl@gnu.org>
+
+ Fix cmap format 2 handling (#53320).
+
+ The patch introduced for #52646 was not correct.
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
+
+2018-03-10 Nikolaus Waxweiler <madigens@gmail.com>
+
+ * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
+
+2018-03-09 Chun-wei Fan <fanc999@yahoo.com.tw>
+
+ * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
+
+ Do not limit DLL builds to MinGW, since we already have
+ `__declspec(dllexport)' directives in `ftconfig.h'.
+ Also suppress more warnings for POSIX functions.
+
+2018-03-08 Hugh McMaster <hugh.mcmaster@outlook.com>
+
+ Make installation of `freetype-config' optional (#53093).
+
+ * builds/unix/configure.raw: Add option `--enable-freetype-config'
+ and set `INSTALL_FT2_CONFIG'.
+ * builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define.
+ * builds/unix/install.mk (install): Handle it.
+
+2018-03-05 Werner Lemberg <wl@gnu.org>
+
+ Make `ftlcdfil.c' part of the `base' module.
+
+ `ftobjs.c' needs `ft_lcd_padding'.
+
+ Problem reported by duhuanpeng <548708880@qq.com>.
+
+ * modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.
+
+ * src/base/ftbase.c: Include `ftlcdfil.c'.
+ * src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
+ * src/base/Jamfile (_sources): Adjusted.
+
+ * docs/INSTALL.ANY: Updated.
+
+2018-03-05 Werner Lemberg <wl@gnu.org>
+
+ Make `ftfntfmt.c' part of the `base' module.
+
+ `ftobjs.c' needs `FT_Get_Font_Format'.
+
+ Problem reported by duhuanpeng <548708880@qq.com>.
+
+ * modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.
+
+ * src/base/ftbase.c: Include `ftfntfmt.c'.
+ * src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
+ * src/base/Jamfile (_sources): Adjusted.
+
+ * docs/INSTALL.ANY: Updated.
+
+2018-03-01 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.
+
+2018-02-23 Werner Lemberg <wl@gnu.org>
+
+ * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
+
+ Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
+
+2018-02-17 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).
+
+2018-02-06 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow issues.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027
+
+ * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
+ SUB_LONG; avoid FT_ABS.
+
+2018-02-04 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [unix] Use -fvisibility=hidden.
+
+ It is now widely recommended that ELF shared libraries hide symbols
+ except those with explicit __attribute__((visibility("default"))).
+ This is supported by all major compilers and should rather be an
+ option in libtool.
+
+ * builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
+ * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+ include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
+ attribute.
+
+2018-01-27 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Better protection against invalid VF data.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739
+
+ Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.
+
+ * src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
+ `normalizedcoords'.
+
+2018-01-27 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
+
+2018-01-27 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.
+
+2018-01-27 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Better trace VF instances.
+
+ * src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
+ of coordinates.
+ (TT_Get_MM_Var): Trace instance indices names.
+ (TT_Set_Var_Design): Updated.
+
+2018-01-27 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Beautify tracing of VF axis records.
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
+ table-like manner.
+
+2018-01-26 Ben Wagner <bungeman@google.com>
+
+ [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
+ `face->blend->num_axis' in case we have to initialize the
+ `face->blend'.
+
+2018-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [apinames] Anonymous version map for GNU linker.
+
+ * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
+ (OutputFormat): Add `OUTPUT_GNU_VERMAP'.
+ (names_dump): Handle it.
+ (usage): Updated.
+ (main): Handle new command line flag `-wL'.
+
+2018-01-21 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [unix] Call libtool to clean up.
+
+ * builds/unix/install.mk (clean_project_unix, distclean_project_unix):
+ Use libtool.
+ * builds/freetype.mk: Minor.
+
+2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftver.rc: Fix mingw-w64 compilation.
+
+2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Enable VERSIONINFO resource for Cygwin/MinGW.
+
+ * builds/unix/configure.raw: Check for resource compiler.
+ * builds/unix/unix-cc.in: Conditionally set up resource compiler.
+ * builds/freetype.mk: Add conditional rule for `ftver.rc'.
+ * src/base/ftver.rc: Copyright notice and year update.
+
+2018-01-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Move VERSIONINFO resource.
+
+ * builds/windows/vc2010/freetype.vcxproj: Updated.
+ * builds/windows/ftver.rc: Move file from here...
+ * src/base/ftver.rc: ... to here.
+
+2018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Expand dllexport/dllimport to Cygwin/MinGW.
+
+ * include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
+ s/_MSC_VER/_WIN32/.
+ * builds/unix/ftconfig.in: Replicate here.
+ * builds/vms/ftconfig.h: Replicate here.
+
+2018-01-12 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Improve and document MSVC build.
+
+ * include/freetype/config/ftconfig.h: Guard dllexport/dllimport
+ attributes with _DLL and FT2_DLLIMPORT.
+ * builds/windows/vc2010/index.html: Update documentation.
+
+2018-01-10 Steve Robinson <ssrobins@gmail.com>
+
+ * CMakeLists.txt [win32]: Suppress warnings for POSIX functions.
+
+2018-01-10 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Correctly handle Flex features (#52846).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
+ cf2_cmdHMOVETO>: Do not move if doing Flex.
+
+2018-01-09 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/vc2010/freetype.sln: Synchronize with the project.
+
+2018-01-08 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.9 released.
+ =======================
+
+
+ Tag sources with `VER-2-9'.
+
+ * docs/VERSION.TXT: Add entry for version 2.9.
+
+ * 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/windows/ftver.rc,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/.
+
+ * include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.
+ (FREETYPE_PATCH): Set to 0.
+
+ * builds/unix/configure.raw (version_info): Set to 22:0:16.
+ * CMakeLists.txt (VERSION_PATCH): Set to 0.
+
+2018-01-07 Werner Lemberg <wl@gnu.org>
+
+ Add check for librt, needed for `ftbench' (#52824).
+
+ * builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will
+ hold `-lrt' if necessary.
+
+ * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
+
+2018-01-07 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Fix Type 1 glyphs with too many stem hints.
+
+ According to the CFF specification, charstrings can have up to 96 stem
+ hints. Due to hint replacement routines in Type 1 charstrings, some
+ glyphs are rejected by the Adobe engine, which implements the above
+ limit. This fix turns off hinting for such glyphs.
+
+ * src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
+ `cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
+ hinting.
+
+2018-01-06 Werner Lemberg <wl@gnu.org>
+
+ Add `FT_Done_MM_Var'.
+
+ This is necessary in case the application's memory routines differ
+ from FreeType. A typical example is a Python application on Windows
+ that calls FreeType compiled as a DLL via the `ctypes' interface.
+
+ * include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
+ and define.
+
+ * docs/CHANGES: Updated.
+
+2018-01-03 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Round offsets of glyph components only if hinting is on.
+
+ * src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
+ it.
+
+2018-01-03 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
+
+ This is a better fix than the previous commit, which is now
+ reverted.
+
+2018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Move internal LCD-related declarations.
+
+ * include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
+ Move from here...
+ * include/freetype/internal/ftobjs.h: ... to here.
+
+2018-01-03 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
+ [_MSC_VER]: Limit Visual C++ attributes.
+
+2018-01-03 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Make blend/design coordinate round-tripping work.
+
+ Behdad reported that setting blend coordinates, then getting design
+ coordinates did incorrectly return the default instance's
+ coordinates.
+
+ * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
+
+2017-12-31 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838
+
+2017-12-31 Werner Lemberg <wl@gnu.org>
+
+ Synchronize other Windows project files.
+
+ * builds/windows/*: Add missing files.
+
+2017-12-31 Werner Lemberg <wl@gnu.org>
+
+ Update Visual C 2010 project files.
+
+ Problem reported by Hin-Tak.
+
+ * builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and
+ `ftcid.c'.
+ Sort entries.
+ * builds/windows/vc2010/freetype.vcxproj.filter: Ditto.
+ Fix members of `FT_MODULE' group.
+
+2017-12-30 Werner Lemberg <wl@gnu.org>
+
+ * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file.
+
+2017-12-28 Werner Lemberg <wl@gnu.org>
+
+ * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.
+
+ Reported by Nikolaus.
+
+2017-12-27 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warnings.
+
+ * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
+ `new_pitch' unsigned.
+
+ * src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.
+
+2017-12-27 Werner Lemberg <wl@gnu.org>
+
+ Fixes for `make multi'.
+
+ * include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
+ (ps_property_get): Harmonize declaration with corresponding
+ function typedef.
+
+ * include/freety[e/internal/fttrace.h: Add `trace_psprops'.
+
+ * src/base/ftpsprop.c: Include necessary header files.
+ (FT_COMPONENT): Define.
+ (ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'.
+ (ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'.
+ Harmonize declaration with corresponding function typedef.
+
+2017-12-27 Werner Lemberg <wl@gnu.org>
+
+ Provide support for intra-module callback functions.
+
+ This is needed especially for `make multi' with C++.
+
+ * include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
+ FT_BASE_CALLBACK_DEF): New macros.
+
+2017-12-25 Ewald Hew <ewaldhew@gmail.com>
+
+ Move PostScript drivers' property handlers to `base'.
+
+ This reduces the amount of duplicated code across PostScript
+ drivers.
+
+ * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c
+ ({cff,cid,t1}_property_{get,set}): Moved to...
+ * include/freetype/internal/ftpsprop.h: ...this new file.
+ (ps_property_{get,set}): New functions to replace moved ones.
+
+ * src/base/ftpsprop.c: New file that implements above functions.
+
+ * include/freetype/internal/internal.h
+ (FT_INTERNAL_POSTSCRIPT_PROPS_H): New macro.
+
+ * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c:
+ Updated.
+
+ * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
+ Updated.
+
+2017-12-20 Werner Lemberg <wl@gnu.org>
+
+ Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.
+
+ We exit early if the current design or blend coordinates are
+ identical to the new ones.
+
+ * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design):
+ Implement it, returning internal error code -1 if there will be no
+ variation change.
+
+ * src/type1/t1load.c (t1_set_mm_blend): Ditto.
+
+ * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
+ FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.
+
+2017-12-18 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Fix charmap type 2 iterator (#52646).
+
+ The subsetted demo font of the report that exhibits the bug has a
+ very unusual type 2 cmap for Unicode(!): It contains only two
+ sub-headers, one for one-byte characters (covering the range 0x20 to
+ 0xFA), and a second one for higher byte 0x01 (just for character
+ code U+0131).
+
+ Before this commit, the iterator wasn't able to correctly handle a
+ sub-header for higher byte 0x01.
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
+ for outer loop.
+
+2017-12-18 Matthias Clasen <matthias.clasen@gmail.com>
+
+ [truetype] Fix clamping, minor tracing code beautification.
+
+ * src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
+ design coordinates.
+ Use clamped value.
+
+2017-12-18 Werner Lemberg <wl@gnu.org>
+
+ * src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff.
+
+2017-12-18 Werner Lemberg <wl@gnu.org>
+
+ * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688).
+
+2017-12-18 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix previous commit.
+
+ * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
+ unhinted phantom points, which must be properly scaled.
+
+2017-12-18 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Don't apply HVAR and VVAR deltas twice (#52683).
+
+ * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust
+ `pp1' to `pp4', except if we have an HVAR and/or VVAR table.
+
+ * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle
+ alternative code branch identically w.r.t. presence of an HVAR
+ and/or VVAR table.
+
+2017-12-17 Jonathan Kew <jfkthame@gmail.com>
+
+ [truetype] Correctly handle variation font phantom points (#52683).
+
+ * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
+ point indices.
+
+2017-12-17 Jonathan Kew <jfkthame@gmail.com>
+
+ Fix incorrect advance width scaling (#52683).
+
+ * src/base/ftadvance.c (FT_Get_Advances): Always respect the
+ FT_LOAD_NO_SCALE flag if present.
+
+2017-12-16 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
+ * objs/.gitignore: Ignore almost everything.
+
+2017-12-11 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warning (#52640).
+
+ * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
+ variable.
+
+2017-12-08 Azzuro <azzuro@team-mediaportal.com>
+
+ * builds/windows/vc2010/freetype.vcxproj: Adjust output directory.
+
+ This allows builds with different configurations in parallel.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ Fix `make setup dos', second try (#52622).
+
+ * builds/detect.mk (dos_setup): Don't use literal `>' character at
+ all. Mixing the different escaping rules from make, dos, and
+ windows is too fragile.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ [docmaker] Fix code section parsing.
+
+ Stuff like
+
+ {
+ <bla>
+ }
+
+ confused the parser, which incorrectly treated `<bla>' as a markup
+ tag.
+
+ * src/tools/docmaker/content.py (ContentProcessor::process_content):
+ Apply `re_markup_tags' only outside of code sections.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ New `ftdriver.h' file, covering all driver modules.
+
+ This reduces redundancy and increases synergy; it also reduces the
+ number of header files.
+
+ * include/freetype/config/ftheader.h (FT_DRIVER_H): New macro.
+ (FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H,
+ FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to
+ FT_DRIVER_H.
+
+ * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
+ include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h,
+ include/freetype/ftttdrv.h: Replaced with...
+ * include/freetype/ftdriver.h: ...this new file.
+ (FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to...
+ (FT_HINTING_ADOBE): ... this new macro.
+ (FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to...
+ (FT_HINTING_FREETYPE): ... this new macro.
+
+ * src/*/*: Updated accordingly.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ Move `ftdriver.h' to `ftdrv.h'.
+
+ * include/freetype/internal/ftdriver.h: Renamed to...
+ * include/freetype/internal/ftdrv.h: ... this name.
+
+ * include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
+ Updated.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ Fix access to uninitalized memory (#52613).
+
+ Also reported as
+
+ https://bugs.chromium.org/p/chromium/issues/detail?id=791317
+
+ * src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the
+ bitmap size needs a larger bitmap buffer, assure that the new memory
+ areas are initialized also.
+
+2017-12-08 Werner Lemberg <wl@gnu.org>
+
+ Fix `make setup dos' (#52622).
+
+ * builds/detect.mk (dos_setup): Properly escape literal `>'
+ character.
+
+2017-12-07 Werner Lemberg <wl@gnu.org>
+
+ Fix C++ compilation.
+
+ * src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.
+
+2017-12-07 Werner Lemberg <wl@gnu.org>
+
+ Fix `make multi'.
+
+ * include/freetype/internal/fttrace.h: Remove unused tracing macros.
+ s/pshalgo2/pshalgo/.
+ Add `trace_cffdecode'.
+ * src/pshinter/pshalgo.c (FT_COMPONENT): Updated.
+
+ * src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
+ * src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and
+ FT_SERVICE_CFF_TABLE_LOAD_H.
+
+ * src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
+
+ * src/psaux/cffdecode.c: Include FT_FREETYPE_H and
+ FT_INTERNAL_DEBUG_H.
+ (FT_COMPONENT): Define.
+ * src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
+ * src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
+ Declare `cff_builder_funcs' and `ps_builder_funcs'.
+ * src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'.
+ * src/psaux/psobjs.c : Include `psauxmod.h'.
+
+2017-12-07 Werner Lemberg <wl@gnu.org>
+
+ * include/freetype/config/ftheader.h: Some clean-up.
+
+ This commit removes documentation of deprecated macros and does some
+ minor streamlining.
+
+2017-12-06 Werner Lemberg <wl@gnu.org>
+
+ * builds/symbian/bld.inf: Updated.
+
+2017-12-06 Werner Lemberg <wl@gnu.org>
+
+ New header file `ftparams.h' that collects all parameter tags.
+
+ * include/freetype/config/ftheader.h (FT_PARAMETER_TAGS_H): New
+ macro.
+ (FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to
+ `ftparams.h'.
+
+ * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
+ include/freetype/ftincrem.h, include/freetype/ftlcdfil.h,
+ include/freetype/ftsnames.h, include/freetype/ftt1drv.h: Include
+ FT_PARAMETER_TAGS_H.
+ Move FT_PARAM_TAG_XXX definitions to...
+ * include/freetype/ftparams.h: ...this new file.
+
+ * include/freetype/ttunpat.h: Remove. No longer needed.
+
+2017-12-05 Werner Lemberg <wl@gnu.org>
+
+ Improve tracing messages by using singular and plural forms.
+
+ * src/*/*.c: Implement it.
+
+2017-12-04 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Allow shared points in `cvar' table (#52532).
+
+ * src/truetype/ttgxvar.c (tt_face_vary_cvt): Implement it by copying
+ and adjusting the corresponding code from
+ `TT_Vary_Apply_Glyph_Deltas'.
+
+2017-11-28 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Improving tracing of composite glyphs.
+
+ * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
+ [FT_DEBUG_LEVEL_TRACE]: Show composite glyph information.
+
+2017-11-27 Werner Lemberg <wl@gnu.org>
+
+ [type1] Allow (again) `/Encoding' with >256 elements (#52464).
+
+ In version 2.6.1, this has been disallowed to better reject
+ malformed fonts; however, this restriction was too strong. This
+ time, we only take the first 256 elements into account, since
+ encoding arrays are always accessed with a 8bit integer, according
+ to the PostScript Language Reference.
+
+ * src/type1/t1load.c (parse_encoding): Implement it.
+
+2017-11-27 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+ Fix last commit (#52522).
+
+ * builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG'
+ properly if we have `ftoption.h' in `BUILD_DIR'.
+
+2017-11-24 Werner Lemberg <wl@gnu.org>
+
+ [unix] Install a massaged `ftoption.h' file (#51780).
+
+ * builds/unix/configure.raw (ftoption_set, ftoption_unset): New
+ auxiliary functions to construct...
+ (FTOPTION_H_SED): ... this new variable.
+ Apply it as a sed argument while copying `ftoption.h' to the
+ `builds/unix' directory (using `AC_CONFIG_FILES').
+ Simplify code of test that checks cpp's computation of bit length
+ (the test previously created an empty `ftoption.h' file and deleted
+ it immediately afterwards); without this change, it can happen on my
+ GNU/Linux box that `configure's execution of `config.status' doesn't
+ create `ftoption.h' (no idea why this happens).
+
+ * builds/unix/install.mk (install): Install
+ `builds/unix/ftoption.h'.
+
+ * builds/unix/unix-def.in (DISTCLEAN): Updated.
+
+ * builds/unix/.gitignore: Updated.
+
+2017-11-23 Tor Andersson <tor.andersson@artifex.com>
+
+ Silence unused function warnings (#52465).
+
+ Some static function declarations cause unused function warnings if
+ certain config options are turned off via `ftoption.h'.
+
+ * src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h,
+ src/truetype/ttgxvar.h: Add #ifdef guards around these sections.
+
+2017-11-22 Ewald Hew <ewaldhew@gmail.com>
+
+ * src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377
+
+2017-11-22 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Fix CFF advance widths. (#52466)
+
+ Glyph advance widths were being written to the new `PS_Decoder' but not
+ saved to the underlying format specific decoder. This caused pure CFF
+ fonts to have bad advance width.
+
+ * include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
+ field to pointer.
+ Remove unused fields.
+ * src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
+ to reference.
+ Remove unused.
+ * src/psaux/psft.c (cf2_setGlyphWidth): Update code.
+
+2017-11-15 Vlad Tsyrklevich <vtsyrklevich@google.com>
+
+ * include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.
+
+2017-11-14 Nikolaus Waxweiler <madigens@gmail.com>
+
+ Use Adobe hinting engine for `light' hinting of both CFF and Type 1.
+
+ Since Ewald Hew factored the Adobe hinting engine out of the CFF
+ driver code, we can now use it on Type 1 (and CID) font formats, as
+ both have the same hinting philosophy.
+
+ This change activates the Adobe hinter when in LIGHT mode, and
+ therefore always unless explicitly asking for the auto-hinter. This
+ makes LIGHT behavior consistent with CFF fonts. As of this commit,
+ the hinting engine table looks as follows.
+
+ LIGHT NORMAL
+ -------------------------
+ TrueType Auto v40
+ CFF Adobe Adobe
+ Type 1 Adobe Adobe
+
+2017-11-10 Yuri Levchenko <yuri_levchenko@boolat.com>
+
+ * CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option.
+
+2017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Relocate condition.
+
+2017-11-06 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables.
+
+2017-11-03 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251)
+
+ The interpreter in Type 1 mode rewinds the charstring after collecting
+ all hints for building the initial hintmap (commit d52dd7f). However,
+ some charstrings use `endchar' in a final subroutine call, rewinding to
+ the start of that subroutine, and only a small section of the actual
+ glyph is drawn.
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>:
+ Ensure we are on the top level charstring before rewinding.
+
+2017-11-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ [truetype] Add more tricky fonts.
+
+ See the report by Yang Yinsen.
+ https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html
+
+ * src/truetype/ttobjs.c (trick_names): Add `DFGothic-EB',
+ `DFGyoSho-Lt', `DFHSGothic-W5', `DFHSMincho-W3' and `DFHSMincho-W7'.
+ (tt_check_trickyness_sfnt_ids): Add checksums for DFGothic-EB,
+ DFGyoSho-Lt, DFHSGothic-W5, DFHSMincho-W3 and DFHSMincho-W7. Also
+ add checksums for DLCLiShu and DLCHayBold which their family names
+ were already listed but their checksums were previously unknown.
+
+2017-11-01 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Fix complex rendering at high ppem.
+
+ We used to split large glyphs into horizontal bands and continue
+ bisecting them still horizontally if that was not enough. This is
+ guaranteed to fail when a single scanline cannot fit into the
+ rendering memory pool. Now we bisect the bands vertically so that
+ the smallest unit is a column of the band height, which is guranteed
+ to fit into memory.
+
+ * src/smooth/ftgrays.c (gray_convert_glyph): Implement it.
+
+2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth] Improve complex rendering at high ppem.
+
+ At large sizes almost but not exactly horizontal segments can quickly
+ drain the rendering pool. This patch at least avoids filling the pool
+ with trivial cells. Beyond this, we can only increase the pool size.
+
+ Reported, analyzed, and tested by Colin Fahey.
+
+ * src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
+
+2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Improve tracing in FT_Load_Glyph, FT_*_Size.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Tag tracing messages with
+ function name, glyph index, and load flags.
+ (FT_Select_Metrics, FT_Request_Metrics): Remove all tracing.
+ (FT_Select_Size, FT_Request_Size): Improve tracing.
+
+2017-10-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Improve tracing in FT_Render_Glyph.
+
+ * src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage
+ calculations and downgrade Netpbm dump to bitmap:7.
+
+2017-10-15 Ewald Hew <ewaldhew@gmail.com>
+
+ [cff] Fix segfault on missing `psaux' (#52218)
+
+ * src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr.
+
+ * modules.cfg: Update dependency list.
+
+2017-10-15 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base, cff] Fix MSVC warnings.
+
+ * src/base/ftobjs.c (FT_New_Library): C4702: unreachable code.
+ (ft_glyphslot_preset_bitmap): C4244: possible loss of data.
+ * src/cff/cffload.c (cff_blend_doBlend): C4244: possible loss of data.
+ Turn `sum' into unsigned.
+
+2017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [base] Netpbm image tracing.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size.
+ (FT_Render_Glyph_Internal): Trace bitmap in Netpbm format.
+
+ * src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing.
+
+2017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * builds/windows/ftdebug.c (FT_Message): Print to stderr.
+ * builds/wince/ftdebug.c (FT_Message): Ditto.
+
+2017-10-14 Behdad Esfahbod <behdad@behdad.org>
+
+ [afshaper] Delay creating `hb_set' objects until needed.
+
+ In runs on Noto Naskh Arabic, this results in 89 sets created
+ instead of 340 before. Makes auto-hinter setup with HarfBuzz
+ enabled 20% to 30% faster.
+
+ * src/autofit/afshaper.c (af_shaper_get_coverage): Implement it.
+
+2017-10-12 Ewald Hew <ewaldhew@gmail.com>
+
+ [type1, cid] Add hinting engine switch.
+
+ Implement property service in `type1' and `cid' drivers to allow
+ switching between FreeType or Adobe hinting engine when both are
+ available.
+
+ * src/cid/cidriver.c (cid_property_{set,get}, cid_services),
+ src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add
+ Properties service.
+
+ * src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c
+ (T1_Driver_Init): Add default property values.
+
+2017-10-12 Ewald Hew <ewaldhew@gmail.com>
+
+ Add T1_CONFIG_OPTION_OLD_ENGINE configuration option.
+
+ This controls whether the old Type 1 engine gets compiled into FreeType.
+ It is disabled by default.
+
+ * devel/ftoption.h, include/freetype/config/ftoption.h
+ (T1_CONFIG_OPTION_OLD_ENGINE): New macro.
+
+ * include/freetype/internal/psaux.h (PS_Decoder): Remove unused field.
+ * include/freetype/internal/psaux.h, src/cid/cidgload.c
+ (cid_load_glyph), src/psaux/psauxmod.c, src/psaux/psobjs.c
+ (ps_builder_add_point), src/psaux/t1decode.c
+ (t1_lookup_glyph_by_stdcharcode, t1_decoder_parse_glyph,
+ t1operator_seac, t1_decoder_parse_charstrings), src/psaux/t1decode.h,
+ src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Surround
+ relevant code with macro.
+ Minor code changes.
+
+2017-10-12 Ewald Hew <ewaldhew@gmail.com>
+
+ Extract width parsing from Type 1 parser.
+
+ Duplicate the fast advance width calculations from the old parser.
+ This is to facilitate adding options for compiling out the old parser.
+
+ * src/psaux/t1decode.{c,h} (t1_decoder_parse_metrics): New function.
+ * include/freetype/internal/psaux.h (T1_Decoder_Funcs): New entry
+ `parse_metrics'.
+ * src/psaux/psauxmod.c: Set the new entry.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String),
+ src/cid/cidgload.c (cid_load_glyph): Separate
+ conditional for selecting engine.
+
+2017-10-09 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/chromium/issues/detail?id=772775
+
+2017-10-08 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Adjust behaviour of PS font names for variation fonts.
+
+ * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's
+ PS name only if no variation is applied.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ [cff, truetype] Adjust behaviour of named instances.
+
+ This commit completely separates the interaction between named
+ instances and variation functions. In particular, resetting the
+ variation returns to the current named instance (if set) and not to
+ the base font.
+
+ As a side effect, variation functions no longer change the named
+ instance index.
+
+ * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
+ function.
+ Also apply `MVAR' table to named instances.
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add cast.
+ (tt_set_mm_blend): No longer check whether requested variation
+ coincides with a named instance.
+ (TT_Set_Var_Design): Use current named instance for default
+ coordinates.
+ * src/truetype/ttobjs.c (tt_face_init): Use `TT_Set_Named_Instance'.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ Make `FT_Set_Named_Instance' work.
+
+ * src/cff/cffdrivr.c (cff_set_instance): New function.
+ (cff_service_multi_masters): Register it.
+
+ * src/truetype/ttgxvar.c (TT_Set_Named_Instance): New function.
+ * src/truetype/ttgxvar.h: Updated.
+ * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Register
+ it.
+
+ * src/type1/t1load.c (T1_Reset_MM_Blend): New function.
+ * src/type1/t1load.h: Updated.
+ * src/type1/t1driver.c (t1_service_multi_masters): Register it.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ Make `FT_FACE_FLAG_VARIATION' work.
+
+ * include/freetype/internal/tttypes.h (TT_Face): Remove
+ `is_default_instance'; this can be replaced with a combination of
+ `FT_IS_VARIATION' and `FT_IS_INSTANCE'.
+
+ * src/cff/cffdrivr.c (cff_get_advances): Updated.
+
+ * src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c
+ (sfnt_init_face): Updated.
+
+ * src/truetype/ttdriver.c (tt_get_advances), src/truetype/ttgload.c
+ (TT_Process_Simple_Glyph, load_truetype_glyph, IS_DEFAULT_INSTANCE),
+ src/truetype/ttgxvar.c (tt_set_mm_blend): Updated.
+ * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
+ Handle `FT_FACE_FLAG_VARIATION'.
+
+ * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle
+ `FT_FACE_FLAG_VARIATION'.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ New function `FT_Set_Named_Instance'.
+
+ No effect yet.
+
+ * src/base/ftmm.c (FT_Set_Named_Instance): New function.
+
+ * include/freetype/ftmm.h: Updated.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ Add macros for checking whether a font variation is active.
+
+ * include/freetype/freetype.h (FT_FACE_FLAG_VARIATION,
+ FT_IS_VARIATION): New macros.
+ No effect yet.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ Add framework for setting named instance in MM service.
+
+ * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func):
+ New function typedef.
+ (MultiMasters): Add `set_instance' member.
+ (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
+
+ * src/cff/cffdrivr.c (cff_service_multi_masters),
+ src/truetype/ttdriver (tt_service_gx_multi_masters),
+ src/type1/t1driver.c (t1_service_multi_masters): Updated.
+
+2017-10-07 Werner Lemberg <wl@gnu.org>
+
+ [type1] Minor code shuffling.
+
+ * src/type1/t1load.c (T1_Set_MM_Blend): Make it a wrapper of...
+ (t1_set_mm_blend): ...this new function.
+ (T1_Set_MM_Design): Use `t1_set_mm_blend'.
+
+2017-10-05 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer
+ overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539
+
+2017-10-05 Werner Lemberg <wl@gnu.org>
+
+ Fix compiler warnings.
+
+ * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
+ on numeric overflow.
+ Add cast.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
+ types, add cast.
+
+2017-10-04 John Tytgat <John.Tytgat@esko.com>
+
+ [cff] Add support for `FSType'.
+
+ * include/freetype/internal/cfftypes.h (CFF_FontRec): Add
+ `font_extra' entry.
+
+ * src/cff/cffdrivr.c (cff_ps_get_font_extra): New function to
+ retrieve FSType info from the embedded PostScript data.
+ (cff_service_ps_info): Register function.
+
+ * src/cff/cffload.c (cff_font_done): Free `font_extra'.
+
+2017-09-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Signedness fixes in bitmap presetting.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.
+
+ * src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned
+ subtraction.
+
+2017-09-29 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Bitmap metrics presetting [2/2].
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when
+ appropriate but `FT_Render_Glyph' is not called.
+ * include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.
+
+2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [smooth, raster] Miscellaneous cleanups.
+
+ * src/raster/ftrend1.c (ft_raster1_render): Clean up the exit.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Reduce
+ translations and clean up the exit.
+ (ft_smooth_render_lcd, ft_smooth_render_lcd): Remove unused `error'.
+
+2017-09-28 Ben Wagner <bungeman@google.com>
+
+ [truetype] Really, really fix #52082.
+
+ * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
+
+2017-09-28 Werner Lemberg <wl@gnu.org>
+
+ * src/psaux/psintrp.c (cf2_doStems): Fix integer overflow.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510
+
+2017-09-28 Ewald Hew <ewaldhew@gmail.com>
+
+ * src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak.
+
+ Reported as
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489
+
+2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Bitmap metrics presetting [1/2].
+
+ This mainly just extracts the code for presetting the bitmap metrics
+ from the monochrome, grayscale, and LCD renderers into a separate
+ function.
+
+ * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
+ calculates prospective bitmap metrics for the given rendering mode.
+ * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
+ Declare it.
+
+ * src/base/ftlcdfil.c (ft_lcd_padding): New helper function that adds
+ padding to CBox taking into account pecularities of LCD rendering.
+ * include/freetype/ftlcdfil.h (ft_lcd_padding): Declare it.
+
+ * src/raster/ftrend1.c (ft_raster1_render): Reworked to use
+ `ft_glyphslot_preset_bitmap'.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
+ (ft_smooth_render_lcd, ft_smooth_render_lcd): The pixel_mode setting
+ is moved to `ft_glyphslot_preset_bitmap'.
+
+2017-09-28 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Fix compiler warning.
+
+ * src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing
+ code.
+
+2017-09-27 Werner Lemberg <wl@gnu.org>
+
+ * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
+
+2017-09-25 Werner Lemberg <wl@gnu.org>
+
+ [psaux] Fix compiler warnings.
+
+ * src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant
+ test.
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString)
+ <cf2_escCALLOTHERSUBR>: Add casts.
+
+ * src/psaux/psobjs.c (ps_decoder_init): Add cast.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Minor fixes.
+
+ * include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}:
+ Rearrange `ps_builder_init' arguments to conventional order.
+
+ * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and
+ notice for `SubFont' in Type 1 mode.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Move `psdecode' into `psobjs'.
+
+ As the former only contains a single procedure, move it into
+ `psobjs' for simplicity. Also change the parameter order to the
+ conventional one.
+
+ * src/psaux/psdecode.c (ps_decoder_init): Moved to...
+ * src/psaux/psobjs.c: ...Here.
+ * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto.
+
+ * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
+ `ps_decoder_init' function signature.
+
+ * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
+ Update calls.
+
+ * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.
+
+ * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
+ Update file references.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Fix Type 1 hinting.
+
+ Type 1 hinting breaks sometimes when mid-charstring hints should
+ have been in the initial hintmap. This fix adds a preprocessing
+ pass that reads all hints and builds the correct initial hintmap
+ first, before proceeding to build the glyph outline.
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString): New
+ `initial_map_ready' boolean flag.
+ Ignore outline commands and hint changes on first pass.
+ <cf2_cmdENDCHAR>: Add section to build hintmap and rewind.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Add tracing for hints.
+
+ * src/psaux/pshints.c (cf2_hintmap_dump): New function.
+ (cf2_hintmap_insertHint): Trace incoming and inserted hints.
+ (cf2_hintmap_build): Dump hintmap before and after hint adjustment.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Minor fixes.
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString): Fix check for pop
+ results.
+ s/font->decoder/decoder/ where necessary.
+ <cf2_cmdHSTEM, cf2_cmdVSTEM, cf2_escHSTEM3, cf2_escVSTEM3>: Use
+ offset parameter in `cf2_doStems' instead of doing correction for
+ left-sidebearing.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [cid] Use the new engine.
+
+ * src/cid/cidgload.c: Update includes.
+ (cid_load_glyph, cid_slot_load_glyph): Implement changes to glyph
+ loading code as with `type1' module.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [cid] Add Adobe engine configuration.
+
+ This is similar to what was done in the `type1' module.
+
+ * src/cid/cidriver.c (t1cid_driver_class): Update declaration.
+ * src/cid/cidobjs.c: Include FT_TYPE1_DRIVER_H.
+ (cid_driver_init): Update code.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Change subfont synthesis for CID fonts.
+
+ Change `t1_make_subfont' to take in the Private dict record as an
+ argument. This is because Type 1 and CID font records in FreeType
+ have this in different places.
+
+ * src/psaux/psobjs.c (t1_make_subfont): Change `T1_Face' to
+ `FT_Face' so that CID is also accepted.
+ Take `PS_Private' as an argument and let caller figure out where the
+ Private dict actually is.
+ Update references.
+
+ * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
+ declaration.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
+ call.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [type1] Switch to Adobe engine.
+
+ * src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (seac).
+
+ This concludes the changes needed to add Type 1 support.
+
+ * src/psaux/psintrp.c: Update includes.
+ (cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to
+ implied seac for CFF.
+
+ * src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New
+ function to look up the glyph index.
+
+ * src/psaux/psft.c (cf2_getT1SeacComponent,
+ cf2_freeT1SeacComponent): New functions to get the charstrings for
+ seac components.
+
+ * src/psaux/t1decode.h, src/psaux/psft.h: Update declarations.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (flex in callothersubr).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString)
+ <cf2_escCALLOTHERSUBR>: Fix Flex feature handling (OtherSubrs 0, 1,
+ 2).
+ <cf2_cmdRMOVETO>: Do not actually move the `glyphPath' while doing
+ flex. This is to avoid closing the current contour.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (callothersubr).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString)
+ <cf2_escCALLOTHERSUBR>: Copy code from
+ `t1_decoder_parse_charstrings' (in `t1decode.c').
+ OtherSubr 3 (change hints) should reset the hintmask, so that the
+ new hints are applied.
+ Fix function calls and stack access.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (pop).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString): Change how unhandled
+ OtherSubr results are stored. Implement the PostScript stack using
+ an array.
+ <cf2_escPOP>: Ensure that the stack is not cleared after getting
+ `OtherSubr' results.
+ Fix stack access.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (callsubr).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
+ Type 1 mode.
+
+ * src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (div, four-byte numbers).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escDIV>: Add
+ Type 1 mode. Type 1 requires large integers to be followed by
+ `div'; cf. `Adobe Type 1 Font Format', section 6.2.
+ <op == 255>: Push Type 1 four-byte numbers as `Int' always. This is
+ to ensure `div' and `callsubr' get values they can use.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (hints).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
+ cf2_cmdVSTEM>: Add correction for left sidebearing in Type 1 mode.
+ Allow adding hints mid-charstring.
+ <cf2_escVSTEM3, cf2_escHSTEM3>: Translate into equivalent commands
+ for three normal stem hints. This requires some recalculation of
+ stem positions.
+ Correction for left sidebearing.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (hsbw, sbw).
+
+ * src/psaux/psintrp.c (cf2_doStems): `hsbw' or `sbw' must be the
+ first operation in a Type 1 charstring.
+ (cf2_interpT2CharString): Remove unused variables.
+ <cf2_cmdHMOVETO, cf2_cmdVMOVETO, cf2_cmdRMOVETO>: `hsbw' or `sbw'
+ must be the first operation in a Type 1 charstring.
+ <cf2_cmdHSBW, cf2_escSBW>: Fix data access and add correction for
+ left sidebearing.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (setcurrentpoint).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString)
+ <cf2_escSETCURRENTPT>: Fix stack access.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Extend Adobe interpreter (closepath).
+
+ * src/psaux/psintrp.c (cf2_interpT2CharString) <c2f_cmdCLOSEPATH>:
+ Use the right builder function. We can use the `haveWidth' boolean
+ already present, instead of implementing `parse_state'.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Add Type 1 operations to Adobe CFF interpreter.
+
+ The following Type 1 specific ops have been added (copied from
+ `t1decode'):
+
+ closepath
+ vstem3
+ hstem3
+ seac
+ sbw
+ callothersubr
+ pop
+ setcurrentpoint
+ hsbw
+
+ The following require a Type 1 mode, because of differences in
+ specification:
+
+ hstem
+ vstem
+ vmoveto
+ callsubr
+ div
+ rmoveto
+ hmoveto
+ Numbers
+
+ The subsequent commits will implement these changes and adapt
+ accesses of data and objects to the new interpreter.
+
+ NOTE: Will not compile in the meantime!
+
+ * src/psaux/psintrp.c: Add opcodes to enum.
+ (cf2_interpT2CharString): Copy relevant code over from
+ `t1_decoder_parse_charstrings' (in `t1decode.c').
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [type1] Fixes for rendering.
+
+ The Type 1 advance width calculation passes null for glyph slot,
+ etc, which can cause null pointer access in the new interpreter.
+ Fall back to the old one for now.
+
+ Fix the large glyph retry code and ensure hinting and scaling flags
+ are set properly.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add a
+ check for metrics_only.
+ Set the `force_scaling' flag.
+ (T1_Parse_Glyph): Updated.
+ (T1_Load_Glyph): Add `hinting' and `scaled' flags.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Add missing objects (2/2).
+
+ Synthesize a `SubFont' object for Type 1 fonts. This is used in the
+ interpreter to access Private dict data, which are stored in
+ different places for Type 1 and CFF. This allows the same data to
+ be used in either mode.
+
+ * src/psaux/psobjs.c (t1_make_subfont): New procedure to copy
+ required values to a dummy `CFF_SubFont' object. This is similar to
+ `cff_make_private_dict'.
+ * src/psaux/psobjs.h: Add the new declaration.
+
+ * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto.
+ Add this to the PSAux Service for future use with CID fonts.
+
+ * src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H.
+ (T1_Parse_Glyph_And_Get_Char_String): Add the call.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Add missing objects for Type 1 (1/2).
+
+ Move `CF2_Font' instance to `PS_Decoder'. This is the context for
+ the interpreter and since it is currently stored in `CFF_Font', is
+ unavailable in Type 1 mode.
+
+ * include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New
+ `cf2_instance' field.
+
+ * src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to
+ `PS_Decoder'.
+
+ * src/psaux/t1decode.c (t1_decoder_done): Add finalization code.
+
+ * src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ Allow `type1' module to use the Adobe engine.
+
+ Add the callback and some conditionals to switch between the two
+ engines.
+
+ * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change
+ function declarations.
+ * src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the
+ callbacks.
+
+ * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
+ number conversion.
+
+ * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code
+ to choose which renderer to use.
+
+ * src/cid/cidgload.c (cid_load_glyph): Update call.
+ * src/base/ftobjs.c, src/psaux/psobjs.c, src/type1/t1gload.c: Update
+ includes.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [type1] Add Adobe engine configuration.
+
+ Use the previously changed PS_Driver in type1 module to store
+ hinting engine configuration.
+
+ * include/freetype/ftt1drv.h: New file.
+ Duplicate and rename config options from CFF.
+ * include/freetype/config/ftheader.h (FT_TYPE1_DRIVER_H): New macro.
+
+ * src/type1/t1driver.c (t1_driver_class): Update declaration.
+ * src/type1/t1objs.c: Include FT_TYPE1_DRIVER_H.
+ (T1_Driver_Init): Update code.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [cff] Move and rename `CFF_Driver'.
+
+ This is so that we can use the same hinting engine parameters for
+ Type 1.
+
+ * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
+ move to...
+ * include/freetype/internal/psaux.h (PS_Driver): ...here.
+
+ * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffload.c,
+ src/cff/cffobjs.c, src/cff/cffobjs.h, src/psaux/psft.c,
+ src/psaux/psobjs.c: Update references.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, type1] Reorganize object fields.
+
+ Make some fields more generic, so that we can access them the same
+ way regardless of Type 1 or CFF.
+
+ * include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face'
+ to `FT_Face'.
+ Remove unused fields.
+
+ * src/psaux/psft.c: Update all accesses of `PS_Builder.face'.
+ Add some asserts to guard against casting `T1_Face' as `TT_Face'.
+
+ * src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow
+ `CFF_GlyphSlot', so that we can pretend they are the same in the
+ interpreter.
+
+ * src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point):
+ Updated with above changes.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Prepare for Type 1 mode.
+
+ Add some checks for Type 1 data passing through.
+
+ * src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
+ * src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
+ code which is not applicable for Type 1.
+
+ * src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
+ `decoder->cff' in Type 1 mode.
+ Copy `is_t1' flag to `CF2_Font'.
+
+2017-09-25 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Use the new objects.
+
+ * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
+ switching between new and old engines.
+
+ * src/cff/cffgload.c, src/cff/cffparse.c: Update calls.
+
+ * src/psaux/psblues.c, src/psaux/psfont.c, src/psaux/psfont.h,
+ src/psaux/psft.c, src/psaux/psft.h, src/psaux/psintrp.c: Update all
+ to use new objects.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Objects for new interpreter (part 2).
+
+ Make the new objects copy over values. They are essentially wrapper
+ types for the different decoders/builders.
+
+ * include/freetype/internal/psaux.h: Update declarations.
+ (PS_Builder): Add `is_t1' flag.
+ (PS_Decoder_{Get,Free}_Glyph_Callback): Renamed to...
+ (CFF_Decoder_{Get,Free}_Glyph_Callback: ... this.
+ (PS_Decoder): Updated.
+ Add `t1_parse_callback' member.
+ (PSAux_ServiceRec): Add `ps_decoder_init' member.
+
+ * src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations.
+
+ * src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two
+ modes.
+
+ * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
+ service.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Add objects for new interpreter.
+
+ Introduce `PS_Decoder' and `PS_Builder' which include all fields
+ from either Type 1 or CFF decoders/builders.
+
+ * include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New
+ structs.
+
+ * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
+ functions.
+
+ * src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold
+ `PS_Decoder' initialization functions.
+
+ * src/psaux/psaux.c, src/psaux/Jamfile (_sources),
+ src/psaux/rules.mk (PSAUX_DRV_SRC): Updated.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Rename files.
+
+ Replace the `cf2' file name prefix with `ps' as the Adobe engine
+ will be used for both PostScript Types 1 and 2 (CFF) instead of just
+ CFF.
+
+ s/cf2/ps/ for all following.
+
+ * src/psaux/cf2*: Rename files.
+ * src/psaux/*: Update includes.
+
+ * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC,
+ PSAUX_DRV_H): Update file references.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux] Minor fix.
+
+ Use `MultiMasters' service in `psaux' instead of a call to `cff'.
+ The project builds if CFF_CONFIG_OPTION_OLD_ENGINE is not defined.
+
+ * src/psaux/cf2ft.c: Update includes.
+ (cf2_getNormalizedVector): Use `mm->get_var_blend' instead of
+ `cff_get_var_blend'.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Move `cff_random' into `psaux' service.
+
+ NOTE: Does not compile!
+
+ Minor fix to allow both `cff' and `psaux' to use `cff_random'.
+
+ * src/cff/cffload.c (cff_random): Move to...
+ * src/psaux/psobjs.c: Here.
+ * src/cff/cffload.h: Move corresponding declaration to
+ `src/psaux/psobjs.h'.
+
+ * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
+ function here...
+ * src/psaux/psauxmod.c: And here.
+
+ * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [cff] Move struct declarations to `freetype/internal'.
+
+ NOTE: Does not compile!
+
+ This is so that the CFF functions moved to `psaux' can access the
+ same structs that they need.
+
+ * src/cff/cfftypes.h: Moved to...
+ * include/freetype/internal/cfftypes.h: ...Here.
+
+ * src/cff/cffobjs.h: Moved the struct declarations to...
+ * include/freetype/internal/cffotypes.h: ... this new file.
+
+ * include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H,
+ FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros.
+
+ * src/cff/cffcmap.h, src/cff/cffdrivr.c, src/cff/cffgload.c,
+ src/cff/cffgload.h, src/cff/cffload.h, src/cff/cffobjs.c,
+ src/cff/cffobjs.h, src/cff/cffparse.h, src/psaux/psobjs.h,
+ include/freetype/internal/psaux.h,
+ include/freetype/internal/services/svcfftl.h: Update includes.
+
+ * src/cff/rules.mk (CFF_DRV_H): Updated.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Add new service for inter-module calls.
+
+ NOTE: Does not compile!
+
+ This is to allow CFF functions moved to `psaux' to call functions
+ declared in `src/cff/cffload.h'.
+
+ * include/freetype/internal/services/svcfftl.h: New file, setting up
+ a `CFFLoad' service.
+
+ * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10,
+ FT_DEFINE_SERVICEDESCREC): New macros.
+ (FT_SERVICE_CFF_TABLE_LOAD_H): New macro.
+
+ * src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service.
+
+ * src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h
+ (CF2_FontRec): Add service interface.
+
+ * src/cff/cffobjs.c, src/psaux/cf2font.c, src/psaux/cf2ft.c,
+ src/psaux/cf2intrp.c, src/psaux/cffdecode.c: Use the new service.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Add callbacks for inter-module calls.
+
+ NOTE: Does not compile!
+
+ * include/freetype/internal/psaux.h: Add function pointer
+ declarations.
+
+ * src/psaux/cffdecode.c (cff_decoder_init): Update to take in
+ callbacks.
+ * src/psaux/cffdecode.h: Ditto.
+
+ * src/cff/cffgload.c (cff_compute_max_advance, cff_slot_load):
+ Update calls to pass in callbacks.
+ * src/psaux/cf2ft.c, src/psaux/cffdecode.c: Use them.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Create new `PSAux' service interface entries.
+
+ NOTE: Does not compile!
+
+ * include/freetype/internal/psaux.h: Include
+ FT_INTERNAL_TRUETYPE_TYPES_H.
+ (CFF_Builder_FuncsRec, CFF_Decocer_FuncsRec): New function tables.
+ (CFF_Builder): Updated.
+ Fix for forward declaration.
+ (PSAux_ServiceRec): New field `cff_decoder_funcs'.
+
+ * src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New
+ function tables.
+ (PSAux_Interface): Updated.
+
+ * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
+ service interface.
+
+ * src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update
+ function calls to use psaux service.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Move CFF builder components into `psaux' module.
+
+ NOTE: Does not compile!
+
+ * src/cff/cffgload.c
+ (cff_builder_{init,done,add_point,add_point1,add_contour,start_point,close_contour},
+ cff_check_points): Move to...
+ * src/psaux/psobjs.c: Here.
+
+ * src/cff/cffgload.h: Move corresponding declarations to
+ `src/psaux/psobjs.h'.
+
+ * src/cff/cffgload.h (CFF_Builder): Move struct declaration to...
+ * include/freetype/internal/psaux.h: Here.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Move CFF decoder components into `psaux' module.
+
+ NOTE: Does not compile!
+
+ * src/cff/cffgload.c (CFF_Operator,
+ CFF_COUNT_{CHECK_WIDTH,EXACT,CLEAR_STACK}, cff_argument_counts,
+ cff_operator_seac, cff_compute_bias,
+ cff_lookup_glyph_by_stdcharcode,
+ cff_decoder_{parse_charstrings,init,prepare}): Move to...
+ * src/psaux/cffdecode.c: This new file.
+
+ * src/cff/cffgload.h: Move corresponding declarations to...
+ * src/psaux/cffdecode.h: This new file.
+
+ * src/cff/cffgload.h (CFF_MAX_{OPERANDS,SUBRS_CALLS,TRANS_ELEMENTS},
+ CFF_Decoder_Zone, CFF_Decoder): Move declarations to...
+ * include/freetype/internal/psaux.h: Here.
+
+ * src/psaux/cf2ft.h: Update include.
+
+ * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with
+ the new file.
+
+2017-09-24 Ewald Hew <ewaldhew@gmail.com>
+
+ [psaux, cff] Move Adobe's engine components into `psaux' module.
+
+ This is the first patch of a sequence to move the Type 2 charstring
+ processing capability from the `cff' module to the `psaux' module.
+
+ NOTE: Does not compile!
+
+ * src/cff/cf2*: Move these files to...
+ * src/psaux/cf2*: Here.
+
+ * src/cff/Jamfile (_sources), src/cff/rules.mk (CFF_DRV_SRC,
+ CFF_DRV_H), src/cff/cff.c, src/cff/cffgload.c: Remove file
+ references.
+
+ * src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c
+ (PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references.
+
+2017-09-24 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ Tweak per-face LCD filtering controls.
+
+ Thing are simpler with a NULL-function pointer.
+
+ * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
+ pointer to the filter function.
+ (FT_LibraryRec): Remove unused `lcd_filter'.
+ (FT_Bitmap_LcdFilterFunc, ft_lcd_filter_fir): Move from here...
+ * include/freetype/ftlcdfil.h (FT_Bitmap_LcdFilterFunc,
+ ft_lcd_filter_fir): ... to here.
+
+ * src/base/ftobjs.c (ft_open_face_internal): NULL-initialize the
+ per-face filter.
+ (FT_Face_Properties): Set it.
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Simplify.
+
+ * src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter):
+ Minor.
+
+2017-09-24 Jonathan Kew <jfkthame@gmail.com>
+
+ [sfnt] Fix `premultiply_data' (#52092).
+
+ * src/sfnt/pngshim.c (premultiply_data): Don't use vector extension
+ if we have less than 16 bytes of data.
+
+2017-09-24 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Fix handling of ValueRecords.
+
+ For GPOS pair positioning format 1 the description of ValueRecords
+ in the OpenType specification (1.8.2, from today) is wrong – the
+ offset has to be taken from the parent structure; in this case the
+ `PairSet' table.
+
+ * src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'.
+ (otv_PairPos_validate): Adjust.
+
+2017-09-23 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Handle `GSUB' and `GPOS' v1.1 tables.
+
+ * src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c
+ (otv_GPOS_validate): Implement it.
+
+2017-09-23 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Update common table handling to OpenType 1.8.2.
+
+ * src/otvalid/otvcommn.c (otv_Device_validate): Handle
+ VariationIndex subtable.
+ (otv_Lookup_validate): Handle MarkFilteringSet.
+
+2017-09-23 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Windows-style DLL versioning.
+
+ * build/windows/ftver.rc: New VERSIONINFO resource.
+ * build/windows/vc2010/freetype.vcxproj: Further improvements.
+
+2017-09-23 Ben Wagner <bungeman@google.com>
+
+ [truetype] Really fix #52082.
+
+ * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
+
+2017-09-23 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Handle `GDEF' v1.2 and v1.3 tables.
+
+ No validation of variation stuff yet.
+
+ * src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function.
+ (otv_GDEF_validate): Implement it.
+
+2017-09-22 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Handle `BASE' v1.1 table.
+
+ No validation of variation stuff yet.
+
+ * src/otvalid/otvbase.c (otv_BASE_validate): Implement it.
+
+2017-09-22 Werner Lemberg <wl@gnu.org>
+
+ [otvalid] Macros for 32bit offset support.
+
+ * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32,
+ OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros.
+
+2017-09-21 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Simplify Visual C++ 2010 project.
+
+ * build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded
+ configurations and tweak.
+
+2017-09-21 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflow (#52082).
+
+ * src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS.
+
+2017-09-21 Werner Lemberg <wl@gnu.org>
+
+ [sfnt] Fix postscript name for default instance of variation fonts.
+
+ Problem reported by Behdad.
+
+ * src/sfnt/sfdriver.c (sfnt_get_ps_name): Test
+ `is_default_instance'.
+
+2017-09-21 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix `mmvar' array pointers, part 2.
+
+ The previous commit was incomplete.
+
+ * src/truetype/ttgxvar.c: Properly initialize sub-array offsets for
+ `master' also.
+
+2017-09-21 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Fix `mmvar' array pointers.
+
+ Without this change, clang's AddressSanitizer reports many runtime
+ errors due to misaligned addresses.
+
+ * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer
+ size for sub-array offsets into `mmvar'.
+
+2017-09-20 Werner Lemberg <wl@gnu.org>
+
+ [truetype] Integer overflows.
+
+ Changes triggered by
+
+ https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429
+
+ * src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG.
+ (Ins_MIAP): Use SUB_LONG.
+
+2017-09-19 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Fix DLL builds in Visual C++ project.
+
+ * build/windows/vc2010/freetype.vcxproj: Use DynamicLibrary in Debug
+ and Release configurations.
+ * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
+ [_DLL]: Use Visual C++ extensions.
+
+2017-09-19 John Tytgat <John.Tytgat@esko.com>
+
+ [cff] Fix family name logic of pure CFF fontdata (#52056).
+
+ 1. If `FamilyName' is present in the CFF font, use this for
+ FT_Face's `family_name'.
+ 2. Otherwise, use the face name and chop off any subset prefix.
+ 3. If at this point FT_Face's `family_name' is set, use this
+ together with the full name to determine the style.
+ 4. Otherwise, use `CIDFontName' as FT_Face's `family_name'.
+ 5. If we don't have a valid style, use "Regular".
+
+ Previously, FT_Face's `family_name' entry for pure CFF fontdata
+ nearly always was the fontname itself, instead of the `FamilyName'
+ entry in the CFF font (assuming there is one).
+
+ * src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it.
+
+2017-09-18 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [build] Declutter Visual C++ 2010-2017 project.
+
+ * build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
+ optimization for Release configuration throughout the project.
+
+
+----------------------------------------------------------------------------
+
+Copyright (C) 2017-2019 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This file is part of the FreeType project, and may only be used, modified,
+and distributed under the terms of the FreeType project license,
+LICENSE.TXT. By continuing to use, modify, or distribute this file you
+indicate that you have read the license and understand and accept it
+fully.
+
+
+Local Variables:
+version-control: never
+coding: utf-8
+End:
diff --git a/Jamfile b/Jamfile
index 9078a5f..37b4d58 100644
--- a/Jamfile
+++ b/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 top Jamfile.
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -208,12 +208,13 @@
actions RefDoc
{
- python $(FT2_SRC)/tools/docmaker/docmaker.py
+ python -m docwriter
--prefix=ft2
- --title=FreeType-2.9.1
+ --title=FreeType-2.10.1
--output=$(DOC_DIR)
$(FT2_INCLUDE)/freetype/*.h
$(FT2_INCLUDE)/freetype/config/*.h
+ $(FT2_INCLUDE)/freetype/cache/*.h
}
RefDoc refdoc ;
diff --git a/Jamrules b/Jamrules
index bdd04bc..aa2ef5b 100644
--- a/Jamrules
+++ b/Jamrules
@@ -1,6 +1,6 @@
# FreeType 2 JamRules.
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/METADATA b/METADATA
index 6d97d66..caf325f 100644
--- a/METADATA
+++ b/METADATA
@@ -9,10 +9,10 @@
type: GIT
value: "git://git.sv.nongnu.org/freetype/freetype2.git"
}
- version: "96b5e500909cfce39ff78feabefd8063a229b951"
+ version: "VER-2-10-1"
last_upgrade_date {
- year: 2018
+ year: 2019
month: 7
- day: 27
+ day: 9
}
}
diff --git a/Makefile b/Makefile
index 0c7ee0e..3f6a8be 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/README b/README
index c23b99e..8f3e2bc 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
- FreeType 2.9.1
- ==============
+ FreeType 2.10.1
+ ===============
Homepage: https://www.freetype.org
@@ -15,8 +15,8 @@
Read the files `docs/INSTALL*' for installation instructions; see
the file `docs/LICENSE.TXT' for the available licenses.
- The FreeType 2 API reference is located in `docs/reference'; use the
- file `ft2-toc.html' as the top entry point. Additional
+ The FreeType 2 API reference is located in `docs/reference/site';
+ use the file `index.html' as the top entry point. Additional
documentation is available as a separate package from our sites. Go
to
@@ -24,13 +24,13 @@
and download one of the following files.
- freetype-doc-2.9.1.tar.bz2
- freetype-doc-2.9.1.tar.gz
- ftdoc291.zip
+ freetype-doc-2.10.1.tar.xz
+ freetype-doc-2.10.1.tar.gz
+ ftdoc2101.zip
To view the documentation online, go to
- https://www.freetype.org/freetype2/documentation.html
+ https://www.freetype.org/freetype2/docs/
Mailing Lists
@@ -71,7 +71,7 @@
----------------------------------------------------------------------
-Copyright 2006-2018 by
+Copyright (C) 2006-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/README.git b/README.git
index a3d7fc0..95f40e1 100644
--- a/README.git
+++ b/README.git
@@ -37,7 +37,7 @@
----------------------------------------------------------------------
-Copyright 2005-2018 by
+Copyright (C) 2005-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/autogen.sh b/autogen.sh
index ab90e64..af6cf34 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/README b/builds/amiga/README
index 29e97d6..ff5e652 100644
--- a/builds/amiga/README
+++ b/builds/amiga/README
@@ -1,7 +1,7 @@
README for the builds/amiga subdirectory.
-Copyright 2005-2018 by
+Copyright (C) 2005-2019 by
Werner Lemberg and Detlef Würkner.
This file is part of the FreeType project, and may only be used, modified,
@@ -26,7 +26,7 @@
http://ragriffi.home.sprynet.com).
You will also need the latest include files and amiga.lib from the
-Amiga web site (http://www.amiga.com/3.9/download/NDK3.9.lha) for
+Amiga web site (https://os.amigaworld.de/download.php?id=3) for
AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up.
To use it, call "smake assign" and then "smake" from the builds/amiga
diff --git a/builds/amiga/include/config/ftconfig.h b/builds/amiga/include/config/ftconfig.h
index 0217e0e..7c5fa02 100644
--- a/builds/amiga/include/config/ftconfig.h
+++ b/builds/amiga/include/config/ftconfig.h
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific configuration file (specification only). */
/* */
-/* Copyright 2005-2018 by */
+/* Copyright (C) 2005-2019 by */
/* Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/amiga/include/config/ftmodule.h b/builds/amiga/include/config/ftmodule.h
index f8baab5..9dc4631 100644
--- a/builds/amiga/include/config/ftmodule.h
+++ b/builds/amiga/include/config/ftmodule.h
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific FreeType module selection. */
/* */
-/* Copyright 2005-2018 by */
+/* Copyright (C) 2005-2019 by */
/* Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/amiga/makefile b/builds/amiga/makefile
index 6a7700a..92da26d 100644
--- a/builds/amiga/makefile
+++ b/builds/amiga/makefile
@@ -5,7 +5,7 @@
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/makefile.os4 b/builds/amiga/makefile.os4
index 0d340cf..823b9b5 100644
--- a/builds/amiga/makefile.os4
+++ b/builds/amiga/makefile.os4
@@ -4,7 +4,7 @@
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/smakefile b/builds/amiga/smakefile
index f5de308..ded76a0 100644
--- a/builds/amiga/smakefile
+++ b/builds/amiga/smakefile
@@ -3,7 +3,7 @@
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/src/base/ftdebug.c b/builds/amiga/src/base/ftdebug.c
index f3ba48c..4a738d3 100644
--- a/builds/amiga/src/base/ftdebug.c
+++ b/builds/amiga/src/base/ftdebug.c
@@ -1,67 +1,69 @@
-/***************************************************************************/
-/* */
-/* ftdebug.c */
-/* */
-/* Debugging and logging component for amiga (body). */
-/* */
-/* Copyright 1996-2018 by */
-/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */
-/* */
-/* 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. */
-/* */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.c
+ *
+ * Debugging and logging component for amiga (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner.
+ *
+ * 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.
+ *
+ */
- /*************************************************************************/
- /* */
- /* This component contains various macros and functions used to ease the */
- /* debugging of the FreeType engine. Its main purpose is in assertion */
- /* checking, tracing, and error detection. */
- /* */
- /* There are now three debugging modes: */
- /* */
- /* - trace mode */
- /* */
- /* Error and trace messages are sent to the log file (which can be the */
- /* standard error output). */
- /* */
- /* - error mode */
- /* */
- /* Only error messages are generated. */
- /* */
- /* - release mode: */
- /* */
- /* No error message is sent or generated. The code is free from any */
- /* debugging parts. */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * This component contains various macros and functions used to ease the
+ * debugging of the FreeType engine. Its main purpose is in assertion
+ * checking, tracing, and error detection.
+ *
+ * There are now three debugging modes:
+ *
+ * - trace mode
+ *
+ * Error and trace messages are sent to the log file (which can be the
+ * standard error output).
+ *
+ * - error mode
+ *
+ * Only error messages are generated.
+ *
+ * - release mode:
+ *
+ * No error message is sent or generated. The code is free from any
+ * debugging parts.
+ *
+ */
/*
- * Based on the default ftdebug.c,
- * replaced vprintf() with KVPrintF(),
- * commented out exit(),
- * replaced getenv() with GetVar().
+ * Based on the default `ftdebug.c' file,
+ * replaced `vprintf' with `KVPrintF',
+ * commented out `exit',
+ * replaced `getenv' with `GetVar'.
*/
#include <exec/types.h>
#include <utility/tagitem.h>
#include <dos/exall.h>
#include <dos/var.h>
+
#define __NOLIBBASE__
#define __NOLOBALIFACE__
#define __USE_INLINE__
+
#include <proto/dos.h>
#include <clib/debug_protos.h>
#ifndef __amigaos4__
- extern struct Library *DOSBase;
+ extern struct Library* DOSBase;
#else
- extern struct DOSIFace *IDOS;
+ extern struct DOSIFace* IDOS;
#endif
@@ -70,7 +72,7 @@
#include FT_INTERNAL_DEBUG_H
-#if defined( FT_DEBUG_LEVEL_ERROR )
+#ifdef FT_DEBUG_LEVEL_ERROR
/* documentation is in ftdebug.h */
@@ -100,7 +102,7 @@
KVPrintF( fmt, ap );
va_end( ap );
-/* exit( EXIT_FAILURE ); */
+ /* exit( EXIT_FAILURE ); */
}
@@ -111,9 +113,19 @@
int line,
const char* file )
{
+#if 0
+ /* activating the code in this block makes FreeType very chatty */
+ fprintf( stderr,
+ "%s:%d: error 0x%02x: %s\n",
+ file,
+ line,
+ error,
+ FT_Error_String( error ) );
+#else
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
+#endif
return 0;
}
@@ -124,9 +136,16 @@
#ifdef FT_DEBUG_LEVEL_TRACE
- /* array of trace levels, initialized to 0 */
- int ft_trace_levels[trace_count];
+ /* array of trace levels, initialized to 0; */
+ /* this gets adjusted at run-time */
+ static int ft_trace_levels_enabled[trace_count];
+ /* array of trace levels, always initialized to 0 */
+ static int ft_trace_levels_disabled[trace_count];
+
+ /* a pointer to either `ft_trace_levels_enabled' */
+ /* or `ft_trace_levels_disabled' */
+ int* ft_trace_levels;
/* define array of trace toggle names */
#define FT_TRACE_DEF( x ) #x ,
@@ -164,33 +183,51 @@
}
- /*************************************************************************/
- /* */
- /* Initialize the tracing sub-system. This is done by retrieving the */
- /* value of the `FT2_DEBUG' environment variable. It must be a list of */
- /* toggles, separated by spaces, `;', or `,'. Example: */
- /* */
- /* export FT2_DEBUG="any:3 memory:7 stream:5" */
- /* */
- /* This requests that all levels be set to 3, except the trace level for */
- /* the memory and stream components which are set to 7 and 5, */
- /* respectively. */
- /* */
- /* See the file `include/freetype/internal/fttrace.h' for details of the */
- /* available toggle names. */
- /* */
- /* The level must be between 0 and 7; 0 means quiet (except for serious */
- /* runtime errors), and 7 means _very_ verbose. */
- /* */
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ ft_trace_levels = ft_trace_levels_disabled;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ ft_trace_levels = ft_trace_levels_enabled;
+ }
+
+
+ /**************************************************************************
+ *
+ * Initialize the tracing sub-system. This is done by retrieving the
+ * value of the `FT2_DEBUG' environment variable. It must be a list of
+ * toggles, separated by spaces, `;', or `,'. Example:
+ *
+ * export FT2_DEBUG="any:3 memory:7 stream:5"
+ *
+ * This requests that all levels be set to 3, except the trace level for
+ * the memory and stream components which are set to 7 and 5,
+ * respectively.
+ *
+ * See the file `include/freetype/internal/fttrace.h' for details of
+ * the available toggle names.
+ *
+ * The level must be between 0 and 7; 0 means quiet (except for serious
+ * runtime errors), and 7 means _very_ verbose.
+ */
FT_BASE_DEF( void )
ft_debug_init( void )
{
-/* const char* ft2_debug = getenv( "FT2_DEBUG" ); */
+ /* const char* ft2_debug = ft_getenv( "FT2_DEBUG" ); */
char buf[256];
const char* ft2_debug = &buf[0];
-/* if ( ft2_debug ) */
+ /* if ( ft2_debug ) */
if ( GetVar( "FT2_DEBUG", (STRPTR)ft2_debug, 256, LV_VAR ) > 0 )
{
const char* p = ft2_debug;
@@ -250,14 +287,16 @@
{
/* special case for `any' */
for ( n = 0; n < trace_count; n++ )
- ft_trace_levels[n] = level;
+ ft_trace_levels_enabled[n] = level;
}
else
- ft_trace_levels[found] = level;
+ ft_trace_levels_enabled[found] = level;
}
}
}
}
+
+ ft_trace_levels = ft_trace_levels_enabled;
}
@@ -287,11 +326,23 @@
}
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ /* nothing */
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ /* nothing */
+ }
+
+
#endif /* !FT_DEBUG_LEVEL_TRACE */
-/*
-Local Variables:
-coding: latin-1
-End:
-*/
+
/* END */
diff --git a/builds/amiga/src/base/ftsystem.c b/builds/amiga/src/base/ftsystem.c
index babaeeb..7e9dcb7 100644
--- a/builds/amiga/src/base/ftsystem.c
+++ b/builds/amiga/src/base/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific FreeType low-level system interface (body). */
/* */
-/* Copyright 1996-2018 by */
+/* Copyright (C) 1996-2019 by */
/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -235,7 +235,7 @@
/* messages during execution. */
/* */
#undef FT_COMPONENT
-#define FT_COMPONENT trace_io
+#define FT_COMPONENT io
/* We use the macro STREAM_FILE for convenience to extract the */
/* system-specific stream handle from a given FreeType stream object */
diff --git a/builds/ansi/ansi-def.mk b/builds/ansi/ansi-def.mk
index 1484f96..9e1f57d 100644
--- a/builds/ansi/ansi-def.mk
+++ b/builds/ansi/ansi-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -19,6 +19,9 @@
BUILD_DIR := $(TOP_DIR)/builds/ansi
PLATFORM := ansi
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := bin
# The directory where all library files are placed.
#
diff --git a/builds/ansi/ansi.mk b/builds/ansi/ansi.mk
index c06732c..eb97df4 100644
--- a/builds/ansi/ansi.mk
+++ b/builds/ansi/ansi.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/beos/beos-def.mk b/builds/beos/beos-def.mk
index 89c54dd..7a9d91c 100644
--- a/builds/beos/beos-def.mk
+++ b/builds/beos/beos-def.mk
@@ -5,7 +5,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -21,6 +21,9 @@
BUILD_DIR := $(TOP_DIR)/builds/beos
PLATFORM := beos
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := bin
# The directory where all library files are placed.
#
diff --git a/builds/beos/beos.mk b/builds/beos/beos.mk
index 619ceaf..180be58 100644
--- a/builds/beos/beos.mk
+++ b/builds/beos/beos.mk
@@ -2,7 +2,7 @@
# FreeType 2 configuration rules for a BeOS system
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/beos/detect.mk b/builds/beos/detect.mk
index 82f6205..19205eb 100644
--- a/builds/beos/detect.mk
+++ b/builds/beos/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/cmake/iOS.cmake b/builds/cmake/iOS.cmake
index c6da70c..3a350d2 100644
--- a/builds/cmake/iOS.cmake
+++ b/builds/cmake/iOS.cmake
@@ -1,6 +1,6 @@
# iOS.cmake
#
-# Copyright 2014-2018 by
+# Copyright (C) 2014-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# Written by David Wimsey <david@wimsey.us>
diff --git a/builds/cmake/testbuild.sh b/builds/cmake/testbuild.sh
index 1fa3a18..65c481f 100755
--- a/builds/cmake/testbuild.sh
+++ b/builds/cmake/testbuild.sh
@@ -1,6 +1,6 @@
#!/bin/sh -e
-# Copyright 2015-2018 by
+# Copyright (C) 2015-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/ansi-cc.mk b/builds/compiler/ansi-cc.mk
index 99fe8cb..3c3fd73 100644
--- a/builds/compiler/ansi-cc.mk
+++ b/builds/compiler/ansi-cc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/bcc-dev.mk b/builds/compiler/bcc-dev.mk
index 8d67fa1..62a51c4 100644
--- a/builds/compiler/bcc-dev.mk
+++ b/builds/compiler/bcc-dev.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/bcc.mk b/builds/compiler/bcc.mk
index 02d4833..5ba6798 100644
--- a/builds/compiler/bcc.mk
+++ b/builds/compiler/bcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/emx.mk b/builds/compiler/emx.mk
index 2926b11..0c2aa31 100644
--- a/builds/compiler/emx.mk
+++ b/builds/compiler/emx.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/gcc-dev.mk b/builds/compiler/gcc-dev.mk
index 48d2848..46dad39 100644
--- a/builds/compiler/gcc-dev.mk
+++ b/builds/compiler/gcc-dev.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/gcc.mk b/builds/compiler/gcc.mk
index 9c77239..b1ee409 100644
--- a/builds/compiler/gcc.mk
+++ b/builds/compiler/gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/intelc.mk b/builds/compiler/intelc.mk
index e9236d3..3a19702 100644
--- a/builds/compiler/intelc.mk
+++ b/builds/compiler/intelc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/unix-lcc.mk b/builds/compiler/unix-lcc.mk
index 09fffeb..9fe6753 100644
--- a/builds/compiler/unix-lcc.mk
+++ b/builds/compiler/unix-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/visualage.mk b/builds/compiler/visualage.mk
index 10299da..26c99f7 100644
--- a/builds/compiler/visualage.mk
+++ b/builds/compiler/visualage.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/visualc.mk b/builds/compiler/visualc.mk
index 74f498b..17c8e76 100644
--- a/builds/compiler/visualc.mk
+++ b/builds/compiler/visualc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/watcom.mk b/builds/compiler/watcom.mk
index e455922..2ec24ef 100644
--- a/builds/compiler/watcom.mk
+++ b/builds/compiler/watcom.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/win-lcc.mk b/builds/compiler/win-lcc.mk
index 1356c1c..fc1f23b 100644
--- a/builds/compiler/win-lcc.mk
+++ b/builds/compiler/win-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/detect.mk b/builds/detect.mk
index eb7f797..93b2861 100644
--- a/builds/detect.mk
+++ b/builds/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/detect.mk b/builds/dos/detect.mk
index 14d8c03..53c1caa 100644
--- a/builds/dos/detect.mk
+++ b/builds/dos/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-def.mk b/builds/dos/dos-def.mk
index cb1154d..a5c56b6 100644
--- a/builds/dos/dos-def.mk
+++ b/builds/dos/dos-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -19,6 +19,9 @@
BUILD_DIR := $(TOP_DIR)/builds/dos
PLATFORM := dos
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := Scripts
# The executable file extension (for tools), *with* leading dot.
#
diff --git a/builds/dos/dos-emx.mk b/builds/dos/dos-emx.mk
index dedcc3f..dbba33e 100644
--- a/builds/dos/dos-emx.mk
+++ b/builds/dos/dos-emx.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-gcc.mk b/builds/dos/dos-gcc.mk
index 53099ab..c281318 100644
--- a/builds/dos/dos-gcc.mk
+++ b/builds/dos/dos-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-wat.mk b/builds/dos/dos-wat.mk
index 1bd00e7..8c5062d 100644
--- a/builds/dos/dos-wat.mk
+++ b/builds/dos/dos-wat.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/exports.mk b/builds/exports.mk
index 59fe31a..9dc21e2 100644
--- a/builds/exports.mk
+++ b/builds/exports.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/freetype.mk b/builds/freetype.mk
index 6f68a0f..2b0ffae 100644
--- a/builds/freetype.mk
+++ b/builds/freetype.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -75,7 +75,7 @@
# The targets `objects' and `library' are defined at the end of this
# Makefile after all other rules have been included.
#
-.PHONY: single multi objects library refdoc
+.PHONY: single multi objects library refdoc refdoc-venv
# default target -- build single objects and library
#
@@ -289,18 +289,53 @@
library: $(PROJECT_LIBRARY)
-
+# Run `docwriter' in the current Python environment.
# Option `-B' disables generation of .pyc files (available since python 2.6)
#
-refdoc:
- python -B $(SRC_DIR)/tools/docmaker/docmaker.py \
- --prefix=ft2 \
- --title=FreeType-$(version) \
- --output=$(DOC_DIR) \
- $(PUBLIC_DIR)/*.h \
- $(PUBLIC_DIR)/config/*.h \
- $(PUBLIC_DIR)/cache/*.h
+PYTHON ?= python
+PIP ?= pip
+
+refdoc:
+ @echo Running docwriter...
+ $(PYTHON) -m docwriter \
+ --prefix=ft2 \
+ --title=FreeType-$(version) \
+ --output=$(DOC_DIR) \
+ $(PUBLIC_DIR)/*.h \
+ $(PUBLIC_DIR)/config/*.h \
+ $(PUBLIC_DIR)/cache/*.h
+ @echo Building static site...
+ cd $(DOC_DIR) && mkdocs build
+ @echo Done.
+
+# Variables for running `refdoc' with Python's `virtualenv'. The
+# environment is created in `DOC_DIR/env' and is gitignored.
+#
+# We still need to cd into `DOC_DIR' to build `mkdocs' because paths in
+# `mkdocs.yml' are relative to the current working directory.
+#
+VENV_NAME := env
+VENV_DIR := $(DOC_DIR)$(SEP)$(VENV_NAME)
+ENV_PYTHON := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PYTHON)
+ENV_PIP := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PIP)
+
+refdoc-venv:
+ @echo Setting up virtualenv for Python...
+ virtualenv --python=$(PYTHON) $(VENV_DIR)
+ @echo Installing docwriter...
+ $(ENV_PIP) install docwriter
+ @echo Running docwriter...
+ $(ENV_PYTHON) -m docwriter \
+ --prefix=ft2 \
+ --title=FreeType-$(version) \
+ --output=$(DOC_DIR) \
+ $(PUBLIC_DIR)/*.h \
+ $(PUBLIC_DIR)/config/*.h \
+ $(PUBLIC_DIR)/cache/*.h
+ @echo Building static site...
+ cd $(DOC_DIR) && $(VENV_NAME)$(SEP)$(BIN)$(SEP)python -m mkdocs build
+ @echo Done.
.PHONY: clean_project_std distclean_project_std
diff --git a/builds/link_dos.mk b/builds/link_dos.mk
index 3b0e8da..4c9076a 100644
--- a/builds/link_dos.mk
+++ b/builds/link_dos.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/link_std.mk b/builds/link_std.mk
index 8ba5e64..7eedf1e 100644
--- a/builds/link_std.mk
+++ b/builds/link_std.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/mac/README b/builds/mac/README
index f58e47d..092487a 100644
--- a/builds/mac/README
+++ b/builds/mac/README
@@ -46,7 +46,7 @@
Required files are downloadable from:
- http://developer.apple.com/tools/mpw-tools/index.html
+ http://macintoshgarden.org/apps/macintosh-programmers-workshop
Also you can find documents how to update by MPW-PR.
@@ -54,7 +54,7 @@
skeletons. Python bundled to Mac OS X is enough. For
classic MacOS, MacPython is available:
- http://homepages.cwi.nl/~jack/macpython/
+ https://homepages.cwi.nl/~jack/macpython/
MPW requires all files are typed by resource fork.
ResEdit bundled to MPW is enough. In Mac OS X,
@@ -280,7 +280,7 @@
migrate to FSRef datatype. The big differences of FSRef
against FSSpec are explained in Apple TechNotes 2078.
- http://developer.apple.com/technotes/tn2002/tn2078.html
+ https://developer.apple.com/library/archive/technotes/tn2078/
- filename length: the max length of file
name of FSRef is 255 chars (it is limit of HFS+),
@@ -314,7 +314,7 @@
of FontManager emulation without QuickDraw is
explained in
- http://www.gyve.org/~mpsuzuki/ats_benchmark.html
+ http://gyvern.ipc.hiroshima-u.ac.jp/~mpsuzuki/ats_benchmark.html
A-3. Framework Availabilities
-----------------------------
diff --git a/builds/mac/freetype-Info.plist b/builds/mac/freetype-Info.plist
index b3d114d..4b5d79b 100644
--- a/builds/mac/freetype-Info.plist
+++ b/builds/mac/freetype-Info.plist
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
- "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+ "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
diff --git a/builds/mac/ftmac.c b/builds/mac/ftmac.c
index c45546c..6adf800 100644
--- a/builds/mac/ftmac.c
+++ b/builds/mac/ftmac.c
@@ -5,7 +5,7 @@
/* Mac FOND support. Written by just@letterror.com. */
/* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */
/* */
-/* Copyright 1996-2018 by */
+/* Copyright (C) 1996-2019 by */
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -780,9 +780,10 @@
style = (StyleTable*)p;
p += sizeof ( StyleTable );
string_count = EndianS16_BtoN( *(short*)(p) );
+ string_count = FT_MIN( 64, string_count );
p += sizeof ( short );
- for ( i = 0; i < string_count && i < 64; i++ )
+ for ( i = 0; i < string_count; i++ )
{
names[i] = p;
p += names[i][0];
@@ -799,7 +800,7 @@
ps_name[ps_name_len] = 0;
}
if ( style->indexes[face_index] > 1 &&
- style->indexes[face_index] <= FT_MIN( string_count, 64 ) )
+ style->indexes[face_index] <= string_count )
{
unsigned char* suffixes = names[style->indexes[face_index] - 1];
diff --git a/builds/modules.mk b/builds/modules.mk
index 9a7a4a0..8886fb3 100644
--- a/builds/modules.mk
+++ b/builds/modules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/detect.mk b/builds/os2/detect.mk
index 5a80a22..8e29450 100644
--- a/builds/os2/detect.mk
+++ b/builds/os2/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/os2-def.mk b/builds/os2/os2-def.mk
index 7ad1ffb..7a1699e 100644
--- a/builds/os2/os2-def.mk
+++ b/builds/os2/os2-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -19,6 +19,10 @@
BUILD_DIR := $(TOP_DIR)/builds/os2
PLATFORM := os2
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := Scripts
+
# The executable file extension (for tools), *with* leading dot.
#
E := .exe
diff --git a/builds/os2/os2-dev.mk b/builds/os2/os2-dev.mk
index 505a754..1b83836 100644
--- a/builds/os2/os2-dev.mk
+++ b/builds/os2/os2-dev.mk
@@ -5,7 +5,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/os2-gcc.mk b/builds/os2/os2-gcc.mk
index 65026b1..63a3ed1 100644
--- a/builds/os2/os2-gcc.mk
+++ b/builds/os2/os2-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/symbian/bld.inf b/builds/symbian/bld.inf
index 9c6d8dc..0fa16c3 100644
--- a/builds/symbian/bld.inf
+++ b/builds/symbian/bld.inf
@@ -2,7 +2,7 @@
// FreeType 2 project for the symbian platform
//
-// Copyright 2008-2018 by
+// Copyright (C) 2008-2019 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/symbian/freetype.mmp b/builds/symbian/freetype.mmp
index 4e4a041..bfbbcaf 100644
--- a/builds/symbian/freetype.mmp
+++ b/builds/symbian/freetype.mmp
@@ -2,7 +2,7 @@
// FreeType 2 makefile for the symbian platform
//
-// Copyright 2008-2018 by
+// Copyright (C) 2008-2019 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/toplevel.mk b/builds/toplevel.mk
index 7ce0ed8..333b775 100644
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -191,13 +191,13 @@
patch := $(subst |,$(space),$(work))
patch := $(firstword $(patch))
-ifneq ($(findstring x0x,x$(patch)x),)
- version := $(major).$(minor)
- winversion := $(major)$(minor)
-else
+# ifneq ($(findstring x0x,x$(patch)x),)
+# version := $(major).$(minor)
+# winversion := $(major)$(minor)
+# else
version := $(major).$(minor).$(patch)
winversion := $(major)$(minor)$(patch)
-endif
+# endif
# This target builds the tarballs.
@@ -208,7 +208,7 @@
dist:
-rm -rf tmp
rm -f freetype-$(version).tar.gz
- rm -f freetype-$(version).tar.bz2
+ rm -f freetype-$(version).tar.xz
rm -f ft$(winversion).zip
for d in `find . -wholename '*/.git' -prune \
@@ -226,23 +226,16 @@
ln -s $$currdir/$$f tmp/$$f ; \
done
- @# Prevent generation of .pyc files. Python follows (soft) links if
- @# the link's directory is write protected, so we have temporarily
- @# disable write access here too.
- chmod -w src/tools/docmaker
-
cd tmp ; \
$(MAKE) devel ; \
$(MAKE) do-dist
- chmod +w src/tools/docmaker
-
mv tmp freetype-$(version)
tar -H ustar -chf - freetype-$(version) \
| gzip -9 -c > freetype-$(version).tar.gz
tar -H ustar -chf - freetype-$(version) \
- | bzip2 -c > freetype-$(version).tar.bz2
+ | xz -c > freetype-$(version).tar.xz
@# Use CR/LF for zip files.
zip -lr9 ft$(winversion).zip freetype-$(version)
@@ -274,4 +267,8 @@
cp $(CONFIG_GUESS) builds/unix
cp $(CONFIG_SUB) builds/unix
+ @# Remove intermediate files created by the `refdoc' target.
+ rm -rf docs/reference/markdown
+ rm -f docs/reference/mkdocs.yml
+
# EOF
diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw
index f18bb3d..a1a6dbe 100644
--- a/builds/unix/configure.raw
+++ b/builds/unix/configure.raw
@@ -2,7 +2,7 @@
#
# Process this file with autoconf to produce a configure script.
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -17,7 +17,7 @@
# Don't forget to update `docs/VERSIONS.TXT'!
-version_info='22:1:16'
+version_info='23:1:17'
AC_SUBST([version_info])
ft_version=`echo $version_info | tr : .`
AC_SUBST([ft_version])
@@ -37,7 +37,7 @@
PKG_PROG_PKG_CONFIG([0.24])
LT_INIT(win32-dll)
-LT_PROG_RC
+AC_CHECK_HEADER([windows.h], [LT_PROG_RC])
# checks for native programs to generate building tool
@@ -196,7 +196,7 @@
AC_ARG_ENABLE([mmap],
AS_HELP_STRING([--disable-mmap],
[do not check mmap() and do not use]),
- [enable_mmap="no"],[enable_mmap="yes"])
+ [enable_mmap="no"], [enable_mmap="yes"])
if test "x${enable_mmap}" != "xno"; then
AC_FUNC_MMAP
fi
@@ -315,7 +315,7 @@
AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
orig_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} -fvisibility=hidden"
-AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[found_visibility_flag=yes
AC_MSG_RESULT(yes)],
[CFLAGS="${orig_CFLAGS}"
@@ -325,7 +325,7 @@
AC_MSG_CHECKING([for -xldscope=hidden compiler flag])
orig_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} -xldscope=hidden"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[found_visibility_flag=yes
AC_MSG_RESULT(yes)],
[CFLAGS="${orig_CFLAGS}"
@@ -968,6 +968,25 @@
;;
esac
+# Check for python and docwriter
+
+AC_CHECK_PROGS([PYTHON], [python3 python2 python], [missing])
+have_docwriter=no
+if test "x$PYTHON" != "xmissing"; then
+ AC_CHECK_PROGS([PIP], [pip3 pip2 pip], [missing])
+
+ if test "x$PIP" != "xmissing"; then
+ AC_MSG_CHECKING([for \`docwriter' Python module])
+ $PIP show -q docwriter
+ if test "x$?" = "x0"; then
+ have_docwriter=yes
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+fi
+
# entries in Requires.private are separated by commas;
REQUIRES_PRIVATE="$zlib_reqpriv, \
@@ -1112,4 +1131,15 @@
harfbuzz: $have_harfbuzz
])
+# Warn if docwriter is not installed
+
+if test $have_docwriter = no; then
+ AC_MSG_NOTICE([
+ Warning: \`make refdoc' will fail since pip package \`docwriter' is not
+ installed. To install, run \`$PIP install docwriter', or to use a python
+ virtual environment, run \`make refdoc-venv' (requires pip package
+ \`virtualenv').
+ ])
+fi
+
# end of configure.raw
diff --git a/builds/unix/detect.mk b/builds/unix/detect.mk
index 5f9b9e2..7ce7d8a 100644
--- a/builds/unix/detect.mk
+++ b/builds/unix/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/freetype-config.in b/builds/unix/freetype-config.in
index 2d5b90d..9e8d3c2 100644
--- a/builds/unix/freetype-config.in
+++ b/builds/unix/freetype-config.in
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright 2000-2018 by
+# Copyright (C) 2000-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/freetype2.m4 b/builds/unix/freetype2.m4
index af2e659..d68d15e 100644
--- a/builds/unix/freetype2.m4
+++ b/builds/unix/freetype2.m4
@@ -1,7 +1,7 @@
# Configure paths for FreeType2
# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/ft-munmap.m4 b/builds/unix/ft-munmap.m4
index 00eda49..4384013 100644
--- a/builds/unix/ft-munmap.m4
+++ b/builds/unix/ft-munmap.m4
@@ -1,6 +1,6 @@
## FreeType specific autoconf tests
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/ftconfig.in b/builds/unix/ftconfig.in
index cdb7f22..019793e 100644
--- a/builds/unix/ftconfig.in
+++ b/builds/unix/ftconfig.in
@@ -1,38 +1,36 @@
-/***************************************************************************/
-/* */
-/* ftconfig.in */
-/* */
-/* UNIX-specific configuration file (specification only). */
-/* */
-/* Copyright 1996-2018 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. */
-/* */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftconfig.in
+ *
+ * UNIX-specific configuration file (specification only).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
- /*************************************************************************/
- /* */
- /* This header file contains a number of macro definitions that are used */
- /* by the rest of the engine. Most of the macros here are automatically */
- /* determined at compile time, and you should not need to change it to */
- /* port FreeType, except to compile the library with a non-ANSI */
- /* compiler. */
- /* */
- /* Note however that if some specific modifications are needed, we */
- /* advise you to place a modified copy in your build directory. */
- /* */
- /* The build directory is usually `builds/<system>', and contains */
- /* system-specific files that are always included first when building */
- /* the library. */
- /* */
- /*************************************************************************/
-
+ /**************************************************************************
+ *
+ * This header file contains a number of macro definitions that are used by
+ * the rest of the engine. Most of the macros here are automatically
+ * determined at compile time, and you should not need to change it to port
+ * FreeType, except to compile the library with a non-ANSI compiler.
+ *
+ * Note however that if some specific modifications are needed, we advise
+ * you to place a modified copy in your build directory.
+ *
+ * The build directory is usually `builds/<system>`, and contains
+ * system-specific files that are always included first when building the
+ * library.
+ *
+ */
#ifndef FTCONFIG_H_
#define FTCONFIG_H_
@@ -45,30 +43,28 @@
FT_BEGIN_HEADER
- /*************************************************************************/
- /* */
- /* PLATFORM-SPECIFIC CONFIGURATION MACROS */
- /* */
- /* These macros can be toggled to suit a specific system. The current */
- /* ones are defaults used to compile FreeType in an ANSI C environment */
- /* (16bit compilers are also supported). Copy this file to your own */
- /* `builds/<system>' directory, and edit it to port the engine. */
- /* */
- /*************************************************************************/
-
+ /**************************************************************************
+ *
+ * PLATFORM-SPECIFIC CONFIGURATION MACROS
+ *
+ * These macros can be toggled to suit a specific system. The current ones
+ * are defaults used to compile FreeType in an ANSI C environment (16bit
+ * compilers are also supported). Copy this file to your own
+ * `builds/<system>` directory, and edit it to port the engine.
+ *
+ */
#undef HAVE_UNISTD_H
#undef HAVE_FCNTL_H
#undef HAVE_STDINT_H
-
- /* There are systems (like the Texas Instruments 'C54x) where a `char' */
- /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
- /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
- /* is probably unexpected. */
- /* */
- /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
- /* `char' type. */
+ /* There are systems (like the Texas Instruments 'C54x) where a `char` */
+ /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */
+ /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */
+ /* is probably unexpected. */
+ /* */
+ /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */
+ /* `char` type. */
#ifndef FT_CHAR_BIT
#define FT_CHAR_BIT CHAR_BIT
@@ -85,67 +81,66 @@
#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
- /* Following cpp computation of the bit length of int and long */
- /* is copied from default include/freetype/config/ftconfig.h. */
- /* If any improvement is required for this file, it should be */
- /* applied to the original header file for the builders that */
- /* do not use configure script. */
+ /* Following cpp computation of the bit length of `int` and `long` */
+ /* is copied from default `include/freetype/config/ftconfig.h`. */
+ /* If any improvement is required for this file, it should be */
+ /* applied to the original header file for the builders that do */
+ /* not use configure script. */
- /* The size of an `int' type. */
+ /* The size of an `int` type. */
#if FT_UINT_MAX == 0xFFFFUL
-#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
+#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT )
#elif FT_UINT_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
+#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT )
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
+#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT )
#else
#error "Unsupported size of `int' type!"
#endif
- /* The size of a `long' type. A five-byte `long' (as used e.g. on the */
+ /* The size of a `long` type. A five-byte `long` (as used e.g. on the */
/* DM642) is recognized but avoided. */
#if FT_ULONG_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
+#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
-#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
+#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
+#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT )
#else
#error "Unsupported size of `long' type!"
#endif
#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
-
- /* FT_UNUSED is a macro used to indicate that a given parameter is not */
- /* used -- this is only used to get rid of unpleasant compiler warnings */
+ /* `FT_UNUSED` indicates that a given parameter is not used -- */
+ /* this is only used to get rid of unpleasant compiler warnings. */
#ifndef FT_UNUSED
#define FT_UNUSED( arg ) ( (arg) = (arg) )
#endif
- /*************************************************************************/
- /* */
- /* AUTOMATIC CONFIGURATION MACROS */
- /* */
- /* These macros are computed from the ones defined above. Don't touch */
- /* their definition, unless you know precisely what you are doing. No */
- /* porter should need to mess with them. */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * AUTOMATIC CONFIGURATION MACROS
+ *
+ * These macros are computed from the ones defined above. Don't touch
+ * their definition, unless you know precisely what you are doing. No
+ * porter should need to mess with them.
+ *
+ */
- /*************************************************************************/
- /* */
- /* Mac support */
- /* */
- /* This is the only necessary change, so it is defined here instead */
- /* providing a new configuration file. */
- /* */
+ /**************************************************************************
+ *
+ * Mac support
+ *
+ * This is the only necessary change, so it is defined here instead
+ * providing a new configuration file.
+ */
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
- /* no Carbon frameworks for 64bit 10.4.x */
- /* AvailabilityMacros.h is available since Mac OS X 10.2, */
- /* so guess the system version by maximum errno before inclusion */
+ /* No Carbon frameworks for 64bit 10.4.x. */
+ /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */
+ /* so guess the system version by maximum errno before inclusion. */
#include <errno.h>
#ifdef ECANCELED /* defined since 10.2 */
#include "AvailabilityMacros.h"
@@ -165,7 +160,7 @@
#endif
- /* Fix compiler warning with sgi compiler */
+ /* Fix compiler warning with sgi compiler. */
#if defined( __sgi ) && !defined( __GNUC__ )
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
#pragma set woff 3505
@@ -173,33 +168,33 @@
#endif
- /*************************************************************************/
- /* */
- /* <Section> */
- /* basic_types */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * @section:
+ * basic_types
+ *
+ */
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int16 */
- /* */
- /* <Description> */
- /* A typedef for a 16bit signed integer type. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int16
+ *
+ * @description:
+ * A typedef for a 16bit signed integer type.
+ */
typedef signed short FT_Int16;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt16 */
- /* */
- /* <Description> */
- /* A typedef for a 16bit unsigned integer type. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt16
+ *
+ * @description:
+ * A typedef for a 16bit unsigned integer type.
+ */
typedef unsigned short FT_UInt16;
/* */
@@ -208,50 +203,50 @@
/* this #if 0 ... #endif clause is for documentation purposes */
#if 0
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int32 */
- /* */
- /* <Description> */
- /* A typedef for a 32bit signed integer type. The size depends on */
- /* the configuration. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int32
+ *
+ * @description:
+ * A typedef for a 32bit signed integer type. The size depends on the
+ * configuration.
+ */
typedef signed XXX FT_Int32;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt32 */
- /* */
- /* A typedef for a 32bit unsigned integer type. The size depends on */
- /* the configuration. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt32
+ *
+ * A typedef for a 32bit unsigned integer type. The size depends on the
+ * configuration.
+ */
typedef unsigned XXX FT_UInt32;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int64 */
- /* */
- /* A typedef for a 64bit signed integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int64
+ *
+ * A typedef for a 64bit signed integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
+ * otherwise, it gets emulated with a structure (if necessary).
+ */
typedef signed XXX FT_Int64;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt64 */
- /* */
- /* A typedef for a 64bit unsigned integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt64
+ *
+ * A typedef for a 64bit unsigned integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
+ * otherwise, it gets emulated with a structure (if necessary).
+ */
typedef unsigned XXX FT_UInt64;
/* */
@@ -273,7 +268,7 @@
#endif
- /* look up an integer type that is at least 32 bits */
+ /* look up an integer type that is at least 32~bits */
#if FT_SIZEOF_INT >= 4
typedef int FT_Fast;
@@ -287,17 +282,17 @@
#endif
- /* determine whether we have a 64-bit int type */
- /* (mostly for environments without `autoconf') */
+ /* determine whether we have a 64-bit `int` type for platforms without */
+ /* Autoconf */
#if FT_SIZEOF_LONG == 8
- /* FT_LONG64 must be defined if a 64-bit type is available */
+ /* `FT_LONG64` must be defined if a 64-bit type is available */
#define FT_LONG64
#define FT_INT64 long
#define FT_UINT64 unsigned long
/* we handle the LLP64 scheme separately for GCC and clang, */
- /* suppressing the `long long' warning */
+ /* suppressing the `long long` warning */
#elif ( FT_SIZEOF_LONG == 4 ) && \
defined( HAVE_LONG_LONG_INT ) && \
defined( __GNUC__ )
@@ -306,13 +301,13 @@
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
- /*************************************************************************/
- /* */
- /* A 64-bit data type may create compilation problems if you compile */
- /* in strict ANSI mode. To avoid them, we disable other 64-bit data */
- /* types if __STDC__ is defined. You can however ignore this rule */
- /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
- /* */
+ /**************************************************************************
+ *
+ * A 64-bit data type may create compilation problems if you compile in
+ * strict ANSI mode. To avoid them, we disable other 64-bit data types if
+ * `__STDC__` is defined. You can however ignore this rule by defining the
+ * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
+ */
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
@@ -321,19 +316,19 @@
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
-#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
+#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
#elif defined( __BORLANDC__ ) /* Borland C++ */
- /* XXXX: We should probably check the value of __BORLANDC__ in order */
- /* to test the compiler version. */
+ /* XXXX: We should probably check the value of `__BORLANDC__` in order */
+ /* to test the compiler version. */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
@@ -350,7 +345,7 @@
#elif defined( __GNUC__ )
- /* GCC provides the `long long' type */
+ /* GCC provides the `long long` type */
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
@@ -374,11 +369,11 @@
#endif
- /*************************************************************************/
- /* */
- /* miscellaneous */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * miscellaneous
+ *
+ */
#define FT_BEGIN_STMNT do {
@@ -386,7 +381,7 @@
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
- /* typeof condition taken from gnulib's `intprops.h' header file */
+ /* `typeof` condition taken from gnulib's `intprops.h` header file */
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
defined( __IBM__TYPEOF__ ) ) || \
@@ -397,14 +392,14 @@
#endif
- /* Use FT_LOCAL and FT_LOCAL_DEF to declare and define, respectively, */
- /* a function that gets used only within the scope of a module. */
- /* Normally, both the header and source code files for such a */
- /* function are within a single module directory. */
- /* */
- /* Intra-module arrays should be tagged with FT_LOCAL_ARRAY and */
- /* FT_LOCAL_ARRAY_DEF. */
- /* */
+ /* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, */
+ /* respectively, a function that gets used only within the scope of a */
+ /* module. Normally, both the header and source code files for such a */
+ /* function are within a single module directory. */
+ /* */
+ /* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and */
+ /* `FT_LOCAL_ARRAY_DEF`. */
+ /* */
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
#define FT_LOCAL( x ) static x
@@ -426,12 +421,12 @@
#define FT_LOCAL_ARRAY_DEF( x ) const x
- /* Use FT_BASE and FT_BASE_DEF to declare and define, respectively, */
- /* functions that are used in more than a single module. In the */
- /* current setup this implies that the declaration is in a header */
- /* file in the `include/freetype/internal' directory, and the */
- /* function body is in a file in `src/base'. */
- /* */
+ /* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */
+ /* functions that are used in more than a single module. In the */
+ /* current setup this implies that the declaration is in a header file */
+ /* in the `include/freetype/internal` directory, and the function body */
+ /* is in a file in `src/base`. */
+ /* */
#ifndef FT_BASE
#ifdef __cplusplus
@@ -454,37 +449,40 @@
#endif /* !FT_BASE_DEF */
- /* When compiling FreeType as a DLL or DSO with hidden visibility */
- /* some systems/compilers need a special attribute in front OR after */
- /* the return type of function declarations. */
- /* */
- /* Two macros are used within the FreeType source code to define */
- /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
- /* */
- /* FT_EXPORT( return_type ) */
- /* */
- /* is used in a function declaration, as in */
- /* */
- /* FT_EXPORT( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ); */
- /* */
- /* */
- /* FT_EXPORT_DEF( return_type ) */
- /* */
- /* is used in a function definition, as in */
- /* */
- /* FT_EXPORT_DEF( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ) */
- /* { */
- /* ... some code ... */
- /* return FT_Err_Ok; */
- /* } */
- /* */
- /* You can provide your own implementation of FT_EXPORT and */
- /* FT_EXPORT_DEF here if you want. */
- /* */
- /* To export a variable, use FT_EXPORT_VAR. */
- /* */
+ /* When compiling FreeType as a DLL or DSO with hidden visibility */
+ /* some systems/compilers need a special attribute in front OR after */
+ /* the return type of function declarations. */
+ /* */
+ /* Two macros are used within the FreeType source code to define */
+ /* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */
+ /* */
+ /* - `FT_EXPORT( return_type )` */
+ /* */
+ /* is used in a function declaration, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ); */
+ /* ``` */
+ /* */
+ /* - `FT_EXPORT_DEF( return_type )` */
+ /* */
+ /* is used in a function definition, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT_DEF( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ) */
+ /* { */
+ /* ... some code ... */
+ /* return FT_Err_Ok; */
+ /* } */
+ /* ``` */
+ /* */
+ /* You can provide your own implementation of `FT_EXPORT` and */
+ /* `FT_EXPORT_DEF` here if you want. */
+ /* */
+ /* To export a variable, use `FT_EXPORT_VAR`. */
+ /* */
#ifndef FT_EXPORT
#ifdef FT2_BUILD_LIBRARY
@@ -537,11 +535,12 @@
#endif /* !FT_EXPORT_VAR */
+
/* The following macros are needed to compile the library with a */
/* C++ compiler and with 16bit compilers. */
/* */
- /* This is special. Within C++, you must specify `extern "C"' for */
+ /* This is special. Within C++, you must specify `extern "C"` for */
/* functions which are used via function pointers, and you also */
/* must do that for structures which contain function pointers to */
/* assure C linkage -- it's not possible to have (local) anonymous */
@@ -564,7 +563,7 @@
/* */
/* */
/* Some 16bit compilers have to redefine these macros to insert */
- /* the infamous `_cdecl' or `__fastcall' declarations. */
+ /* the infamous `_cdecl` or `__fastcall` declarations. */
/* */
#ifndef FT_CALLBACK_DEF
#ifdef __cplusplus
diff --git a/builds/unix/ftsystem.c b/builds/unix/ftsystem.c
index 8fdbeb0..826713f 100644
--- a/builds/unix/ftsystem.c
+++ b/builds/unix/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* Unix-specific FreeType low-level system interface (body). */
/* */
-/* Copyright 1996-2018 by */
+/* Copyright (C) 1996-2019 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -173,7 +173,7 @@
/* messages during execution. */
/* */
#undef FT_COMPONENT
-#define FT_COMPONENT trace_io
+#define FT_COMPONENT io
/* We use the macro STREAM_FILE for convenience to extract the */
/* system-specific stream handle from a given FreeType stream object */
diff --git a/builds/unix/install.mk b/builds/unix/install.mk
index c08c3b7..2287dfc 100644
--- a/builds/unix/install.mk
+++ b/builds/unix/install.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-cc.in b/builds/unix/unix-cc.in
index 5675866..ed51fde 100644
--- a/builds/unix/unix-cc.in
+++ b/builds/unix/unix-cc.in
@@ -2,7 +2,7 @@
# FreeType 2 template for Unix-specific compiler definitions
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-def.in b/builds/unix/unix-def.in
index 6957053..e74844d 100644
--- a/builds/unix/unix-def.in
+++ b/builds/unix/unix-def.in
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -21,6 +21,12 @@
CAT := cat
SEP := /
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+PYTHON := @PYTHON@
+PIP := @PIP@
+BIN := bin
+
# this is used for `make distclean' and `make install'
OBJ_BUILD ?= $(BUILD_DIR)
diff --git a/builds/unix/unix-dev.mk b/builds/unix/unix-dev.mk
index 5a516ad..3cb171a 100644
--- a/builds/unix/unix-dev.mk
+++ b/builds/unix/unix-dev.mk
@@ -6,7 +6,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-lcc.mk b/builds/unix/unix-lcc.mk
index 73a02d4..e632e9a 100644
--- a/builds/unix/unix-lcc.mk
+++ b/builds/unix/unix-lcc.mk
@@ -6,7 +6,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix.mk b/builds/unix/unix.mk
index acd54d3..2d04eef 100644
--- a/builds/unix/unix.mk
+++ b/builds/unix/unix.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unixddef.mk b/builds/unix/unixddef.mk
index a8da63a..9aad35c 100644
--- a/builds/unix/unixddef.mk
+++ b/builds/unix/unixddef.mk
@@ -4,7 +4,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -23,6 +23,10 @@
CAT := cat
SEP := /
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := bin
+
# we use a special devel ftoption.h
DEVEL_DIR := $(TOP_DIR)/devel
diff --git a/builds/vms/LIBS.OPT_IA64 b/builds/vms/LIBS.OPT_IA64
new file mode 100644
index 0000000..6768c76
--- /dev/null
+++ b/builds/vms/LIBS.OPT_IA64
Binary files differ
diff --git a/builds/vms/_LINK.OPT_IA64 b/builds/vms/_LINK.OPT_IA64
new file mode 100644
index 0000000..b8cbd1b
--- /dev/null
+++ b/builds/vms/_LINK.OPT_IA64
Binary files differ
diff --git a/builds/vms/ftconfig.h b/builds/vms/ftconfig.h
index 733b09b..7825db0 100644
--- a/builds/vms/ftconfig.h
+++ b/builds/vms/ftconfig.h
@@ -1,38 +1,36 @@
-/***************************************************************************/
-/* */
-/* ftconfig.h */
-/* */
-/* VMS-specific configuration file (specification only). */
-/* */
-/* Copyright 1996-2018 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. */
-/* */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftconfig.h
+ *
+ * VMS-specific configuration file (specification only).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
- /*************************************************************************/
- /* */
- /* This header file contains a number of macro definitions that are used */
- /* by the rest of the engine. Most of the macros here are automatically */
- /* determined at compile time, and you should not need to change it to */
- /* port FreeType, except to compile the library with a non-ANSI */
- /* compiler. */
- /* */
- /* Note however that if some specific modifications are needed, we */
- /* advise you to place a modified copy in your build directory. */
- /* */
- /* The build directory is usually `builds/<system>', and contains */
- /* system-specific files that are always included first when building */
- /* the library. */
- /* */
- /*************************************************************************/
-
+ /**************************************************************************
+ *
+ * This header file contains a number of macro definitions that are used by
+ * the rest of the engine. Most of the macros here are automatically
+ * determined at compile time, and you should not need to change it to port
+ * FreeType, except to compile the library with a non-ANSI compiler.
+ *
+ * Note however that if some specific modifications are needed, we advise
+ * you to place a modified copy in your build directory.
+ *
+ * The build directory is usually `builds/<system>`, and contains
+ * system-specific files that are always included first when building the
+ * library.
+ *
+ */
#ifndef FTCONFIG_H_
#define FTCONFIG_H_
@@ -45,17 +43,16 @@
FT_BEGIN_HEADER
- /*************************************************************************/
- /* */
- /* PLATFORM-SPECIFIC CONFIGURATION MACROS */
- /* */
- /* These macros can be toggled to suit a specific system. The current */
- /* ones are defaults used to compile FreeType in an ANSI C environment */
- /* (16bit compilers are also supported). Copy this file to your own */
- /* `builds/<system>' directory, and edit it to port the engine. */
- /* */
- /*************************************************************************/
-
+ /**************************************************************************
+ *
+ * PLATFORM-SPECIFIC CONFIGURATION MACROS
+ *
+ * These macros can be toggled to suit a specific system. The current ones
+ * are defaults used to compile FreeType in an ANSI C environment (16bit
+ * compilers are also supported). Copy this file to your own
+ * `builds/<system>` directory, and edit it to port the engine.
+ *
+ */
#define HAVE_UNISTD_H 1
#define HAVE_FCNTL_H 1
@@ -66,38 +63,36 @@
#define FT_SIZEOF_INT 4
#define FT_SIZEOF_LONG 4
-#define FT_CHAR_BIT 8
-
- /* FT_UNUSED is a macro used to indicate that a given parameter is not */
- /* used -- this is only used to get rid of unpleasant compiler warnings */
+ /* `FT_UNUSED` indicates that a given parameter is not used -- */
+ /* this is only used to get rid of unpleasant compiler warnings. */
#ifndef FT_UNUSED
#define FT_UNUSED( arg ) ( (arg) = (arg) )
#endif
- /*************************************************************************/
- /* */
- /* AUTOMATIC CONFIGURATION MACROS */
- /* */
- /* These macros are computed from the ones defined above. Don't touch */
- /* their definition, unless you know precisely what you are doing. No */
- /* porter should need to mess with them. */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * AUTOMATIC CONFIGURATION MACROS
+ *
+ * These macros are computed from the ones defined above. Don't touch
+ * their definition, unless you know precisely what you are doing. No
+ * porter should need to mess with them.
+ *
+ */
- /*************************************************************************/
- /* */
- /* Mac support */
- /* */
- /* This is the only necessary change, so it is defined here instead */
- /* providing a new configuration file. */
- /* */
+ /**************************************************************************
+ *
+ * Mac support
+ *
+ * This is the only necessary change, so it is defined here instead
+ * providing a new configuration file.
+ */
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
- /* no Carbon frameworks for 64bit 10.4.x */
- /* AvailabilityMacros.h is available since Mac OS X 10.2, */
- /* so guess the system version by maximum errno before inclusion */
+ /* No Carbon frameworks for 64bit 10.4.x. */
+ /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */
+ /* so guess the system version by maximum errno before inclusion. */
#include <errno.h>
#ifdef ECANCELED /* defined since 10.2 */
#include "AvailabilityMacros.h"
@@ -117,7 +112,7 @@
#endif
- /* Fix compiler warning with sgi compiler */
+ /* Fix compiler warning with sgi compiler. */
#if defined( __sgi ) && !defined( __GNUC__ )
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
#pragma set woff 3505
@@ -125,33 +120,33 @@
#endif
- /*************************************************************************/
- /* */
- /* <Section> */
- /* basic_types */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * @section:
+ * basic_types
+ *
+ */
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int16 */
- /* */
- /* <Description> */
- /* A typedef for a 16bit signed integer type. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int16
+ *
+ * @description:
+ * A typedef for a 16bit signed integer type.
+ */
typedef signed short FT_Int16;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt16 */
- /* */
- /* <Description> */
- /* A typedef for a 16bit unsigned integer type. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt16
+ *
+ * @description:
+ * A typedef for a 16bit unsigned integer type.
+ */
typedef unsigned short FT_UInt16;
/* */
@@ -160,50 +155,50 @@
/* this #if 0 ... #endif clause is for documentation purposes */
#if 0
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int32 */
- /* */
- /* <Description> */
- /* A typedef for a 32bit signed integer type. The size depends on */
- /* the configuration. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int32
+ *
+ * @description:
+ * A typedef for a 32bit signed integer type. The size depends on the
+ * configuration.
+ */
typedef signed XXX FT_Int32;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt32 */
- /* */
- /* A typedef for a 32bit unsigned integer type. The size depends on */
- /* the configuration. */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt32
+ *
+ * A typedef for a 32bit unsigned integer type. The size depends on the
+ * configuration.
+ */
typedef unsigned XXX FT_UInt32;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Int64 */
- /* */
- /* A typedef for a 64bit signed integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_Int64
+ *
+ * A typedef for a 64bit signed integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
+ * otherwise, it gets emulated with a structure (if necessary).
+ */
typedef signed XXX FT_Int64;
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_UInt64 */
- /* */
- /* A typedef for a 64bit unsigned integer type. The size depends on */
- /* the configuration. Only defined if there is real 64bit support; */
- /* otherwise, it gets emulated with a structure (if necessary). */
- /* */
+ /**************************************************************************
+ *
+ * @type:
+ * FT_UInt64
+ *
+ * A typedef for a 64bit unsigned integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
+ * otherwise, it gets emulated with a structure (if necessary).
+ */
typedef unsigned XXX FT_UInt64;
/* */
@@ -225,7 +220,7 @@
#endif
- /* look up an integer type that is at least 32 bits */
+ /* look up an integer type that is at least 32~bits */
#if FT_SIZEOF_INT >= 4
typedef int FT_Fast;
@@ -239,17 +234,17 @@
#endif
- /* determine whether we have a 64-bit int type */
- /* (mostly for environments without `autoconf') */
+ /* determine whether we have a 64-bit `int` type for platforms without */
+ /* Autoconf */
#if FT_SIZEOF_LONG == 8
- /* FT_LONG64 must be defined if a 64-bit type is available */
+ /* `FT_LONG64` must be defined if a 64-bit type is available */
#define FT_LONG64
#define FT_INT64 long
#define FT_UINT64 unsigned long
/* we handle the LLP64 scheme separately for GCC and clang, */
- /* suppressing the `long long' warning */
+ /* suppressing the `long long` warning */
#elif ( FT_SIZEOF_LONG == 4 ) && \
defined( HAVE_LONG_LONG_INT ) && \
defined( __GNUC__ )
@@ -258,13 +253,13 @@
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
- /*************************************************************************/
- /* */
- /* A 64-bit data type may create compilation problems if you compile */
- /* in strict ANSI mode. To avoid them, we disable other 64-bit data */
- /* types if __STDC__ is defined. You can however ignore this rule */
- /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
- /* */
+ /**************************************************************************
+ *
+ * A 64-bit data type may create compilation problems if you compile in
+ * strict ANSI mode. To avoid them, we disable other 64-bit data types if
+ * `__STDC__` is defined. You can however ignore this rule by defining the
+ * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
+ */
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
@@ -273,19 +268,19 @@
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
-#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
+#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
#elif defined( __BORLANDC__ ) /* Borland C++ */
- /* XXXX: We should probably check the value of __BORLANDC__ in order */
- /* to test the compiler version. */
+ /* XXXX: We should probably check the value of `__BORLANDC__` in order */
+ /* to test the compiler version. */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
@@ -302,7 +297,7 @@
#elif defined( __GNUC__ )
- /* GCC provides the `long long' type */
+ /* GCC provides the `long long` type */
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
@@ -326,11 +321,11 @@
#endif
- /*************************************************************************/
- /* */
- /* miscellaneous */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * miscellaneous
+ *
+ */
#define FT_BEGIN_STMNT do {
@@ -338,7 +333,7 @@
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
- /* typeof condition taken from gnulib's `intprops.h' header file */
+ /* `typeof` condition taken from gnulib's `intprops.h` header file */
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
defined( __IBM__TYPEOF__ ) ) || \
@@ -349,14 +344,14 @@
#endif
- /* Use FT_LOCAL and FT_LOCAL_DEF to declare and define, respectively, */
- /* a function that gets used only within the scope of a module. */
- /* Normally, both the header and source code files for such a */
- /* function are within a single module directory. */
- /* */
- /* Intra-module arrays should be tagged with FT_LOCAL_ARRAY and */
- /* FT_LOCAL_ARRAY_DEF. */
- /* */
+ /* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, */
+ /* respectively, a function that gets used only within the scope of a */
+ /* module. Normally, both the header and source code files for such a */
+ /* function are within a single module directory. */
+ /* */
+ /* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and */
+ /* `FT_LOCAL_ARRAY_DEF`. */
+ /* */
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
#define FT_LOCAL( x ) static x
@@ -378,12 +373,12 @@
#define FT_LOCAL_ARRAY_DEF( x ) const x
- /* Use FT_BASE and FT_BASE_DEF to declare and define, respectively, */
- /* functions that are used in more than a single module. In the */
- /* current setup this implies that the declaration is in a header */
- /* file in the `include/freetype/internal' directory, and the */
- /* function body is in a file in `src/base'. */
- /* */
+ /* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */
+ /* functions that are used in more than a single module. In the */
+ /* current setup this implies that the declaration is in a header file */
+ /* in the `include/freetype/internal` directory, and the function body */
+ /* is in a file in `src/base`. */
+ /* */
#ifndef FT_BASE
#ifdef __cplusplus
@@ -406,37 +401,40 @@
#endif /* !FT_BASE_DEF */
- /* When compiling FreeType as a DLL or DSO with hidden visibility */
- /* some systems/compilers need a special attribute in front OR after */
- /* the return type of function declarations. */
- /* */
- /* Two macros are used within the FreeType source code to define */
- /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
- /* */
- /* FT_EXPORT( return_type ) */
- /* */
- /* is used in a function declaration, as in */
- /* */
- /* FT_EXPORT( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ); */
- /* */
- /* */
- /* FT_EXPORT_DEF( return_type ) */
- /* */
- /* is used in a function definition, as in */
- /* */
- /* FT_EXPORT_DEF( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ) */
- /* { */
- /* ... some code ... */
- /* return FT_Err_Ok; */
- /* } */
- /* */
- /* You can provide your own implementation of FT_EXPORT and */
- /* FT_EXPORT_DEF here if you want. */
- /* */
- /* To export a variable, use FT_EXPORT_VAR. */
- /* */
+ /* When compiling FreeType as a DLL or DSO with hidden visibility */
+ /* some systems/compilers need a special attribute in front OR after */
+ /* the return type of function declarations. */
+ /* */
+ /* Two macros are used within the FreeType source code to define */
+ /* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */
+ /* */
+ /* - `FT_EXPORT( return_type )` */
+ /* */
+ /* is used in a function declaration, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ); */
+ /* ``` */
+ /* */
+ /* - `FT_EXPORT_DEF( return_type )` */
+ /* */
+ /* is used in a function definition, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT_DEF( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ) */
+ /* { */
+ /* ... some code ... */
+ /* return FT_Err_Ok; */
+ /* } */
+ /* ``` */
+ /* */
+ /* You can provide your own implementation of `FT_EXPORT` and */
+ /* `FT_EXPORT_DEF` here if you want. */
+ /* */
+ /* To export a variable, use `FT_EXPORT_VAR`. */
+ /* */
#ifndef FT_EXPORT
#ifdef FT2_BUILD_LIBRARY
@@ -489,11 +487,12 @@
#endif /* !FT_EXPORT_VAR */
+
/* The following macros are needed to compile the library with a */
/* C++ compiler and with 16bit compilers. */
/* */
- /* This is special. Within C++, you must specify `extern "C"' for */
+ /* This is special. Within C++, you must specify `extern "C"` for */
/* functions which are used via function pointers, and you also */
/* must do that for structures which contain function pointers to */
/* assure C linkage -- it's not possible to have (local) anonymous */
@@ -516,7 +515,7 @@
/* */
/* */
/* Some 16bit compilers have to redefine these macros to insert */
- /* the infamous `_cdecl' or `__fastcall' declarations. */
+ /* the infamous `_cdecl` or `__fastcall` declarations. */
/* */
#ifndef FT_CALLBACK_DEF
#ifdef __cplusplus
diff --git a/builds/vms/ftsystem.c b/builds/vms/ftsystem.c
index 7d79f9a..af6fe46 100644
--- a/builds/vms/ftsystem.c
+++ b/builds/vms/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* VMS-specific FreeType low-level system interface (body). */
/* */
-/* Copyright 1996-2018 by */
+/* Copyright (C) 1996-2019 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -172,7 +172,7 @@
/* messages during execution. */
/* */
#undef FT_COMPONENT
-#define FT_COMPONENT trace_io
+#define FT_COMPONENT io
/* We use the macro STREAM_FILE for convenience to extract the */
/* system-specific stream handle from a given FreeType stream object */
diff --git a/builds/vms/vmslib.dat b/builds/vms/vmslib.dat
new file mode 100644
index 0000000..4c817da
--- /dev/null
+++ b/builds/vms/vmslib.dat
@@ -0,0 +1,28 @@
+!
+! This is a simple driver file with information used by make.com to
+! check if external libraries (like t1lib and freetype) are available on
+! the system.
+!
+! Layout of the file:
+!
+! - Lines starting with ! are treated as comments
+! - Elements in a data line are separated by # signs
+! - The elements need to be listed in the following order
+! 1.) Name of the Library
+! 2.) Location where the object library can be found
+! 3.) Location where the include files for the library can be found
+! 4.) Include file used to verify library location
+! 5.) CPP define to pass to the build to indicate availability of
+! the library
+!
+! Example: The following lines show how definitions
+! 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
+!
+! ZLIB: http://www.decus.de:8080/www/vms/sw/zlib.htmlx
+!
+BZ2LIB # sys$library:libbz2.olb # decc$user_include: # bzlib.h # FT_CONFIG_OPTION_SYSTEM_ZLIB
+PNGLIB # sys$library:libpng.olb # sys$library: # png.h # FT_CONFIG_OPTION_SYSTEM_ZLIB
+ZLIB # sys$library:libz.olb # sys$library: # zlib.h # FT_CONFIG_OPTION_SYSTEM_ZLIB
diff --git a/builds/wince/ftdebug.c b/builds/wince/ftdebug.c
index 83c5f44..d0ca999 100644
--- a/builds/wince/ftdebug.c
+++ b/builds/wince/ftdebug.c
@@ -1,53 +1,53 @@
-/***************************************************************************/
-/* */
-/* ftdebug.c */
-/* */
-/* Debugging and logging component for WinCE (body). */
-/* */
-/* Copyright 1996-2018 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. */
-/* */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.c
+ *
+ * Debugging and logging component for WinCE (body).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
- /*************************************************************************/
- /* */
- /* This component contains various macros and functions used to ease the */
- /* debugging of the FreeType engine. Its main purpose is in assertion */
- /* checking, tracing, and error detection. */
- /* */
- /* There are now three debugging modes: */
- /* */
- /* - trace mode */
- /* */
- /* Error and trace messages are sent to the log file (which can be the */
- /* standard error output). */
- /* */
- /* - error mode */
- /* */
- /* Only error messages are generated. */
- /* */
- /* - release mode: */
- /* */
- /* No error message is sent or generated. The code is free from any */
- /* debugging parts. */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * This component contains various macros and functions used to ease the
+ * debugging of the FreeType engine. Its main purpose is in assertion
+ * checking, tracing, and error detection.
+ *
+ * There are now three debugging modes:
+ *
+ * - trace mode
+ *
+ * Error and trace messages are sent to the log file (which can be the
+ * standard error output).
+ *
+ * - error mode
+ *
+ * Only error messages are generated.
+ *
+ * - release mode:
+ *
+ * No error message is sent or generated. The code is free from any
+ * debugging parts.
+ *
+ */
#include <ft2build.h>
+#include FT_FREETYPE_H
#include FT_INTERNAL_DEBUG_H
#ifdef FT_DEBUG_LEVEL_ERROR
-
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
@@ -55,14 +55,15 @@
#include <windows.h>
- void
+ static void
OutputDebugStringEx( const char* str )
{
static WCHAR buf[8192];
+ int sz = MultiByteToWideChar( CP_ACP, 0, str, -1, buf,
+ sizeof ( buf ) / sizeof ( *buf ) );
- int sz = MultiByteToWideChar( CP_ACP, 0, str, -1, buf,
- sizeof ( buf ) / sizeof ( *buf ) );
+
if ( !sz )
lstrcpyW( buf, L"OutputDebugStringEx: MultiByteToWideChar failed" );
@@ -70,6 +71,8 @@
}
+ /* documentation is in ftdebug.h */
+
FT_BASE_DEF( void )
FT_Message( const char* fmt,
... )
@@ -87,6 +90,8 @@
}
+ /* documentation is in ftdebug.h */
+
FT_BASE_DEF( void )
FT_Panic( const char* fmt,
... )
@@ -111,18 +116,38 @@
int line,
const char* file )
{
+#if 0
+ /* activating the code in this block makes FreeType very chatty */
+ fprintf( stderr,
+ "%s:%d: error 0x%02x: %s\n",
+ file,
+ line,
+ error,
+ FT_Error_String( error ) );
+#else
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
+#endif
return 0;
}
+#endif /* FT_DEBUG_LEVEL_ERROR */
+
+
#ifdef FT_DEBUG_LEVEL_TRACE
+ /* array of trace levels, initialized to 0; */
+ /* this gets adjusted at run-time */
+ static int ft_trace_levels_enabled[trace_count];
- /* array of trace levels, initialized to 0 */
- int ft_trace_levels[trace_count];
+ /* array of trace levels, always initialized to 0 */
+ static int ft_trace_levels_disabled[trace_count];
+
+ /* a pointer to either `ft_trace_levels_enabled' */
+ /* or `ft_trace_levels_disabled' */
+ int* ft_trace_levels;
/* define array of trace toggle names */
#define FT_TRACE_DEF( x ) #x ,
@@ -136,24 +161,66 @@
#undef FT_TRACE_DEF
- /*************************************************************************/
- /* */
- /* Initialize the tracing sub-system. This is done by retrieving the */
- /* value of the "FT2_DEBUG" environment variable. It must be a list of */
- /* toggles, separated by spaces, `;' or `,'. Example: */
- /* */
- /* "any:3 memory:6 stream:5" */
- /* */
- /* This will request that all levels be set to 3, except the trace level */
- /* for the memory and stream components which are set to 6 and 5, */
- /* respectively. */
- /* */
- /* See the file `include/freetype/internal/fttrace.h' for details of the */
- /* available toggle names. */
- /* */
- /* The level must be between 0 and 6; 0 means quiet (except for serious */
- /* runtime errors), and 6 means _very_ verbose. */
- /* */
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( FT_Int )
+ FT_Trace_Get_Count( void )
+ {
+ return trace_count;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( const char * )
+ FT_Trace_Get_Name( FT_Int idx )
+ {
+ int max = FT_Trace_Get_Count();
+
+
+ if ( idx < max )
+ return ft_trace_toggles[idx];
+ else
+ return NULL;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ ft_trace_levels = ft_trace_levels_disabled;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ ft_trace_levels = ft_trace_levels_enabled;
+ }
+
+
+ /**************************************************************************
+ *
+ * Initialize the tracing sub-system. This is done by retrieving the
+ * value of the `FT2_DEBUG' environment variable. It must be a list of
+ * toggles, separated by spaces, `;', or `,'. Example:
+ *
+ * export FT2_DEBUG="any:3 memory:7 stream:5"
+ *
+ * This requests that all levels be set to 3, except the trace level for
+ * the memory and stream components which are set to 7 and 5,
+ * respectively.
+ *
+ * See the file `include/freetype/internal/fttrace.h' for details of
+ * the available toggle names.
+ *
+ * The level must be between 0 and 7; 0 means quiet (except for serious
+ * runtime errors), and 7 means _very_ verbose.
+ */
FT_BASE_DEF( void )
ft_debug_init( void )
{
@@ -189,8 +256,8 @@
if ( *p == ':' && p > q )
{
- int n, i, len = (int)( p - q );
- int level = -1, found = -1;
+ FT_Int n, i, len = (FT_Int)( p - q );
+ FT_Int level = -1, found = -1;
for ( n = 0; n < trace_count; n++ )
@@ -224,16 +291,18 @@
{
if ( found == trace_any )
{
- /* special case for "any" */
+ /* special case for `any' */
for ( n = 0; n < trace_count; n++ )
- ft_trace_levels[n] = level;
+ ft_trace_levels_enabled[n] = level;
}
else
- ft_trace_levels[found] = level;
+ ft_trace_levels_enabled[found] = level;
}
}
}
}
+
+ ft_trace_levels = ft_trace_levels_enabled;
}
@@ -247,9 +316,39 @@
}
-#endif /* !FT_DEBUG_LEVEL_TRACE */
+ FT_BASE_DEF( FT_Int )
+ FT_Trace_Get_Count( void )
+ {
+ return 0;
+ }
-#endif /* FT_DEBUG_LEVEL_ERROR */
+
+ FT_BASE_DEF( const char * )
+ FT_Trace_Get_Name( FT_Int idx )
+ {
+ FT_UNUSED( idx );
+
+ return NULL;
+ }
+
+
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ /* nothing */
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ /* nothing */
+ }
+
+
+#endif /* !FT_DEBUG_LEVEL_TRACE */
/* END */
diff --git a/builds/wince/vc2005-ce/freetype.vcproj b/builds/wince/vc2005-ce/freetype.vcproj
index 1ca45a8..de556aa 100644
--- a/builds/wince/vc2005-ce/freetype.vcproj
+++ b/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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291ST.lib" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST.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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291ST_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101ST_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_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\freetype291MT.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT.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\freetype291MT_D.lib" SuppressStartupBanner="true" />
+ <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2101MT_D.lib" SuppressStartupBanner="true" />
<Tool Name="VCALinkTool" />
<Tool Name="VCXDCMakeTool" />
<Tool Name="VCBscMakeTool" />
diff --git a/builds/wince/vc2005-ce/index.html b/builds/wince/vc2005-ce/index.html
index 02a1caf..16a1062 100644
--- a/builds/wince/vc2005-ce/index.html
+++ b/builds/wince/vc2005-ce/index.html
@@ -21,21 +21,21 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.9.1 sources:</p>
+It compiles the following libraries from the FreeType 2.10.1 sources:</p>
<ul>
<pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
+ freetype2101.lib - release build; single threaded
+ freetype2101_D.lib - debug build; single threaded
+ freetype2101MT.lib - release build; multi-threaded
+ freetype2101MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
archives are already stored this way, so no further action is required. If
you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
+href="https://www.winzip.com">WinZip</a>, you should activate the <em>TAR
file smart CR/LF Conversion</em> option. Alternatively, you may consider
using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
around, which specifically deal with this particular problem.
diff --git a/builds/wince/vc2008-ce/freetype.vcproj b/builds/wince/vc2008-ce/freetype.vcproj
index 7a5445e..f9479da 100644
--- a/builds/wince/vc2008-ce/freetype.vcproj
+++ b/builds/wince/vc2008-ce/freetype.vcproj
@@ -88,7 +88,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -177,7 +177,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -266,7 +266,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -355,7 +355,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -444,7 +444,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -533,7 +533,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -621,7 +621,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -709,7 +709,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -797,7 +797,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -885,7 +885,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -973,7 +973,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1061,7 +1061,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1149,7 +1149,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1236,7 +1236,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1323,7 +1323,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1410,7 +1410,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1497,7 +1497,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1584,7 +1584,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1668,7 +1668,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1753,7 +1753,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1838,7 +1838,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1923,7 +1923,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2008,7 +2008,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2093,7 +2093,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2178,7 +2178,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2263,7 +2263,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2348,7 +2348,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2433,7 +2433,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2518,7 +2518,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2603,7 +2603,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2689,7 +2689,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2775,7 +2775,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2861,7 +2861,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2947,7 +2947,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3033,7 +3033,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3119,7 +3119,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3205,7 +3205,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3279,7 +3279,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/builds/wince/vc2008-ce/index.html b/builds/wince/vc2008-ce/index.html
index f7a3583..9d71b09 100644
--- a/builds/wince/vc2008-ce/index.html
+++ b/builds/wince/vc2008-ce/index.html
@@ -21,21 +21,21 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.9.1 sources:</p>
+It compiles the following libraries from the FreeType 2.10.1 sources:</p>
<ul>
<pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
+ freetype2101.lib - release build; single threaded
+ freetype2101_D.lib - debug build; single threaded
+ freetype2101MT.lib - release build; multi-threaded
+ freetype2101MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
archives are already stored this way, so no further action is required. If
you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
+href="https://www.winzip.com">WinZip</a>, you should activate the <em>TAR
file smart CR/LF Conversion</em> option. Alternatively, you may consider
using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
around, which specifically deal with this particular problem.
diff --git a/builds/windows/detect.mk b/builds/windows/detect.mk
index 05b0e6a..351e256 100644
--- a/builds/windows/detect.mk
+++ b/builds/windows/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/ftdebug.c b/builds/windows/ftdebug.c
index ec70a0e..7c47fb5 100644
--- a/builds/windows/ftdebug.c
+++ b/builds/windows/ftdebug.c
@@ -1,47 +1,48 @@
-/***************************************************************************/
-/* */
-/* ftdebug.c */
-/* */
-/* Debugging and logging component for Win32 (body). */
-/* */
-/* Copyright 1996-2018 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. */
-/* */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.c
+ *
+ * Debugging and logging component for Win32 (body).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
- /*************************************************************************/
- /* */
- /* This component contains various macros and functions used to ease the */
- /* debugging of the FreeType engine. Its main purpose is in assertion */
- /* checking, tracing, and error detection. */
- /* */
- /* There are now three debugging modes: */
- /* */
- /* - trace mode */
- /* */
- /* Error and trace messages are sent to the log file (which can be the */
- /* standard error output). */
- /* */
- /* - error mode */
- /* */
- /* Only error messages are generated. */
- /* */
- /* - release mode: */
- /* */
- /* No error message is sent or generated. The code is free from any */
- /* debugging parts. */
- /* */
- /*************************************************************************/
+ /**************************************************************************
+ *
+ * This component contains various macros and functions used to ease the
+ * debugging of the FreeType engine. Its main purpose is in assertion
+ * checking, tracing, and error detection.
+ *
+ * There are now three debugging modes:
+ *
+ * - trace mode
+ *
+ * Error and trace messages are sent to the log file (which can be the
+ * standard error output).
+ *
+ * - error mode
+ *
+ * Only error messages are generated.
+ *
+ * - release mode:
+ *
+ * No error message is sent or generated. The code is free from any
+ * debugging parts.
+ *
+ */
#include <ft2build.h>
+#include FT_FREETYPE_H
#include FT_INTERNAL_DEBUG_H
@@ -99,19 +100,38 @@
int line,
const char* file )
{
+#if 0
+ /* activating the code in this block makes FreeType very chatty */
+ fprintf( stderr,
+ "%s:%d: error 0x%02x: %s\n",
+ file,
+ line,
+ error,
+ FT_Error_String( error ) );
+#else
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
+#endif
return 0;
}
+#endif /* FT_DEBUG_LEVEL_ERROR */
+
#ifdef FT_DEBUG_LEVEL_TRACE
+ /* array of trace levels, initialized to 0; */
+ /* this gets adjusted at run-time */
+ static int ft_trace_levels_enabled[trace_count];
- /* array of trace levels, initialized to 0 */
- int ft_trace_levels[trace_count];
+ /* array of trace levels, always initialized to 0 */
+ static int ft_trace_levels_disabled[trace_count];
+
+ /* a pointer to either `ft_trace_levels_enabled' */
+ /* or `ft_trace_levels_disabled' */
+ int* ft_trace_levels;
/* define array of trace toggle names */
#define FT_TRACE_DEF( x ) #x ,
@@ -125,24 +145,66 @@
#undef FT_TRACE_DEF
- /*************************************************************************/
- /* */
- /* Initialize the tracing sub-system. This is done by retrieving the */
- /* value of the "FT2_DEBUG" environment variable. It must be a list of */
- /* toggles, separated by spaces, `;' or `,'. Example: */
- /* */
- /* "any:3 memory:6 stream:5" */
- /* */
- /* This will request that all levels be set to 3, except the trace level */
- /* for the memory and stream components which are set to 6 and 5, */
- /* respectively. */
- /* */
- /* See the file `include/freetype/internal/fttrace.h' for details of the */
- /* available toggle names. */
- /* */
- /* The level must be between 0 and 6; 0 means quiet (except for serious */
- /* runtime errors), and 6 means _very_ verbose. */
- /* */
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( FT_Int )
+ FT_Trace_Get_Count( void )
+ {
+ return trace_count;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( const char * )
+ FT_Trace_Get_Name( FT_Int idx )
+ {
+ int max = FT_Trace_Get_Count();
+
+
+ if ( idx < max )
+ return ft_trace_toggles[idx];
+ else
+ return NULL;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ ft_trace_levels = ft_trace_levels_disabled;
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ ft_trace_levels = ft_trace_levels_enabled;
+ }
+
+
+ /**************************************************************************
+ *
+ * Initialize the tracing sub-system. This is done by retrieving the
+ * value of the `FT2_DEBUG' environment variable. It must be a list of
+ * toggles, separated by spaces, `;', or `,'. Example:
+ *
+ * export FT2_DEBUG="any:3 memory:7 stream:5"
+ *
+ * This requests that all levels be set to 3, except the trace level for
+ * the memory and stream components which are set to 7 and 5,
+ * respectively.
+ *
+ * See the file `include/freetype/internal/fttrace.h' for details of
+ * the available toggle names.
+ *
+ * The level must be between 0 and 7; 0 means quiet (except for serious
+ * runtime errors), and 7 means _very_ verbose.
+ */
FT_BASE_DEF( void )
ft_debug_init( void )
{
@@ -171,8 +233,8 @@
if ( *p == ':' && p > q )
{
- int n, i, len = (int)( p - q );
- int level = -1, found = -1;
+ FT_Int n, i, len = (FT_Int)( p - q );
+ FT_Int level = -1, found = -1;
for ( n = 0; n < trace_count; n++ )
@@ -206,16 +268,18 @@
{
if ( found == trace_any )
{
- /* special case for "any" */
+ /* special case for `any' */
for ( n = 0; n < trace_count; n++ )
- ft_trace_levels[n] = level;
+ ft_trace_levels_enabled[n] = level;
}
else
- ft_trace_levels[found] = level;
+ ft_trace_levels_enabled[found] = level;
}
}
}
}
+
+ ft_trace_levels = ft_trace_levels_enabled;
}
@@ -229,9 +293,39 @@
}
-#endif /* !FT_DEBUG_LEVEL_TRACE */
+ FT_BASE_DEF( FT_Int )
+ FT_Trace_Get_Count( void )
+ {
+ return 0;
+ }
-#endif /* FT_DEBUG_LEVEL_ERROR */
+
+ FT_BASE_DEF( const char * )
+ FT_Trace_Get_Name( FT_Int idx )
+ {
+ FT_UNUSED( idx );
+
+ return NULL;
+ }
+
+
+ FT_BASE_DEF( void )
+ FT_Trace_Disable( void )
+ {
+ /* nothing */
+ }
+
+
+ /* documentation is in ftdebug.h */
+
+ FT_BASE_DEF( void )
+ FT_Trace_Enable( void )
+ {
+ /* nothing */
+ }
+
+
+#endif /* !FT_DEBUG_LEVEL_TRACE */
/* END */
diff --git a/builds/windows/vc2005/freetype.sln b/builds/windows/vc2005/freetype.sln
deleted file mode 100644
index ec3345d..0000000
--- a/builds/windows/vc2005/freetype.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- LIB Debug Multithreaded|Win32 = LIB Debug Multithreaded|Win32
- LIB Debug Singlethreaded|Win32 = LIB Debug Singlethreaded|Win32
- LIB Debug|Win32 = LIB Debug|Win32
- LIB Release Multithreaded|Win32 = LIB Release Multithreaded|Win32
- LIB Release Singlethreaded|Win32 = LIB Release Singlethreaded|Win32
- LIB Release|Win32 = LIB Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.ActiveCfg = Debug|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.Build.0 = Debug|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.ActiveCfg = Release|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/builds/windows/vc2005/freetype.vcproj b/builds/windows/vc2005/freetype.vcproj
deleted file mode 100644
index b1e2ae6..0000000
--- a/builds/windows/vc2005/freetype.vcproj
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="freetype" ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" TargetFrameworkVersion="131072">
- <Platforms>
- <Platform Name="Win32" />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration Name="Release|Win32" OutputDirectory=".\..\..\..\objs\release" IntermediateDirectory=".\..\..\..\objs\release" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291.lib" SuppressStartupBanner="true" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- <Configuration Name="Release Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\release_mt" IntermediateDirectory=".\..\..\..\objs\release_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291MT.lib" SuppressStartupBanner="true" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- <Configuration Name="Release Singlethreaded|Win32" OutputDirectory=".\..\..\..\objs\release_st" IntermediateDirectory=".\..\..\..\objs\release_st" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291ST.lib" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- <Configuration Name="Debug|Win32" OutputDirectory=".\..\..\..\objs\debug" IntermediateDirectory=".\..\..\..\objs\debug" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="3" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291_D.lib" SuppressStartupBanner="true" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- <Configuration Name="Debug Singlethreaded|Win32" OutputDirectory=".\..\..\..\objs\debug_st" IntermediateDirectory=".\..\..\..\objs\debug_st" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291ST_D.lib" SuppressStartupBanner="true" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- <Configuration Name="Debug Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\debug_mt" IntermediateDirectory=".\..\..\..\objs\debug_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2">
- <Tool Name="VCPreBuildEventTool" />
- <Tool Name="VCCustomBuildTool" />
- <Tool Name="VCXMLDataGeneratorTool" />
- <Tool Name="VCWebServiceProxyGeneratorTool" />
- <Tool Name="VCMIDLTool" />
- <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" />
- <Tool Name="VCManagedResourceCompilerTool" />
- <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
- <Tool Name="VCPreLinkEventTool" />
- <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291MT_D.lib" SuppressStartupBanner="true" />
- <Tool Name="VCALinkTool" />
- <Tool Name="VCXDCMakeTool" />
- <Tool Name="VCBscMakeTool" />
- <Tool Name="VCFxCopTool" />
- <Tool Name="VCPostBuildEventTool" />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
- <File RelativePath="..\..\..\src\autofit\autofit.c">
- </File>
- <File RelativePath="..\..\..\src\bdf\bdf.c">
- </File>
- <File RelativePath="..\..\..\src\cff\cff.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftbase.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftbitmap.c">
- </File>
- <File RelativePath="..\..\..\src\cache\ftcache.c">
- </File>
- <File RelativePath="..\ftdebug.c">
- <FileConfiguration>
- <Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
- </FileConfiguration>
- </File>
- <File RelativePath="..\..\..\src\base\ftfstype.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftgasp.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftglyph.c">
- </File>
- <File RelativePath="..\..\..\src\gzip\ftgzip.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftinit.c">
- </File>
- <File RelativePath="..\..\..\src\lzw\ftlzw.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftstroke.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftsystem.c">
- </File>
- <File RelativePath="..\..\..\src\smooth\smooth.c">
- </File>
- <Filter Name="FT_MODULES">
- <File RelativePath="..\..\..\src\base\ftbdf.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftbbox.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftcid.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftmm.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftpfr.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftsynth.c">
- </File>
- <File RelativePath="..\..\..\src\base\fttype1.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftwinfnt.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftgxval.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftotval.c">
- </File>
- <File RelativePath="..\..\..\src\base\ftpatent.c">
- </File>
- <File RelativePath="..\..\..\src\pcf\pcf.c">
- </File>
- <File RelativePath="..\..\..\src\pfr\pfr.c">
- </File>
- <File RelativePath="..\..\..\src\psaux\psaux.c">
- </File>
- <File RelativePath="..\..\..\src\pshinter\pshinter.c">
- </File>
- <File RelativePath="..\..\..\src\psnames\psmodule.c">
- </File>
- <File RelativePath="..\..\..\src\raster\raster.c">
- </File>
- <File RelativePath="..\..\..\src\sfnt\sfnt.c">
- </File>
- <File RelativePath="..\..\..\src\truetype\truetype.c">
- </File>
- <File RelativePath="..\..\..\src\type1\type1.c">
- </File>
- <File RelativePath="..\..\..\src\cid\type1cid.c">
- </File>
- <File RelativePath="..\..\..\src\type42\type42.c">
- </File>
- <File RelativePath="..\..\..\src\winfonts\winfnt.c">
- </File>
- </Filter>
- </Filter>
- <Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl">
- <File RelativePath="..\..\..\include\ft2build.h">
- </File>
- <File RelativePath="..\..\..\include\freetype\config\ftconfig.h">
- </File>
- <File RelativePath="..\..\..\include\freetype\config\ftheader.h">
- </File>
- <File RelativePath="..\..\..\include\freetype\config\ftmodule.h">
- </File>
- <File RelativePath="..\..\..\include\freetype\config\ftoption.h">
- </File>
- <File RelativePath="..\..\..\include\freetype\config\ftstdlib.h">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/builds/windows/vc2005/index.html b/builds/windows/vc2005/index.html
deleted file mode 100644
index c5e182e..0000000
--- a/builds/windows/vc2005/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<html>
-<header>
-<title>
- FreeType 2 Project Files for VS.NET 2005
-</title>
-
-<body>
-<h1>
- FreeType 2 Project Files for VS.NET 2005
-</h1>
-
-<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.9.1 sources:</p>
-
-<ul>
- <pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
-</ul>
-
-<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
-archives are already stored this way, so no further action is required. If
-you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
-tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
-file smart CR/LF Conversion</em> option. Alternatively, you may consider
-using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
-around, which specifically deal with this particular problem.
-
-<p>Build directories are placed in the top-level <tt>objs</tt>
-directory.</p>
-
-</body>
-</html>
diff --git a/builds/windows/vc2008/freetype.sln b/builds/windows/vc2008/freetype.sln
deleted file mode 100644
index 6c522f9..0000000
--- a/builds/windows/vc2008/freetype.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-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}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- LIB Debug Multithreaded|Win32 = LIB Debug Multithreaded|Win32
- LIB Debug Singlethreaded|Win32 = LIB Debug Singlethreaded|Win32
- LIB Debug|Win32 = LIB Debug|Win32
- LIB Release Multithreaded|Win32 = LIB Release Multithreaded|Win32
- LIB Release Singlethreaded|Win32 = LIB Release Singlethreaded|Win32
- LIB Release|Win32 = LIB Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.ActiveCfg = Debug|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.Build.0 = Debug|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.ActiveCfg = Release|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/builds/windows/vc2008/freetype.vcproj b/builds/windows/vc2008/freetype.vcproj
deleted file mode 100644
index f526cd2..0000000
--- a/builds/windows/vc2008/freetype.vcproj
+++ /dev/null
@@ -1,668 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="freetype"
- ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\..\..\..\objs\release"
- IntermediateDirectory=".\..\..\..\objs\release"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release/"
- ObjectFile=".\..\..\..\objs\release/"
- ProgramDataBaseFileName=".\..\..\..\objs\release/"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Multithreaded|Win32"
- OutputDirectory=".\..\..\..\objs\release_mt"
- IntermediateDirectory=".\..\..\..\objs\release_mt"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release_mt/"
- ObjectFile=".\..\..\..\objs\release_mt/"
- ProgramDataBaseFileName=".\..\..\..\objs\release_mt/"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291MT.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Singlethreaded|Win32"
- OutputDirectory=".\..\..\..\objs\release_st"
- IntermediateDirectory=".\..\..\..\objs\release_st"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release_st/"
- ObjectFile=".\..\..\..\objs\release_st/"
- ProgramDataBaseFileName=".\..\..\..\objs\release_st/"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291ST.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\..\..\..\objs\debug"
- IntermediateDirectory=".\..\..\..\objs\debug"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug/"
- ObjectFile=".\..\..\..\objs\debug/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug/"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291_D.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug Singlethreaded|Win32"
- OutputDirectory=".\..\..\..\objs\debug_st"
- IntermediateDirectory=".\..\..\..\objs\debug_st"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug_st/"
- ObjectFile=".\..\..\..\objs\debug_st/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug_st/"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291ST_D.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug Multithreaded|Win32"
- OutputDirectory=".\..\..\..\objs\debug_mt"
- IntermediateDirectory=".\..\..\..\objs\debug_mt"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE"
- GeneratePreprocessedFile="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug_mt/"
- ObjectFile=".\..\..\..\objs\debug_mt/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\win32\vc2008\freetype291MT_D.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="..\..\..\src\autofit\autofit.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\bdf\bdf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\cff\cff.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftbase.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftbitmap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\cache\ftcache.c"
- >
- </File>
- <File
- RelativePath="..\ftdebug.c"
- >
- <FileConfiguration>
- <Tool
- Name="VCCLCompilerTool"
- DisableLanguageExtensions="false"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\..\..\src\base\ftfstype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftgasp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftglyph.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\gzip\ftgzip.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftinit.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\lzw\ftlzw.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftstroke.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftsystem.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\smooth\smooth.c"
- >
- </File>
- <Filter
- Name="FT_MODULES"
- >
- <File
- RelativePath="..\..\..\src\base\ftbbox.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftbdf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftcid.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftmm.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftpfr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftsynth.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\fttype1.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftwinfnt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftgxval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftotval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftpatent.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\pcf\pcf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\pfr\pfr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\psaux\psaux.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\pshinter\pshinter.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\psnames\psmodule.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\raster\raster.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\sfnt\sfnt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\truetype\truetype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\type1\type1.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\cid\type1cid.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\type42\type42.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\winfonts\winfnt.c"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl"
- >
- <File
- RelativePath="..\..\..\include\ft2build.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\freetype\config\ftconfig.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\freetype\config\ftheader.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\freetype\config\ftmodule.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\freetype\config\ftoption.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\freetype\config\ftstdlib.h"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/builds/windows/vc2008/index.html b/builds/windows/vc2008/index.html
deleted file mode 100644
index 25c6f9b..0000000
--- a/builds/windows/vc2008/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<html>
-<header>
-<title>
- FreeType 2 Project Files for VS.NET 2008
-</title>
-
-<body>
-<h1>
- FreeType 2 Project Files for VS.NET 2008
-</h1>
-
-<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.9.1 sources:</p>
-
-<ul>
- <pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
-</ul>
-
-<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
-archives are already stored this way, so no further action is required. If
-you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
-tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
-file smart CR/LF Conversion</em> option. Alternatively, you may consider
-using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
-around, which specifically deal with this particular problem.
-
-<p>Build directories are placed in the top-level <tt>objs</tt>
-directory.</p>
-
-</body>
-</html>
diff --git a/builds/windows/vc2010/freetype.vcxproj b/builds/windows/vc2010/freetype.vcxproj
index 7052c6c..d61eeec 100644
--- a/builds/windows/vc2010/freetype.vcxproj
+++ b/builds/windows/vc2010/freetype.vcxproj
@@ -34,75 +34,44 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
- <!--
- Switch the PlatformToolset based on the Visual Studio Version
--->
- <PropertyGroup>
- <!-- Assume Visual Studio 2010 / 4.0 as the default -->
- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">4.0</VisualStudioVersion>
- </PropertyGroup>
- <!-- Visual Studio 2010 (4.0) -->
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">
- <PlatformToolset>v100</PlatformToolset>
- </PropertyGroup>
- <!-- Visual Studio 2013 (12.0) -->
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <!-- Visual Studio 2015 (14.0) -->
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <!-- Visual Studio 2017 (15.0) -->
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <!--
- End of: Switch the PlatformToolset based on the Visual Studio Version
--->
<PropertyGroup Label="Globals">
<ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
<RootNamespace>FreeType</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Label="PlatformToolset">
+ <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -130,7 +99,6 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <CompileAsManaged>false</CompileAsManaged>
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
</ClCompile>
@@ -139,7 +107,6 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
@@ -158,7 +125,6 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <CompileAsManaged>false</CompileAsManaged>
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
</ClCompile>
@@ -167,7 +133,6 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
@@ -186,7 +151,6 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <CompileAsManaged>false</CompileAsManaged>
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
</ClCompile>
@@ -195,7 +159,6 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
@@ -214,7 +177,6 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <CompileAsManaged>false</CompileAsManaged>
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
</ClCompile>
@@ -223,7 +185,6 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
@@ -235,7 +196,6 @@
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableLanguageExtensions>true</DisableLanguageExtensions>
@@ -243,26 +203,14 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <WholeProgramOptimization>false</WholeProgramOptimization>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <FloatingPointExceptions>false</FloatingPointExceptions>
- <CreateHotpatchableImage>false</CreateHotpatchableImage>
- <CompileAsManaged>false</CompileAsManaged>
- <ProgramDataBaseFileName>
- </ProgramDataBaseFileName>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <DebugInformationFormat>
- </DebugInformationFormat>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -275,7 +223,6 @@
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableLanguageExtensions>true</DisableLanguageExtensions>
@@ -283,26 +230,14 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <WholeProgramOptimization>false</WholeProgramOptimization>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <FloatingPointExceptions>false</FloatingPointExceptions>
- <CreateHotpatchableImage>false</CreateHotpatchableImage>
- <CompileAsManaged>false</CompileAsManaged>
- <ProgramDataBaseFileName>
- </ProgramDataBaseFileName>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <DebugInformationFormat>
- </DebugInformationFormat>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -315,7 +250,6 @@
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableLanguageExtensions>true</DisableLanguageExtensions>
@@ -323,27 +257,14 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <WholeProgramOptimization>false</WholeProgramOptimization>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <FloatingPointExceptions>false</FloatingPointExceptions>
- <CreateHotpatchableImage>false</CreateHotpatchableImage>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <CompileAsManaged>false</CompileAsManaged>
- <ProgramDataBaseFileName>
- </ProgramDataBaseFileName>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <DebugInformationFormat>
- </DebugInformationFormat>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -356,7 +277,6 @@
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<DisableLanguageExtensions>true</DisableLanguageExtensions>
@@ -364,27 +284,14 @@
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
- <WholeProgramOptimization>false</WholeProgramOptimization>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
- <FloatingPointExceptions>false</FloatingPointExceptions>
- <CreateHotpatchableImage>false</CreateHotpatchableImage>
- <RuntimeTypeInfo>false</RuntimeTypeInfo>
- <CompileAsManaged>false</CompileAsManaged>
- <ProgramDataBaseFileName>
- </ProgramDataBaseFileName>
- <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
- <DebugInformationFormat>
- </DebugInformationFormat>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
- <OmitFramePointers>true</OmitFramePointers>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Lib>
- <SuppressStartupBanner>true</SuppressStartupBanner>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
diff --git a/builds/windows/vc2010/index.html b/builds/windows/vc2010/index.html
index 634ea93..eed4dd3 100644
--- a/builds/windows/vc2010/index.html
+++ b/builds/windows/vc2010/index.html
@@ -12,7 +12,7 @@
<p>This directory contains solution and project files for
Visual C++ 2010 or newer, named <tt>freetype.sln</tt>,
and <tt>freetype.vcxproj</tt>. It compiles the following libraries
-from the FreeType 2.9.1 sources:</p>
+from the FreeType 2.10.1 sources:</p>
<ul>
<li>freetype.dll using 'Release' or 'Debug' configurations</li>
@@ -30,7 +30,7 @@
<p>To configure library dependencies like <em>zlib</em> and <em>libpng</em>,
edit the <tt>freetype.users.props</tt> file in this directory. It also
simplifies automated (command-line) builds using <a
-href="http://msdn.microsoft.com/library/dd393574%28v=vs.100%29.aspx">msbuild</a>.</p>
+href="https://msdn.microsoft.com/library/dd393574%28v=vs.100%29.aspx">msbuild</a>.</p>
<p>To link your executable with FreeType DLL, you may want to define
DLL_IMPORT so that the imported functions are appropriately
diff --git a/builds/windows/visualc/freetype.dsp b/builds/windows/visualc/freetype.dsp
index dac3d25..028dd7b 100644
--- a/builds/windows/visualc/freetype.dsp
+++ b/builds/windows/visualc/freetype.dsp
@@ -2,9 +2,10 @@
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
# TARGTYPE "Win32 (x86) Static Library" 0x0104
-CFG=freetype - Win32 Debug Singlethreaded
+CFG=freetype - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,24 +14,20 @@
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded"
+!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library")
-!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library")
-!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library")
-!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "freetype - Win32 Release Static" (based on "Win32 (x86) Static Library")
+!MESSAGE "freetype - Win32 Debug Static" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
!IF "$(CFG)" == "freetype - Win32 Release"
@@ -41,20 +38,27 @@
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\objs\release"
-# PROP Intermediate_Dir "..\..\..\objs\release"
+# PROP Output_Dir "..\..\..\objs\Win32\Release"
+# PROP Intermediate_Dir "..\..\..\objs\Win32\Release"
+# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /MD /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
-# SUBTRACT CPP /nologo /Z<none> /YX
+CPP=cl.exe
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
+# SUBTRACT BASE CPP /YX /Yc /Yu
+# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "DLL_EXPORT"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 /nologo /dll /machine:I386 /out:"$(OutDir)\freetype.dll"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -65,12 +69,73 @@
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\objs\debug"
-# PROP Intermediate_Dir "..\..\..\objs\debug"
+# PROP Output_Dir "..\..\..\objs\Win32\Debug"
+# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug"
+# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /MDd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
-# SUBTRACT CPP /nologo /X /YX
+CPP=cl.exe
+# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
+# SUBTRACT BASE CPP /YX /Yc /Yu
+# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FR /FD /GZ /c
+# SUBTRACT CPP /YX /Yc /Yu
+MTL=midl.exe
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "DLL_EXPORT"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"$(OutDir)\freetype.dll" /pdbtype:sept
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Release Static"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release Static"
+# PROP BASE Intermediate_Dir "Release Static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\objs\Win32\Release Static"
+# PROP Intermediate_Dir "..\..\..\objs\Win32\Release Static"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
+# SUBTRACT BASE CPP /YX /Yc /Yu
+# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib"
+
+!ELSEIF "$(CFG)" == "freetype - Win32 Debug Static"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug Static"
+# PROP BASE Intermediate_Dir "Debug Static"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\objs\Win32\Debug Static"
+# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug Static"
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
+# SUBTRACT BASE CPP /YX /Yc /Yu
+# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /FR /FD /GZ /c
+# SUBTRACT CPP /YX /Yc /Yu
+RSC=rc.exe
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
@@ -78,107 +143,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"
-
-!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded"
-# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\objs\debug_mt"
-# PROP Intermediate_Dir "..\..\..\objs\debug_mt"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c
-# SUBTRACT BASE CPP /X
-# ADD CPP /MTd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
-# SUBTRACT CPP /nologo /X /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype291_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT_D.lib"
-
-!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded"
-# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\objs\release_mt"
-# PROP Intermediate_Dir "..\..\..\objs\release_mt"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c
-# ADD CPP /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
-# SUBTRACT CPP /nologo /Z<none> /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype291.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT.lib"
-
-!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded"
-# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\objs\release_st"
-# PROP Intermediate_Dir "..\..\..\objs\release_st"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c
-# SUBTRACT CPP /nologo /Z<none> /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype291ST.lib"
-# SUBTRACT LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded"
-# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\objs\debug_st"
-# PROP Intermediate_Dir "..\..\..\objs\debug_st"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c
-# SUBTRACT BASE CPP /X /YX
-# ADD CPP /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c
-# SUBTRACT CPP /nologo /X /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291ST_D.lib"
+# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib"
!ENDIF
@@ -186,10 +151,8 @@
# Name "freetype - Win32 Release"
# Name "freetype - Win32 Debug"
-# Name "freetype - Win32 Debug Multithreaded"
-# Name "freetype - Win32 Release Multithreaded"
-# Name "freetype - Win32 Release Singlethreaded"
-# Name "freetype - Win32 Debug Singlethreaded"
+# Name "freetype - Win32 Release Static"
+# Name "freetype - Win32 Debug Static"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
@@ -379,5 +342,13 @@
SOURCE=..\..\..\include\freetype\config\ftstdlib.h
# End Source File
# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+# Begin Source File
+
+SOURCE=..\..\..\src\base\ftver.rc
+# End Source File
+# End Group
# End Target
# End Project
diff --git a/builds/windows/visualc/freetype.sln b/builds/windows/visualc/freetype.sln
index 1f64be2..9054d0a 100644
--- a/builds/windows/visualc/freetype.sln
+++ b/builds/windows/visualc/freetype.sln
@@ -1,27 +1,21 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
+Microsoft Visual Studio Solution File, Format Version 7.00
+# Visual C++ 2002-2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug Multithreaded|Win32 = Debug Multithreaded|Win32
- Debug Singlethreaded|Win32 = Debug Singlethreaded|Win32
+ Debug Static|Win32 = Debug Static|Win32
Debug|Win32 = Debug|Win32
- Release Multithreaded|Win32 = Release Multithreaded|Win32
- Release Singlethreaded|Win32 = Release Singlethreaded|Win32
+ Release Static|Win32 = Release Static|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32
+ {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32
+ {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32
- {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32
+ {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32
+ {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
diff --git a/builds/windows/visualc/freetype.vcproj b/builds/windows/visualc/freetype.vcproj
index dd0c418..ecb5b05 100644
--- a/builds/windows/visualc/freetype.vcproj
+++ b/builds/windows/visualc/freetype.vcproj
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="8.00"
Name="freetype"
ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
>
@@ -15,13 +14,12 @@
<Configurations>
<Configuration
Name="Release|Win32"
- OutputDirectory=".\..\..\..\objs\release"
- IntermediateDirectory=".\..\..\..\objs\release"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ OutputDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ IntermediateDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -42,40 +40,39 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release/"
- ObjectFile=".\..\..\..\objs\release/"
- ProgramDataBaseFileName=".\..\..\..\objs\release/"
WarningLevel="4"
DebugInformationFormat="0"
CompileAs="0"
+ DisableSpecificWarnings="4001"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
+ PreprocessorDefinitions="NDEBUG;DLL_EXPORT"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
- SuppressStartupBanner="true"
+ Name="VCLinkerTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
+ Name="VCManifestTool"
+ />
+ <Tool
Name="VCXDCMakeTool"
/>
<Tool
@@ -85,18 +82,20 @@
Name="VCFxCopTool"
/>
<Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
- Name="Release Multithreaded|Win32"
- OutputDirectory=".\..\..\..\objs\release_mt"
- IntermediateDirectory=".\..\..\..\objs\release_mt"
+ Name="Release Static|Win32"
+ OutputDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ IntermediateDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -117,19 +116,17 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY"
+ PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release_mt/"
- ObjectFile=".\..\..\..\objs\release_mt/"
- ProgramDataBaseFileName=".\..\..\..\objs\release_mt/"
WarningLevel="4"
DebugInformationFormat="0"
CompileAs="0"
+ DisableSpecificWarnings="4001"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -144,82 +141,6 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Singlethreaded|Win32"
- OutputDirectory=".\..\..\..\objs\release_st"
- IntermediateDirectory=".\..\..\..\objs\release_st"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\release_st/"
- ObjectFile=".\..\..\..\objs\release_st/"
- ProgramDataBaseFileName=".\..\..\..\objs\release_st/"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -239,13 +160,12 @@
</Configuration>
<Configuration
Name="Debug|Win32"
- OutputDirectory=".\..\..\..\objs\debug"
- IntermediateDirectory=".\..\..\..\objs\debug"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ OutputDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ IntermediateDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -266,38 +186,36 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug/"
- ObjectFile=".\..\..\..\objs\debug/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug/"
WarningLevel="4"
DebugInformationFormat="3"
CompileAs="0"
+ DisableSpecificWarnings="4001"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
+ PreprocessorDefinitions="_DEBUG;DLL_EXPORT"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
- SuppressStartupBanner="true"
+ Name="VCLinkerTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
+ Name="VCManifestTool"
+ />
+ <Tool
Name="VCXDCMakeTool"
/>
<Tool
@@ -307,18 +225,20 @@
Name="VCFxCopTool"
/>
<Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
- Name="Debug Singlethreaded|Win32"
- OutputDirectory=".\..\..\..\objs\debug_st"
- IntermediateDirectory=".\..\..\..\objs\debug_st"
+ Name="Debug Static|Win32"
+ OutputDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
+ IntermediateDirectory="..\..\..\objs\$(PlatformName)\$(ConfigurationName)\"
ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -339,17 +259,14 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug_st/"
- ObjectFile=".\..\..\..\objs\debug_st/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug_st/"
WarningLevel="4"
DebugInformationFormat="3"
CompileAs="0"
+ DisableSpecificWarnings="4001"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -364,82 +281,6 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug Multithreaded|Win32"
- OutputDirectory=".\..\..\..\objs\debug_mt"
- IntermediateDirectory=".\..\..\..\objs\debug_mt"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE"
- GeneratePreprocessedFile="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DisableLanguageExtensions="true"
- PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch"
- AssemblerListingLocation=".\..\..\..\objs\debug_mt/"
- ObjectFile=".\..\..\..\objs\debug_mt/"
- ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
- SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
@@ -486,26 +327,52 @@
>
</File>
<File
- RelativePath="..\..\..\src\base\ftfstype.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftgasp.c"
- >
- </File>
- <File
RelativePath="..\..\..\src\cache\ftcache.c"
>
</File>
<File
RelativePath="..\ftdebug.c"
>
- <FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
<Tool
Name="VCCLCompilerTool"
DisableLanguageExtensions="false"
/>
</FileConfiguration>
+ <FileConfiguration
+ Name="Release Static|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ DisableLanguageExtensions="false"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ DisableLanguageExtensions="false"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Static|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ DisableLanguageExtensions="false"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftfstype.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftgasp.c"
+ >
</File>
<File
RelativePath="..\..\..\src\base\ftglyph.c"
@@ -551,10 +418,22 @@
>
</File>
<File
+ RelativePath="..\..\..\src\base\ftgxval.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\base\ftmm.c"
>
</File>
<File
+ RelativePath="..\..\..\src\base\ftotval.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\base\ftpatent.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\src\base\ftpfr.c"
>
</File>
@@ -571,18 +450,6 @@
>
</File>
<File
- RelativePath="..\..\..\src\base\ftgxval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftotval.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\base\ftpatent.c"
- >
- </File>
- <File
RelativePath="..\..\..\src\pcf\pcf.c"
>
</File>
@@ -661,6 +528,15 @@
>
</File>
</Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ >
+ <File
+ RelativePath="..\..\..\src\base\ftver.rc"
+ >
+ </File>
+ </Filter>
</Files>
<Globals>
</Globals>
diff --git a/builds/windows/visualc/index.html b/builds/windows/visualc/index.html
index c0611d2..423244a 100644
--- a/builds/windows/visualc/index.html
+++ b/builds/windows/visualc/index.html
@@ -1,31 +1,32 @@
<html>
<header>
<title>
- FreeType 2 Project Files for Visual C++ and VS.NET 2005
+ FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008
</title>
<body>
<h1>
- FreeType 2 Project Files for Visual C++ and VS.NET 2005
+ FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008
</h1>
-<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.9.1 sources:</p>
+<p>This directory contains project files <tt>freetype.dsp</tt> for
+Visual C++ 6.0, and <tt>freetype.vcproj</tt> for Visual C++ 2002
+through 2008, which you might need to upgrade automatically.
+It compiles the following libraries from the FreeType 2.10.1 sources:</p>
<ul>
- <pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
+ <li>freetype.dll using 'Release' or 'Debug' configurations</li>
+ <li>freetype.lib using 'Release Static' or 'Debug Static' configurations</li>
</ul>
+<p>Build directories and target files are placed in the top-level
+<tt>objs</tt> directory.</p>
+
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
archives are already stored this way, so no further action is required. If
you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
+href="https://www.winzip.com">WinZip</a>, you should activate the <em>TAR
file smart CR/LF Conversion</em> option. Alternatively, you may consider
using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
around, which specifically deal with this particular problem.
diff --git a/builds/windows/visualce/freetype.dsp b/builds/windows/visualce/freetype.dsp
index 5fe2b5a..cb1205d 100644
--- a/builds/windows/visualce/freetype.dsp
+++ b/builds/windows/visualce/freetype.dsp
@@ -54,7 +54,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2101.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -78,7 +78,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2101_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
@@ -102,8 +102,8 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype291_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT_D.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype2101_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2101MT_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
@@ -126,8 +126,8 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib\freetype291.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT.lib"
+# ADD BASE LIB32 /nologo /out:"lib\freetype2101.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2101MT.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
@@ -151,8 +151,8 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype291ST.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2101.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype2101ST.lib"
# SUBTRACT LIB32 /nologo
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
@@ -177,8 +177,8 @@
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291ST_D.lib"
+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2101_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2101ST_D.lib"
!ENDIF
diff --git a/builds/windows/visualce/freetype.vcproj b/builds/windows/visualce/freetype.vcproj
index b797311..96b51e9 100644
--- a/builds/windows/visualce/freetype.vcproj
+++ b/builds/windows/visualce/freetype.vcproj
@@ -87,7 +87,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -162,7 +162,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -237,7 +237,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -309,7 +309,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -382,7 +382,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -456,7 +456,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -534,7 +534,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -619,7 +619,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -704,7 +704,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -785,7 +785,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -867,7 +867,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -950,7 +950,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1036,7 +1036,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1121,7 +1121,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1206,7 +1206,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1287,7 +1287,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1369,7 +1369,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1452,7 +1452,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1538,7 +1538,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1623,7 +1623,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1708,7 +1708,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -1789,7 +1789,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1871,7 +1871,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -1954,7 +1954,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2040,7 +2040,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2125,7 +2125,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2210,7 +2210,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -2291,7 +2291,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2373,7 +2373,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2456,7 +2456,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2542,7 +2542,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2627,7 +2627,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2712,7 +2712,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -2793,7 +2793,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2875,7 +2875,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -2958,7 +2958,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3044,7 +3044,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291.lib"
+ OutputFile="..\..\..\objs\freetype2101.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3129,7 +3129,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT.lib"
+ OutputFile="..\..\..\objs\freetype2101MT.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3214,7 +3214,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST.lib"
+ OutputFile="..\..\..\objs\freetype2101ST.lib"
/>
<Tool
Name="VCALinkTool"
@@ -3295,7 +3295,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291_D.lib"
+ OutputFile="..\..\..\objs\freetype2101_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3377,7 +3377,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291ST_D.lib"
+ OutputFile="..\..\..\objs\freetype2101ST_D.lib"
SuppressStartupBanner="true"
/>
<Tool
@@ -3460,7 +3460,7 @@
/>
<Tool
Name="VCLibrarianTool"
- OutputFile="..\..\..\objs\freetype291MT_D.lib"
+ OutputFile="..\..\..\objs\freetype2101MT_D.lib"
SuppressStartupBanner="true"
/>
<Tool
diff --git a/builds/windows/visualce/index.html b/builds/windows/visualce/index.html
index d5a3ca3..95e61fc 100644
--- a/builds/windows/visualce/index.html
+++ b/builds/windows/visualce/index.html
@@ -21,21 +21,21 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.9.1 sources:</p>
+It compiles the following libraries from the FreeType 2.10.1 sources:</p>
<ul>
<pre>
- freetype291.lib - release build; single threaded
- freetype291_D.lib - debug build; single threaded
- freetype291MT.lib - release build; multi-threaded
- freetype291MT_D.lib - debug build; multi-threaded</pre>
+ freetype2101.lib - release build; single threaded
+ freetype2101_D.lib - debug build; single threaded
+ freetype2101MT.lib - release build; multi-threaded
+ freetype2101MT_D.lib - debug build; multi-threaded</pre>
</ul>
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
archives are already stored this way, so no further action is required. If
you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting
tool to convert the line endings. For example, with <a
-href="http://www.winzip.com">WinZip</a>, you should activate the <em>TAR
+href="https://www.winzip.com">WinZip</a>, you should activate the <em>TAR
file smart CR/LF Conversion</em> option. Alternatively, you may consider
using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating
around, which specifically deal with this particular problem.
diff --git a/builds/windows/w32-bcc.mk b/builds/windows/w32-bcc.mk
index 01aab1c..39262ff 100644
--- a/builds/windows/w32-bcc.mk
+++ b/builds/windows/w32-bcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-bccd.mk b/builds/windows/w32-bccd.mk
index 2c14d6c..20e272f 100644
--- a/builds/windows/w32-bccd.mk
+++ b/builds/windows/w32-bccd.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-dev.mk b/builds/windows/w32-dev.mk
index 279d5f9..30c5a8f 100644
--- a/builds/windows/w32-dev.mk
+++ b/builds/windows/w32-dev.mk
@@ -5,7 +5,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-gcc.mk b/builds/windows/w32-gcc.mk
index 9e3476b..4a07bb0 100644
--- a/builds/windows/w32-gcc.mk
+++ b/builds/windows/w32-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-icc.mk b/builds/windows/w32-icc.mk
index e695c12..fb1fc1a 100644
--- a/builds/windows/w32-icc.mk
+++ b/builds/windows/w32-icc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-intl.mk b/builds/windows/w32-intl.mk
index 1e36662..252eae2 100644
--- a/builds/windows/w32-intl.mk
+++ b/builds/windows/w32-intl.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-lcc.mk b/builds/windows/w32-lcc.mk
index 5729d36..aa40e56 100644
--- a/builds/windows/w32-lcc.mk
+++ b/builds/windows/w32-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-mingw32.mk b/builds/windows/w32-mingw32.mk
index b3a210d..3913dac 100644
--- a/builds/windows/w32-mingw32.mk
+++ b/builds/windows/w32-mingw32.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-vcc.mk b/builds/windows/w32-vcc.mk
index 342c8aa..cc38a45 100644
--- a/builds/windows/w32-vcc.mk
+++ b/builds/windows/w32-vcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-wat.mk b/builds/windows/w32-wat.mk
index 37ecc88..842fbce 100644
--- a/builds/windows/w32-wat.mk
+++ b/builds/windows/w32-wat.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/win32-def.mk b/builds/windows/win32-def.mk
index f83d444..23ba80a 100644
--- a/builds/windows/win32-def.mk
+++ b/builds/windows/win32-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -19,6 +19,10 @@
BUILD_DIR := $(TOP_DIR)/builds/windows
PLATFORM := windows
+# This is used for `make refdoc' and `make refdoc-venv'
+#
+BIN := Scripts
+
# The executable file extension (for tools). NOTE: WE INCLUDE THE DOT HERE !!
#
E := .exe
diff --git a/configure b/configure
index f9d2186..9a64f69 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -96,6 +96,8 @@
if test $inode_src -ne $inode_dst; then
if test ! -d reference; then
mkdir reference
+ echo "Copying documentation assets"
+ cp -R $abs_ft2_dir/docs/reference/markdown $abs_curr_dir/reference
fi
if test ! -r $abs_curr_dir/modules.cfg; then
echo "Copying \`modules.cfg'"
diff --git a/devel/ft2build.h b/devel/ft2build.h
index bd4dddb..42fd39f 100644
--- a/devel/ft2build.h
+++ b/devel/ft2build.h
@@ -4,7 +4,7 @@
*
* FreeType 2 build and setup macros (development version).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/devel/ftoption.h b/devel/ftoption.h
index c434ac1..16cf4e1 100644
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -4,7 +4,7 @@
*
* User-selectable configuration macros (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,39 +29,39 @@
*
* USER-SELECTABLE CONFIGURATION MACROS
*
- * This file contains the default configuration macro definitions for
- * a standard build of the FreeType library. There are three ways to
- * use this file to build project-specific versions of the library:
+ * This file contains the default configuration macro definitions for a
+ * standard build of the FreeType library. There are three ways to use
+ * this file to build project-specific versions of the library:
*
* - You can modify this file by hand, but this is not recommended in
- * cases where you would like to build several versions of the
- * library from a single source directory.
+ * cases where you would like to build several versions of the library
+ * from a single source directory.
*
* - You can put a copy of this file in your build directory, more
- * precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'
- * is the name of a directory that is included _before_ the FreeType
- * include path during compilation.
+ * precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is
+ * the name of a directory that is included _before_ the FreeType include
+ * path during compilation.
*
- * The default FreeType Makefiles and Jamfiles use the build
- * directory `builds/<system>' by default, but you can easily change
- * that for your own projects.
+ * The default FreeType Makefiles and Jamfiles use the build directory
+ * `builds/<system>` by default, but you can easily change that for your
+ * own projects.
*
- * - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it
- * slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to
- * locate this file during the build. For example,
+ * - Copy the file <ft2build.h> to `$BUILD/ft2build.h` and modify it
+ * slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate
+ * this file during the build. For example,
*
- * {
+ * ```
* #define FT_CONFIG_OPTIONS_H <myftoptions.h>
* #include <freetype/config/ftheader.h>
- * }
+ * ```
*
- * will use `$BUILD/myftoptions.h' instead of this file for macro
+ * will use `$BUILD/myftoptions.h` instead of this file for macro
* definitions.
*
* Note also that you can similarly pre-define the macro
- * FT_CONFIG_MODULES_H used to locate the file listing of the modules
+ * `FT_CONFIG_MODULES_H` used to locate the file listing of the modules
* that are statically linked to the library at compile time. By
- * default, this file is <freetype/config/ftmodule.h>.
+ * default, this file is `<freetype/config/ftmodule.h>`.
*
* We highly recommend using the third method whenever possible.
*
@@ -80,18 +80,18 @@
/*#************************************************************************
*
* If you enable this configuration option, FreeType recognizes an
- * environment variable called `FREETYPE_PROPERTIES', which can be used to
+ * environment variable called `FREETYPE_PROPERTIES`, which can be used to
* control the various font drivers and modules. The controllable
* properties are listed in the section @properties.
*
* You have to undefine this configuration option on platforms that lack
- * the concept of environment variables (and thus don't have the `getenv'
+ * the concept of environment variables (and thus don't have the `getenv`
* function), for example Windows CE.
*
- * `FREETYPE_PROPERTIES' has the following syntax form (broken here into
+ * `FREETYPE_PROPERTIES` has the following syntax form (broken here into
* multiple lines for better readability).
*
- * {
+ * ```
* <optional whitespace>
* <module-name1> ':'
* <property-name1> '=' <property-value1>
@@ -99,15 +99,15 @@
* <module-name2> ':'
* <property-name2> '=' <property-value2>
* ...
- * }
+ * ```
*
* Example:
*
- * {
+ * ```
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
* cff:no-stem-darkening=1 \
* autofitter:warping=1
- * }
+ * ```
*
*/
#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
@@ -117,35 +117,34 @@
*
* Uncomment the line below if you want to activate LCD rendering
* technology similar to ClearType in this build of the library. This
- * technology triples the resolution in the direction color subpixels.
- * To mitigate color fringes inherent to this technology, you also need
- * to explicitly set up LCD filtering.
+ * technology triples the resolution in the direction color subpixels. To
+ * mitigate color fringes inherent to this technology, you also need to
+ * explicitly set up LCD filtering.
*
- * Note that this feature is covered by several Microsoft patents
- * and should not be activated in any default build of the library.
- * When this macro is not defined, FreeType offers alternative LCD
- * rendering technology that produces excellent output without LCD
- * filtering.
+ * Note that this feature is covered by several Microsoft patents and
+ * should not be activated in any default build of the library. When this
+ * macro is not defined, FreeType offers alternative LCD rendering
+ * technology that produces excellent output without LCD filtering.
*/
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
/**************************************************************************
*
- * Many compilers provide a non-ANSI 64-bit data type that can be used
- * by FreeType to speed up some computations. However, this will create
- * some problems when compiling the library in strict ANSI mode.
+ * Many compilers provide a non-ANSI 64-bit data type that can be used by
+ * FreeType to speed up some computations. However, this will create some
+ * problems when compiling the library in strict ANSI mode.
*
* For this reason, the use of 64-bit integers is normally disabled when
- * the __STDC__ macro is defined. You can however disable this by
- * defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.
+ * the `__STDC__` macro is defined. You can however disable this by
+ * defining the macro `FT_CONFIG_OPTION_FORCE_INT64` here.
*
* For most compilers, this will only create compilation warnings when
* building the library.
*
* ObNote: The compiler-specific 64-bit integers are detected in the
- * file `ftconfig.h' either statically or through the
- * `configure' script on supported platforms.
+ * file `ftconfig.h` either statically or through the `configure`
+ * script on supported platforms.
*/
#undef FT_CONFIG_OPTION_FORCE_INT64
@@ -153,21 +152,21 @@
/**************************************************************************
*
* If this macro is defined, do not try to use an assembler version of
- * performance-critical functions (e.g. FT_MulFix). You should only do
- * that to verify that the assembler function works properly, or to
- * execute benchmark tests of the various implementations.
+ * performance-critical functions (e.g., @FT_MulFix). You should only do
+ * that to verify that the assembler function works properly, or to execute
+ * benchmark tests of the various implementations.
*/
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
/**************************************************************************
*
- * If this macro is defined, try to use an inlined assembler version of
- * the `FT_MulFix' function, which is a `hotspot' when loading and
- * hinting glyphs, and which should be executed as fast as possible.
+ * If this macro is defined, try to use an inlined assembler version of the
+ * @FT_MulFix function, which is a 'hotspot' when loading and hinting
+ * glyphs, and which should be executed as fast as possible.
*
- * Note that if your compiler or CPU is not supported, this will default
- * to the standard and portable implementation found in `ftcalc.c'.
+ * Note that if your compiler or CPU is not supported, this will default to
+ * the standard and portable implementation found in `ftcalc.c`.
*/
#define FT_CONFIG_OPTION_INLINE_MULFIX
@@ -177,12 +176,12 @@
* LZW-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `compress' program. This is mostly used to parse many of the PCF
+ * `compress` program. This is mostly used to parse many of the PCF
* files that come with various X11 distributions. The implementation
- * uses NetBSD's `zopen' to partially uncompress the file on the fly
- * (see src/lzw/ftgzip.c).
+ * uses NetBSD's `zopen` to partially uncompress the file on the fly (see
+ * `src/lzw/ftgzip.c`).
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*/
#define FT_CONFIG_OPTION_USE_LZW
@@ -192,12 +191,12 @@
* Gzip-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `gzip' program. This is mostly used to parse many of the PCF files
- * that come with XFree86. The implementation uses `zlib' to
- * partially uncompress the file on the fly (see src/gzip/ftgzip.c).
+ * `gzip` program. This is mostly used to parse many of the PCF files
+ * that come with XFree86. The implementation uses 'zlib' to partially
+ * uncompress the file on the fly (see `src/gzip/ftgzip.c`).
*
- * Define this macro if you want to enable this `feature'. See also
- * the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.
+ * Define this macro if you want to enable this 'feature'. See also the
+ * macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below.
*/
#define FT_CONFIG_OPTION_USE_ZLIB
@@ -206,23 +205,23 @@
*
* ZLib library selection
*
- * This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.
- * It allows FreeType's `ftgzip' component to link to the system's
+ * This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined.
+ * It allows FreeType's 'ftgzip' component to link to the system's
* installation of the ZLib library. This is useful on systems like
* Unix or VMS where it generally is already available.
*
- * If you let it undefined, the component will use its own copy
- * of the zlib sources instead. These have been modified to be
- * included directly within the component and *not* export external
- * function names. This allows you to link any program with FreeType
- * _and_ ZLib without linking conflicts.
+ * If you let it undefined, the component will use its own copy of the
+ * zlib sources instead. These have been modified to be included
+ * directly within the component and **not** export external function
+ * names. This allows you to link any program with FreeType _and_ ZLib
+ * without linking conflicts.
*
- * Do not #undef this macro here since the build system might define
+ * Do not `#undef` this macro here since the build system might define
* it for certain configurations only.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
@@ -232,28 +231,28 @@
* Bzip2-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `bzip2' program. This is mostly used to parse many of the PCF
- * files that come with XFree86. The implementation uses `libbz2' to
- * partially uncompress the file on the fly (see src/bzip2/ftbzip2.c).
- * Contrary to gzip, bzip2 currently is not included and need to use
- * the system available bzip2 implementation.
+ * `bzip2` program. This is mostly used to parse many of the PCF files
+ * that come with XFree86. The implementation uses `libbz2` to partially
+ * uncompress the file on the fly (see `src/bzip2/ftbzip2.c`). Contrary
+ * to gzip, bzip2 currently is not included and need to use the system
+ * available bzip2 implementation.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
#define FT_CONFIG_OPTION_USE_BZIP2
/**************************************************************************
*
- * Define to disable the use of file stream functions and types, FILE,
- * fopen() etc. Enables the use of smaller system libraries on embedded
- * systems that have multiple system libraries, some with or without
- * file stream support, in the cases where file stream support is not
- * necessary such as memory loading of font files.
+ * Define to disable the use of file stream functions and types, `FILE`,
+ * `fopen`, etc. Enables the use of smaller system libraries on embedded
+ * systems that have multiple system libraries, some with or without file
+ * stream support, in the cases where file stream support is not necessary
+ * such as memory loading of font files.
*/
/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
@@ -264,14 +263,14 @@
*
* FreeType now handles loading color bitmap glyphs in the PNG format.
* This requires help from the external libpng library. Uncompressed
- * color bitmaps do not need any external libraries and will be
- * supported regardless of this configuration.
+ * color bitmaps do not need any external libraries and will be supported
+ * regardless of this configuration.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
#define FT_CONFIG_OPTION_USE_PNG
@@ -280,15 +279,15 @@
*
* HarfBuzz support.
*
- * FreeType uses the HarfBuzz library to improve auto-hinting of
- * OpenType fonts. If available, many glyphs not directly addressable
- * by a font's character map will be hinted also.
+ * FreeType uses the HarfBuzz library to improve auto-hinting of OpenType
+ * fonts. If available, many glyphs not directly addressable by a font's
+ * character map will be hinted also.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
#define FT_CONFIG_OPTION_USE_HARFBUZZ
@@ -297,23 +296,23 @@
*
* Glyph Postscript Names handling
*
- * By default, FreeType 2 is compiled with the `psnames' module. This
- * module is in charge of converting a glyph name string into a
- * Unicode value, or return a Macintosh standard glyph name for the
- * use with the TrueType `post' table.
+ * By default, FreeType 2 is compiled with the 'psnames' module. This
+ * module is in charge of converting a glyph name string into a Unicode
+ * value, or return a Macintosh standard glyph name for the use with the
+ * TrueType 'post' table.
*
- * Undefine this macro if you do not want `psnames' compiled in your
+ * Undefine this macro if you do not want 'psnames' compiled in your
* build of FreeType. This has the following effects:
*
- * - The TrueType driver will provide its own set of glyph names,
- * if you build it to support postscript names in the TrueType
- * `post' table, but will not synthesize a missing Unicode charmap.
+ * - The TrueType driver will provide its own set of glyph names, if you
+ * build it to support postscript names in the TrueType 'post' table,
+ * but will not synthesize a missing Unicode charmap.
*
- * - The Type 1 driver will not be able to synthesize a Unicode
- * charmap out of the glyphs found in the fonts.
+ * - The Type~1 driver will not be able to synthesize a Unicode charmap
+ * out of the glyphs found in the fonts.
*
- * You would normally undefine this configuration macro when building
- * a version of FreeType that doesn't contain a Type 1 or CFF driver.
+ * You would normally undefine this configuration macro when building a
+ * version of FreeType that doesn't contain a Type~1 or CFF driver.
*/
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -322,16 +321,15 @@
*
* Postscript Names to Unicode Values support
*
- * By default, FreeType 2 is built with the `PSNames' module compiled
- * in. Among other things, the module is used to convert a glyph name
- * into a Unicode value. This is especially useful in order to
- * synthesize on the fly a Unicode charmap from the CFF/Type 1 driver
- * through a big table named the `Adobe Glyph List' (AGL).
+ * By default, FreeType~2 is built with the 'psnames' module compiled in.
+ * Among other things, the module is used to convert a glyph name into a
+ * Unicode value. This is especially useful in order to synthesize on
+ * the fly a Unicode charmap from the CFF/Type~1 driver through a big
+ * table named the 'Adobe Glyph List' (AGL).
*
- * Undefine this macro if you do not want the Adobe Glyph List
- * compiled in your `PSNames' module. The Type 1 driver will not be
- * able to synthesize a Unicode charmap out of the glyphs found in the
- * fonts.
+ * Undefine this macro if you do not want the Adobe Glyph List compiled
+ * in your 'psnames' module. The Type~1 driver will not be able to
+ * synthesize a Unicode charmap out of the glyphs found in the fonts.
*/
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
@@ -340,11 +338,11 @@
*
* Support for Mac fonts
*
- * Define this macro if you want support for outline fonts in Mac
- * format (mac dfont, mac resource, macbinary containing a mac
- * resource) on non-Mac platforms.
+ * Define this macro if you want support for outline fonts in Mac format
+ * (mac dfont, mac resource, macbinary containing a mac resource) on
+ * non-Mac platforms.
*
- * Note that the `FOND' resource isn't checked.
+ * Note that the 'FOND' resource isn't checked.
*/
#define FT_CONFIG_OPTION_MAC_FONTS
@@ -358,13 +356,12 @@
* Resource forks which include fonts data are stored sometimes in
* locations which users or developers don't expected. In some cases,
* resource forks start with some offset from the head of a file. In
- * other cases, the actual resource fork is stored in file different
- * from what the user specifies. If this option is activated,
- * FreeType tries to guess whether such offsets or different file
- * names must be used.
+ * other cases, the actual resource fork is stored in file different from
+ * what the user specifies. If this option is activated, FreeType tries
+ * to guess whether such offsets or different file names must be used.
*
* Note that normal, direct access of resource forks is controlled via
- * the FT_CONFIG_OPTION_MAC_FONTS option.
+ * the `FT_CONFIG_OPTION_MAC_FONTS` option.
*/
#ifdef FT_CONFIG_OPTION_MAC_FONTS
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
@@ -373,19 +370,19 @@
/**************************************************************************
*
- * Allow the use of FT_Incremental_Interface to load typefaces that
- * contain no glyph data, but supply it via a callback function.
- * This is required by clients supporting document formats which
- * supply font data incrementally as the document is parsed, such
- * as the Ghostscript interpreter for the PostScript language.
+ * Allow the use of `FT_Incremental_Interface` to load typefaces that
+ * contain no glyph data, but supply it via a callback function. This is
+ * required by clients supporting document formats which supply font data
+ * incrementally as the document is parsed, such as the Ghostscript
+ * interpreter for the PostScript language.
*/
#define FT_CONFIG_OPTION_INCREMENTAL
/**************************************************************************
*
- * The size in bytes of the render pool used by the scan-line converter
- * to do all of its work.
+ * The size in bytes of the render pool used by the scan-line converter to
+ * do all of its work.
*/
#define FT_RENDER_POOL_SIZE 16384L
@@ -395,7 +392,7 @@
* FT_MAX_MODULES
*
* The maximum number of modules that can be registered in a single
- * FreeType library object. 32 is the default.
+ * FreeType library object. 32~is the default.
*/
#define FT_MAX_MODULES 32
@@ -405,16 +402,15 @@
* Debug level
*
* FreeType can be compiled in debug or trace mode. In debug mode,
- * errors are reported through the `ftdebug' component. In trace
- * mode, additional messages are sent to the standard output during
- * execution.
+ * errors are reported through the 'ftdebug' component. In trace mode,
+ * additional messages are sent to the standard output during execution.
*
- * Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.
- * Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.
+ * Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode.
+ * Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode.
*
- * Don't define any of these macros to compile in `release' mode!
+ * Don't define any of these macros to compile in 'release' mode!
*
- * Do not #undef these macros here since the build system might define
+ * Do not `#undef` these macros here since the build system might define
* them for certain configurations only.
*/
#define FT_DEBUG_LEVEL_ERROR
@@ -425,38 +421,38 @@
*
* Autofitter debugging
*
- * If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to
+ * If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to
* control the autofitter behaviour for debugging purposes with global
- * boolean variables (consequently, you should *never* enable this
- * while compiling in `release' mode):
+ * boolean variables (consequently, you should **never** enable this
+ * while compiling in 'release' mode):
*
- * {
+ * ```
* _af_debug_disable_horz_hints
* _af_debug_disable_vert_hints
* _af_debug_disable_blue_hints
- * }
+ * ```
*
* Additionally, the following functions provide dumps of various
- * internal autofit structures to stdout (using `printf'):
+ * internal autofit structures to stdout (using `printf`):
*
- * {
+ * ```
* af_glyph_hints_dump_points
* af_glyph_hints_dump_segments
* af_glyph_hints_dump_edges
* af_glyph_hints_get_num_segments
* af_glyph_hints_get_segment_offset
- * }
+ * ```
*
* As an argument, they use another global variable:
*
- * {
+ * ```
* _af_debug_hints
- * }
+ * ```
*
- * Please have a look at the `ftgrid' demo program to see how those
+ * Please have a look at the `ftgrid` demo program to see how those
* variables and macros should be used.
*
- * Do not #undef these macros here since the build system might define
+ * Do not `#undef` these macros here since the build system might define
* them for certain configurations only.
*/
#define FT_DEBUG_AUTOFIT
@@ -466,16 +462,16 @@
*
* Memory Debugging
*
- * FreeType now comes with an integrated memory debugger that is
- * capable of detecting simple errors like memory leaks or double
- * deletes. To compile it within your build of the library, you
- * should define FT_DEBUG_MEMORY here.
+ * FreeType now comes with an integrated memory debugger that is capable
+ * of detecting simple errors like memory leaks or double deletes. To
+ * compile it within your build of the library, you should define
+ * `FT_DEBUG_MEMORY` here.
*
- * Note that the memory debugger is only activated at runtime when
- * when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also!
+ * Note that the memory debugger is only activated at runtime when when
+ * the _environment_ variable `FT2_DEBUG_MEMORY` is defined also!
*
- * Do not #undef this macro here since the build system might define
- * it for certain configurations only.
+ * Do not `#undef` this macro here since the build system might define it
+ * for certain configurations only.
*/
#define FT_DEBUG_MEMORY
@@ -484,19 +480,32 @@
*
* Module errors
*
- * If this macro is set (which is _not_ the default), the higher byte
- * of an error code gives the module in which the error has occurred,
- * while the lower byte is the real error code.
+ * If this macro is set (which is _not_ the default), the higher byte of
+ * an error code gives the module in which the error has occurred, while
+ * the lower byte is the real error code.
*
- * Setting this macro makes sense for debugging purposes only, since
- * it would break source compatibility of certain programs that use
- * FreeType 2.
+ * Setting this macro makes sense for debugging purposes only, since it
+ * would break source compatibility of certain programs that use
+ * FreeType~2.
*
- * More details can be found in the files ftmoderr.h and fterrors.h.
+ * More details can be found in the files `ftmoderr.h` and `fterrors.h`.
*/
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
+ /**************************************************************************
+ *
+ * Error Strings
+ *
+ * If this macro is set, `FT_Error_String` will return meaningful
+ * descriptions. This is not enabled by default to reduce the overall
+ * size of FreeType.
+ *
+ * More details can be found in the file `fterrors.h`.
+ */
+/* #define FT_CONFIG_OPTION_ERROR_STRINGS */
+
+
/*************************************************************************/
/*************************************************************************/
/**** ****/
@@ -508,47 +517,47 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support
- * embedded bitmaps in all formats using the SFNT module (namely
- * TrueType & OpenType).
+ * Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support
+ * embedded bitmaps in all formats using the 'sfnt' module (namely
+ * TrueType~& OpenType).
*/
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_COLOR_LAYERS if you want to support coloured
- * outlines (from the COLR/CPAL tables) in all formats using the SFNT
- * module (namely TrueType & OpenType).
+ * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support coloured
+ * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt'
+ * module (namely TrueType~& OpenType).
*/
#define TT_CONFIG_OPTION_COLOR_LAYERS
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to
- * load and enumerate the glyph Postscript names in a TrueType or
- * OpenType file.
+ * Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to
+ * load and enumerate the glyph Postscript names in a TrueType or OpenType
+ * file.
*
- * Note that when you do not compile the `PSNames' module by undefining
- * the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will
+ * Note that when you do not compile the 'psnames' module by undefining the
+ * above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will
* contain additional code used to read the PS Names table from a font.
*
- * (By default, the module uses `PSNames' to extract glyph names.)
+ * (By default, the module uses 'psnames' to extract glyph names.)
*/
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to
- * access the internal name table in a SFNT-based format like TrueType
- * or OpenType. The name table contains various strings used to
- * describe the font, like family name, copyright, version, etc. It
- * does not contain any glyph name though.
+ * Define `TT_CONFIG_OPTION_SFNT_NAMES` if your applications need to access
+ * the internal name table in a SFNT-based format like TrueType or
+ * OpenType. The name table contains various strings used to describe the
+ * font, like family name, copyright, version, etc. It does not contain
+ * any glyph name though.
*
* Accessing SFNT names is done through the functions declared in
- * `ftsnames.h'.
+ * `ftsnames.h`.
*/
#define TT_CONFIG_OPTION_SFNT_NAMES
@@ -581,54 +590,53 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile
- * a bytecode interpreter in the TrueType driver.
+ * Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a
+ * bytecode interpreter in the TrueType driver.
*
* By undefining this, you will only compile the code necessary to load
* TrueType glyphs without hinting.
*
- * Do not #undef this macro here, since the build system might
- * define it for certain configurations only.
+ * Do not `#undef` this macro here, since the build system might define it
+ * for certain configurations only.
*/
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile
+ * Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile
* subpixel hinting support into the TrueType driver. This modifies the
- * TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is
+ * TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is
* requested.
*
* 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.
+ * 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.
*
* There are three possible values.
*
* Value 1:
- * This value 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 value 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.
*
* The corresponding interpreter version is v38.
*
* Value 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.
+ * 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.
*
* The corresponding interpreter version is v40.
*
@@ -636,18 +644,18 @@
* Compile both, making both v38 and v40 available (the latter is the
* default).
*
- * 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 (using
- * `FT_Property_Set').
+ * 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 (using `FT_Property_Set`).
*
- * This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be
+ * This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be
* defined.
*
- * [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+ * [1]
+ * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
*/
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 */
@@ -656,16 +664,16 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the
+ * Define `TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED` to compile the
* TrueType glyph loader to use Apple's definition of how to handle
* component offsets in composite glyphs.
*
- * Apple and MS disagree on the default behavior of component offsets
- * in composites. Apple says that they should be scaled by the scaling
- * factors in the transformation matrix (roughly, it's more complex)
- * while MS says they should not. OpenType defines two bits in the
- * composite flags array which can be used to disambiguate, but old
- * fonts will not have them.
+ * Apple and MS disagree on the default behavior of component offsets in
+ * composites. Apple says that they should be scaled by the scaling
+ * factors in the transformation matrix (roughly, it's more complex) while
+ * MS says they should not. OpenType defines two bits in the composite
+ * flags array which can be used to disambiguate, but old fonts will not
+ * have them.
*
* https://www.microsoft.com/typography/otspec/glyf.htm
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html
@@ -675,34 +683,34 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include
- * support for Apple's distortable font technology (fvar, gvar, cvar,
- * and avar tables). This has many similarities to Type 1 Multiple
- * Masters support.
+ * Define `TT_CONFIG_OPTION_GX_VAR_SUPPORT` if you want to include support
+ * for Apple's distortable font technology ('fvar', 'gvar', 'cvar', and
+ * 'avar' tables). Tagged 'Font Variations', this is now part of OpenType
+ * also. This has many similarities to Type~1 Multiple Masters support.
*/
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_BDF if you want to include support for
- * an embedded `BDF ' table within SFNT-based bitmap formats.
+ * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an
+ * embedded 'BDF~' table within SFNT-based bitmap formats.
*/
#define TT_CONFIG_OPTION_BDF
/**************************************************************************
*
- * Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum
+ * Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum
* number of bytecode instructions executed for a single run of the
- * bytecode interpreter, needed to prevent infinite loops. You don't
- * want to change this except for very special situations (e.g., making
- * a library fuzzer spend less time to handle broken fonts).
+ * bytecode interpreter, needed to prevent infinite loops. You don't want
+ * to change this except for very special situations (e.g., making a
+ * library fuzzer spend less time to handle broken fonts).
*
* It is not expected that this value is ever modified by a configuring
- * script; instead, it gets surrounded with #ifndef ... #endif so that
- * the value can be set as a preprocessor option on the compiler's
- * command line.
+ * script; instead, it gets surrounded with `#ifndef ... #endif` so that
+ * the value can be set as a preprocessor option on the compiler's command
+ * line.
*/
#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L
@@ -720,16 +728,15 @@
/**************************************************************************
*
- * T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and
- * arrays in the Type 1 stream (see t1load.c). A minimum of 4 is
- * required.
+ * `T1_MAX_DICT_DEPTH` is the maximum depth of nest dictionaries and arrays
+ * in the Type~1 stream (see `t1load.c`). A minimum of~4 is required.
*/
#define T1_MAX_DICT_DEPTH 5
/**************************************************************************
*
- * T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine
+ * `T1_MAX_SUBRS_CALLS` details the maximum number of nested sub-routine
* calls during glyph loading.
*/
#define T1_MAX_SUBRS_CALLS 16
@@ -737,19 +744,20 @@
/**************************************************************************
*
- * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A
- * minimum of 16 is required.
+ * `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity. A
+ * minimum of~16 is required.
*
- * The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256.
+ * The Chinese font 'MingTiEG-Medium' (covering the CNS 11643 character
+ * set) needs 256.
*/
#define T1_MAX_CHARSTRINGS_OPERANDS 256
/**************************************************************************
*
- * Define this configuration macro if you want to prevent the
- * compilation of `t1afm', which is in charge of reading Type 1 AFM
- * files into an existing face. Note that if set, the T1 driver will be
+ * Define this configuration macro if you want to prevent the compilation
+ * of the 't1afm' module, which is in charge of reading Type~1 AFM files
+ * into an existing face. Note that if set, the Type~1 driver will be
* unable to produce kerning distances.
*/
#undef T1_CONFIG_OPTION_NO_AFM
@@ -757,19 +765,18 @@
/**************************************************************************
*
- * Define this configuration macro if you want to prevent the
- * compilation of the Multiple Masters font support in the Type 1
- * driver.
+ * Define this configuration macro if you want to prevent the compilation
+ * of the Multiple Masters font support in the Type~1 driver.
*/
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
/**************************************************************************
*
- * T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1
+ * `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1
* engine gets compiled into FreeType. If defined, it is possible to
- * switch between the two engines using the `hinting-engine' property of
- * the type1 driver module.
+ * switch between the two engines using the `hinting-engine` property of
+ * the 'type1' driver module.
*/
#define T1_CONFIG_OPTION_OLD_ENGINE
@@ -785,14 +792,13 @@
/**************************************************************************
*
- * Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is
+ * Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is
* possible to set up the default values of the four control points that
- * define the stem darkening behaviour of the (new) CFF engine. For
- * more details please read the documentation of the
- * `darkening-parameters' property (file `ftdriver.h'), which allows the
- * control at run-time.
+ * define the stem darkening behaviour of the (new) CFF engine. For more
+ * details please read the documentation of the `darkening-parameters`
+ * property (file `ftdriver.h`), which allows the control at run-time.
*
- * Do *not* undefine these macros!
+ * Do **not** undefine these macros!
*/
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400
@@ -809,10 +815,10 @@
/**************************************************************************
*
- * CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF
- * engine gets compiled into FreeType. If defined, it is possible to
- * switch between the two engines using the `hinting-engine' property of
- * the cff driver module.
+ * `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine
+ * gets compiled into FreeType. If defined, it is possible to switch
+ * between the two engines using the `hinting-engine` property of the 'cff'
+ * driver module.
*/
#define CFF_CONFIG_OPTION_OLD_ENGINE
@@ -828,18 +834,18 @@
/**************************************************************************
*
- * There are many PCF fonts just called `Fixed' which look completely
- * different, and which have nothing to do with each other. When
- * selecting `Fixed' in KDE or Gnome one gets results that appear rather
- * random, the style changes often if one changes the size and one
- * cannot select some fonts at all. This option makes the PCF module
- * prepend the foundry name (plus a space) to the family name.
+ * There are many PCF fonts just called 'Fixed' which look completely
+ * different, and which have nothing to do with each other. When selecting
+ * 'Fixed' in KDE or Gnome one gets results that appear rather random, the
+ * style changes often if one changes the size and one cannot select some
+ * fonts at all. This option makes the 'pcf' module prepend the foundry
+ * name (plus a space) to the family name.
*
- * We also check whether we have `wide' characters; all put together, we
- * get family names like `Sony Fixed' or `Misc Fixed Wide'.
+ * We also check whether we have 'wide' characters; all put together, we
+ * get family names like 'Sony Fixed' or 'Misc Fixed Wide'.
*
* If this option is activated, it can be controlled with the
- * `no-long-family-names' property of the pcf driver module.
+ * `no-long-family-names` property of the 'pcf' driver module.
*/
#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
@@ -855,51 +861,56 @@
/**************************************************************************
*
- * Compile autofit module with CJK (Chinese, Japanese, Korean) script
+ * Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script
* support.
*/
#define AF_CONFIG_OPTION_CJK
+
/**************************************************************************
*
- * Compile autofit module with fallback Indic script support, covering
- * some scripts that the `latin' submodule of the autofit module doesn't
+ * Compile 'autofit' module with fallback Indic script support, covering
+ * some scripts that the 'latin' submodule of the 'autofit' module doesn't
* (yet) handle.
*/
#define AF_CONFIG_OPTION_INDIC
- /**************************************************************************
- *
- * Compile autofit module with warp hinting. The idea of the warping
- * code is to slightly scale and shift a glyph within a single dimension
- * so that as much of its segments are aligned (more or less) on the
- * grid. To find out the optimal scaling and shifting value, various
- * parameter combinations are tried and scored.
- *
- * This experimental option is active only if the rendering mode is
- * FT_RENDER_MODE_LIGHT; you can switch warping on and off with the
- * `warping' property of the auto-hinter (see file `ftdriver.h' for more
- * information; by default it is switched off).
- */
-#define AF_CONFIG_OPTION_USE_WARPER
/**************************************************************************
*
- * Use TrueType-like size metrics for `light' auto-hinting.
+ * Compile 'autofit' module with warp hinting. The idea of the warping
+ * code is to slightly scale and shift a glyph within a single dimension so
+ * that as much of its segments are aligned (more or less) on the grid. To
+ * find out the optimal scaling and shifting value, various parameter
+ * combinations are tried and scored.
+ *
+ * You can switch warping on and off with the `warping` property of the
+ * auto-hinter (see file `ftdriver.h` for more information; by default it
+ * is switched off).
+ *
+ * This experimental option is not active if the rendering mode is
+ * `FT_RENDER_MODE_LIGHT`.
+ */
+#define AF_CONFIG_OPTION_USE_WARPER
+
+
+ /**************************************************************************
+ *
+ * Use TrueType-like size metrics for 'light' auto-hinting.
*
* It is strongly recommended to avoid this option, which exists only to
- * help some legacy applications retain its appearance and behaviour
- * with respect to auto-hinted TrueType fonts.
+ * help some legacy applications retain its appearance and behaviour with
+ * respect to auto-hinted TrueType fonts.
*
* The very reason this option exists at all are GNU/Linux distributions
* like Fedora that did not un-patch the following change (which was
* present in FreeType between versions 2.4.6 and 2.7.1, inclusive).
*
- * {
+ * ```
* 2011-07-16 Steven Chu <steven.f.chu@gmail.com>
*
* [truetype] Fix metrics on size request for scalable fonts.
- * }
+ * ```
*
* This problematic commit is now reverted (more or less).
*/
@@ -909,15 +920,15 @@
/*
- * This macro is obsolete. Support has been removed in FreeType
- * version 2.5.
+ * This macro is obsolete. Support has been removed in FreeType version
+ * 2.5.
*/
/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
/*
- * This macro is defined if native TrueType hinting is requested by the
- * definitions above.
+ * The next three macros are defined if native TrueType hinting is
+ * requested by the definitions above. Don't change this.
*/
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
#define TT_USE_BYTECODE_INTERPRETER
@@ -936,7 +947,7 @@
/*
* Check CFF darkening parameters. The checks are the same as in function
- * `cff_property_set' in file `cffdrivr.c'.
+ * `cff_property_set` in file `cffdrivr.c`.
*/
#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
diff --git a/docs/CHANGES b/docs/CHANGES
index a6d088a..f36cb19 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -1,3 +1,184 @@
+
+CHANGES BETWEEN 2.10.0 and 2.10.1
+
+ I. IMPORTANT BUG FIXES
+
+ - The bytecode hinting of OpenType variation fonts was flawed, since
+ the data in the `CVAR' table wasn't correctly applied.
+
+
+ II. MISCELLANEOUS
+
+ - Auto-hinter support for Mongolian.
+
+ - For distribution, `.tar.bz2' packages are replaced with `.tar.xz'
+ bundles.
+
+ - The handling of the default character in PCF fonts as introduced
+ in version 2.10.0 was partially broken, causing premature abortion
+ of charmap iteration for many fonts.
+
+ - If `FT_Set_Named_Instance' was called with the same arguments
+ twice in a row, the function returned an incorrect error code the
+ second time.
+
+ - Direct rendering using FT_RASTER_FLAG_DIRECT crashed (bug
+ introduced in version 2.10.0).
+
+ - Increased precision while computing OpenType font variation
+ instances.
+
+ - The flattening algorithm of cubic Bezier curves was slightly
+ changed to make it faster. This can cause very subtle rendering
+ changes, which aren't noticeable by the eye, however.
+
+ - The auto-hinter now disables hinting if there are blue zones
+ defined for a `style' (i.e., a certain combination of a script and
+ its related typographic features) but the font doesn't contain any
+ characters needed to set up at least one blue zone.
+
+ - The `ftmulti' demo program now supports multiple hidden axes with
+ the same name tag.
+
+ - `ftview', `ftstring', and `ftgrid' got a `-k' command line option
+ to emulate a sequence of keystrokes at start-up.
+
+ - `ftview', `ftstring', and `ftgrid' now support screen dumping to a
+ PNG file.
+
+ - The bytecode debugger, `ttdebug', now supports variation TrueType
+ fonts; a variation font instance can be selected with the new `-d'
+ command line option.
+
+
+======================================================================
+
+CHANGES BETWEEN 2.9.1 and 2.10.0
+
+ I. IMPORTANT CHANGES
+
+ - A bunch of new functions has been added to access and process
+ COLR/CPAL data of OpenType fonts with color-layered glyphs.
+
+ FT_Palette_Data_Get
+ Retrieve color palette data.
+ FT_Palette_Select
+ Select and activate a color palette for color-layered
+ glyphs.
+ FT_Palette_Set_Foreground_Color
+ Set text foreground color for palette index 0xFFFF.
+
+ FT_Get_Color_Glyph_Layer
+ Get color layers for a given glyph (using an interator
+ object).
+
+ FT_Bitmap_Blend
+ Blend one bitmap onto another with a given color.
+
+ - An experimental feature is the new behaviour of the
+ `FT_LOAD_COLOR' load flag for color-layered glyphs: Internally
+ it sets a flag so that if `FT_Render_Glyph' is called with
+ `FT_RENDER_MODE_NORMAL' (or `FT_Load_Glyph' with
+ `FT_LOAD_RENDER'), a default blending of the color glyph layers
+ will happen automatically for convenience.
+
+ - As a GSoC 2018 project, Nikhil Ramakrishnan completely
+ overhauled and modernized the API reference.
+
+
+ II. MISCELLANEOUS
+
+ - The logic for computing the global ascender, descender, and
+ height of OpenType fonts has been slightly adjusted for
+ consistency.
+
+ . If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection'
+ field) in the `OS/2' table is set, use the `sTypo' fields in
+ `OS/2' unconditionally.
+ . Otherwise use the metrics data from the `hhea' table (if not
+ zero).
+ . Otherwise use the `sTypo' fields from the `OS/2' table (if not
+ zero).
+ . Otherwise use the `usWin' data from the `OS/2' table as a last
+ resort.
+
+ Variable fonts will apply the `MVAR' deltas to whichever metrics
+ were picked.
+
+ - `TT_Set_MM_Blend' could fail if call repeatedly with the same
+ arguments.
+
+ - The precision of handling deltas in Variation Fonts has been
+ increased. The problem did only show up with multidimensional
+ designspaces.
+
+ - New function `FT_Library_SetLcdGeometry' to set up the geometry
+ of LCD subpixels.
+
+ - FreeType now uses the `defaultChar' property of PCF fonts to set
+ the glyph for the undefined character at glyph index 0 (as
+ FreeType already does for all other supported font formats). As
+ a consequence, the order of glyphs of a PCF font if accessed
+ with FreeType can be different now compared to previous
+ versions.
+
+ This change doesn't affect PCF font access with cmaps.
+
+ - `FT_Select_Charmap' has been changed to allow parameter value
+ `FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT
+ formats to access built-in cmaps that don't have a predefined
+ `FT_Encoding' value.
+
+ - A previously reserved field in the `FT_GlyphSlotRec' structure
+ now holds the glyph index.
+
+ - On Win32 platforms, the use of `_DLL' to build the library has
+ been replaced with `DLL_EXPORT' and `DLL_IMPORT'.
+
+ - The usual round of fuzzer bug fixes to better reject malformed
+ fonts.
+
+ - `FT_Outline_New_Internal' and `FT_Outline_Done_Internal' have
+ been removed. These two functions were public by oversight only
+ and were never documented.
+
+ - A new function `FT_Error_String' returns descriptions of error
+ codes if configuration macro FT_CONFIG_OPTION_ERROR_STRINGS is
+ defined.
+
+ - `FT_Set_MM_WeightVector' and `FT_Get_MM_WeightVector' are new
+ functions limited to Adobe MultiMaster fonts to directly set and
+ get the weight vector.
+
+ - Support for Position Independent Code as needed by systems that
+ prohibit automatic address fixups, such as BREW, has been
+ removed. [Compilation with modern compilers that use flags like
+ `-fPIC' or `-fPIE' is not affected.]
+
+ - The `ftdump' demo program has new options `-c' and `-C' to
+ display charmaps in compact and detailed format, respectively.
+ Option `-V' has been removed.
+
+ - The `ftview', `ftstring', and `ftgrid' demo programs use a new
+ command line option `-d' to specify the program window's width,
+ height, and color depth.
+
+ - The `ftview' demo program now displays red boxes for zero-width
+ glyphs.
+
+ - `ftglyph' has limited support to display fonts with
+ color-layered glyphs. This will be improved later on.
+
+ - `ftgrid' can now display bitmap fonts also.
+
+ - The `ttdebug' demo program has a new option `-f' to select a
+ member of a TrueType collection (TTC).
+
+ - Other various improvements to the demo programs.
+
+
+======================================================================
+
CHANGES BETWEEN 2.9 and 2.9.1
I. IMPORTANT BUG FIXES
@@ -8,7 +189,7 @@
- CVE-2018-6942: Older FreeType versions can crash with certain
malformed variation fonts.
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942
II. MISCELLANEOUS
@@ -232,7 +413,7 @@
following properties can be handled: stem darkening, LCD filter
weights, and the random seed for the `random' CFF operator.
- - The PCF change to show more `colourful' family names (introduced
+ - The PCF change to show more `colorful' family names (introduced
in version 2.7.1) was too radical; it can now be configured with
PCF_CONFIG_OPTION_LONG_FAMILY_NAMES at compile time. If
activated, it can be switched off at run time with the new pcf
@@ -383,7 +564,7 @@
and the number of CVT entries. Please report if you encounter a
font where the selected values are not adequate.
- - PCF family names are made more `colourful'; they now include the
+ - PCF family names are made more `colorful'; they now include the
foundry and information whether they contain wide characters.
For example, you no longer get `Fixed' but rather `Sony Fixed'
or `Misc Fixed Wide'.
@@ -667,8 +848,8 @@
- The `ftstring' demo program now supports subpixel rendering; use
key `l' to cycle through the LCD modes.
- - The `ftstring' demo program now supports colour rendering; use
- the `space' key to cycle through various colour combinations.
+ - The `ftstring' demo program now supports color rendering; use
+ the `space' key to cycle through various color combinations.
- The graphical demo programs now use a default gamma value of 1.8
(instead of 1.2).
@@ -1325,7 +1506,7 @@
Originally, it was a separate patch available from
- http://www.infinality.net/blog/
+ https://web.archive.org/web/20150710073951/http://www.infinality.net:80/blog/
and which has been integrated.
@@ -4047,7 +4228,7 @@
untested for now.
- Updated `docs/docmaker.py', a draft API reference is available at
- http://www.freetype.org/ft2api.html.
+ https://web.archive.org/web/20001215173400/http://www.freetype.org:80/ft2api.html.
- Changed `type1' to use `psaux'.
@@ -5017,7 +5198,7 @@
------------------------------------------------------------------------
-Copyright 2000-2018 by
+Copyright (C) 2000-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/CUSTOMIZE b/docs/CUSTOMIZE
index 916be32..f3f9f8e 100644
--- a/docs/CUSTOMIZE
+++ b/docs/CUSTOMIZE
@@ -139,7 +139,7 @@
----------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/DEBUG b/docs/DEBUG
index 751eaf0..828f294 100644
--- a/docs/DEBUG
+++ b/docs/DEBUG
@@ -88,14 +88,13 @@
for example as in
#undef FT_COMPONENT
- #define FT_COMPONENT trace_io
+ #define FT_COMPONENT io
- The value of the FT_COMPONENT macro is an enumeration named
- `trace_XXXX' where `XXXX' is one of the component names defined in
- the internal file `internal/fttrace.h'. If you modify FreeType
- source and insert new `trace_XXXX' macro, you must register it in
- `fttrace.h'. If you insert or remove many trace macros, you can
- check the undefined or the unused trace macro by
+ The value of the FT_COMPONENT macro is one of the component
+ names defined in the internal file `internal/fttrace.h'. If you
+ modify FreeType source and insert new FT_COMPONENT macro, you must
+ register it in `fttrace.h'. If you insert or remove many trace
+ macros, you can check the undefined or the unused trace macro by
`src/tools/chktrcmp.py'.
Each such component is assigned a `debug level', ranging from 0 to
@@ -138,8 +137,8 @@
component1:level1 component2:level2 component3:level3 ...
where `componentX' is the name of a tracing component, as defined
- in `fttrace.h', but without the `trace_' prefix. `levelX' is the
- corresponding level to use at runtime.
+ in `fttrace.h'. `levelX' is the corresponding level to use at
+ runtime.
`any' is a special component name that will be interpreted as
`any/all components'. For example, the following definitions
@@ -191,7 +190,7 @@
------------------------------------------------------------------------
-Copyright 2002-2018 by
+Copyright (C) 2002-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/DOCGUIDE b/docs/DOCGUIDE
new file mode 100644
index 0000000..da76c88
--- /dev/null
+++ b/docs/DOCGUIDE
@@ -0,0 +1,298 @@
+Introduction
+------------
+
+Documentation is an extremely important part of any project, and it
+helps a lot if it uses consistent syntax and layout.
+
+The documentation for the FreeType library is maintained in header
+files in the `include/` directory in the form of code comments. These
+comments are extracted and organized by 'docwriter' (previously
+'docmaker'). The generated docs can be viewed in the
+`docs/reference/site/` directory after running `make refdoc`.
+
+Documentation comments follow a specific structure and format as
+described below.
+
+
+Documentation Structure
+-----------------------
+
+The documentation is divided into multiple chapters, which contain
+sections relevant to it. The chapter details and sections contained
+in them are listed in `include/freetype/ftchapters.h`. Any unlisted
+section is added to the 'Miscellaneous' chapter.
+
+Sections may contain sub-sections which consist of properties,
+enumerations, and other data types.
+
+
+Comment Blocks
+--------------
+
+Documentation blocks follow a specific format:
+
+ /***************************** (should end on column 77)
+ *
+ * (1 asterisk, 1 space, then content)
+ *
+ */ (end of block)
+
+To make 'docwriter' recognize a comment block, there must be at least
+two asterisks in the first line. As a consequence, you should change
+the second asterisk to something else if you want to prevent a comment
+block being handled by 'docwriter' (for example, change `/****/` to
+`/*#**/`).
+
+
+Markup Tags
+-----------
+
+Markup tags are used to indicate what comes next. The syntax for a
+tag is:
+
+ @foo:
+
+An `@`, followed by the tag, and then `:`.
+
+
+Reserved Tags
+-------------
+
+There are some keywords that have a special meaning to docwriter.
+As a convention, all keywords are written in lowercase.
+
+* `chapter`: Defines a chapter. Usually the title with underscores.
+* `sections`: List of sections in the chapter, in order.
+* `section`: Defines the start or continuation of a section.
+* `title`: Title for a chapter or section. May contain spaces.
+* `abstract`: The abstract for a section, visible in the Table of
+ Contents (TOC).
+* `description`: Detailed description of a tag (except chapters),
+ shown as synopsis.
+* `values`: A list of 'values' for the tag. These values are used for
+ cross-referencing.
+
+
+Other Tags
+----------
+
+Except the ones given above, any other tags will be added as a part of
+a subsection. All tags are lowercase by convention.
+
+
+Public Header Definitions
+-------------------------
+
+The public headers for FreeType have their names defined in
+`include/freetype/config/ftheader.h`. Any new public header file must
+be defined in this file, in the following format:
+
+ #define FT_NEWNAME_H <freetype/newname.h>
+
+Where `newname` is the name of the header file.
+
+This macro is combined with the file location of a sub-section and
+printed with the object.
+
+
+Note on code blocks captured after comments
+-------------------------------------------
+
+All non-documentation lines after a documentation comment block are
+captured to be displayed as the code for the sub-section. To stop
+collection, a line with `/* */` should be added.
+
+
+General Formatting Conventions
+------------------------------
+
+* Use two spaces after a full stop ending a sentence.
+* Use appropriate uppercasing in titles. Refer
+
+ https://english.stackexchange.com/a/34
+
+ for more information.
+* Do not add trailing parentheses when citing a C function.
+
+
+Markdown Usage
+--------------
+
+All tags, except the ones that define the name and title for a block
+support markdown in them. Docwriter uses a markdown parser that
+follows rules given in John Gruber's markdown guide:
+
+ https://daringfireball.net/projects/markdown/syntax
+
+with a few exceptions and extensions, detailed below. This may also
+be referred to as the **FreeType Flavored Markdown**.
+
+
+Headers
+-------
+
+Markdown headers should not be used directly, because these are added
+based on section titles, sub-section names, and tags. However, if a
+header needs to be added, note the following correspondence to HTML tags:
+
+* Section title on top of the page is `H1`.
+* Sub-section titles are `H2`.
+* Parts of sub-sections are `H4`.
+* Any header added will be visible in the Table of Contents (TOC) of
+ the page.
+
+
+Emphasis
+--------
+
+* Use `_underscores_` for italics.
+* Use `**double asterisks**` for bold.
+
+Although the other notations (double underscore for bold, single
+asterisk for italics) are supported, it is recommended to use the
+above for consistency.
+
+Note that there may be cases where having two asterisks or underscores
+in a line may lead to text being picked up as italics or bold.
+Although unintentional, this is correct markdown behavior.
+
+For inline code, wrap the sequence with backticks (see below). This
+renders symbols correctly without modifications. If a symbol is
+absolutely required outside of an inline code block or code sequence,
+escape it with a backslash (like `\*` or `\_`).
+
+
+Lists
+-----
+
+Unordered lists can be created with asterisks:
+
+ * Unordered list items can use asterisks.
+ * Another list item.
+
+Ordered lists start with numbers:
+
+ 1. This is an ordered list item.
+ 2. Brackets after numbers won't work.
+
+To continue a list over multiple paragraphs, indent them with at least
+four spaces. For example:
+
+ 1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+
+ Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ 2. This is the second list item.
+
+ This paragraph is not a part of the list.
+
+More information on lists in markdown is available at
+
+ https://daringfireball.net/projects/markdown/syntax#list
+
+
+Cross-references
+----------------
+
+Other sub-sections can be linked with the `@` symbol:
+
+ @description:
+ While FreeType's CFF driver doesn't expose API functions by
+ itself, it is possible to control its behaviour with
+ @FT_Property_Set and @FT_Property_Get.
+
+If a field in the `values` table of another sub-section is linked, the
+link leads to its parent sub-section.
+
+
+Links and Images
+----------------
+
+All URLs are converted to links in the HTML documentation.
+
+Markdown syntax for links and images are fully supported.
+
+
+Inline Code
+-----------
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``):
+
+ Use the `printf()` function.
+
+Cross-references, markdown, and html styling do not work in inline code
+sequences.
+
+
+Code and Syntax Highlighting
+----------------------------
+
+Blocks of code are fenced by lines with three back-ticks `` ``` ``
+followed by the language name, if any (used for syntax highlighting),
+as demonstrated in the following example.
+
+ ```c
+ x = y + z;
+ if ( zookoo == 2 )
+ {
+ foobar();
+ }
+ ```
+
+Note that the indentation of the opening line and the closing line
+must be exactly the same. The code sequence itself should have a
+larger indentation than the surrounding back-ticks.
+
+Like inline code, markdown and html styling is *not* supported inside
+code blocks.
+
+
+Tables
+------
+
+Tables are used to list values, input, and other fields. The FreeType
+Flavored Markdown adopts a simple approach to tables with two columns,
+or field definition tables.
+
+Field definition names may contain alphanumeric, underscore, and the
+`.` characters. This is followed by `::`. The following lines are
+the second column of the table. A field definition ends with the
+start of another field definition, or a markup tag.
+
+ @Input:
+ pathname ::
+ A path to the font file.
+
+ face_index ::
+ See @FT_Open_Face for a detailed description of this
+ parameter.
+
+
+Non-breaking Space
+------------------
+
+A tilde can be used to create a non-breaking space. The example
+
+ The encoding value~0 is reserved.
+
+is converted to
+
+ The encoding value 0 is reserved.
+
+
+----------------------------------------------------------------------
+
+Copyright (C) 2018-2019 by
+Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This file is part of the FreeType project, and may only be used,
+modified, and distributed under the terms of the FreeType project
+license, LICENSE.TXT. By continuing to use, modify, or distribute
+this file you indicate that you have read the license and understand
+and accept it fully.
+
+
+--- end of DOCGUIDE ---
diff --git a/docs/INSTALL b/docs/INSTALL
index 71d4a05..6105025 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -70,14 +70,14 @@
[1] make++, a make tool written in Perl, has sufficient support of GNU
make extensions to build FreeType. See
- http://makepp.sourceforge.net
+ https://makepp.sourceforge.net
for more information; you need version 2.0 or newer, and you must
pass option `--norc-substitution'.
----------------------------------------------------------------------
-Copyright 2000-2018 by
+Copyright (C) 2000-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.ANY b/docs/INSTALL.ANY
index fddac9a..4d5fd8d 100644
--- a/docs/INSTALL.ANY
+++ b/docs/INSTALL.ANY
@@ -141,7 +141,7 @@
----------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.CROSS b/docs/INSTALL.CROSS
index 239e1a9..8f4cf6e 100644
--- a/docs/INSTALL.CROSS
+++ b/docs/INSTALL.CROSS
@@ -163,7 +163,7 @@
----------------------------------------------------------------------
-Copyright 2006-2018 by
+Copyright (C) 2006-2019 by
suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
diff --git a/docs/INSTALL.GNU b/docs/INSTALL.GNU
index e314ecf..6f37a0f 100644
--- a/docs/INSTALL.GNU
+++ b/docs/INSTALL.GNU
@@ -23,7 +23,7 @@
Note that make++, a make tool written in Perl, supports enough
features of GNU make to compile FreeType. See
- http://makepp.sourceforge.net
+ https://makepp.sourceforge.net
for more information; you need version 2.0 or newer, and you must
pass option `--norc-substitution'.
@@ -148,7 +148,7 @@
----------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.UNIX b/docs/INSTALL.UNIX
index f92d828..602744d 100644
--- a/docs/INSTALL.UNIX
+++ b/docs/INSTALL.UNIX
@@ -105,7 +105,7 @@
----------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.VMS b/docs/INSTALL.VMS
index c1d30e0..54fa2f8 100644
--- a/docs/INSTALL.VMS
+++ b/docs/INSTALL.VMS
@@ -49,7 +49,7 @@
------------------------------------------------------------------------
-Copyright 2000-2018 by
+Copyright (C) 2000-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/MAKEPP b/docs/MAKEPP
index a4d44b7..4450e47 100644
--- a/docs/MAKEPP
+++ b/docs/MAKEPP
@@ -1,5 +1,5 @@
As a special exception, FreeType can also be built with the 'makepp'
-build tool, available from http://makepp.sourceforge.net.
+build tool, available from https://makepp.sourceforge.net.
Note, however, that you will need at least version 2.0 and pass the
option --norc-substitution to have it work correctly.
diff --git a/docs/TODO b/docs/TODO
index 1a443a2..1efccc6 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -27,7 +27,7 @@
------------------------------------------------------------------------
-Copyright 2001-2018 by
+Copyright (C) 2001-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/VERSIONS.TXT b/docs/VERSIONS.TXT
index 3774157..5cdf378 100644
--- a/docs/VERSIONS.TXT
+++ b/docs/VERSIONS.TXT
@@ -52,6 +52,8 @@
release libtool so
-------------------------------
+ 2.10.1 23.1.17 6.17.1
+ 2.10.0 23.0.17 6.17.0
2.9.1 22.1.16 6.16.1
2.9.0 22.0.16 6.16.0
2.8.1 21.0.15 6.15.0
@@ -114,7 +116,7 @@
------------------------------------------------------------------------
-Copyright 2002-2018 by
+Copyright (C) 2002-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/formats.txt b/docs/formats.txt
index 75aba92..5ec5442 100644
--- a/docs/formats.txt
+++ b/docs/formats.txt
@@ -165,8 +165,8 @@
partially defined in MHP 1.0.3 (also called ETSI TS 101812 V1.3.1)
section 7.4.
- http://www.etsi.org/
- http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799
+ https://www.etsi.org/
+ https://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799
[3] Support is rudimentary currently; some tables or data are not
loaded yet.
@@ -191,7 +191,7 @@
------------------------------------------------------------------------
-Copyright 2004-2018 by
+Copyright (C) 2004-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/freetype-config.1 b/docs/freetype-config.1
index 164b8ff..96ff0f2 100644
--- a/docs/freetype-config.1
+++ b/docs/freetype-config.1
@@ -1,4 +1,4 @@
-.TH FREETYPE-CONFIG 1 "May 2018" "FreeType 2.9.1"
+.TH FREETYPE-CONFIG 1 "July 2019" "FreeType 2.10.1"
.
.
.SH NAME
diff --git a/docs/raster.txt b/docs/raster.txt
index 8ef466e..3aa3822 100644
--- a/docs/raster.txt
+++ b/docs/raster.txt
@@ -618,7 +618,7 @@
------------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/reference/.gitignore b/docs/reference/.gitignore
index 2d19fc7..e245bdc 100644
--- a/docs/reference/.gitignore
+++ b/docs/reference/.gitignore
@@ -1 +1,12 @@
+# Static site folder
+site/
+
+# HTML and Markdown files
*.html
+*.md
+
+# MkDocs Config file
+mkdocs.yml
+
+# Python virtualenv
+env/
diff --git a/docs/reference/README b/docs/reference/README
index 51b04d6..3ffcfc0 100644
--- a/docs/reference/README
+++ b/docs/reference/README
@@ -1,5 +1,35 @@
-After saying `make refdoc' this directory contains the FreeType API
-reference. You need python to make this target.
+After saying `make refdoc' or `make refdoc-venv' the `site/' directory
+contains the FreeType API reference. You need python and pip to make this
+target.
+
+There are two ways to generate the documentation:
+
+1. Using `make refdoc':
+
+ - Ensure `python' and `pip' are available.
+ - Install pip package `docwriter' with `pip install --user docwriter'.
+ - Make target with `make refdoc'.
+ - This target can be run offline once required packages are installed.
+
+2. Using `make refdoc-venv' (requires internet access):
+
+ - Ensure `python', `pip' and python package `virtualenv' are available.
+ - Make target with `make refdoc-venv'.
+ - This may or may not require internet access every time depending on
+ pip and system caching.
This also works with Jam: Just type `jam refdoc' in the main directory.
+Some troubleshooting tips:
+
+* Regularly run `pip install --upgrade docwriter' to check for updates which
+may include bug fixes.
+
+* Ensure that `docwriter' is installed in the same python target that
+`make refdoc' uses (python3/python2/python).
+
+* `pip' and `python' may point to different versions of Python. Check using
+`python --version' and `pip --version'.
+
+* If none of this works, send a mail to `freetype-devel@nongnu.org' or file
+an issue at `https://github.com/freetype/docwriter/issues'.
diff --git a/docs/reference/markdown/images/favico.ico b/docs/reference/markdown/images/favico.ico
new file mode 100644
index 0000000..a1a22ed
--- /dev/null
+++ b/docs/reference/markdown/images/favico.ico
Binary files differ
diff --git a/docs/reference/markdown/javascripts/extra.js b/docs/reference/markdown/javascripts/extra.js
new file mode 100644
index 0000000..00f1670
--- /dev/null
+++ b/docs/reference/markdown/javascripts/extra.js
@@ -0,0 +1,54 @@
+/*
+Internal link topbar offest adjust Javascript
+Code provided by @makshh on GitHub
+
+Bug report on material-mkdocs
+ https://github.com/squidfunk/mkdocs-material/issues/791
+*/
+
+// Offset top helper
+function offsetY(elem) {
+ if(!elem) elem = this;
+ var y = elem.offsetTop;
+ while (elem = elem.offsetParent) {
+ y += elem.offsetTop;
+ }
+ return y;
+}
+
+// If a link on the same page is clicked, calculate the
+// correct offset and scroll to that part of the page.
+//
+var links = document.getElementsByTagName('a');
+for(var i = 0; i < links.length; i++) {
+ links[i].onclick = function (event) {
+ if (this.pathname == window.location.pathname &&
+ this.protocol == window.location.protocol &&
+ this.host == window.location.host) {
+ event.preventDefault();
+ if(this.hash.substr(1)){
+ var o = document.getElementById(this.hash.substr(1));
+ var sT = offsetY(o) - document.getElementsByClassName('md-header')[0].clientHeight;
+ window.location.hash = this.hash;
+ window.scrollTo(0, sT);
+ }
+ }
+ }
+}
+
+// Slugify supplied text
+function slugify(text){
+ text = text.toLowerCase();
+ text = text.replace(" ", "-");
+ return text;
+}
+
+// If there is a hash in the url, slugify it
+// and replace
+if(window.location.hash) {
+ // Fragment exists
+ slug = slugify(window.location.hash);
+ history.replaceState(undefined, undefined, slug)
+ //window.location.hash = slug;
+ document.location.replace(window.location.href);
+}
diff --git a/docs/reference/markdown/stylesheets/extra.css b/docs/reference/markdown/stylesheets/extra.css
new file mode 100644
index 0000000..cd6a1ee
--- /dev/null
+++ b/docs/reference/markdown/stylesheets/extra.css
@@ -0,0 +1,221 @@
+/* Body and page */
+.wy-nav-content {
+ max-width: 90%;
+}
+.md-grid {
+ max-width: 90%;
+}
+.md-sidebar--secondary {
+ margin-left: 90%;
+}
+p {
+ text-align: justify;
+ /* margin: 1.5ex 0 1.5ex 0;
+ */
+}
+/* .md-typeset p{
+ margin: 1em 1em 0 1em;
+}
+*/
+/* code blocks */
+pre.colored {
+ color: blue;
+}
+pre {
+ font-family: monospace;
+ background-color: #D6E8FF;
+ padding: 2ex 0 2ex 1%;
+ overflow-x:auto;
+}
+span.keyword {
+ font-family: monospace;
+ text-align: left;
+ white-space: pre;
+ color: #d73a49;
+}
+.md-typeset code {
+ white-space: pre;
+}
+/* H4 Heading */
+h4 {
+ background-color: #EEEEFF;
+ font-size: medium;
+ font-style: oblique;
+ font-weight: bold;
+ /* margin: 3ex 0 1.5ex 9%;
+ */
+ padding: 0.3em 0 0.3em 1%;
+}
+/* Fields table */
+table.fields {
+ width: 90%;
+ margin: 1.5ex 0 1.5ex 10%;
+}
+table.fields td.val {
+ font-weight: bold;
+ text-align: right;
+ width: 30%;
+ vertical-align: baseline;
+ padding: 1em 1em 0 0;
+}
+table.fields td.desc {
+ vertical-align: baseline;
+ padding: 1ex 0 0 1em;
+}
+table.fields td.desc p:first-child {
+ margin: 0;
+}
+
+table.fields td.desc p {
+ margin: 1.5ex 0 0 0;
+}
+
+/* START EXPERIMENTAL CODE */
+table.long {
+ display: block;
+ width: 93%;
+}
+table.long thead,
+table.long tbody,
+table.long th,
+table.long td,
+table.long tr {
+ display: block;
+}
+/* Hide table headers (but not display: none;
+, for accessibility) */
+table.long thead tr {
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+}
+table.long tr {
+ border: 0;
+}
+table.long {
+ margin: 1.5ex 3% 1.5ex 3%;
+}
+table.long td.val {
+ text-align: left;
+}
+table.long td {
+ /* Behave like a "row" */
+ border: none;
+ border-bottom: 0;
+ position: relative;
+ padding-left: 50%;
+}
+table.long td:before {
+ /* Now like a table header */
+ position: absolute;
+ /* Top/left values mimic padding */
+ top: 6px;
+ left: 6px;
+ width: 45%;
+ padding-right: 10px;
+ white-space: nowrap;
+}
+/* END EXPERIMENTAL CODE */
+
+/* Index table */
+table.index {
+ width: 100%;
+ border-collapse: collapse;
+ border: 0;
+ border-spacing: 1em 0.3ex;
+}
+table.index tr {
+ padding: 0;
+}
+table.index td {
+ padding: 0;
+}
+table.index-toc-link {
+ width: 100%;
+ border: 0;
+ border-spacing: 0;
+ margin: 1ex 0 1ex 0;
+}
+table.index-toc-link td.left {
+ padding: 0 0.5em 0 0.5em;
+ font-size: 83%;
+ text-align: left;
+}
+table.index-toc-link td.middle {
+ padding: 0 0.5em 0 0.5em;
+ font-size: 83%;
+ text-align: center;
+}
+table.index-toc-link td.right {
+ padding: 0 0.5em 0 0.5em;
+ font-size: 83%;
+ text-align: right;
+}
+/* toc table */
+table.toc {
+ width: 95%;
+ margin: 1.5ex 0 1.5ex 5%;
+}
+table.toc td.link {
+ width: 30%;
+ text-align: right;
+ vertical-align: baseline;
+ padding: 1ex 1em 1ex 0;
+}
+table.toc td.desc {
+ vertical-align: baseline;
+ padding: 1ex 0 1ex 1em;
+ text-align: left;
+}
+table.toc td.desc p:first-child {
+ margin: 0;
+ text-align: left;
+}
+table.toc td.desc p {
+ margin: 1.5ex 0 0 0;
+ text-align: left;
+}
+div.timestamp {
+ font-size: small;
+}
+/* Max width before this PARTICULAR table gets nasty This query will take effect for any screen smaller than 760px and also iPads specifically. */
+@media only screen and (max-width: 760px), (min-device-width: 768px) and (max-device-width: 1024px) {
+ /* Force table to not be like tables anymore */
+ table, thead, tbody, th, td, tr {
+ display: block;
+ }
+ /* Hide table headers (but not display: none;
+ , for accessibility) */
+ thead tr {
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ }
+ tr {
+ border: 0;
+ }
+ table.fields {
+ width: 93%;
+ margin: 1.5ex 3% 1.5ex 3%;
+ }
+ table.fields td.val {
+ text-align: left;
+ }
+ td {
+ /* Behave like a "row" */
+ border: none;
+ border-bottom: 0;
+ position: relative;
+ padding-left: 50%;
+ }
+ td:before {
+ /* Now like a table header */
+ position: absolute;
+ /* Top/left values mimic padding */
+ top: 6px;
+ left: 6px;
+ width: 45%;
+ padding-right: 10px;
+ white-space: nowrap;
+ }
+}
diff --git a/docs/release b/docs/release
index 44b4cb1..1b0c1ee 100644
--- a/docs/release
+++ b/docs/release
@@ -58,10 +58,10 @@
if necessary).
. Say `make dist' in both the freetype2 and freetype2-demos modules
- to generate the .tar.gz, .tar.bz2, and .zip files.
+ to generate the .tar.gz, .tar.xz, and .zip files.
. Create the doc bundles (freetype-doc-<version>.tar.gz,
- freetype-doc-<version>.tar.bz2, ftdoc<version>.zip). This is
+ freetype-doc-<version>.tar.xz, ftdoc<version>.zip). This is
everything in
<freetype-web git repository>/freetype2/docs
@@ -87,13 +87,13 @@
version=`echo $VERSION | sed "s/\\.//g"`
FREETYPE_PACKAGES="freetype-$VERSION.tar.gz \
- freetype-$VERSION.tar.bz2 \
+ freetype-$VERSION.tar.xz \
ft$version.zip"
FT2DEMOS_PACKAGES="ft2demos-$VERSION.tar.gz \
- ft2demos-$VERSION.tar.bz2 \
+ ft2demos-$VERSION.tar.xz \
ftdmo$version.zip"
FTDOC_PACKAGES="freetype-doc-$VERSION.tar.gz \
- freetype-doc-$VERSION.tar.bz2 \
+ freetype-doc-$VERSION.tar.xz \
ftdoc$version.zip"
PACKAGE_LIST="$FREETYPE_PACKAGES \
@@ -171,7 +171,7 @@
# EOF
. On SourceForge, tag the just uploaded `ftXXX.zip' and
- `freetype-XXX.tar.bz2' files as the default files to download for
+ `freetype-XXX.tar.xz' files as the default files to download for
`Windows' and `Others', respectively.
. Copy the reference files (generated by `make dist') to
@@ -189,7 +189,7 @@
----------------------------------------------------------------------
-Copyright 2003-2018 by
+Copyright (C) 2003-2019 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h
index 3d127f8..9466603 100644
--- a/include/freetype/config/ftconfig.h
+++ b/include/freetype/config/ftconfig.h
@@ -4,7 +4,7 @@
*
* ANSI-specific configuration file (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,20 +18,19 @@
/**************************************************************************
*
- * This header file contains a number of macro definitions that are used
- * by the rest of the engine. Most of the macros here are automatically
- * determined at compile time, and you should not need to change it to
- * port FreeType, except to compile the library with a non-ANSI
- * compiler.
+ * This header file contains a number of macro definitions that are used by
+ * the rest of the engine. Most of the macros here are automatically
+ * determined at compile time, and you should not need to change it to port
+ * FreeType, except to compile the library with a non-ANSI compiler.
*
- * Note however that if some specific modifications are needed, we
- * advise you to place a modified copy in your build directory.
+ * Note however that if some specific modifications are needed, we advise
+ * you to place a modified copy in your build directory.
*
- * The build directory is usually `builds/<system>', and contains
- * system-specific files that are always included first when building
- * the library.
+ * The build directory is usually `builds/<system>`, and contains
+ * system-specific files that are always included first when building the
+ * library.
*
- * This ANSI version should stay in `include/config/'.
+ * This ANSI version should stay in `include/config/`.
*
*/
@@ -50,28 +49,28 @@
*
* PLATFORM-SPECIFIC CONFIGURATION MACROS
*
- * These macros can be toggled to suit a specific system. The current
- * ones are defaults used to compile FreeType in an ANSI C environment
- * (16bit compilers are also supported). Copy this file to your own
- * `builds/<system>' directory, and edit it to port the engine.
+ * These macros can be toggled to suit a specific system. The current ones
+ * are defaults used to compile FreeType in an ANSI C environment (16bit
+ * compilers are also supported). Copy this file to your own
+ * `builds/<system>` directory, and edit it to port the engine.
*
*/
- /* There are systems (like the Texas Instruments 'C54x) where a `char' */
- /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
- /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
- /* is probably unexpected. */
- /* */
- /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
- /* `char' type. */
+ /* There are systems (like the Texas Instruments 'C54x) where a `char` */
+ /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */
+ /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */
+ /* is probably unexpected. */
+ /* */
+ /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */
+ /* `char` type. */
#ifndef FT_CHAR_BIT
#define FT_CHAR_BIT CHAR_BIT
#endif
- /* The size of an `int' type. */
+ /* The size of an `int` type. */
#if FT_UINT_MAX == 0xFFFFUL
#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT )
#elif FT_UINT_MAX == 0xFFFFFFFFUL
@@ -82,7 +81,7 @@
#error "Unsupported size of `int' type!"
#endif
- /* The size of a `long' type. A five-byte `long' (as used e.g. on the */
+ /* The size of a `long` type. A five-byte `long` (as used e.g. on the */
/* DM642) is recognized but avoided. */
#if FT_ULONG_MAX == 0xFFFFFFFFUL
#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
@@ -95,8 +94,8 @@
#endif
- /* FT_UNUSED is a macro used to indicate that a given parameter is not */
- /* used -- this is only used to get rid of unpleasant compiler warnings */
+ /* `FT_UNUSED` indicates that a given parameter is not used -- */
+ /* this is only used to get rid of unpleasant compiler warnings. */
#ifndef FT_UNUSED
#define FT_UNUSED( arg ) ( (arg) = (arg) )
#endif
@@ -121,9 +120,9 @@
* providing a new configuration file.
*/
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
- /* no Carbon frameworks for 64bit 10.4.x */
- /* AvailabilityMacros.h is available since Mac OS X 10.2, */
- /* so guess the system version by maximum errno before inclusion */
+ /* No Carbon frameworks for 64bit 10.4.x. */
+ /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */
+ /* so guess the system version by maximum errno before inclusion. */
#include <errno.h>
#ifdef ECANCELED /* defined since 10.2 */
#include "AvailabilityMacros.h"
@@ -143,7 +142,7 @@
#endif
- /* Fix compiler warning with sgi compiler */
+ /* Fix compiler warning with sgi compiler. */
#if defined( __sgi ) && !defined( __GNUC__ )
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
#pragma set woff 3505
@@ -192,8 +191,8 @@
* FT_Int32
*
* @description:
- * A typedef for a 32bit signed integer type. The size depends on
- * the configuration.
+ * A typedef for a 32bit signed integer type. The size depends on the
+ * configuration.
*/
typedef signed XXX FT_Int32;
@@ -203,8 +202,8 @@
* @type:
* FT_UInt32
*
- * A typedef for a 32bit unsigned integer type. The size depends on
- * the configuration.
+ * A typedef for a 32bit unsigned integer type. The size depends on the
+ * configuration.
*/
typedef unsigned XXX FT_UInt32;
@@ -214,8 +213,8 @@
* @type:
* FT_Int64
*
- * A typedef for a 64bit signed integer type. The size depends on
- * the configuration. Only defined if there is real 64bit support;
+ * A typedef for a 64bit signed integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
* otherwise, it gets emulated with a structure (if necessary).
*/
typedef signed XXX FT_Int64;
@@ -226,8 +225,8 @@
* @type:
* FT_UInt64
*
- * A typedef for a 64bit unsigned integer type. The size depends on
- * the configuration. Only defined if there is real 64bit support;
+ * A typedef for a 64bit unsigned integer type. The size depends on the
+ * configuration. Only defined if there is real 64bit support;
* otherwise, it gets emulated with a structure (if necessary).
*/
typedef unsigned XXX FT_UInt64;
@@ -251,7 +250,7 @@
#endif
- /* look up an integer type that is at least 32 bits */
+ /* look up an integer type that is at least 32~bits */
#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT )
typedef int FT_Fast;
@@ -265,21 +264,21 @@
#endif
- /* determine whether we have a 64-bit int type for platforms without */
- /* Autoconf */
+ /* determine whether we have a 64-bit `int` type for platforms without */
+ /* Autoconf */
#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT )
- /* FT_LONG64 must be defined if a 64-bit type is available */
+ /* `FT_LONG64` must be defined if a 64-bit type is available */
#define FT_LONG64
#define FT_INT64 long
#define FT_UINT64 unsigned long
/**************************************************************************
*
- * A 64-bit data type may create compilation problems if you compile
- * in strict ANSI mode. To avoid them, we disable other 64-bit data
- * types if __STDC__ is defined. You can however ignore this rule
- * by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.
+ * A 64-bit data type may create compilation problems if you compile in
+ * strict ANSI mode. To avoid them, we disable other 64-bit data types if
+ * `__STDC__` is defined. You can however ignore this rule by defining the
+ * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
*/
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
@@ -289,19 +288,19 @@
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
-#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
+#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
#elif defined( __BORLANDC__ ) /* Borland C++ */
- /* XXXX: We should probably check the value of __BORLANDC__ in order */
- /* to test the compiler version. */
+ /* XXXX: We should probably check the value of `__BORLANDC__` in order */
+ /* to test the compiler version. */
- /* this compiler provides the __int64 type */
+ /* this compiler provides the `__int64` type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
@@ -318,7 +317,7 @@
#elif defined( __GNUC__ )
- /* GCC provides the `long long' type */
+ /* GCC provides the `long long` type */
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
@@ -354,7 +353,7 @@
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
- /* typeof condition taken from gnulib's `intprops.h' header file */
+ /* `typeof` condition taken from gnulib's `intprops.h` header file */
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
defined( __IBM__TYPEOF__ ) ) || \
@@ -365,14 +364,14 @@
#endif
- /* Use FT_LOCAL and FT_LOCAL_DEF to declare and define, respectively, */
- /* a function that gets used only within the scope of a module. */
- /* Normally, both the header and source code files for such a */
- /* function are within a single module directory. */
- /* */
- /* Intra-module arrays should be tagged with FT_LOCAL_ARRAY and */
- /* FT_LOCAL_ARRAY_DEF. */
- /* */
+ /* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, */
+ /* respectively, a function that gets used only within the scope of a */
+ /* module. Normally, both the header and source code files for such a */
+ /* function are within a single module directory. */
+ /* */
+ /* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and */
+ /* `FT_LOCAL_ARRAY_DEF`. */
+ /* */
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
#define FT_LOCAL( x ) static x
@@ -394,12 +393,12 @@
#define FT_LOCAL_ARRAY_DEF( x ) const x
- /* Use FT_BASE and FT_BASE_DEF to declare and define, respectively, */
- /* functions that are used in more than a single module. In the */
- /* current setup this implies that the declaration is in a header */
- /* file in the `include/freetype/internal' directory, and the */
- /* function body is in a file in `src/base'. */
- /* */
+ /* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */
+ /* functions that are used in more than a single module. In the */
+ /* current setup this implies that the declaration is in a header file */
+ /* in the `include/freetype/internal` directory, and the function body */
+ /* is in a file in `src/base`. */
+ /* */
#ifndef FT_BASE
#ifdef __cplusplus
@@ -422,37 +421,40 @@
#endif /* !FT_BASE_DEF */
- /* When compiling FreeType as a DLL or DSO with hidden visibility */
- /* some systems/compilers need a special attribute in front OR after */
- /* the return type of function declarations. */
- /* */
- /* Two macros are used within the FreeType source code to define */
- /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
- /* */
- /* FT_EXPORT( return_type ) */
- /* */
- /* is used in a function declaration, as in */
- /* */
- /* FT_EXPORT( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ); */
- /* */
- /* */
- /* FT_EXPORT_DEF( return_type ) */
- /* */
- /* is used in a function definition, as in */
- /* */
- /* FT_EXPORT_DEF( FT_Error ) */
- /* FT_Init_FreeType( FT_Library* alibrary ) */
- /* { */
- /* ... some code ... */
- /* return FT_Err_Ok; */
- /* } */
- /* */
- /* You can provide your own implementation of FT_EXPORT and */
- /* FT_EXPORT_DEF here if you want. */
- /* */
- /* To export a variable, use FT_EXPORT_VAR. */
- /* */
+ /* When compiling FreeType as a DLL or DSO with hidden visibility */
+ /* some systems/compilers need a special attribute in front OR after */
+ /* the return type of function declarations. */
+ /* */
+ /* Two macros are used within the FreeType source code to define */
+ /* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */
+ /* */
+ /* - `FT_EXPORT( return_type )` */
+ /* */
+ /* is used in a function declaration, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ); */
+ /* ``` */
+ /* */
+ /* - `FT_EXPORT_DEF( return_type )` */
+ /* */
+ /* is used in a function definition, as in */
+ /* */
+ /* ``` */
+ /* FT_EXPORT_DEF( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ) */
+ /* { */
+ /* ... some code ... */
+ /* return FT_Err_Ok; */
+ /* } */
+ /* ``` */
+ /* */
+ /* You can provide your own implementation of `FT_EXPORT` and */
+ /* `FT_EXPORT_DEF` here if you want. */
+ /* */
+ /* To export a variable, use `FT_EXPORT_VAR`. */
+ /* */
#ifndef FT_EXPORT
#ifdef FT2_BUILD_LIBRARY
@@ -510,7 +512,7 @@
/* C++ compiler and with 16bit compilers. */
/* */
- /* This is special. Within C++, you must specify `extern "C"' for */
+ /* This is special. Within C++, you must specify `extern "C"` for */
/* functions which are used via function pointers, and you also */
/* must do that for structures which contain function pointers to */
/* assure C linkage -- it's not possible to have (local) anonymous */
@@ -533,7 +535,7 @@
/* */
/* */
/* Some 16bit compilers have to redefine these macros to insert */
- /* the infamous `_cdecl' or `__fastcall' declarations. */
+ /* the infamous `_cdecl` or `__fastcall` declarations. */
/* */
#ifndef FT_CALLBACK_DEF
#ifdef __cplusplus
diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h
index bb96837..696d6ba 100644
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -4,7 +4,7 @@
*
* Build macros of the FreeType 2 library.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
/* <Description> */
/* This macro is used in association with @FT_END_HEADER in header */
/* files to ensure that the declarations within are properly */
- /* encapsulated in an `extern "C" { .. }' block when included from a */
+ /* encapsulated in an `extern "C" { .. }` block when included from a */
/* C++ compiler. */
/* */
#ifdef __cplusplus
@@ -45,7 +45,7 @@
/* <Description> */
/* This macro is used in association with @FT_BEGIN_HEADER in header */
/* files to ensure that the declarations within are properly */
- /* encapsulated in an `extern "C" { .. }' block when included from a */
+ /* encapsulated in an `extern "C" { .. }` block when included from a */
/* C++ compiler. */
/* */
#ifdef __cplusplus
@@ -70,39 +70,39 @@
* Header File Macros
*
* @abstract:
- * Macro definitions used to #include specific header files.
+ * Macro definitions used to `#include` specific header files.
*
* @description:
- * The following macros are defined to the name of specific
- * FreeType~2 header files. They can be used directly in #include
- * statements as in:
+ * The following macros are defined to the name of specific FreeType~2
+ * header files. They can be used directly in `#include` statements as
+ * in:
*
- * {
+ * ```
* #include FT_FREETYPE_H
* #include FT_MULTIPLE_MASTERS_H
* #include FT_GLYPH_H
- * }
+ * ```
*
- * There are several reasons why we are now using macros to name
- * public header files. The first one is that such macros are not
- * limited to the infamous 8.3~naming rule required by DOS (and
- * `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h').
+ * There are several reasons why we are now using macros to name public
+ * header files. The first one is that such macros are not limited to
+ * the infamous 8.3~naming rule required by DOS (and
+ * `FT_MULTIPLE_MASTERS_H` is a lot more meaningful than `ftmm.h`).
*
- * The second reason is that it allows for more flexibility in the
- * way FreeType~2 is installed on a given system.
+ * The second reason is that it allows for more flexibility in the way
+ * FreeType~2 is installed on a given system.
*
*/
/* configuration files */
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CONFIG_CONFIG_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* FreeType~2 configuration data.
*
*/
@@ -111,13 +111,13 @@
#endif
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CONFIG_STANDARD_LIBRARY_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* FreeType~2 interface to the standard C library functions.
*
*/
@@ -126,13 +126,13 @@
#endif
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CONFIG_OPTIONS_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* FreeType~2 project-specific configuration options.
*
*/
@@ -141,13 +141,13 @@
#endif
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CONFIG_MODULES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* list of FreeType~2 modules that are statically linked to new library
* instances in @FT_Init_FreeType.
*
@@ -160,26 +160,26 @@
/* public headers */
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_FREETYPE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* base FreeType~2 API.
*
*/
#define FT_FREETYPE_H <freetype/freetype.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ERRORS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* list of FreeType~2 error codes (and messages).
*
* It is included by @FT_FREETYPE_H.
@@ -188,26 +188,26 @@
#define FT_ERRORS_H <freetype/fterrors.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_MODULE_ERRORS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* list of FreeType~2 module error offsets (and messages).
*
*/
#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_SYSTEM_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 interface to low-level operations (i.e., memory management
* and stream i/o).
*
@@ -217,13 +217,13 @@
#define FT_SYSTEM_H <freetype/ftsystem.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IMAGE_H
*
* @description:
- * A macro used in #include statements to name the file containing type
+ * A macro used in `#include` statements to name the file containing type
* definitions related to glyph images (i.e., bitmaps, outlines,
* scan-converter parameters).
*
@@ -233,13 +233,13 @@
#define FT_IMAGE_H <freetype/ftimage.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TYPES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* basic data types defined by FreeType~2.
*
* It is included by @FT_FREETYPE_H.
@@ -248,13 +248,13 @@
#define FT_TYPES_H <freetype/fttypes.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_LIST_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* list management API of FreeType~2.
*
* (Most applications will never need to include this file.)
@@ -263,151 +263,151 @@
#define FT_LIST_H <freetype/ftlist.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_OUTLINE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* scalable outline management API of FreeType~2.
*
*/
#define FT_OUTLINE_H <freetype/ftoutln.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_SIZES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* API which manages multiple @FT_Size objects per face.
*
*/
#define FT_SIZES_H <freetype/ftsizes.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_MODULE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* module management API of FreeType~2.
*
*/
#define FT_MODULE_H <freetype/ftmodapi.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_RENDER_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* renderer module management API of FreeType~2.
*
*/
#define FT_RENDER_H <freetype/ftrender.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_DRIVER_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* structures and macros related to the driver modules.
*
*/
#define FT_DRIVER_H <freetype/ftdriver.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_AUTOHINTER_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* structures and macros related to the auto-hinting module.
*
- * Deprecated since version 2.9; use @FT_DRIVER_H instead.
+ * Deprecated since version~2.9; use @FT_DRIVER_H instead.
*
*/
#define FT_AUTOHINTER_H FT_DRIVER_H
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CFF_DRIVER_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* structures and macros related to the CFF driver module.
*
- * Deprecated since version 2.9; use @FT_DRIVER_H instead.
+ * Deprecated since version~2.9; use @FT_DRIVER_H instead.
*
*/
#define FT_CFF_DRIVER_H FT_DRIVER_H
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TRUETYPE_DRIVER_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* structures and macros related to the TrueType driver module.
*
- * Deprecated since version 2.9; use @FT_DRIVER_H instead.
+ * Deprecated since version~2.9; use @FT_DRIVER_H instead.
*
*/
#define FT_TRUETYPE_DRIVER_H FT_DRIVER_H
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_PCF_DRIVER_H
*
* @description:
- * A macro used in #include statements to name the file containing
+ * A macro used in `#include` statements to name the file containing
* structures and macros related to the PCF driver module.
*
- * Deprecated since version 2.9; use @FT_DRIVER_H instead.
+ * Deprecated since version~2.9; use @FT_DRIVER_H instead.
*
*/
#define FT_PCF_DRIVER_H FT_DRIVER_H
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TYPE1_TABLES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* types and API specific to the Type~1 format.
*
*/
#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TRUETYPE_IDS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* enumeration values which identify name strings, languages, encodings,
* etc. This file really contains a _large_ set of constant macro
* definitions, taken from the TrueType and OpenType specifications.
@@ -416,174 +416,172 @@
#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TRUETYPE_TABLES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* types and API specific to the TrueType (as well as OpenType) format.
*
*/
#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TRUETYPE_TAGS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * definitions of TrueType four-byte `tags' which identify blocks in
+ * A macro used in `#include` statements to name the file containing the
+ * definitions of TrueType four-byte 'tags' which identify blocks in
* SFNT-based font formats (i.e., TrueType and OpenType).
*
*/
#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_BDF_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which accesses BDF-specific strings from a
- * face.
+ * A macro used in `#include` statements to name the file containing the
+ * definitions of an API which accesses BDF-specific strings from a face.
*
*/
#define FT_BDF_H <freetype/ftbdf.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CID_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * definitions of an API which access CID font information from a
- * face.
+ * A macro used in `#include` statements to name the file containing the
+ * definitions of an API which access CID font information from a face.
*
*/
#define FT_CID_H <freetype/ftcid.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_GZIP_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* definitions of an API which supports gzip-compressed files.
*
*/
#define FT_GZIP_H <freetype/ftgzip.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_LZW_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* definitions of an API which supports LZW-compressed files.
*
*/
#define FT_LZW_H <freetype/ftlzw.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_BZIP2_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* definitions of an API which supports bzip2-compressed files.
*
*/
#define FT_BZIP2_H <freetype/ftbzip2.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_WINFONTS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* definitions of an API which supports Windows FNT files.
*
*/
#define FT_WINFONTS_H <freetype/ftwinfnt.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_GLYPH_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* API of the optional glyph management component.
*
*/
#define FT_GLYPH_H <freetype/ftglyph.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_BITMAP_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* API of the optional bitmap conversion component.
*
*/
#define FT_BITMAP_H <freetype/ftbitmap.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_BBOX_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* API of the optional exact bounding box computation routines.
*
*/
#define FT_BBOX_H <freetype/ftbbox.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_CACHE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* API of the optional FreeType~2 cache sub-system.
*
*/
#define FT_CACHE_H <freetype/ftcache.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_MAC_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * Macintosh-specific FreeType~2 API. The latter is used to access
- * fonts embedded in resource forks.
+ * A macro used in `#include` statements to name the file containing the
+ * Macintosh-specific FreeType~2 API. The latter is used to access fonts
+ * embedded in resource forks.
*
* This header file must be explicitly included by client applications
* compiled on the Mac (note that the base API still works though).
@@ -592,105 +590,105 @@
#define FT_MAC_H <freetype/ftmac.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_MULTIPLE_MASTERS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* optional multiple-masters management API of FreeType~2.
*
*/
#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_SFNT_NAMES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which accesses embedded `name' strings in
+ * A macro used in `#include` statements to name the file containing the
+ * optional FreeType~2 API which accesses embedded 'name' strings in
* SFNT-based font formats (i.e., TrueType and OpenType).
*
*/
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_OPENTYPE_VALIDATE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
- * GPOS, GSUB, JSTF).
+ * A macro used in `#include` statements to name the file containing the
+ * optional FreeType~2 API which validates OpenType tables ('BASE',
+ * 'GDEF', 'GPOS', 'GSUB', 'JSTF').
*
*/
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_GX_VALIDATE_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
- * mort, morx, bsln, just, kern, opbd, trak, prop).
+ * A macro used in `#include` statements to name the file containing the
+ * optional FreeType~2 API which validates TrueTypeGX/AAT tables ('feat',
+ * 'mort', 'morx', 'bsln', 'just', 'kern', 'opbd', 'trak', 'prop').
*
*/
#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_PFR_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which accesses PFR-specific data.
*
*/
#define FT_PFR_H <freetype/ftpfr.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_STROKER_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which provides functions to stroke outline paths.
*/
#define FT_STROKER_H <freetype/ftstroke.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_SYNTHESIS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which performs artificial obliquing and emboldening.
*/
#define FT_SYNTHESIS_H <freetype/ftsynth.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_FONT_FORMATS_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which provides functions specific to font formats.
*/
#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h>
@@ -699,75 +697,75 @@
#define FT_XFREE86_H FT_FONT_FORMATS_H
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_TRIGONOMETRY_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which performs trigonometric computations (e.g.,
* cosines and arc tangents).
*/
#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_LCD_FILTER_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which performs color filtering for subpixel rendering.
*/
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_INCREMENTAL_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which performs incremental glyph loading.
*/
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_GASP_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which returns entries from the TrueType GASP table.
*/
#define FT_GASP_H <freetype/ftgasp.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ADVANCES_H
*
* @description:
- * A macro used in #include statements to name the file containing the
+ * A macro used in `#include` statements to name the file containing the
* FreeType~2 API which returns individual and ranged glyph advances.
*/
#define FT_ADVANCES_H <freetype/ftadvanc.h>
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_COLOR_H
*
* @description:
- * A macro used in #include statements to name the file containing the
- * FreeType~2 API which handles the OpenType CPAL table.
+ * A macro used in `#include` statements to name the file containing the
+ * FreeType~2 API which handles the OpenType 'CPAL' table.
*/
#define FT_COLOR_H <freetype/ftcolor.h>
@@ -782,14 +780,14 @@
#define FT_UNPATENTED_HINTING_H <freetype/ftparams.h>
#define FT_TRUETYPE_UNPATENTED_H <freetype/ftparams.h>
- /* FT_CACHE_H is the only header file needed for the cache subsystem. */
+ /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */
#define FT_CACHE_IMAGE_H FT_CACHE_H
#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
#define FT_CACHE_CHARMAP_H FT_CACHE_H
/* The internals of the cache sub-system are no longer exposed. We */
- /* default to FT_CACHE_H at the moment just in case, but we know of */
- /* no rogue client that uses them. */
+ /* default to `FT_CACHE_H` at the moment just in case, but we know */
+ /* of no rogue client that uses them. */
/* */
#define FT_CACHE_MANAGER_H FT_CACHE_H
#define FT_CACHE_INTERNAL_MRU_H FT_CACHE_H
@@ -801,8 +799,8 @@
/*
- * Include internal headers definitions from <internal/...>
- * only when building the library.
+ * Include internal headers definitions from `<internal/...>` only when
+ * building the library.
*/
#ifdef FT2_BUILD_LIBRARY
#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h>
diff --git a/include/freetype/config/ftmodule.h b/include/freetype/config/ftmodule.h
index e751509..5ac08c1 100644
--- a/include/freetype/config/ftmodule.h
+++ b/include/freetype/config/ftmodule.h
@@ -2,10 +2,10 @@
* This file registers the FreeType modules compiled into the library.
*
* If you use GNU make, this file IS NOT USED! Instead, it is created in
- * the objects directory (normally `<topdir>/objs/') based on information
- * from `<topdir>/modules.cfg'.
+ * the objects directory (normally `<topdir>/objs/`) based on information
+ * from `<topdir>/modules.cfg`.
*
- * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
+ * Please read `docs/INSTALL.ANY` and `docs/CUSTOMIZE` how to compile
* FreeType without GNU make.
*
*/
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
index b2e6685..6c7eb55 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -4,7 +4,7 @@
*
* User-selectable configuration macros (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,39 +29,39 @@
*
* USER-SELECTABLE CONFIGURATION MACROS
*
- * This file contains the default configuration macro definitions for
- * a standard build of the FreeType library. There are three ways to
- * use this file to build project-specific versions of the library:
+ * This file contains the default configuration macro definitions for a
+ * standard build of the FreeType library. There are three ways to use
+ * this file to build project-specific versions of the library:
*
* - You can modify this file by hand, but this is not recommended in
- * cases where you would like to build several versions of the
- * library from a single source directory.
+ * cases where you would like to build several versions of the library
+ * from a single source directory.
*
* - You can put a copy of this file in your build directory, more
- * precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'
- * is the name of a directory that is included _before_ the FreeType
- * include path during compilation.
+ * precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is
+ * the name of a directory that is included _before_ the FreeType include
+ * path during compilation.
*
- * The default FreeType Makefiles and Jamfiles use the build
- * directory `builds/<system>' by default, but you can easily change
- * that for your own projects.
+ * The default FreeType Makefiles and Jamfiles use the build directory
+ * `builds/<system>` by default, but you can easily change that for your
+ * own projects.
*
- * - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it
- * slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to
- * locate this file during the build. For example,
+ * - Copy the file <ft2build.h> to `$BUILD/ft2build.h` and modify it
+ * slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate
+ * this file during the build. For example,
*
- * {
+ * ```
* #define FT_CONFIG_OPTIONS_H <myftoptions.h>
* #include <freetype/config/ftheader.h>
- * }
+ * ```
*
- * will use `$BUILD/myftoptions.h' instead of this file for macro
+ * will use `$BUILD/myftoptions.h` instead of this file for macro
* definitions.
*
* Note also that you can similarly pre-define the macro
- * FT_CONFIG_MODULES_H used to locate the file listing of the modules
+ * `FT_CONFIG_MODULES_H` used to locate the file listing of the modules
* that are statically linked to the library at compile time. By
- * default, this file is <freetype/config/ftmodule.h>.
+ * default, this file is `<freetype/config/ftmodule.h>`.
*
* We highly recommend using the third method whenever possible.
*
@@ -80,18 +80,18 @@
/*#************************************************************************
*
* If you enable this configuration option, FreeType recognizes an
- * environment variable called `FREETYPE_PROPERTIES', which can be used to
+ * environment variable called `FREETYPE_PROPERTIES`, which can be used to
* control the various font drivers and modules. The controllable
* properties are listed in the section @properties.
*
* You have to undefine this configuration option on platforms that lack
- * the concept of environment variables (and thus don't have the `getenv'
+ * the concept of environment variables (and thus don't have the `getenv`
* function), for example Windows CE.
*
- * `FREETYPE_PROPERTIES' has the following syntax form (broken here into
+ * `FREETYPE_PROPERTIES` has the following syntax form (broken here into
* multiple lines for better readability).
*
- * {
+ * ```
* <optional whitespace>
* <module-name1> ':'
* <property-name1> '=' <property-value1>
@@ -99,15 +99,15 @@
* <module-name2> ':'
* <property-name2> '=' <property-value2>
* ...
- * }
+ * ```
*
* Example:
*
- * {
+ * ```
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
* cff:no-stem-darkening=1 \
* autofitter:warping=1
- * }
+ * ```
*
*/
/* ANDROID: disabled */
@@ -118,35 +118,34 @@
*
* Uncomment the line below if you want to activate LCD rendering
* technology similar to ClearType in this build of the library. This
- * technology triples the resolution in the direction color subpixels.
- * To mitigate color fringes inherent to this technology, you also need
- * to explicitly set up LCD filtering.
+ * technology triples the resolution in the direction color subpixels. To
+ * mitigate color fringes inherent to this technology, you also need to
+ * explicitly set up LCD filtering.
*
- * Note that this feature is covered by several Microsoft patents
- * and should not be activated in any default build of the library.
- * When this macro is not defined, FreeType offers alternative LCD
- * rendering technology that produces excellent output without LCD
- * filtering.
+ * Note that this feature is covered by several Microsoft patents and
+ * should not be activated in any default build of the library. When this
+ * macro is not defined, FreeType offers alternative LCD rendering
+ * technology that produces excellent output without LCD filtering.
*/
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
/**************************************************************************
*
- * Many compilers provide a non-ANSI 64-bit data type that can be used
- * by FreeType to speed up some computations. However, this will create
- * some problems when compiling the library in strict ANSI mode.
+ * Many compilers provide a non-ANSI 64-bit data type that can be used by
+ * FreeType to speed up some computations. However, this will create some
+ * problems when compiling the library in strict ANSI mode.
*
* For this reason, the use of 64-bit integers is normally disabled when
- * the __STDC__ macro is defined. You can however disable this by
- * defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.
+ * the `__STDC__` macro is defined. You can however disable this by
+ * defining the macro `FT_CONFIG_OPTION_FORCE_INT64` here.
*
* For most compilers, this will only create compilation warnings when
* building the library.
*
* ObNote: The compiler-specific 64-bit integers are detected in the
- * file `ftconfig.h' either statically or through the
- * `configure' script on supported platforms.
+ * file `ftconfig.h` either statically or through the `configure`
+ * script on supported platforms.
*/
#undef FT_CONFIG_OPTION_FORCE_INT64
@@ -154,21 +153,21 @@
/**************************************************************************
*
* If this macro is defined, do not try to use an assembler version of
- * performance-critical functions (e.g. FT_MulFix). You should only do
- * that to verify that the assembler function works properly, or to
- * execute benchmark tests of the various implementations.
+ * performance-critical functions (e.g., @FT_MulFix). You should only do
+ * that to verify that the assembler function works properly, or to execute
+ * benchmark tests of the various implementations.
*/
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
/**************************************************************************
*
- * If this macro is defined, try to use an inlined assembler version of
- * the `FT_MulFix' function, which is a `hotspot' when loading and
- * hinting glyphs, and which should be executed as fast as possible.
+ * If this macro is defined, try to use an inlined assembler version of the
+ * @FT_MulFix function, which is a 'hotspot' when loading and hinting
+ * glyphs, and which should be executed as fast as possible.
*
- * Note that if your compiler or CPU is not supported, this will default
- * to the standard and portable implementation found in `ftcalc.c'.
+ * Note that if your compiler or CPU is not supported, this will default to
+ * the standard and portable implementation found in `ftcalc.c`.
*/
#define FT_CONFIG_OPTION_INLINE_MULFIX
@@ -178,12 +177,12 @@
* LZW-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `compress' program. This is mostly used to parse many of the PCF
+ * `compress` program. This is mostly used to parse many of the PCF
* files that come with various X11 distributions. The implementation
- * uses NetBSD's `zopen' to partially uncompress the file on the fly
- * (see src/lzw/ftgzip.c).
+ * uses NetBSD's `zopen` to partially uncompress the file on the fly (see
+ * `src/lzw/ftgzip.c`).
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*/
#define FT_CONFIG_OPTION_USE_LZW
@@ -193,12 +192,12 @@
* Gzip-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `gzip' program. This is mostly used to parse many of the PCF files
- * that come with XFree86. The implementation uses `zlib' to
- * partially uncompress the file on the fly (see src/gzip/ftgzip.c).
+ * `gzip` program. This is mostly used to parse many of the PCF files
+ * that come with XFree86. The implementation uses 'zlib' to partially
+ * uncompress the file on the fly (see `src/gzip/ftgzip.c`).
*
- * Define this macro if you want to enable this `feature'. See also
- * the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.
+ * Define this macro if you want to enable this 'feature'. See also the
+ * macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below.
*/
#define FT_CONFIG_OPTION_USE_ZLIB
@@ -207,23 +206,23 @@
*
* ZLib library selection
*
- * This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.
- * It allows FreeType's `ftgzip' component to link to the system's
+ * This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined.
+ * It allows FreeType's 'ftgzip' component to link to the system's
* installation of the ZLib library. This is useful on systems like
* Unix or VMS where it generally is already available.
*
- * If you let it undefined, the component will use its own copy
- * of the zlib sources instead. These have been modified to be
- * included directly within the component and *not* export external
- * function names. This allows you to link any program with FreeType
- * _and_ ZLib without linking conflicts.
+ * If you let it undefined, the component will use its own copy of the
+ * zlib sources instead. These have been modified to be included
+ * directly within the component and **not** export external function
+ * names. This allows you to link any program with FreeType _and_ ZLib
+ * without linking conflicts.
*
- * Do not #undef this macro here since the build system might define
+ * Do not `#undef` this macro here since the build system might define
* it for certain configurations only.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
@@ -233,28 +232,28 @@
* Bzip2-compressed file support.
*
* FreeType now handles font files that have been compressed with the
- * `bzip2' program. This is mostly used to parse many of the PCF
- * files that come with XFree86. The implementation uses `libbz2' to
- * partially uncompress the file on the fly (see src/bzip2/ftbzip2.c).
- * Contrary to gzip, bzip2 currently is not included and need to use
- * the system available bzip2 implementation.
+ * `bzip2` program. This is mostly used to parse many of the PCF files
+ * that come with XFree86. The implementation uses `libbz2` to partially
+ * uncompress the file on the fly (see `src/bzip2/ftbzip2.c`). Contrary
+ * to gzip, bzip2 currently is not included and need to use the system
+ * available bzip2 implementation.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
/* #define FT_CONFIG_OPTION_USE_BZIP2 */
/**************************************************************************
*
- * Define to disable the use of file stream functions and types, FILE,
- * fopen() etc. Enables the use of smaller system libraries on embedded
- * systems that have multiple system libraries, some with or without
- * file stream support, in the cases where file stream support is not
- * necessary such as memory loading of font files.
+ * Define to disable the use of file stream functions and types, `FILE`,
+ * `fopen`, etc. Enables the use of smaller system libraries on embedded
+ * systems that have multiple system libraries, some with or without file
+ * stream support, in the cases where file stream support is not necessary
+ * such as memory loading of font files.
*/
/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
@@ -265,14 +264,14 @@
*
* FreeType now handles loading color bitmap glyphs in the PNG format.
* This requires help from the external libpng library. Uncompressed
- * color bitmaps do not need any external libraries and will be
- * supported regardless of this configuration.
+ * color bitmaps do not need any external libraries and will be supported
+ * regardless of this configuration.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
/* ANDROID: enabled */
#define FT_CONFIG_OPTION_USE_PNG
@@ -282,15 +281,15 @@
*
* HarfBuzz support.
*
- * FreeType uses the HarfBuzz library to improve auto-hinting of
- * OpenType fonts. If available, many glyphs not directly addressable
- * by a font's character map will be hinted also.
+ * FreeType uses the HarfBuzz library to improve auto-hinting of OpenType
+ * fonts. If available, many glyphs not directly addressable by a font's
+ * character map will be hinted also.
*
- * Define this macro if you want to enable this `feature'.
+ * Define this macro if you want to enable this 'feature'.
*
- * If you use a build system like cmake or the `configure' script,
- * options set by those programs have precendence, overwriting the
- * value here with the configured one.
+ * If you use a build system like cmake or the `configure` script,
+ * options set by those programs have precedence, overwriting the value
+ * here with the configured one.
*/
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
@@ -299,23 +298,23 @@
*
* Glyph Postscript Names handling
*
- * By default, FreeType 2 is compiled with the `psnames' module. This
- * module is in charge of converting a glyph name string into a
- * Unicode value, or return a Macintosh standard glyph name for the
- * use with the TrueType `post' table.
+ * By default, FreeType 2 is compiled with the 'psnames' module. This
+ * module is in charge of converting a glyph name string into a Unicode
+ * value, or return a Macintosh standard glyph name for the use with the
+ * TrueType 'post' table.
*
- * Undefine this macro if you do not want `psnames' compiled in your
+ * Undefine this macro if you do not want 'psnames' compiled in your
* build of FreeType. This has the following effects:
*
- * - The TrueType driver will provide its own set of glyph names,
- * if you build it to support postscript names in the TrueType
- * `post' table, but will not synthesize a missing Unicode charmap.
+ * - The TrueType driver will provide its own set of glyph names, if you
+ * build it to support postscript names in the TrueType 'post' table,
+ * but will not synthesize a missing Unicode charmap.
*
- * - The Type 1 driver will not be able to synthesize a Unicode
- * charmap out of the glyphs found in the fonts.
+ * - The Type~1 driver will not be able to synthesize a Unicode charmap
+ * out of the glyphs found in the fonts.
*
- * You would normally undefine this configuration macro when building
- * a version of FreeType that doesn't contain a Type 1 or CFF driver.
+ * You would normally undefine this configuration macro when building a
+ * version of FreeType that doesn't contain a Type~1 or CFF driver.
*/
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -324,16 +323,15 @@
*
* Postscript Names to Unicode Values support
*
- * By default, FreeType 2 is built with the `PSNames' module compiled
- * in. Among other things, the module is used to convert a glyph name
- * into a Unicode value. This is especially useful in order to
- * synthesize on the fly a Unicode charmap from the CFF/Type 1 driver
- * through a big table named the `Adobe Glyph List' (AGL).
+ * By default, FreeType~2 is built with the 'psnames' module compiled in.
+ * Among other things, the module is used to convert a glyph name into a
+ * Unicode value. This is especially useful in order to synthesize on
+ * the fly a Unicode charmap from the CFF/Type~1 driver through a big
+ * table named the 'Adobe Glyph List' (AGL).
*
- * Undefine this macro if you do not want the Adobe Glyph List
- * compiled in your `PSNames' module. The Type 1 driver will not be
- * able to synthesize a Unicode charmap out of the glyphs found in the
- * fonts.
+ * Undefine this macro if you do not want the Adobe Glyph List compiled
+ * in your 'psnames' module. The Type~1 driver will not be able to
+ * synthesize a Unicode charmap out of the glyphs found in the fonts.
*/
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
@@ -342,11 +340,11 @@
*
* Support for Mac fonts
*
- * Define this macro if you want support for outline fonts in Mac
- * format (mac dfont, mac resource, macbinary containing a mac
- * resource) on non-Mac platforms.
+ * Define this macro if you want support for outline fonts in Mac format
+ * (mac dfont, mac resource, macbinary containing a mac resource) on
+ * non-Mac platforms.
*
- * Note that the `FOND' resource isn't checked.
+ * Note that the 'FOND' resource isn't checked.
*/
#define FT_CONFIG_OPTION_MAC_FONTS
@@ -360,13 +358,12 @@
* Resource forks which include fonts data are stored sometimes in
* locations which users or developers don't expected. In some cases,
* resource forks start with some offset from the head of a file. In
- * other cases, the actual resource fork is stored in file different
- * from what the user specifies. If this option is activated,
- * FreeType tries to guess whether such offsets or different file
- * names must be used.
+ * other cases, the actual resource fork is stored in file different from
+ * what the user specifies. If this option is activated, FreeType tries
+ * to guess whether such offsets or different file names must be used.
*
* Note that normal, direct access of resource forks is controlled via
- * the FT_CONFIG_OPTION_MAC_FONTS option.
+ * the `FT_CONFIG_OPTION_MAC_FONTS` option.
*/
#ifdef FT_CONFIG_OPTION_MAC_FONTS
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
@@ -375,11 +372,11 @@
/**************************************************************************
*
- * Allow the use of FT_Incremental_Interface to load typefaces that
- * contain no glyph data, but supply it via a callback function.
- * This is required by clients supporting document formats which
- * supply font data incrementally as the document is parsed, such
- * as the Ghostscript interpreter for the PostScript language.
+ * Allow the use of `FT_Incremental_Interface` to load typefaces that
+ * contain no glyph data, but supply it via a callback function. This is
+ * required by clients supporting document formats which supply font data
+ * incrementally as the document is parsed, such as the Ghostscript
+ * interpreter for the PostScript language.
*/
/* ANDROID: disabled */
/* #define FT_CONFIG_OPTION_INCREMENTAL */
@@ -387,8 +384,8 @@
/**************************************************************************
*
- * The size in bytes of the render pool used by the scan-line converter
- * to do all of its work.
+ * The size in bytes of the render pool used by the scan-line converter to
+ * do all of its work.
*/
#define FT_RENDER_POOL_SIZE 16384L
@@ -398,7 +395,7 @@
* FT_MAX_MODULES
*
* The maximum number of modules that can be registered in a single
- * FreeType library object. 32 is the default.
+ * FreeType library object. 32~is the default.
*/
#define FT_MAX_MODULES 32
@@ -408,16 +405,15 @@
* Debug level
*
* FreeType can be compiled in debug or trace mode. In debug mode,
- * errors are reported through the `ftdebug' component. In trace
- * mode, additional messages are sent to the standard output during
- * execution.
+ * errors are reported through the 'ftdebug' component. In trace mode,
+ * additional messages are sent to the standard output during execution.
*
- * Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.
- * Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.
+ * Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode.
+ * Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode.
*
- * Don't define any of these macros to compile in `release' mode!
+ * Don't define any of these macros to compile in 'release' mode!
*
- * Do not #undef these macros here since the build system might define
+ * Do not `#undef` these macros here since the build system might define
* them for certain configurations only.
*/
/* #define FT_DEBUG_LEVEL_ERROR */
@@ -428,38 +424,38 @@
*
* Autofitter debugging
*
- * If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to
+ * If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to
* control the autofitter behaviour for debugging purposes with global
- * boolean variables (consequently, you should *never* enable this
- * while compiling in `release' mode):
+ * boolean variables (consequently, you should **never** enable this
+ * while compiling in 'release' mode):
*
- * {
+ * ```
* _af_debug_disable_horz_hints
* _af_debug_disable_vert_hints
* _af_debug_disable_blue_hints
- * }
+ * ```
*
* Additionally, the following functions provide dumps of various
- * internal autofit structures to stdout (using `printf'):
+ * internal autofit structures to stdout (using `printf`):
*
- * {
+ * ```
* af_glyph_hints_dump_points
* af_glyph_hints_dump_segments
* af_glyph_hints_dump_edges
* af_glyph_hints_get_num_segments
* af_glyph_hints_get_segment_offset
- * }
+ * ```
*
* As an argument, they use another global variable:
*
- * {
+ * ```
* _af_debug_hints
- * }
+ * ```
*
- * Please have a look at the `ftgrid' demo program to see how those
+ * Please have a look at the `ftgrid` demo program to see how those
* variables and macros should be used.
*
- * Do not #undef these macros here since the build system might define
+ * Do not `#undef` these macros here since the build system might define
* them for certain configurations only.
*/
/* #define FT_DEBUG_AUTOFIT */
@@ -469,16 +465,16 @@
*
* Memory Debugging
*
- * FreeType now comes with an integrated memory debugger that is
- * capable of detecting simple errors like memory leaks or double
- * deletes. To compile it within your build of the library, you
- * should define FT_DEBUG_MEMORY here.
+ * FreeType now comes with an integrated memory debugger that is capable
+ * of detecting simple errors like memory leaks or double deletes. To
+ * compile it within your build of the library, you should define
+ * `FT_DEBUG_MEMORY` here.
*
- * Note that the memory debugger is only activated at runtime when
- * when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also!
+ * Note that the memory debugger is only activated at runtime when when
+ * the _environment_ variable `FT2_DEBUG_MEMORY` is defined also!
*
- * Do not #undef this macro here since the build system might define
- * it for certain configurations only.
+ * Do not `#undef` this macro here since the build system might define it
+ * for certain configurations only.
*/
/* #define FT_DEBUG_MEMORY */
@@ -487,19 +483,32 @@
*
* Module errors
*
- * If this macro is set (which is _not_ the default), the higher byte
- * of an error code gives the module in which the error has occurred,
- * while the lower byte is the real error code.
+ * If this macro is set (which is _not_ the default), the higher byte of
+ * an error code gives the module in which the error has occurred, while
+ * the lower byte is the real error code.
*
- * Setting this macro makes sense for debugging purposes only, since
- * it would break source compatibility of certain programs that use
- * FreeType 2.
+ * Setting this macro makes sense for debugging purposes only, since it
+ * would break source compatibility of certain programs that use
+ * FreeType~2.
*
- * More details can be found in the files ftmoderr.h and fterrors.h.
+ * More details can be found in the files `ftmoderr.h` and `fterrors.h`.
*/
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
+ /**************************************************************************
+ *
+ * Error Strings
+ *
+ * If this macro is set, `FT_Error_String` will return meaningful
+ * descriptions. This is not enabled by default to reduce the overall
+ * size of FreeType.
+ *
+ * More details can be found in the file `fterrors.h`.
+ */
+/* #define FT_CONFIG_OPTION_ERROR_STRINGS */
+
+
/*************************************************************************/
/*************************************************************************/
/**** ****/
@@ -511,47 +520,47 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support
- * embedded bitmaps in all formats using the SFNT module (namely
- * TrueType & OpenType).
+ * Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support
+ * embedded bitmaps in all formats using the 'sfnt' module (namely
+ * TrueType~& OpenType).
*/
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_COLOR_LAYERS if you want to support coloured
- * outlines (from the COLR/CPAL tables) in all formats using the SFNT
- * module (namely TrueType & OpenType).
+ * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support coloured
+ * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt'
+ * module (namely TrueType~& OpenType).
*/
#define TT_CONFIG_OPTION_COLOR_LAYERS
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to
- * load and enumerate the glyph Postscript names in a TrueType or
- * OpenType file.
+ * Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to
+ * load and enumerate the glyph Postscript names in a TrueType or OpenType
+ * file.
*
- * Note that when you do not compile the `PSNames' module by undefining
- * the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will
+ * Note that when you do not compile the 'psnames' module by undefining the
+ * above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will
* contain additional code used to read the PS Names table from a font.
*
- * (By default, the module uses `PSNames' to extract glyph names.)
+ * (By default, the module uses 'psnames' to extract glyph names.)
*/
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to
- * access the internal name table in a SFNT-based format like TrueType
- * or OpenType. The name table contains various strings used to
- * describe the font, like family name, copyright, version, etc. It
- * does not contain any glyph name though.
+ * Define `TT_CONFIG_OPTION_SFNT_NAMES` if your applications need to access
+ * the internal name table in a SFNT-based format like TrueType or
+ * OpenType. The name table contains various strings used to describe the
+ * font, like family name, copyright, version, etc. It does not contain
+ * any glyph name though.
*
* Accessing SFNT names is done through the functions declared in
- * `ftsnames.h'.
+ * `ftsnames.h`.
*/
#define TT_CONFIG_OPTION_SFNT_NAMES
@@ -584,54 +593,53 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile
- * a bytecode interpreter in the TrueType driver.
+ * Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a
+ * bytecode interpreter in the TrueType driver.
*
* By undefining this, you will only compile the code necessary to load
* TrueType glyphs without hinting.
*
- * Do not #undef this macro here, since the build system might
- * define it for certain configurations only.
+ * Do not `#undef` this macro here, since the build system might define it
+ * for certain configurations only.
*/
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile
+ * Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile
* subpixel hinting support into the TrueType driver. This modifies the
- * TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is
+ * TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is
* requested.
*
* 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.
+ * 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.
*
* There are three possible values.
*
* Value 1:
- * This value 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 value 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.
*
* The corresponding interpreter version is v38.
*
* Value 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.
+ * 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.
*
* The corresponding interpreter version is v40.
*
@@ -639,18 +647,18 @@
* Compile both, making both v38 and v40 available (the latter is the
* default).
*
- * 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 (using
- * `FT_Property_Set').
+ * 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 (using `FT_Property_Set`).
*
- * This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be
+ * This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be
* defined.
*
- * [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+ * [1]
+ * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
*/
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
@@ -662,16 +670,16 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the
+ * Define `TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED` to compile the
* TrueType glyph loader to use Apple's definition of how to handle
* component offsets in composite glyphs.
*
- * Apple and MS disagree on the default behavior of component offsets
- * in composites. Apple says that they should be scaled by the scaling
- * factors in the transformation matrix (roughly, it's more complex)
- * while MS says they should not. OpenType defines two bits in the
- * composite flags array which can be used to disambiguate, but old
- * fonts will not have them.
+ * Apple and MS disagree on the default behavior of component offsets in
+ * composites. Apple says that they should be scaled by the scaling
+ * factors in the transformation matrix (roughly, it's more complex) while
+ * MS says they should not. OpenType defines two bits in the composite
+ * flags array which can be used to disambiguate, but old fonts will not
+ * have them.
*
* https://www.microsoft.com/typography/otspec/glyf.htm
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html
@@ -681,34 +689,34 @@
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include
- * support for Apple's distortable font technology (fvar, gvar, cvar,
- * and avar tables). This has many similarities to Type 1 Multiple
- * Masters support.
+ * Define `TT_CONFIG_OPTION_GX_VAR_SUPPORT` if you want to include support
+ * for Apple's distortable font technology ('fvar', 'gvar', 'cvar', and
+ * 'avar' tables). Tagged 'Font Variations', this is now part of OpenType
+ * also. This has many similarities to Type~1 Multiple Masters support.
*/
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
/**************************************************************************
*
- * Define TT_CONFIG_OPTION_BDF if you want to include support for
- * an embedded `BDF ' table within SFNT-based bitmap formats.
+ * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an
+ * embedded 'BDF~' table within SFNT-based bitmap formats.
*/
#define TT_CONFIG_OPTION_BDF
/**************************************************************************
*
- * Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum
+ * Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum
* number of bytecode instructions executed for a single run of the
- * bytecode interpreter, needed to prevent infinite loops. You don't
- * want to change this except for very special situations (e.g., making
- * a library fuzzer spend less time to handle broken fonts).
+ * bytecode interpreter, needed to prevent infinite loops. You don't want
+ * to change this except for very special situations (e.g., making a
+ * library fuzzer spend less time to handle broken fonts).
*
* It is not expected that this value is ever modified by a configuring
- * script; instead, it gets surrounded with #ifndef ... #endif so that
- * the value can be set as a preprocessor option on the compiler's
- * command line.
+ * script; instead, it gets surrounded with `#ifndef ... #endif` so that
+ * the value can be set as a preprocessor option on the compiler's command
+ * line.
*/
#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L
@@ -726,16 +734,15 @@
/**************************************************************************
*
- * T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and
- * arrays in the Type 1 stream (see t1load.c). A minimum of 4 is
- * required.
+ * `T1_MAX_DICT_DEPTH` is the maximum depth of nest dictionaries and arrays
+ * in the Type~1 stream (see `t1load.c`). A minimum of~4 is required.
*/
#define T1_MAX_DICT_DEPTH 5
/**************************************************************************
*
- * T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine
+ * `T1_MAX_SUBRS_CALLS` details the maximum number of nested sub-routine
* calls during glyph loading.
*/
#define T1_MAX_SUBRS_CALLS 16
@@ -743,19 +750,20 @@
/**************************************************************************
*
- * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A
- * minimum of 16 is required.
+ * `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity. A
+ * minimum of~16 is required.
*
- * The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256.
+ * The Chinese font 'MingTiEG-Medium' (covering the CNS 11643 character
+ * set) needs 256.
*/
#define T1_MAX_CHARSTRINGS_OPERANDS 256
/**************************************************************************
*
- * Define this configuration macro if you want to prevent the
- * compilation of `t1afm', which is in charge of reading Type 1 AFM
- * files into an existing face. Note that if set, the T1 driver will be
+ * Define this configuration macro if you want to prevent the compilation
+ * of the 't1afm' module, which is in charge of reading Type~1 AFM files
+ * into an existing face. Note that if set, the Type~1 driver will be
* unable to produce kerning distances.
*/
#undef T1_CONFIG_OPTION_NO_AFM
@@ -763,19 +771,18 @@
/**************************************************************************
*
- * Define this configuration macro if you want to prevent the
- * compilation of the Multiple Masters font support in the Type 1
- * driver.
+ * Define this configuration macro if you want to prevent the compilation
+ * of the Multiple Masters font support in the Type~1 driver.
*/
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
/**************************************************************************
*
- * T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1
+ * `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1
* engine gets compiled into FreeType. If defined, it is possible to
- * switch between the two engines using the `hinting-engine' property of
- * the type1 driver module.
+ * switch between the two engines using the `hinting-engine` property of
+ * the 'type1' driver module.
*/
/* #define T1_CONFIG_OPTION_OLD_ENGINE */
@@ -791,14 +798,13 @@
/**************************************************************************
*
- * Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is
+ * Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is
* possible to set up the default values of the four control points that
- * define the stem darkening behaviour of the (new) CFF engine. For
- * more details please read the documentation of the
- * `darkening-parameters' property (file `ftdriver.h'), which allows the
- * control at run-time.
+ * define the stem darkening behaviour of the (new) CFF engine. For more
+ * details please read the documentation of the `darkening-parameters`
+ * property (file `ftdriver.h`), which allows the control at run-time.
*
- * Do *not* undefine these macros!
+ * Do **not** undefine these macros!
*/
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400
@@ -815,10 +821,10 @@
/**************************************************************************
*
- * CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF
- * engine gets compiled into FreeType. If defined, it is possible to
- * switch between the two engines using the `hinting-engine' property of
- * the cff driver module.
+ * `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine
+ * gets compiled into FreeType. If defined, it is possible to switch
+ * between the two engines using the `hinting-engine` property of the 'cff'
+ * driver module.
*/
/* #define CFF_CONFIG_OPTION_OLD_ENGINE */
@@ -834,18 +840,18 @@
/**************************************************************************
*
- * There are many PCF fonts just called `Fixed' which look completely
- * different, and which have nothing to do with each other. When
- * selecting `Fixed' in KDE or Gnome one gets results that appear rather
- * random, the style changes often if one changes the size and one
- * cannot select some fonts at all. This option makes the PCF module
- * prepend the foundry name (plus a space) to the family name.
+ * There are many PCF fonts just called 'Fixed' which look completely
+ * different, and which have nothing to do with each other. When selecting
+ * 'Fixed' in KDE or Gnome one gets results that appear rather random, the
+ * style changes often if one changes the size and one cannot select some
+ * fonts at all. This option makes the 'pcf' module prepend the foundry
+ * name (plus a space) to the family name.
*
- * We also check whether we have `wide' characters; all put together, we
- * get family names like `Sony Fixed' or `Misc Fixed Wide'.
+ * We also check whether we have 'wide' characters; all put together, we
+ * get family names like 'Sony Fixed' or 'Misc Fixed Wide'.
*
* If this option is activated, it can be controlled with the
- * `no-long-family-names' property of the pcf driver module.
+ * `no-long-family-names` property of the 'pcf' driver module.
*/
/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
@@ -861,51 +867,56 @@
/**************************************************************************
*
- * Compile autofit module with CJK (Chinese, Japanese, Korean) script
+ * Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script
* support.
*/
#define AF_CONFIG_OPTION_CJK
+
/**************************************************************************
*
- * Compile autofit module with fallback Indic script support, covering
- * some scripts that the `latin' submodule of the autofit module doesn't
+ * Compile 'autofit' module with fallback Indic script support, covering
+ * some scripts that the 'latin' submodule of the 'autofit' module doesn't
* (yet) handle.
*/
#define AF_CONFIG_OPTION_INDIC
- /**************************************************************************
- *
- * Compile autofit module with warp hinting. The idea of the warping
- * code is to slightly scale and shift a glyph within a single dimension
- * so that as much of its segments are aligned (more or less) on the
- * grid. To find out the optimal scaling and shifting value, various
- * parameter combinations are tried and scored.
- *
- * This experimental option is active only if the rendering mode is
- * FT_RENDER_MODE_LIGHT; you can switch warping on and off with the
- * `warping' property of the auto-hinter (see file `ftdriver.h' for more
- * information; by default it is switched off).
- */
-#define AF_CONFIG_OPTION_USE_WARPER
/**************************************************************************
*
- * Use TrueType-like size metrics for `light' auto-hinting.
+ * Compile 'autofit' module with warp hinting. The idea of the warping
+ * code is to slightly scale and shift a glyph within a single dimension so
+ * that as much of its segments are aligned (more or less) on the grid. To
+ * find out the optimal scaling and shifting value, various parameter
+ * combinations are tried and scored.
+ *
+ * You can switch warping on and off with the `warping` property of the
+ * auto-hinter (see file `ftdriver.h` for more information; by default it
+ * is switched off).
+ *
+ * This experimental option is not active if the rendering mode is
+ * `FT_RENDER_MODE_LIGHT`.
+ */
+#define AF_CONFIG_OPTION_USE_WARPER
+
+
+ /**************************************************************************
+ *
+ * Use TrueType-like size metrics for 'light' auto-hinting.
*
* It is strongly recommended to avoid this option, which exists only to
- * help some legacy applications retain its appearance and behaviour
- * with respect to auto-hinted TrueType fonts.
+ * help some legacy applications retain its appearance and behaviour with
+ * respect to auto-hinted TrueType fonts.
*
* The very reason this option exists at all are GNU/Linux distributions
* like Fedora that did not un-patch the following change (which was
* present in FreeType between versions 2.4.6 and 2.7.1, inclusive).
*
- * {
+ * ```
* 2011-07-16 Steven Chu <steven.f.chu@gmail.com>
*
* [truetype] Fix metrics on size request for scalable fonts.
- * }
+ * ```
*
* This problematic commit is now reverted (more or less).
*/
@@ -915,15 +926,15 @@
/*
- * This macro is obsolete. Support has been removed in FreeType
- * version 2.5.
+ * This macro is obsolete. Support has been removed in FreeType version
+ * 2.5.
*/
/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
/*
- * This macro is defined if native TrueType hinting is requested by the
- * definitions above.
+ * The next three macros are defined if native TrueType hinting is
+ * requested by the definitions above. Don't change this.
*/
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
#define TT_USE_BYTECODE_INTERPRETER
@@ -942,7 +953,7 @@
/*
* Check CFF darkening parameters. The checks are the same as in function
- * `cff_property_set' in file `cffdrivr.c'.
+ * `cff_property_set` in file `cffdrivr.c`.
*/
#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
diff --git a/include/freetype/config/ftstdlib.h b/include/freetype/config/ftstdlib.h
index a744d0d..438b614 100644
--- a/include/freetype/config/ftstdlib.h
+++ b/include/freetype/config/ftstdlib.h
@@ -5,7 +5,7 @@
* ANSI-specific library and header configuration file (specification
* only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -19,11 +19,11 @@
/**************************************************************************
*
- * This file is used to group all #includes to the ANSI C library that
+ * This file is used to group all `#includes` to the ANSI~C library that
* FreeType normally requires. It also defines macros to rename the
* standard functions within the FreeType source code.
*
- * Load a file which defines FTSTDLIB_H_ before this one to override it.
+ * Load a file which defines `FTSTDLIB_H_` before this one to override it.
*
*/
@@ -37,21 +37,21 @@
#define ft_ptrdiff_t ptrdiff_t
- /***********************************************************************
+ /**************************************************************************
*
* integer limits
*
- * UINT_MAX and ULONG_MAX are used to automatically compute the size
- * of `int' and `long' in bytes at compile-time. So far, this works
- * for all platforms the library has been tested on.
+ * `UINT_MAX` and `ULONG_MAX` are used to automatically compute the size of
+ * `int` and `long` in bytes at compile-time. So far, this works for all
+ * platforms the library has been tested on.
*
- * Note that on the extremely rare platforms that do not provide
- * integer types that are _exactly_ 16 and 32 bits wide (e.g. some
- * old Crays where `int' is 36 bits), we do not make any guarantee
- * about the correct behaviour of FT2 with all fonts.
+ * Note that on the extremely rare platforms that do not provide integer
+ * types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where
+ * `int` is 36~bits), we do not make any guarantee about the correct
+ * behaviour of FreeType~2 with all fonts.
*
- * In these case, `ftconfig.h' will refuse to compile anyway with a
- * message like `couldn't find 32-bit type' or something similar.
+ * In these cases, `ftconfig.h` will refuse to compile anyway with a
+ * message like 'couldn't find 32-bit type' or something similar.
*
*/
@@ -68,7 +68,7 @@
#define FT_ULONG_MAX ULONG_MAX
- /***********************************************************************
+ /**************************************************************************
*
* character and string processing
*
@@ -92,7 +92,7 @@
#define ft_strstr strstr
- /***********************************************************************
+ /**************************************************************************
*
* file handling
*
@@ -110,7 +110,7 @@
#define ft_sprintf sprintf
- /***********************************************************************
+ /**************************************************************************
*
* sorting
*
@@ -122,7 +122,7 @@
#define ft_qsort qsort
- /***********************************************************************
+ /**************************************************************************
*
* memory allocation
*
@@ -135,7 +135,7 @@
#define ft_srealloc realloc
- /***********************************************************************
+ /**************************************************************************
*
* miscellaneous
*
@@ -146,7 +146,7 @@
#define ft_getenv getenv
- /***********************************************************************
+ /**************************************************************************
*
* execution control
*
@@ -155,16 +155,16 @@
#include <setjmp.h>
-#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
- /* jmp_buf is defined as a macro */
- /* on certain platforms */
+#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
+ /* `jmp_buf` is defined as a macro */
+ /* on certain platforms */
#define ft_longjmp longjmp
#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
- /* the following is only used for debugging purposes, i.e., if */
- /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */
+ /* The following is only used for debugging purposes, i.e., if */
+ /* `FT_DEBUG_LEVEL_ERROR` or `FT_DEBUG_LEVEL_TRACE` are defined. */
#include <stdarg.h>
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 620df4c..a6bb667 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -4,7 +4,7 @@
*
* FreeType high-level API and common types (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -51,21 +51,20 @@
* How client applications should include FreeType header files.
*
* @description:
- * To be as flexible as possible (and for historical reasons),
- * FreeType uses a very special inclusion scheme to load header
- * files, for example
+ * To be as flexible as possible (and for historical reasons), FreeType
+ * uses a very special inclusion scheme to load header files, for example
*
- * {
+ * ```
* #include <ft2build.h>
*
* #include FT_FREETYPE_H
* #include FT_OUTLINE_H
- * }
+ * ```
*
- * 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 @header_file_macros, loaded by
- * `ft2build.h'. The API documentation always gives the header macro
+ * 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 @header_file_macros, loaded by
+ * `ft2build.h`. The API documentation always gives the header macro
* name needed for a particular function.
*
*/
@@ -83,10 +82,10 @@
* How client applications should allocate FreeType data structures.
*
* @description:
- * FreeType assumes that structures allocated by the user and passed
- * as arguments are zeroed out except for the actual data. In other
- * words, it is recommended to use `calloc' (or variants of it)
- * instead of `malloc' for allocation.
+ * FreeType assumes that structures allocated by the user and passed as
+ * arguments are zeroed out except for the actual data. In other words,
+ * it is recommended to use `calloc` (or variants of it) instead of
+ * `malloc` for allocation.
*
*/
@@ -269,10 +268,10 @@
* FT_Glyph_Metrics
*
* @description:
- * A structure to model the metrics of a single glyph. The values
- * are expressed in 26.6 fractional pixel format; if the flag
- * @FT_LOAD_NO_SCALE has been used while loading the glyph, values
- * are expressed in font units instead.
+ * A structure to model the metrics of a single glyph. The values are
+ * expressed in 26.6 fractional pixel format; if the flag
+ * @FT_LOAD_NO_SCALE has been used while loading the glyph, values are
+ * expressed in font units instead.
*
* @fields:
* width ::
@@ -294,25 +293,25 @@
* Left side bearing for vertical layout.
*
* vertBearingY ::
- * Top side bearing for vertical layout. Larger positive values
- * mean further below the vertical glyph origin.
+ * Top side bearing for vertical layout. Larger positive values mean
+ * further below the vertical glyph origin.
*
* vertAdvance ::
- * Advance height for vertical layout. Positive values mean the
- * glyph has a positive advance downward.
+ * Advance height for vertical layout. Positive values mean the glyph
+ * has a positive advance downward.
*
* @note:
* If not disabled with @FT_LOAD_NO_HINTING, the values represent
* dimensions of the hinted glyph (in case hinting is applicable).
*
* Stroking a glyph with an outside border does not increase
- * `horiAdvance' or `vertAdvance'; you have to manually adjust these
+ * `horiAdvance` or `vertAdvance`; you have to manually adjust these
* values to account for the added width and height.
*
- * FreeType doesn't use the `VORG' table data for CFF fonts because
- * it doesn't have an interface to quickly retrieve the glyph height.
- * The y~coordinate of the vertical origin can be simply computed as
- * `vertBearingY + height' after loading a glyph.
+ * FreeType doesn't use the 'VORG' table data for CFF fonts because it
+ * doesn't have an interface to quickly retrieve the glyph height. The
+ * y~coordinate of the vertical origin can be simply computed as
+ * `vertBearingY + height` after loading a glyph.
*/
typedef struct FT_Glyph_Metrics_
{
@@ -336,42 +335,38 @@
* FT_Bitmap_Size
*
* @description:
- * This structure models the metrics of a bitmap strike (i.e., a set
- * of glyphs for a given point size and resolution) in a bitmap font.
- * It is used for the `available_sizes' field of @FT_Face.
+ * This structure models the metrics of a bitmap strike (i.e., a set of
+ * glyphs for a given point size and resolution) in a bitmap font. It is
+ * used for the `available_sizes` field of @FT_Face.
*
* @fields:
* height ::
- * The vertical distance, in pixels, between two
- * consecutive baselines. It is always positive.
+ * The vertical distance, in pixels, between two consecutive baselines.
+ * It is always positive.
*
* width ::
- * The average width, in pixels, of all glyphs in the
- * strike.
+ * The average width, in pixels, of all glyphs in the strike.
*
* size ::
- * The nominal size of the strike in 26.6 fractional
- * points. This field is not very useful.
+ * The nominal size of the strike in 26.6 fractional points. This
+ * field is not very useful.
*
* x_ppem ::
- * The horizontal ppem (nominal width) in 26.6 fractional
- * pixels.
+ * The horizontal ppem (nominal width) in 26.6 fractional pixels.
*
* y_ppem ::
- * The vertical ppem (nominal height) in 26.6 fractional
- * pixels.
+ * The vertical ppem (nominal height) in 26.6 fractional pixels.
*
* @note:
* Windows FNT:
- * The nominal size given in a FNT font is not reliable. If the
- * driver finds it incorrect, it sets `size' to some calculated
- * values, and `x_ppem' and `y_ppem' to the pixel width and height
- * given in the font, respectively.
+ * The nominal size given in a FNT font is not reliable. If the driver
+ * finds it incorrect, it sets `size` to some calculated values, and
+ * `x_ppem` and `y_ppem` to the pixel width and height given in the
+ * font, respectively.
*
* TrueType embedded bitmaps:
- * `size', `width', and `height' values are not contained in the
- * bitmap strike itself. They are computed from the global font
- * parameters.
+ * `size`, `width`, and `height` values are not contained in the bitmap
+ * strike itself. They are computed from the global font parameters.
*/
typedef struct FT_Bitmap_Size_
{
@@ -400,24 +395,22 @@
* FT_Library
*
* @description:
- * A handle to a FreeType library instance. Each `library' is
- * completely independent from the others; it is the `root' of a set
- * of objects like fonts, faces, sizes, etc.
+ * A handle to a FreeType library instance. Each 'library' is completely
+ * independent from the others; it is the 'root' of a set of objects like
+ * fonts, faces, sizes, etc.
*
* It also embeds a memory manager (see @FT_Memory), as well as a
* scan-line converter object (see @FT_Raster).
*
- * In multi-threaded applications it is easiest to use one
- * `FT_Library' object per thread. In case this is too cumbersome,
- * a single `FT_Library' object across threads is possible also
- * (since FreeType version 2.5.6), as long as a mutex lock is used
- * around @FT_New_Face and @FT_Done_Face.
+ * [Since 2.5.6] In multi-threaded applications it is easiest to use one
+ * `FT_Library` object per thread. In case this is too cumbersome, a
+ * single `FT_Library` object across threads is possible also, as long as
+ * a mutex lock is used around @FT_New_Face and @FT_Done_Face.
*
* @note:
* Library objects are normally created by @FT_Init_FreeType, and
* destroyed with @FT_Done_FreeType. If you need reference-counting
- * (cf. @FT_Reference_Library), use @FT_New_Library and
- * @FT_Done_Library.
+ * (cf. @FT_Reference_Library), use @FT_New_Library and @FT_Done_Library.
*/
typedef struct FT_LibraryRec_ *FT_Library;
@@ -435,9 +428,9 @@
* FT_Module
*
* @description:
- * A handle to a given FreeType module object. A module can be a
- * font driver, a renderer, or anything else that provides services
- * to the former.
+ * A handle to a given FreeType module object. A module can be a font
+ * driver, a renderer, or anything else that provides services to the
+ * former.
*/
typedef struct FT_ModuleRec_* FT_Module;
@@ -448,8 +441,8 @@
* FT_Driver
*
* @description:
- * A handle to a given FreeType font driver object. A font driver
- * is a module capable of creating faces from font files.
+ * A handle to a given FreeType font driver object. A font driver is a
+ * module capable of creating faces from font files.
*/
typedef struct FT_DriverRec_* FT_Driver;
@@ -461,9 +454,8 @@
*
* @description:
* A handle to a given FreeType renderer. A renderer is a module in
- * charge of converting a glyph's outline image to a bitmap. It
- * supports a single glyph image format, and one or more target
- * surface depths.
+ * charge of converting a glyph's outline image to a bitmap. It supports
+ * a single glyph image format, and one or more target surface depths.
*/
typedef struct FT_RendererRec_* FT_Renderer;
@@ -481,25 +473,24 @@
* FT_Face
*
* @description:
- * A handle to a typographic face object. A face object models a
- * given typeface, in a given style.
+ * A handle to a typographic face object. A face object models a given
+ * typeface, in a given style.
*
* @note:
- * A face object also owns a single @FT_GlyphSlot object, as well
- * as one or more @FT_Size objects.
+ * A face object also owns a single @FT_GlyphSlot object, as well as one
+ * or more @FT_Size objects.
*
- * Use @FT_New_Face or @FT_Open_Face to create a new face object from
- * a given filepath or a custom input stream.
+ * Use @FT_New_Face or @FT_Open_Face to create a new face object from a
+ * given filepath or a custom input stream.
*
* Use @FT_Done_Face to destroy it (along with its slot and sizes).
*
- * An `FT_Face' object can only be safely used from one thread at a
- * time. Similarly, creation and destruction of `FT_Face' with the
- * same @FT_Library object can only be done from one thread at a
- * time. On the other hand, functions like @FT_Load_Glyph and its
- * siblings are thread-safe and do not need the lock to be held as
- * long as the same `FT_Face' object is not used from multiple
- * threads at the same time.
+ * An `FT_Face` object can only be safely used from one thread at a time.
+ * Similarly, creation and destruction of `FT_Face` with the same
+ * @FT_Library object can only be done from one thread at a time. On the
+ * other hand, functions like @FT_Load_Glyph and its siblings are
+ * thread-safe and do not need the lock to be held as long as the same
+ * `FT_Face` object is not used from multiple threads at the same time.
*
* @also:
* See @FT_FaceRec for the publicly accessible fields of a given face
@@ -514,23 +505,22 @@
* FT_Size
*
* @description:
- * A handle to an object that models a face scaled to a given
- * character size.
+ * A handle to an object that models a face scaled to a given character
+ * size.
*
* @note:
- * An @FT_Face has one _active_ @FT_Size object that is used by
- * functions like @FT_Load_Glyph to determine the scaling
- * transformation that in turn is used to load and hint glyphs and
- * metrics.
+ * An @FT_Face has one _active_ @FT_Size object that is used by functions
+ * like @FT_Load_Glyph to determine the scaling transformation that in
+ * turn is used to load and hint glyphs and metrics.
*
- * You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes,
- * @FT_Request_Size or even @FT_Select_Size to change the content
- * (i.e., the scaling values) of the active @FT_Size.
+ * You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, @FT_Request_Size
+ * or even @FT_Select_Size to change the content (i.e., the scaling
+ * values) of the active @FT_Size.
*
- * You can use @FT_New_Size to create additional size objects for a
- * given @FT_Face, but they won't be used by other functions until
- * you activate it through @FT_Activate_Size. Only one size can be
- * activated at any given time per face.
+ * You can use @FT_New_Size to create additional size objects for a given
+ * @FT_Face, but they won't be used by other functions until you activate
+ * it through @FT_Activate_Size. Only one size can be activated at any
+ * given time per face.
*
* @also:
* See @FT_SizeRec for the publicly accessible fields of a given size
@@ -545,13 +535,12 @@
* FT_GlyphSlot
*
* @description:
- * A handle to a given `glyph slot'. A slot is a container that can
- * hold any of the glyphs contained in its parent face.
+ * A handle to a given 'glyph slot'. A slot is a container that can hold
+ * any of the glyphs contained in its parent face.
*
- * In other words, each time you call @FT_Load_Glyph or
- * @FT_Load_Char, the slot's content is erased by the new glyph data,
- * i.e., the glyph's metrics, its image (bitmap or outline), and
- * other control information.
+ * In other words, each time you call @FT_Load_Glyph or @FT_Load_Char,
+ * the slot's content is erased by the new glyph data, i.e., the glyph's
+ * metrics, its image (bitmap or outline), and other control information.
*
* @also:
* See @FT_GlyphSlotRec for the publicly accessible glyph fields.
@@ -565,26 +554,26 @@
* FT_CharMap
*
* @description:
- * A handle to a character map (usually abbreviated to `charmap'). A
- * charmap is used to translate character codes in a given encoding
- * into glyph indexes for its parent's face. Some font formats may
- * provide several charmaps per font.
+ * A handle to a character map (usually abbreviated to 'charmap'). A
+ * charmap is used to translate character codes in a given encoding into
+ * glyph indexes for its parent's face. Some font formats may provide
+ * several charmaps per font.
*
- * Each face object owns zero or more charmaps, but only one of them
- * can be `active', providing the data used by @FT_Get_Char_Index or
+ * Each face object owns zero or more charmaps, but only one of them can
+ * be 'active', providing the data used by @FT_Get_Char_Index or
* @FT_Load_Char.
*
* The list of available charmaps in a face is available through the
- * `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec.
+ * `face->num_charmaps` and `face->charmaps` fields of @FT_FaceRec.
*
- * The currently active charmap is available as `face->charmap'.
- * You should call @FT_Set_Charmap to change it.
+ * The currently active charmap is available as `face->charmap`. You
+ * should call @FT_Set_Charmap to change it.
*
* @note:
* When a new face is created (either through @FT_New_Face or
- * @FT_Open_Face), the library looks for a Unicode charmap within
- * the list and automatically activates it. If there is no Unicode
- * charmap, FreeType doesn't set an `active' charmap.
+ * @FT_Open_Face), the library looks for a Unicode charmap within the
+ * list and automatically activates it. If there is no Unicode charmap,
+ * FreeType doesn't set an 'active' charmap.
*
* @also:
* See @FT_CharMapRec for the publicly accessible fields of a given
@@ -600,16 +589,15 @@
*
* @description:
* This macro converts four-letter tags into an unsigned long. It is
- * used to define `encoding' identifiers (see @FT_Encoding).
+ * used to define 'encoding' identifiers (see @FT_Encoding).
*
* @note:
- * Since many 16-bit compilers don't like 32-bit enumerations, you
- * should redefine this macro in case of problems to something like
- * this:
+ * Since many 16-bit compilers don't like 32-bit enumerations, you should
+ * redefine this macro in case of problems to something like this:
*
- * {
+ * ```
* #define FT_ENC_TAG( value, a, b, c, d ) value
- * }
+ * ```
*
* to get a simple enumeration without assigning special numbers.
*/
@@ -630,8 +618,8 @@
* FT_Encoding
*
* @description:
- * An enumeration to specify character sets supported by charmaps.
- * Used in the @FT_Select_Charmap API function.
+ * An enumeration to specify character sets supported by charmaps. Used
+ * in the @FT_Select_Charmap API function.
*
* @note:
* Despite the name, this enumeration lists specific character
@@ -646,43 +634,42 @@
* and Windows FNT; see below for more information.
*
* FT_ENCODING_UNICODE ::
- * The Unicode character set. This value covers all versions of
- * the Unicode repertoire, including ASCII and Latin-1. Most fonts
- * include a Unicode charmap, but not all of them.
+ * The Unicode character set. This value covers all versions of the
+ * Unicode repertoire, including ASCII and Latin-1. Most fonts include
+ * a Unicode charmap, but not all of them.
*
- * For example, if you want to access Unicode value U+1F028 (and
- * the font contains it), use value 0x1F028 as the input value for
+ * For example, if you want to access Unicode value U+1F028 (and the
+ * font contains it), use value 0x1F028 as the input value for
* @FT_Get_Char_Index.
*
* FT_ENCODING_MS_SYMBOL ::
- * Microsoft Symbol encoding, used to encode mathematical symbols
- * and wingdings. For more information, see
- * `https://www.microsoft.com/typography/otspec/recom.htm',
- * `http://www.kostis.net/charsets/symbol.htm', and
- * `http://www.kostis.net/charsets/wingding.htm'.
+ * Microsoft Symbol encoding, used to encode mathematical symbols and
+ * wingdings. For more information, see
+ * 'https://www.microsoft.com/typography/otspec/recom.htm#non-standard-symbol-fonts',
+ * 'http://www.kostis.net/charsets/symbol.htm', and
+ * 'http://www.kostis.net/charsets/wingding.htm'.
*
* This encoding uses character codes from the PUA (Private Unicode
* Area) in the range U+F020-U+F0FF.
*
* FT_ENCODING_SJIS ::
* Shift JIS encoding for Japanese. More info at
- * `https://en.wikipedia.org/wiki/Shift_JIS'. See note on
- * multi-byte encodings below.
+ * 'https://en.wikipedia.org/wiki/Shift_JIS'. See note on multi-byte
+ * encodings below.
*
* FT_ENCODING_PRC ::
* Corresponds to encoding systems mainly for Simplified Chinese as
- * used in People's Republic of China (PRC). The encoding layout
- * is based on GB~2312 and its supersets GBK and GB~18030.
+ * used in People's Republic of China (PRC). The encoding layout is
+ * based on GB~2312 and its supersets GBK and GB~18030.
*
* FT_ENCODING_BIG5 ::
- * Corresponds to an encoding system for Traditional Chinese as
- * used in Taiwan and Hong Kong.
+ * Corresponds to an encoding system for Traditional Chinese as used in
+ * Taiwan and Hong Kong.
*
* FT_ENCODING_WANSUNG ::
- * Corresponds to the Korean encoding system known as Extended
- * Wansung (MS Windows code page 949).
- * For more information see
- * `https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.txt'.
+ * Corresponds to the Korean encoding system known as Extended Wansung
+ * (MS Windows code page 949). For more information see
+ * 'https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.txt'.
*
* FT_ENCODING_JOHAB ::
* The Korean standard character set (KS~C 5601-1992), which
@@ -690,12 +677,12 @@
* includes all possible Hangul character combinations.
*
* FT_ENCODING_ADOBE_LATIN_1 ::
- * Corresponds to a Latin-1 encoding as defined in a Type~1
- * PostScript font. It is limited to 256 character codes.
+ * Corresponds to a Latin-1 encoding as defined in a Type~1 PostScript
+ * font. It is limited to 256 character codes.
*
* FT_ENCODING_ADOBE_STANDARD ::
- * Adobe Standard encoding, as found in Type~1, CFF, and
- * OpenType/CFF fonts. It is limited to 256 character codes.
+ * Adobe Standard encoding, as found in Type~1, CFF, and OpenType/CFF
+ * fonts. It is limited to 256 character codes.
*
* FT_ENCODING_ADOBE_EXPERT ::
* Adobe Expert encoding, as found in Type~1, CFF, and OpenType/CFF
@@ -706,9 +693,9 @@
* OpenType/CFF fonts. It is limited to 256 character codes.
*
* FT_ENCODING_APPLE_ROMAN ::
- * Apple roman encoding. Many TrueType and OpenType fonts contain
- * a charmap for this 8-bit encoding, since older versions of Mac
- * OS are able to use it.
+ * Apple roman encoding. Many TrueType and OpenType fonts contain a
+ * charmap for this 8-bit encoding, since older versions of Mac OS are
+ * able to use it.
*
* FT_ENCODING_OLD_LATIN_2 ::
* This value is deprecated and was neither used nor reported by
@@ -731,43 +718,40 @@
*
* @note:
* By default, FreeType enables a Unicode charmap and tags it with
- * FT_ENCODING_UNICODE when it is either provided or can be generated
- * from PostScript glyph name dictionaries in the font file.
- * All other encodings are considered legacy and tagged only if
- * explicitly defined in the font file. Otherwise, FT_ENCODING_NONE
- * is used.
+ * `FT_ENCODING_UNICODE` when it is either provided or can be generated
+ * from PostScript glyph name dictionaries in the font file. All other
+ * encodings are considered legacy and tagged only if explicitly defined
+ * in the font file. Otherwise, `FT_ENCODING_NONE` is used.
*
- * FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap
- * is neither Unicode nor ISO-8859-1 (otherwise it is set to
- * FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out
- * which encoding is really present. If, for example, the
- * `cs_registry' field is `KOI8' and the `cs_encoding' field is `R',
- * the font is encoded in KOI8-R.
+ * `FT_ENCODING_NONE` is set by the BDF and PCF drivers if the charmap is
+ * neither Unicode nor ISO-8859-1 (otherwise it is set to
+ * `FT_ENCODING_UNICODE`). Use @FT_Get_BDF_Charset_ID to find out which
+ * encoding is really present. If, for example, the `cs_registry` field
+ * is 'KOI8' and the `cs_encoding` field is 'R', the font is encoded in
+ * KOI8-R.
*
- * FT_ENCODING_NONE is always set (with a single exception) by the
- * winfonts driver. Use @FT_Get_WinFNT_Header and examine the
- * `charset' field of the @FT_WinFNT_HeaderRec structure to find out
- * which encoding is really present. For example,
- * @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for
- * Russian).
+ * `FT_ENCODING_NONE` is always set (with a single exception) by the
+ * winfonts driver. Use @FT_Get_WinFNT_Header and examine the `charset`
+ * field of the @FT_WinFNT_HeaderRec structure to find out which encoding
+ * is really present. For example, @FT_WinFNT_ID_CP1251 (204) means
+ * Windows code page 1251 (for Russian).
*
- * FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH
- * and `encoding_id' is not `TT_MAC_ID_ROMAN' (otherwise it is set to
- * FT_ENCODING_APPLE_ROMAN).
+ * `FT_ENCODING_NONE` is set if `platform_id` is @TT_PLATFORM_MACINTOSH
+ * and `encoding_id` is not `TT_MAC_ID_ROMAN` (otherwise it is set to
+ * `FT_ENCODING_APPLE_ROMAN`).
*
- * If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function
- * @FT_Get_CMap_Language_ID to query the Mac language ID that may
- * be needed to be able to distinguish Apple encoding variants. See
+ * If `platform_id` is @TT_PLATFORM_MACINTOSH, use the function
+ * @FT_Get_CMap_Language_ID to query the Mac language ID that may be
+ * needed to be able to distinguish Apple encoding variants. See
*
* https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
*
- * to get an idea how to do that. Basically, if the language ID
- * is~0, don't use it, otherwise subtract 1 from the language ID.
- * Then examine `encoding_id'. If, for example, `encoding_id' is
- * `TT_MAC_ID_ROMAN' and the language ID (minus~1) is
- * `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman.
- * `TT_MAC_ID_ARABIC' with `TT_MAC_LANGID_FARSI' means the Farsi
- * variant the Arabic encoding.
+ * to get an idea how to do that. Basically, if the language ID is~0,
+ * don't use it, otherwise subtract 1 from the language ID. Then examine
+ * `encoding_id`. If, for example, `encoding_id` is `TT_MAC_ID_ROMAN`
+ * and the language ID (minus~1) is `TT_MAC_LANGID_GREEK`, it is the
+ * Greek encoding, not Roman. `TT_MAC_ID_ARABIC` with
+ * `TT_MAC_LANGID_FARSI` means the Farsi variant the Arabic encoding.
*/
typedef enum FT_Encoding_
{
@@ -802,7 +786,7 @@
} FT_Encoding;
- /* these constants are deprecated; use the corresponding `FT_Encoding' */
+ /* these constants are deprecated; use the corresponding `FT_Encoding` */
/* values instead */
#define ft_encoding_none FT_ENCODING_NONE
#define ft_encoding_unicode FT_ENCODING_UNICODE
@@ -834,14 +818,13 @@
* A handle to the parent face object.
*
* encoding ::
- * An @FT_Encoding tag identifying the charmap. Use
- * this with @FT_Select_Charmap.
+ * An @FT_Encoding tag identifying the charmap. Use this with
+ * @FT_Select_Charmap.
*
* platform_id ::
- * An ID number describing the platform for the
- * following encoding ID. This comes directly from
- * the TrueType specification and gets emulated for
- * other formats.
+ * An ID number describing the platform for the following encoding ID.
+ * This comes directly from the TrueType specification and gets
+ * emulated for other formats.
*
* encoding_id ::
* A platform-specific encoding number. This also comes from the
@@ -872,11 +855,11 @@
* FT_Face_Internal
*
* @description:
- * An opaque handle to an `FT_Face_InternalRec' structure that models
- * the private data of a given @FT_Face object.
+ * An opaque handle to an `FT_Face_InternalRec` structure that models the
+ * private data of a given @FT_Face object.
*
- * This structure might change between releases of FreeType~2 and is
- * not generally available to client applications.
+ * This structure might change between releases of FreeType~2 and is not
+ * generally available to client applications.
*/
typedef struct FT_Face_InternalRec_* FT_Face_Internal;
@@ -887,107 +870,89 @@
* FT_FaceRec
*
* @description:
- * FreeType root face class structure. A face object models a
- * typeface in a font file.
+ * FreeType root face class structure. A face object models a typeface
+ * in a font file.
*
* @fields:
* num_faces ::
- * The number of faces in the font file. Some
- * font formats can have multiple faces in
- * a single font file.
+ * The number of faces in the font file. Some font formats can have
+ * multiple faces in a single font file.
*
* face_index ::
- * This field holds two different values.
- * Bits 0-15 are the index of the face in the
- * font file (starting with value~0). They
- * are set to~0 if there is only one face in
- * the font file.
+ * This field holds two different values. Bits 0-15 are the index of
+ * the face in the font file (starting with value~0). They are set
+ * to~0 if there is only one face in the font file.
*
- * [Since 2.6.1] Bits 16-30 are relevant to GX
- * and OpenType variation fonts only, holding
- * the named instance index for the current
- * face index (starting with value~1; value~0
- * indicates font access without a named
- * instance). For non-variation fonts, bits
- * 16-30 are ignored. If we have the third
- * named instance of face~4, say, `face_index'
- * is set to 0x00030004.
+ * [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation
+ * fonts only, holding the named instance index for the current face
+ * index (starting with value~1; value~0 indicates font access without
+ * a named instance). For non-variation fonts, bits 16-30 are ignored.
+ * If we have the third named instance of face~4, say, `face_index` is
+ * set to 0x00030004.
*
- * Bit 31 is always zero (this is,
- * `face_index' is always a positive value).
+ * Bit 31 is always zero (this is, `face_index` is always a positive
+ * value).
*
- * [Since 2.9] Changing the design coordinates
- * with @FT_Set_Var_Design_Coordinates or
- * @FT_Set_Var_Blend_Coordinates does not
- * influence the named instance index value
- * (only @FT_Set_Named_Instance does that).
+ * [Since 2.9] Changing the design coordinates with
+ * @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does
+ * not influence the named instance index value (only
+ * @FT_Set_Named_Instance does that).
*
* face_flags ::
- * A set of bit flags that give important
- * information about the face; see
- * @FT_FACE_FLAG_XXX for the details.
+ * A set of bit flags that give important information about the face;
+ * see @FT_FACE_FLAG_XXX for the details.
*
* style_flags ::
- * The lower 16~bits contain a set of bit
- * flags indicating the style of the face; see
- * @FT_STYLE_FLAG_XXX for the details.
+ * The lower 16~bits contain a set of bit flags indicating the style of
+ * the face; see @FT_STYLE_FLAG_XXX for the details.
*
- * [Since 2.6.1] Bits 16-30 hold the number
- * of named instances available for the
- * current face if we have a GX or OpenType
- * variation (sub)font. Bit 31 is always zero
- * (this is, `style_flags' is always a
- * positive value). Note that a variation
- * font has always at least one named
- * instance, namely the default instance.
+ * [Since 2.6.1] Bits 16-30 hold the number of named instances
+ * available for the current face if we have a GX or OpenType variation
+ * (sub)font. Bit 31 is always zero (this is, `style_flags` is always
+ * a positive value). Note that a variation font has always at least
+ * one named instance, namely the default instance.
*
* num_glyphs ::
- * The number of glyphs in the face. If the
- * face is scalable and has sbits (see
- * `num_fixed_sizes'), it is set to the number
- * of outline glyphs.
+ * The number of glyphs in the face. If the face is scalable and has
+ * sbits (see `num_fixed_sizes`), it is set to the number of outline
+ * glyphs.
*
- * For CID-keyed fonts (not in an SFNT
- * wrapper) this value gives the highest CID
- * used in the font.
+ * For CID-keyed fonts (not in an SFNT wrapper) this value gives the
+ * highest CID used in the font.
*
* family_name ::
* The face's family name. This is an ASCII string, usually in
- * English, that describes the typeface's family (like `Times New
- * Roman', `Bodoni', `Garamond', etc). This is a least common
+ * English, that describes the typeface's family (like 'Times New
+ * Roman', 'Bodoni', 'Garamond', etc). This is a least common
* denominator used to list fonts. Some formats (TrueType & OpenType)
- * provide localized and Unicode versions of this string.
- * Applications should use the format-specific interface to access
- * them. Can be NULL (e.g., in fonts embedded in a PDF file).
+ * provide localized and Unicode versions of this string. Applications
+ * should use the format-specific interface to access them. Can be
+ * `NULL` (e.g., in fonts embedded in a PDF file).
*
- * In case the font doesn't provide a specific
- * family name entry, FreeType tries to
- * synthesize one, deriving it from other name
+ * In case the font doesn't provide a specific family name entry,
+ * FreeType tries to synthesize one, deriving it from other name
* entries.
*
* style_name ::
- * The face's style name. This is an ASCII string, usually in
- * English, that describes the typeface's style (like `Italic',
- * `Bold', `Condensed', etc). Not all font formats provide a style
- * name, so this field is optional, and can be set to NULL. As for
- * `family_name', some formats provide localized and Unicode versions
+ * The face's style name. This is an ASCII string, usually in English,
+ * that describes the typeface's style (like 'Italic', 'Bold',
+ * 'Condensed', etc). Not all font formats provide a style name, so
+ * this field is optional, and can be set to `NULL`. As for
+ * `family_name`, some formats provide localized and Unicode versions
* of this string. Applications should use the format-specific
* interface to access them.
*
* num_fixed_sizes ::
- * The number of bitmap strikes in the face.
- * Even if the face is scalable, there might
- * still be bitmap strikes, which are called
- * `sbits' in that case.
+ * The number of bitmap strikes in the face. Even if the face is
+ * scalable, there might still be bitmap strikes, which are called
+ * 'sbits' in that case.
*
* available_sizes ::
- * An array of @FT_Bitmap_Size for all bitmap
- * strikes in the face. It is set to NULL if
- * there is no bitmap strike.
+ * An array of @FT_Bitmap_Size for all bitmap strikes in the face. It
+ * is set to `NULL` if there is no bitmap strike.
*
- * Note that FreeType tries to sanitize the
- * strike data since they are sometimes sloppy
- * or incorrect, but this can easily fail.
+ * Note that FreeType tries to sanitize the strike data since they are
+ * sometimes sloppy or incorrect, but this can easily fail.
*
* num_charmaps ::
* The number of charmaps in the face.
@@ -996,80 +961,62 @@
* An array of the charmaps of the face.
*
* generic ::
- * A field reserved for client uses. See the
- * @FT_Generic type description.
+ * A field reserved for client uses. See the @FT_Generic type
+ * description.
*
* bbox ::
- * The font bounding box. Coordinates are
- * expressed in font units (see
- * `units_per_EM'). The box is large enough
- * to contain any glyph from the font. Thus,
- * `bbox.yMax' can be seen as the `maximum
- * ascender', and `bbox.yMin' as the `minimum
- * descender'. Only relevant for scalable
- * formats.
+ * The font bounding box. Coordinates are expressed in font units (see
+ * `units_per_EM`). The box is large enough to contain any glyph from
+ * the font. Thus, `bbox.yMax` can be seen as the 'maximum ascender',
+ * and `bbox.yMin` as the 'minimum descender'. Only relevant for
+ * scalable formats.
*
- * Note that the bounding box might be off by
- * (at least) one pixel for hinted fonts. See
- * @FT_Size_Metrics for further discussion.
+ * Note that the bounding box might be off by (at least) one pixel for
+ * hinted fonts. See @FT_Size_Metrics for further discussion.
*
* units_per_EM ::
- * The number of font units per EM square for
- * this face. This is typically 2048 for
- * TrueType fonts, and 1000 for Type~1 fonts.
- * Only relevant for scalable formats.
+ * The number of font units per EM square for this face. This is
+ * typically 2048 for TrueType fonts, and 1000 for Type~1 fonts. Only
+ * relevant for scalable formats.
*
* ascender ::
- * The typographic ascender of the face,
- * expressed in font units. For font formats
- * not having this information, it is set to
- * `bbox.yMax'. Only relevant for scalable
- * formats.
+ * The typographic ascender of the face, expressed in font units. For
+ * font formats not having this information, it is set to `bbox.yMax`.
+ * Only relevant for scalable formats.
*
* descender ::
- * The typographic descender of the face,
- * expressed in font units. For font formats
- * not having this information, it is set to
- * `bbox.yMin'. Note that this field is
- * negative for values below the baseline.
+ * The typographic descender of the face, expressed in font units. For
+ * font formats not having this information, it is set to `bbox.yMin`.
+ * Note that this field is negative for values below the baseline.
* Only relevant for scalable formats.
*
* height ::
- * This value is the vertical distance
- * between two consecutive baselines,
- * expressed in font units. It is always
- * positive. Only relevant for scalable
- * formats.
- *
- * If you want the global glyph height, use
- * `ascender - descender'.
- *
- * max_advance_width ::
- * The maximum advance width, in font units,
- * for all glyphs in this face. This can be
- * used to make word wrapping computations
- * faster. Only relevant for scalable
- * formats.
- *
- * max_advance_height ::
- * The maximum advance height, in font units,
- * for all glyphs in this face. This is only
- * relevant for vertical layouts, and is set
- * to `height' for fonts that do not provide
- * vertical metrics. Only relevant for
- * scalable formats.
- *
- * underline_position ::
- * The position, in font units, of the
- * underline line for this face. It is the
- * center of the underlining stem. Only
+ * This value is the vertical distance between two consecutive
+ * baselines, expressed in font units. It is always positive. Only
* relevant for scalable formats.
*
- * underline_thickness ::
- * The thickness, in font units, of the
- * underline for this face. Only relevant for
+ * If you want the global glyph height, use `ascender - descender`.
+ *
+ * max_advance_width ::
+ * The maximum advance width, in font units, for all glyphs in this
+ * face. This can be used to make word wrapping computations faster.
+ * Only relevant for scalable formats.
+ *
+ * max_advance_height ::
+ * The maximum advance height, in font units, for all glyphs in this
+ * face. This is only relevant for vertical layouts, and is set to
+ * `height` for fonts that do not provide vertical metrics. Only
+ * relevant for scalable formats.
+ *
+ * underline_position ::
+ * The position, in font units, of the underline line for this face.
+ * It is the center of the underlining stem. Only relevant for
* scalable formats.
*
+ * underline_thickness ::
+ * The thickness, in font units, of the underline for this face. Only
+ * relevant for scalable formats.
+ *
* glyph ::
* The face's associated glyph slot(s).
*
@@ -1083,11 +1030,10 @@
* Fields may be changed after a call to @FT_Attach_File or
* @FT_Attach_Stream.
*
- * For an OpenType variation font, the values of the following fields
- * can change after a call to @FT_Set_Var_Design_Coordinates (and
- * friends) if the font contains an `MVAR' table: `ascender',
- * `descender', `height', `underline_position', and
- * `underline_thickness'.
+ * For an OpenType variation font, the values of the following fields can
+ * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+ * the font contains an 'MVAR' table: `ascender`, `descender`, `height`,
+ * `underline_position`, and `underline_thickness`.
*
* Especially for TrueType fonts see also the documentation for
* @FT_Size_Metrics.
@@ -1113,7 +1059,7 @@
FT_Generic generic;
- /*# The following member variables (down to `underline_thickness') */
+ /*# The following member variables (down to `underline_thickness`) */
/*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */
/*# for bitmap fonts. */
FT_BBox bbox;
@@ -1157,9 +1103,9 @@
* FT_FACE_FLAG_XXX
*
* @description:
- * A list of bit flags used in the `face_flags' field of the
- * @FT_FaceRec structure. They inform client applications of
- * properties of the corresponding face.
+ * A list of bit flags used in the `face_flags` field of the @FT_FaceRec
+ * structure. They inform client applications of properties of the
+ * corresponding face.
*
* @values:
* FT_FACE_FLAG_SCALABLE ::
@@ -1168,99 +1114,98 @@
* @FT_FACE_FLAG_FIXED_SIZES set.
*
* FT_FACE_FLAG_FIXED_SIZES ::
- * The face contains bitmap strikes. See also the
- * `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec.
+ * The face contains bitmap strikes. See also the `num_fixed_sizes`
+ * and `available_sizes` fields of @FT_FaceRec.
*
* FT_FACE_FLAG_FIXED_WIDTH ::
* The face contains fixed-width characters (like Courier, Lucida,
* MonoType, etc.).
*
* FT_FACE_FLAG_SFNT ::
- * The face uses the SFNT storage scheme. For now, this means
- * TrueType and OpenType.
+ * The face uses the SFNT storage scheme. For now, this means TrueType
+ * and OpenType.
*
* FT_FACE_FLAG_HORIZONTAL ::
- * The face contains horizontal glyph metrics. This should be set
- * for all common formats.
+ * The face contains horizontal glyph metrics. This should be set for
+ * all common formats.
*
* FT_FACE_FLAG_VERTICAL ::
- * The face contains vertical glyph metrics. This is only
- * available in some formats, not all of them.
+ * The face contains vertical glyph metrics. This is only available in
+ * some formats, not all of them.
*
* FT_FACE_FLAG_KERNING ::
- * The face contains kerning information. If set, the kerning
- * distance can be retrieved using the function @FT_Get_Kerning.
- * Otherwise the function always return the vector (0,0). Note
- * that FreeType doesn't handle kerning data from the SFNT `GPOS'
- * table (as present in many OpenType fonts).
+ * The face contains kerning information. If set, the kerning distance
+ * can be retrieved using the function @FT_Get_Kerning. Otherwise the
+ * function always return the vector (0,0). Note that FreeType doesn't
+ * handle kerning data from the SFNT 'GPOS' table (as present in many
+ * OpenType fonts).
*
* FT_FACE_FLAG_FAST_GLYPHS ::
* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT.
*
* FT_FACE_FLAG_MULTIPLE_MASTERS ::
- * The face contains multiple masters and is capable of
- * interpolating between them. Supported formats are Adobe MM,
- * TrueType GX, and OpenType variation fonts.
+ * The face contains multiple masters and is capable of interpolating
+ * between them. Supported formats are Adobe MM, TrueType GX, and
+ * OpenType variation fonts.
*
* See section @multiple_masters for API details.
*
* FT_FACE_FLAG_GLYPH_NAMES ::
* The face contains glyph names, which can be retrieved using
- * @FT_Get_Glyph_Name. Note that some TrueType fonts contain
- * broken glyph name tables. Use the function
- * @FT_Has_PS_Glyph_Names when needed.
+ * @FT_Get_Glyph_Name. Note that some TrueType fonts contain broken
+ * glyph name tables. Use the function @FT_Has_PS_Glyph_Names when
+ * needed.
*
* FT_FACE_FLAG_EXTERNAL_STREAM ::
* Used internally by FreeType to indicate that a face's stream was
- * provided by the client application and should not be destroyed
- * when @FT_Done_Face is called. Don't read or test this flag.
+ * provided by the client application and should not be destroyed when
+ * @FT_Done_Face is called. Don't read or test this flag.
*
* FT_FACE_FLAG_HINTER ::
- * The font driver has a hinting machine of its own. For example,
- * with TrueType fonts, it makes sense to use data from the SFNT
- * `gasp' table only if the native TrueType hinting engine (with
- * the bytecode interpreter) is available and active.
+ * The font driver has a hinting machine of its own. For example, with
+ * TrueType fonts, it makes sense to use data from the SFNT 'gasp'
+ * table only if the native TrueType hinting engine (with the bytecode
+ * interpreter) is available and active.
*
* FT_FACE_FLAG_CID_KEYED ::
- * The face is CID-keyed. In that case, the face is not accessed
- * by glyph indices but by CID values. For subsetted CID-keyed
- * fonts this has the consequence that not all index values are a
- * valid argument to @FT_Load_Glyph. Only the CID values for which
- * corresponding glyphs in the subsetted font exist make
- * `FT_Load_Glyph' return successfully; in all other cases you get
- * an `FT_Err_Invalid_Argument' error.
+ * The face is CID-keyed. In that case, the face is not accessed by
+ * glyph indices but by CID values. For subsetted CID-keyed fonts this
+ * has the consequence that not all index values are a valid argument
+ * to @FT_Load_Glyph. Only the CID values for which corresponding
+ * glyphs in the subsetted font exist make `FT_Load_Glyph` return
+ * successfully; in all other cases you get an
+ * `FT_Err_Invalid_Argument` error.
*
- * Note that CID-keyed fonts that are in an SFNT wrapper (this is,
- * all OpenType/CFF fonts) don't have this flag set since the
- * glyphs are accessed in the normal way (using contiguous
- * indices); the `CID-ness' isn't visible to the application.
+ * Note that CID-keyed fonts that are in an SFNT wrapper (this is, all
+ * OpenType/CFF fonts) don't have this flag set since the glyphs are
+ * accessed in the normal way (using contiguous indices); the
+ * 'CID-ness' isn't visible to the application.
*
* FT_FACE_FLAG_TRICKY ::
- * The face is `tricky', this is, it always needs the font format's
- * native hinting engine to get a reasonable result. A typical
- * example is the old Chinese font `mingli.ttf' (but not
- * `mingliu.ttc') that uses TrueType bytecode instructions to move
- * and scale all of its subglyphs.
+ * The face is 'tricky', this is, it always needs the font format's
+ * native hinting engine to get a reasonable result. A typical example
+ * is the old Chinese font `mingli.ttf` (but not `mingliu.ttc`) that
+ * uses TrueType bytecode instructions to move and scale all of its
+ * subglyphs.
*
* It is not possible to auto-hint such fonts using
- * @FT_LOAD_FORCE_AUTOHINT; it will also ignore
- * @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING
- * and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you
- * probably never want this except for demonstration purposes.
+ * @FT_LOAD_FORCE_AUTOHINT; it will also ignore @FT_LOAD_NO_HINTING.
+ * You have to set both @FT_LOAD_NO_HINTING and @FT_LOAD_NO_AUTOHINT to
+ * really disable hinting; however, you probably never want this except
+ * for demonstration purposes.
*
* Currently, there are about a dozen TrueType fonts in the list of
- * tricky fonts; they are hard-coded in file `ttobjs.c'.
+ * tricky fonts; they are hard-coded in file `ttobjs.c`.
*
* FT_FACE_FLAG_COLOR ::
- * [Since 2.5.1] The face has color glyph tables. See
- * @FT_LOAD_COLOR for more information.
+ * [Since 2.5.1] The face has color glyph tables. See @FT_LOAD_COLOR
+ * for more information.
*
* FT_FACE_FLAG_VARIATION ::
* [Since 2.9] Set if the current face (or named instance) has been
* altered with @FT_Set_MM_Design_Coordinates,
- * @FT_Set_Var_Design_Coordinates, or
- * @FT_Set_Var_Blend_Coordinates. This flag is unset by a call to
- * @FT_Set_Named_Instance.
+ * @FT_Set_Var_Design_Coordinates, or @FT_Set_Var_Blend_Coordinates.
+ * This flag is unset by a call to @FT_Set_Named_Instance.
*/
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
@@ -1280,14 +1225,14 @@
#define FT_FACE_FLAG_VARIATION ( 1L << 15 )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_HORIZONTAL
*
* @description:
- * A macro that returns true whenever a face object contains
- * horizontal metrics (this is true for all font formats though).
+ * A macro that returns true whenever a face object contains horizontal
+ * metrics (this is true for all font formats though).
*
* @also:
* @FT_HAS_VERTICAL can be used to check for vertical metrics.
@@ -1297,7 +1242,7 @@
( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_VERTICAL
@@ -1311,45 +1256,45 @@
( (face)->face_flags & FT_FACE_FLAG_VERTICAL )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_KERNING
*
* @description:
- * A macro that returns true whenever a face object contains kerning
- * data that can be accessed with @FT_Get_Kerning.
+ * A macro that returns true whenever a face object contains kerning data
+ * that can be accessed with @FT_Get_Kerning.
*
*/
#define FT_HAS_KERNING( face ) \
( (face)->face_flags & FT_FACE_FLAG_KERNING )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_SCALABLE
*
* @description:
* 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).
+ * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, and
+ * PFR font formats).
*
*/
#define FT_IS_SCALABLE( face ) \
( (face)->face_flags & FT_FACE_FLAG_SCALABLE )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_SFNT
*
* @description:
- * 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.
+ * A macro that returns true whenever a face object contains a font whose
+ * format is based on the SFNT storage scheme. This usually means:
+ * TrueType fonts, OpenType fonts, as well as SFNT-based embedded bitmap
+ * fonts.
*
* If this macro is true, all functions defined in @FT_SFNT_NAMES_H and
* @FT_TRUETYPE_TABLES_H are available.
@@ -1359,14 +1304,14 @@
( (face)->face_flags & FT_FACE_FLAG_SFNT )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_FIXED_WIDTH
*
* @description:
* A macro that returns true whenever a face object contains a font face
- * that contains fixed-width (or `monospace', `fixed-pitch', etc.)
+ * that contains fixed-width (or 'monospace', 'fixed-pitch', etc.)
* glyphs.
*
*/
@@ -1374,22 +1319,22 @@
( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_FIXED_SIZES
*
* @description:
* A macro that returns true whenever a face object contains some
- * embedded bitmaps. See the `available_sizes' field of the
- * @FT_FaceRec structure.
+ * embedded bitmaps. See the `available_sizes` field of the @FT_FaceRec
+ * structure.
*
*/
#define FT_HAS_FIXED_SIZES( face ) \
( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_FAST_GLYPHS
@@ -1401,7 +1346,7 @@
#define FT_HAS_FAST_GLYPHS( face ) 0
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_GLYPH_NAMES
@@ -1415,7 +1360,7 @@
( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_MULTIPLE_MASTERS
@@ -1430,7 +1375,7 @@
( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_NAMED_INSTANCE
@@ -1452,14 +1397,14 @@
( (face)->face_index & 0x7FFF0000L )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_VARIATION
*
* @description:
- * A macro that returns true whenever a face object has been altered
- * by @FT_Set_MM_Design_Coordinates, @FT_Set_Var_Design_Coordinates, or
+ * A macro that returns true whenever a face object has been altered by
+ * @FT_Set_MM_Design_Coordinates, @FT_Set_Var_Design_Coordinates, or
* @FT_Set_Var_Blend_Coordinates.
*
* @since:
@@ -1470,15 +1415,14 @@
( (face)->face_flags & FT_FACE_FLAG_VARIATION )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_CID_KEYED
*
* @description:
* A macro that returns true whenever a face object contains a CID-keyed
- * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more
- * details.
+ * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more details.
*
* If this macro is true, all functions defined in @FT_CID_H are
* available.
@@ -1488,13 +1432,13 @@
( (face)->face_flags & FT_FACE_FLAG_CID_KEYED )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_IS_TRICKY
*
* @description:
- * A macro that returns true whenever a face represents a `tricky' font.
+ * A macro that returns true whenever a face represents a 'tricky' font.
* See the discussion of @FT_FACE_FLAG_TRICKY for more details.
*
*/
@@ -1502,14 +1446,14 @@
( (face)->face_flags & FT_FACE_FLAG_TRICKY )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_HAS_COLOR
*
* @description:
- * A macro that returns true whenever a face object contains
- * tables for color glyphs.
+ * A macro that returns true whenever a face object contains tables for
+ * color glyphs.
*
* @since:
* 2.5.1
@@ -1525,8 +1469,8 @@
* FT_STYLE_FLAG_XXX
*
* @description:
- * A list of bit flags to indicate the style of a given face. These
- * are used in the `style_flags' field of @FT_FaceRec.
+ * A list of bit flags to indicate the style of a given face. These are
+ * used in the `style_flags` field of @FT_FaceRec.
*
* @values:
* FT_STYLE_FLAG_ITALIC ::
@@ -1537,9 +1481,9 @@
*
* @note:
* The style information as provided by FreeType is very basic. More
- * details are beyond the scope and should be done on a higher level
- * (for example, by analyzing various fields of the `OS/2' table in
- * SFNT based fonts).
+ * details are beyond the scope and should be done on a higher level (for
+ * example, by analyzing various fields of the 'OS/2' table in SFNT based
+ * fonts).
*/
#define FT_STYLE_FLAG_ITALIC ( 1 << 0 )
#define FT_STYLE_FLAG_BOLD ( 1 << 1 )
@@ -1551,8 +1495,8 @@
* FT_Size_Internal
*
* @description:
- * An opaque handle to an `FT_Size_InternalRec' structure, used to
- * model private data of a given @FT_Size object.
+ * An opaque handle to an `FT_Size_InternalRec` structure, used to model
+ * private data of a given @FT_Size object.
*/
typedef struct FT_Size_InternalRec_* FT_Size_Internal;
@@ -1567,89 +1511,80 @@
*
* @fields:
* x_ppem ::
- * The width of the scaled EM square in pixels, hence
- * the term `ppem' (pixels per EM). It is also
- * referred to as `nominal width'.
+ * The width of the scaled EM square in pixels, hence the term 'ppem'
+ * (pixels per EM). It is also referred to as 'nominal width'.
*
* y_ppem ::
- * The height of the scaled EM square in pixels,
- * hence the term `ppem' (pixels per EM). It is also
- * referred to as `nominal height'.
+ * The height of the scaled EM square in pixels, hence the term 'ppem'
+ * (pixels per EM). It is also referred to as 'nominal height'.
*
* x_scale ::
- * A 16.16 fractional scaling value to convert
- * horizontal metrics from font units to 26.6
- * fractional pixels. Only relevant for scalable
+ * A 16.16 fractional scaling value to convert horizontal metrics from
+ * font units to 26.6 fractional pixels. Only relevant for scalable
* font formats.
*
* y_scale ::
- * A 16.16 fractional scaling value to convert
- * vertical metrics from font units to 26.6
- * fractional pixels. Only relevant for scalable
+ * A 16.16 fractional scaling value to convert vertical metrics from
+ * font units to 26.6 fractional pixels. Only relevant for scalable
* font formats.
*
* ascender ::
- * The ascender in 26.6 fractional pixels, rounded up
- * to an integer value. See @FT_FaceRec for the
- * details.
+ * The ascender in 26.6 fractional pixels, rounded up to an integer
+ * value. See @FT_FaceRec for the details.
*
* descender ::
- * The descender in 26.6 fractional pixels, rounded
- * down to an integer value. See @FT_FaceRec for the
- * details.
+ * The descender in 26.6 fractional pixels, rounded down to an integer
+ * value. See @FT_FaceRec for the details.
*
* height ::
- * The height in 26.6 fractional pixels, rounded to
- * an integer value. See @FT_FaceRec for the
- * details.
+ * The height in 26.6 fractional pixels, rounded to an integer value.
+ * See @FT_FaceRec for the details.
*
* max_advance ::
- * The maximum advance width in 26.6 fractional
- * pixels, rounded to an integer value. See
- * @FT_FaceRec for the details.
+ * The maximum advance width in 26.6 fractional pixels, rounded to an
+ * integer value. See @FT_FaceRec for the details.
*
* @note:
- * The scaling values, if relevant, are determined first during a
- * size changing operation. The remaining fields are then set by the
- * driver. For scalable formats, they are usually set to scaled
- * values of the corresponding fields in @FT_FaceRec. Some values
- * like ascender or descender are rounded for historical reasons;
- * more precise values (for outline fonts) can be derived by scaling
- * the corresponding @FT_FaceRec values manually, with code similar
- * to the following.
+ * The scaling values, if relevant, are determined first during a size
+ * changing operation. The remaining fields are then set by the driver.
+ * For scalable formats, they are usually set to scaled values of the
+ * corresponding fields in @FT_FaceRec. Some values like ascender or
+ * descender are rounded for historical reasons; more precise values (for
+ * outline fonts) can be derived by scaling the corresponding @FT_FaceRec
+ * values manually, with code similar to the following.
*
- * {
+ * ```
* scaled_ascender = FT_MulFix( face->ascender,
* size_metrics->y_scale );
- * }
+ * ```
*
- * Note that due to glyph hinting and the selected rendering mode
- * these values are usually not exact; consequently, they must be
- * treated as unreliable with an error margin of at least one pixel!
+ * Note that due to glyph hinting and the selected rendering mode these
+ * values are usually not exact; consequently, they must be treated as
+ * unreliable with an error margin of at least one pixel!
*
* Indeed, the only way to get the exact metrics is to render _all_
* glyphs. As this would be a definite performance hit, it is up to
* client applications to perform such computations.
*
- * The `FT_Size_Metrics' structure is valid for bitmap fonts also.
+ * The `FT_Size_Metrics` structure is valid for bitmap fonts also.
*
*
- * *TrueType* *fonts* *with* *native* *bytecode* *hinting*
+ * **TrueType fonts with native bytecode hinting**
*
- * All applications that handle TrueType fonts with native hinting
- * must be aware that TTFs expect different rounding of vertical font
- * dimensions. The application has to cater for this, especially if
- * it wants to rely on a TTF's vertical data (for example, to
- * properly align box characters vertically).
+ * All applications that handle TrueType fonts with native hinting must
+ * be aware that TTFs expect different rounding of vertical font
+ * dimensions. The application has to cater for this, especially if it
+ * wants to rely on a TTF's vertical data (for example, to properly align
+ * box characters vertically).
*
- * Only the application knows _in_ _advance_ that it is going to use
- * native hinting for TTFs! FreeType, on the other hand, selects the
- * hinting mode not at the time of creating an @FT_Size object but
- * much later, namely while calling @FT_Load_Glyph.
+ * Only the application knows _in advance_ that it is going to use native
+ * hinting for TTFs! FreeType, on the other hand, selects the hinting
+ * mode not at the time of creating an @FT_Size object but much later,
+ * namely while calling @FT_Load_Glyph.
*
* Here is some pseudo code that illustrates a possible solution.
*
- * {
+ * ```
* font_format = FT_Get_Font_Format( face );
*
* if ( !strcmp( font_format, "TrueType" ) &&
@@ -1668,7 +1603,7 @@
*
* height = size_metrics->height;
* max_advance = size_metrics->max_advance;
- * }
+ * ```
*/
typedef struct FT_Size_Metrics_
{
@@ -1700,10 +1635,9 @@
* Handle to the parent face object.
*
* generic ::
- * A typeless pointer, unused by the FreeType library or
- * any of its drivers. It can be used by client
- * applications to link their own data to each size
- * object.
+ * A typeless pointer, unused by the FreeType library or any of its
+ * drivers. It can be used by client applications to link their own
+ * data to each size object.
*
* metrics ::
* Metrics for this size object. This field is read-only.
@@ -1728,8 +1662,8 @@
* subglyphs (for example, in the case of composites).
*
* @note:
- * The subglyph implementation is not part of the high-level API,
- * hence the forward structure declaration.
+ * The subglyph implementation is not part of the high-level API, hence
+ * the forward structure declaration.
*
* You can however retrieve subglyph information with
* @FT_Get_SubGlyph_Info.
@@ -1743,8 +1677,8 @@
* FT_Slot_Internal
*
* @description:
- * An opaque handle to an `FT_Slot_InternalRec' structure, used to
- * model private data of a given @FT_GlyphSlot object.
+ * An opaque handle to an `FT_Slot_InternalRec` structure, used to model
+ * private data of a given @FT_GlyphSlot object.
*/
typedef struct FT_Slot_InternalRec_* FT_Slot_Internal;
@@ -1755,164 +1689,145 @@
* FT_GlyphSlotRec
*
* @description:
- * FreeType root glyph slot class structure. A glyph slot is a
- * container where individual glyphs can be loaded, be they in
- * outline or bitmap format.
+ * FreeType root glyph slot class structure. A glyph slot is a container
+ * where individual glyphs can be loaded, be they in outline or bitmap
+ * format.
*
* @fields:
* library ::
- * A handle to the FreeType library instance
- * this slot belongs to.
+ * A handle to the FreeType library instance this slot belongs to.
*
* face ::
* A handle to the parent face object.
*
* next ::
- * In some cases (like some font tools), several
- * glyph slots per face object can be a good
- * thing. As this is rare, the glyph slots are
- * listed through a direct, single-linked list
- * using its `next' field.
+ * In some cases (like some font tools), several glyph slots per face
+ * object can be a good thing. As this is rare, the glyph slots are
+ * listed through a direct, single-linked list using its `next` field.
*
* glyph_index ::
- * The glyph index passed as an argument to @FT_Load_Glyph while
- * initializeing the glyph slot (since FreeType version 2.10).
+ * [Since 2.10] The glyph index passed as an argument to @FT_Load_Glyph
+ * while initializing the glyph slot.
*
* generic ::
- * A typeless pointer unused by the FreeType
- * library or any of its drivers. It can be
- * used by client applications to link their own
+ * A typeless pointer unused by the FreeType library or any of its
+ * drivers. It can be used by client applications to link their own
* data to each glyph slot object.
*
* metrics ::
- * The metrics of the last loaded glyph in the
- * slot. The returned values depend on the last
- * load flags (see the @FT_Load_Glyph API
- * function) and can be expressed either in 26.6
- * fractional pixels or font units.
+ * The metrics of the last loaded glyph in the slot. The returned
+ * values depend on the last load flags (see the @FT_Load_Glyph API
+ * function) and can be expressed either in 26.6 fractional pixels or
+ * font units.
*
- * Note that even when the glyph image is
- * transformed, the metrics are not.
+ * Note that even when the glyph image is transformed, the metrics are
+ * not.
*
* linearHoriAdvance ::
- * The advance width of the unhinted glyph.
- * Its value is expressed in 16.16 fractional
- * pixels, unless @FT_LOAD_LINEAR_DESIGN is set
- * when loading the glyph. This field can be
- * important to perform correct WYSIWYG layout.
- * Only relevant for outline glyphs.
+ * The advance width of the unhinted glyph. Its value is expressed in
+ * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when
+ * loading the glyph. This field can be important to perform correct
+ * WYSIWYG layout. Only relevant for outline glyphs.
*
* linearVertAdvance ::
- * The advance height of the unhinted glyph.
- * Its value is expressed in 16.16 fractional
- * pixels, unless @FT_LOAD_LINEAR_DESIGN is set
- * when loading the glyph. This field can be
- * important to perform correct WYSIWYG layout.
- * Only relevant for outline glyphs.
+ * The advance height of the unhinted glyph. Its value is expressed in
+ * 16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when
+ * loading the glyph. This field can be important to perform correct
+ * WYSIWYG layout. Only relevant for outline glyphs.
*
* advance ::
- * This shorthand is, depending on
- * @FT_LOAD_IGNORE_TRANSFORM, the transformed
- * (hinted) advance width for the glyph, in 26.6
- * fractional pixel format. As specified with
- * @FT_LOAD_VERTICAL_LAYOUT, it uses either the
- * `horiAdvance' or the `vertAdvance' value of
- * `metrics' field.
+ * This shorthand is, depending on @FT_LOAD_IGNORE_TRANSFORM, the
+ * transformed (hinted) advance width for the glyph, in 26.6 fractional
+ * pixel format. As specified with @FT_LOAD_VERTICAL_LAYOUT, it uses
+ * either the `horiAdvance` or the `vertAdvance` value of `metrics`
+ * field.
*
* format ::
- * This field indicates the format of the image
- * contained in the glyph slot. Typically
- * @FT_GLYPH_FORMAT_BITMAP,
- * @FT_GLYPH_FORMAT_OUTLINE, or
- * @FT_GLYPH_FORMAT_COMPOSITE, but other values
- * are possible.
+ * This field indicates the format of the image contained in the glyph
+ * slot. Typically @FT_GLYPH_FORMAT_BITMAP, @FT_GLYPH_FORMAT_OUTLINE,
+ * or @FT_GLYPH_FORMAT_COMPOSITE, but other values are possible.
*
* bitmap ::
- * This field is used as a bitmap descriptor.
- * Note that the address and content of the
- * bitmap buffer can change between calls of
+ * This field is used as a bitmap descriptor. Note that the address
+ * and content of the bitmap buffer can change between calls of
* @FT_Load_Glyph and a few other functions.
*
* bitmap_left ::
- * The bitmap's left bearing expressed in
- * integer pixels.
+ * The bitmap's left bearing expressed in integer pixels.
*
* bitmap_top ::
- * The bitmap's top bearing expressed in integer
- * pixels. This is the distance from the
- * baseline to the top-most glyph scanline,
- * upwards y~coordinates being *positive*.
+ * The bitmap's top bearing expressed in integer pixels. This is the
+ * distance from the baseline to the top-most glyph scanline, upwards
+ * y~coordinates being **positive**.
*
* outline ::
- * The outline descriptor for the current glyph
- * image if its format is
- * @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is
- * loaded, `outline' can be transformed,
- * distorted, emboldened, etc. However, it must
- * not be freed.
+ * The outline descriptor for the current glyph image if its format is
+ * @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is loaded, `outline` can be
+ * transformed, distorted, emboldened, etc. However, it must not be
+ * freed.
+ *
+ * [Since 2.10.1] If @FT_LOAD_NO_SCALE is set, outline coordinates of
+ * OpenType variation fonts for a selected instance are internally
+ * handled as 26.6 fractional font units but returned as (rounded)
+ * integers, as expected. To get unrounded font units, don't use
+ * @FT_LOAD_NO_SCALE but load the glyph with @FT_LOAD_NO_HINTING and
+ * scale it, using the font's `units_per_EM` value as the ppem.
*
* num_subglyphs ::
- * The number of subglyphs in a composite glyph.
- * This field is only valid for the composite
- * glyph format that should normally only be
+ * The number of subglyphs in a composite glyph. This field is only
+ * valid for the composite glyph format that should normally only be
* loaded with the @FT_LOAD_NO_RECURSE flag.
*
* subglyphs ::
- * An array of subglyph descriptors for
- * composite glyphs. There are `num_subglyphs'
- * elements in there. Currently internal to
- * FreeType.
+ * An array of subglyph descriptors for composite glyphs. There are
+ * `num_subglyphs` elements in there. Currently internal to FreeType.
*
* control_data ::
- * Certain font drivers can also return the
- * control data for a given glyph image (e.g.
- * TrueType bytecode, Type~1 charstrings, etc.).
- * This field is a pointer to such data; it is
- * currently internal to FreeType.
+ * Certain font drivers can also return the control data for a given
+ * glyph image (e.g. TrueType bytecode, Type~1 charstrings, etc.).
+ * This field is a pointer to such data; it is currently internal to
+ * FreeType.
*
* control_len ::
- * This is the length in bytes of the control
- * data. Currently internal to FreeType.
+ * This is the length in bytes of the control data. Currently internal
+ * to FreeType.
*
* other ::
* Reserved.
*
* lsb_delta ::
- * The difference between hinted and unhinted
- * left side bearing while auto-hinting is
- * active. Zero otherwise.
+ * The difference between hinted and unhinted left side bearing while
+ * auto-hinting is active. Zero otherwise.
*
* rsb_delta ::
- * The difference between hinted and unhinted
- * right side bearing while auto-hinting is
- * active. Zero otherwise.
+ * The difference between hinted and unhinted right side bearing while
+ * auto-hinting is active. Zero otherwise.
*
* @note:
- * If @FT_Load_Glyph is called with default flags (see
- * @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in
- * its native format (e.g., an outline glyph for TrueType and Type~1
- * formats). [Since 2.9] The prospective bitmap metrics are
- * calculated according to @FT_LOAD_TARGET_XXX and other flags even
- * for the outline glyph, even if @FT_LOAD_RENDER is not set.
+ * If @FT_Load_Glyph is called with default flags (see @FT_LOAD_DEFAULT)
+ * the glyph image is loaded in the glyph slot in its native format
+ * (e.g., an outline glyph for TrueType and Type~1 formats). [Since 2.9]
+ * The prospective bitmap metrics are calculated according to
+ * @FT_LOAD_TARGET_XXX and other flags even for the outline glyph, even
+ * if @FT_LOAD_RENDER is not set.
*
* This image can later be converted into a bitmap by calling
- * @FT_Render_Glyph. This function searches the current renderer for
- * the native image's format, then invokes it.
+ * @FT_Render_Glyph. This function searches the current renderer for the
+ * native image's format, then invokes it.
*
- * The renderer is in charge of transforming the native image through
- * the slot's face transformation fields, then converting it into a
- * bitmap that is returned in `slot->bitmap'.
+ * The renderer is in charge of transforming the native image through the
+ * slot's face transformation fields, then converting it into a bitmap
+ * that is returned in `slot->bitmap`.
*
- * Note that `slot->bitmap_left' and `slot->bitmap_top' are also used
- * to specify the position of the bitmap relative to the current pen
+ * Note that `slot->bitmap_left` and `slot->bitmap_top` are also used to
+ * specify the position of the bitmap relative to the current pen
* position (e.g., coordinates (0,0) on the baseline). Of course,
- * `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP.
+ * `slot->format` is also changed to @FT_GLYPH_FORMAT_BITMAP.
*
- * Here is a small pseudo code fragment that shows how to use
- * `lsb_delta' and `rsb_delta' to do fractional positioning of
- * glyphs:
+ * Here is a small pseudo code fragment that shows how to use `lsb_delta`
+ * and `rsb_delta` to do fractional positioning of glyphs:
*
- * {
+ * ```
* FT_GlyphSlot slot = face->glyph;
* FT_Pos origin_x = 0;
*
@@ -1928,15 +1843,14 @@
* and add it to `origin_x'>
*
* origin_x += slot->advance.x;
- * origin_x += slot->rsb_delta - slot->lsb_delta;
+ * origin_x += slot->lsb_delta - slot->rsb_delta;
* endfor
- * }
+ * ```
*
* Here is another small pseudo code fragment that shows how to use
- * `lsb_delta' and `rsb_delta' to improve integer positioning of
- * glyphs:
+ * `lsb_delta` and `rsb_delta` to improve integer positioning of glyphs:
*
- * {
+ * ```
* FT_GlyphSlot slot = face->glyph;
* FT_Pos origin_x = 0;
* FT_Pos prev_rsb_delta = 0;
@@ -1959,13 +1873,13 @@
*
* origin_x += slot->advance.x;
* endfor
- * }
+ * ```
*
- * If you use strong auto-hinting, you *must* apply these delta
- * values! Otherwise you will experience far too large inter-glyph
- * spacing at small rendering sizes in most cases. Note that it
- * doesn't harm to use the above code for other hinting modes also,
- * since the delta values are zero then.
+ * If you use strong auto-hinting, you **must** apply these delta values!
+ * Otherwise you will experience far too large inter-glyph spacing at
+ * small rendering sizes in most cases. Note that it doesn't harm to use
+ * the above code for other hinting modes also, since the delta values
+ * are zero then.
*/
typedef struct FT_GlyphSlotRec_
{
@@ -2019,8 +1933,8 @@
* FT_Init_FreeType
*
* @description:
- * Initialize a new FreeType library object. The set of modules
- * that are registered by this function is determined at build time.
+ * Initialize a new FreeType library object. The set of modules that are
+ * registered by this function is determined at build time.
*
* @output:
* alibrary ::
@@ -2030,21 +1944,21 @@
* FreeType error code. 0~means success.
*
* @note:
- * In case you want to provide your own memory allocating routines,
- * use @FT_New_Library instead, followed by a call to
- * @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module)
- * and @FT_Set_Default_Properties.
+ * In case you want to provide your own memory allocating routines, use
+ * @FT_New_Library instead, followed by a call to @FT_Add_Default_Modules
+ * (or a series of calls to @FT_Add_Module) and
+ * @FT_Set_Default_Properties.
*
- * See the documentation of @FT_Library and @FT_Face for
- * multi-threading issues.
+ * See the documentation of @FT_Library and @FT_Face for multi-threading
+ * issues.
*
* If you need reference-counting (cf. @FT_Reference_Library), use
* @FT_New_Library and @FT_Done_Library.
*
- * If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is
- * set, this function reads the `FREETYPE_PROPERTIES' environment
- * variable to control driver properties. See section @properties
- * for more.
+ * If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is
+ * set, this function reads the `FREETYPE_PROPERTIES` environment
+ * variable to control driver properties. See section @properties for
+ * more.
*/
FT_EXPORT( FT_Error )
FT_Init_FreeType( FT_Library *alibrary );
@@ -2076,7 +1990,7 @@
* FT_OPEN_XXX
*
* @description:
- * A list of bit field constants used within the `flags' field of the
+ * A list of bit field constants used within the `flags` field of the
* @FT_Open_Args structure.
*
* @values:
@@ -2084,21 +1998,20 @@
* This is a memory-based stream.
*
* FT_OPEN_STREAM ::
- * Copy the stream from the `stream' field.
+ * Copy the stream from the `stream` field.
*
* FT_OPEN_PATHNAME ::
- * Create a new input stream from a C~path
- * name.
+ * Create a new input stream from a C~path name.
*
* FT_OPEN_DRIVER ::
- * Use the `driver' field.
+ * Use the `driver` field.
*
* FT_OPEN_PARAMS ::
- * Use the `num_params' and `params' fields.
+ * Use the `num_params` and `params` fields.
*
* @note:
- * The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'
- * flags are mutually exclusive.
+ * The `FT_OPEN_MEMORY`, `FT_OPEN_STREAM`, and `FT_OPEN_PATHNAME` flags
+ * are mutually exclusive.
*/
#define FT_OPEN_MEMORY 0x1
#define FT_OPEN_STREAM 0x2
@@ -2107,7 +2020,7 @@
#define FT_OPEN_PARAMS 0x10
- /* these constants are deprecated; use the corresponding `FT_OPEN_XXX' */
+ /* these constants are deprecated; use the corresponding `FT_OPEN_XXX` */
/* values instead */
#define ft_open_memory FT_OPEN_MEMORY
#define ft_open_stream FT_OPEN_STREAM
@@ -2133,8 +2046,8 @@
* A pointer to the parameter data.
*
* @note:
- * The ID and function of parameters are driver-specific. See
- * section @parameter_tags for more information.
+ * The ID and function of parameters are driver-specific. See section
+ * @parameter_tags for more information.
*/
typedef struct FT_Parameter_
{
@@ -2156,8 +2069,7 @@
*
* @fields:
* flags ::
- * A set of bit flags indicating how to use the
- * structure.
+ * A set of bit flags indicating how to use the structure.
*
* memory_base ::
* The first byte of the file in memory.
@@ -2172,44 +2084,41 @@
* A handle to a source stream object.
*
* driver ::
- * This field is exclusively used by @FT_Open_Face;
- * it simply specifies the font driver to use for
- * opening the face. If set to NULL, FreeType tries
- * to load the face with each one of the drivers in
- * its list.
+ * This field is exclusively used by @FT_Open_Face; it simply specifies
+ * the font driver to use for opening the face. If set to `NULL`,
+ * FreeType tries to load the face with each one of the drivers in its
+ * list.
*
* num_params ::
* The number of extra parameters.
*
* params ::
- * Extra parameters passed to the font driver when
- * opening a new face.
+ * Extra parameters passed to the font driver when opening a new face.
*
* @note:
- * The stream type is determined by the contents of `flags' that
- * are tested in the following order by @FT_Open_Face:
+ * The stream type is determined by the contents of `flags` that are
+ * tested in the following order by @FT_Open_Face:
*
- * If the @FT_OPEN_MEMORY bit is set, assume that this is a
- * memory file of `memory_size' bytes, located at `memory_address'.
- * The data are not copied, and the client is responsible for
- * releasing and destroying them _after_ the corresponding call to
- * @FT_Done_Face.
+ * If the @FT_OPEN_MEMORY bit is set, assume that this is a memory file
+ * of `memory_size` bytes, located at `memory_address`. The data are not
+ * copied, and the client is responsible for releasing and destroying
+ * them _after_ the corresponding call to @FT_Done_Face.
*
- * Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a
- * custom input stream `stream' is used.
+ * Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a custom
+ * input stream `stream` is used.
*
- * Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this
- * is a normal file and use `pathname' to open it.
+ * Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this is a
+ * normal file and use `pathname` to open it.
*
- * If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to
- * open the file with the driver whose handler is in `driver'.
+ * If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to open
+ * the file with the driver whose handler is in `driver`.
*
* If the @FT_OPEN_PARAMS bit is set, the parameters given by
- * `num_params' and `params' is used. They are ignored otherwise.
+ * `num_params` and `params` is used. They are ignored otherwise.
*
- * Ideally, both the `pathname' and `params' fields should be tagged
- * as `const'; this is missing for API backward compatibility. In
- * other words, applications should treat them as read-only.
+ * Ideally, both the `pathname` and `params` fields should be tagged as
+ * 'const'; this is missing for API backward compatibility. In other
+ * words, applications should treat them as read-only.
*/
typedef struct FT_Open_Args_
{
@@ -2242,20 +2151,19 @@
* A path to the font file.
*
* face_index ::
- * See @FT_Open_Face for a detailed description of this
- * parameter.
+ * See @FT_Open_Face for a detailed description of this parameter.
*
* @output:
* aface ::
- * A handle to a new face object. If `face_index' is
- * greater than or equal to zero, it must be non-NULL.
+ * A handle to a new face object. If `face_index` is greater than or
+ * equal to zero, it must be non-`NULL`.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * Use @FT_Done_Face to destroy the created @FT_Face object (along
- * with its slot and sizes).
+ * Use @FT_Done_Face to destroy the created @FT_Face object (along with
+ * its slot and sizes).
*/
FT_EXPORT( FT_Error )
FT_New_Face( FT_Library library,
@@ -2270,8 +2178,7 @@
* FT_New_Memory_Face
*
* @description:
- * Call @FT_Open_Face to open a font that has been loaded into
- * memory.
+ * Call @FT_Open_Face to open a font that has been loaded into memory.
*
* @inout:
* library ::
@@ -2285,13 +2192,12 @@
* The size of the memory chunk used by the font data.
*
* face_index ::
- * See @FT_Open_Face for a detailed description of this
- * parameter.
+ * See @FT_Open_Face for a detailed description of this parameter.
*
* @output:
* aface ::
- * A handle to a new face object. If `face_index' is
- * greater than or equal to zero, it must be non-NULL.
+ * A handle to a new face object. If `face_index` is greater than or
+ * equal to zero, it must be non-`NULL`.
*
* @return:
* FreeType error code. 0~means success.
@@ -2313,8 +2219,7 @@
* FT_Open_Face
*
* @description:
- * Create a face object from a given resource described by
- * @FT_Open_Args.
+ * Create a face object from a given resource described by @FT_Open_Args.
*
* @inout:
* library ::
@@ -2322,64 +2227,57 @@
*
* @input:
* args ::
- * A pointer to an `FT_Open_Args' structure that must
- * be filled by the caller.
+ * A pointer to an `FT_Open_Args` structure that must be filled by the
+ * caller.
*
* face_index ::
- * This field holds two different values. Bits 0-15
- * are the index of the face in the font file (starting
- * with value~0). Set it to~0 if there is only one
- * face in the font file.
+ * This field holds two different values. Bits 0-15 are the index of
+ * the face in the font file (starting with value~0). Set it to~0 if
+ * there is only one face in the font file.
*
- * [Since 2.6.1] Bits 16-30 are relevant to GX and
- * OpenType variation fonts only, specifying the named
- * instance index for the current face index (starting
- * with value~1; value~0 makes FreeType ignore named
- * instances). For non-variation fonts, bits 16-30 are
- * ignored. Assuming that you want to access the third
- * named instance in face~4, `face_index' should be set
- * to 0x00030004. If you want to access face~4 without
- * variation handling, simply set `face_index' to
+ * [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation
+ * fonts only, specifying the named instance index for the current face
+ * index (starting with value~1; value~0 makes FreeType ignore named
+ * instances). For non-variation fonts, bits 16-30 are ignored.
+ * Assuming that you want to access the third named instance in face~4,
+ * `face_index` should be set to 0x00030004. If you want to access
+ * face~4 without variation handling, simply set `face_index` to
* value~4.
*
- * `FT_Open_Face' and its siblings can be used to
- * quickly check whether the font format of a given
- * font resource is supported by FreeType. In general,
- * if the `face_index' argument is negative, the
- * function's return value is~0 if the font format is
- * recognized, or non-zero otherwise. The function
- * allocates a more or less empty face handle in
- * `*aface' (if `aface' isn't NULL); the only two
- * useful fields in this special case are
- * `face->num_faces' and `face->style_flags'. For any
- * negative value of `face_index', `face->num_faces'
- * gives the number of faces within the font file. For
- * the negative value `-(N+1)' (with `N' a non-negative
- * 16-bit value), bits 16-30 in `face->style_flags'
- * give the number of named instances in face `N' if we
- * have a variation font (or zero otherwise). After
- * examination, the returned @FT_Face structure should
- * be deallocated with a call to @FT_Done_Face.
+ * `FT_Open_Face` and its siblings can be used to quickly check whether
+ * the font format of a given font resource is supported by FreeType.
+ * In general, if the `face_index` argument is negative, the function's
+ * return value is~0 if the font format is recognized, or non-zero
+ * otherwise. The function allocates a more or less empty face handle
+ * in `*aface` (if `aface` isn't `NULL`); the only two useful fields in
+ * this special case are `face->num_faces` and `face->style_flags`.
+ * For any negative value of `face_index`, `face->num_faces` gives the
+ * number of faces within the font file. For the negative value
+ * '-(N+1)' (with 'N' a non-negative 16-bit value), bits 16-30 in
+ * `face->style_flags` give the number of named instances in face 'N'
+ * if we have a variation font (or zero otherwise). After examination,
+ * the returned @FT_Face structure should be deallocated with a call to
+ * @FT_Done_Face.
*
* @output:
* aface ::
- * A handle to a new face object. If `face_index' is
- * greater than or equal to zero, it must be non-NULL.
+ * A handle to a new face object. If `face_index` is greater than or
+ * equal to zero, it must be non-`NULL`.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * Unlike FreeType 1.x, this function automatically creates a glyph
- * slot for the face object that can be accessed directly through
- * `face->glyph'.
+ * Unlike FreeType 1.x, this function automatically creates a glyph slot
+ * for the face object that can be accessed directly through
+ * `face->glyph`.
*
- * Each new face object created with this function also owns a
- * default @FT_Size object, accessible as `face->size'.
+ * Each new face object created with this function also owns a default
+ * @FT_Size object, accessible as `face->size`.
*
* One @FT_Library instance can have multiple face objects, this is,
- * @FT_Open_Face and its siblings can be called multiple times using
- * the same `library' argument.
+ * @FT_Open_Face and its siblings can be called multiple times using the
+ * same `library` argument.
*
* See the discussion of reference counters in the description of
* @FT_Reference_Face.
@@ -2388,7 +2286,7 @@
* To loop over all faces, use code similar to the following snippet
* (omitting the error handling).
*
- * {
+ * ```
* ...
* FT_Face face;
* FT_Long i, num_faces;
@@ -2408,15 +2306,14 @@
* FT_Done_Face( face );
* ...
* }
- * }
+ * ```
*
- * 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.
+ * 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.
*
- * {
+ * ```
* ...
* FT_Face face;
*
@@ -2451,7 +2348,7 @@
* }
*
* } while ( face_idx < num_faces )
- * }
+ * ```
*/
FT_EXPORT( FT_Error )
FT_Open_Face( FT_Library library,
@@ -2490,10 +2387,10 @@
* FT_Attach_Stream
*
* @description:
- * `Attach' data to a face object. Normally, this is used to read
+ * 'Attach' data to a face object. Normally, this is used to read
* additional information for the face object. For example, you can
- * attach an AFM file that comes with a Type~1 font to get the
- * kerning values and other metrics.
+ * attach an AFM file that comes with a Type~1 font to get the kerning
+ * values and other metrics.
*
* @inout:
* face ::
@@ -2501,20 +2398,19 @@
*
* @input:
* parameters ::
- * A pointer to @FT_Open_Args that must be filled by
- * the caller.
+ * A pointer to @FT_Open_Args that must be filled by the caller.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The meaning of the `attach' (i.e., what really happens when the
- * new file is read) is not fixed by FreeType itself. It really
- * depends on the font format (and thus the font driver).
+ * The meaning of the 'attach' (i.e., what really happens when the new
+ * file is read) is not fixed by FreeType itself. It really depends on
+ * the font format (and thus the font driver).
*
- * Client applications are expected to know what they are doing
- * when invoking this function. Most drivers simply do not implement
- * file or stream attachments.
+ * Client applications are expected to know what they are doing when
+ * invoking this function. Most drivers simply do not implement file or
+ * stream attachments.
*/
FT_EXPORT( FT_Error )
FT_Attach_Stream( FT_Face face,
@@ -2527,9 +2423,9 @@
* FT_Reference_Face
*
* @description:
- * A counter gets initialized to~1 at the time an @FT_Face structure
- * is created. This function increments the counter. @FT_Done_Face
- * then only destroys a face if the counter is~1, otherwise it simply
+ * A counter gets initialized to~1 at the time an @FT_Face structure is
+ * created. This function increments the counter. @FT_Done_Face then
+ * only destroys a face if the counter is~1, otherwise it simply
* decrements the counter.
*
* This function helps in managing life-cycles of structures that
@@ -2579,10 +2475,10 @@
* FT_Select_Size
*
* @description:
- * Select a bitmap strike. To be more precise, this function sets
- * the scaling factors of the active @FT_Size object in a face so
- * that bitmaps from this particular strike are taken by
- * @FT_Load_Glyph and friends.
+ * Select a bitmap strike. To be more precise, this function sets the
+ * scaling factors of the active @FT_Size object in a face so that
+ * bitmaps from this particular strike are taken by @FT_Load_Glyph and
+ * friends.
*
* @inout:
* face ::
@@ -2590,23 +2486,22 @@
*
* @input:
* strike_index ::
- * The index of the bitmap strike in the
- * `available_sizes' field of @FT_FaceRec structure.
+ * The index of the bitmap strike in the `available_sizes` field of
+ * @FT_FaceRec structure.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * For bitmaps embedded in outline fonts it is common that only a
- * subset of the available glyphs at a given ppem value is available.
- * FreeType silently uses outlines if there is no bitmap for a given
- * glyph index.
+ * For bitmaps embedded in outline fonts it is common that only a subset
+ * of the available glyphs at a given ppem value is available. FreeType
+ * silently uses outlines if there is no bitmap for a given glyph index.
*
- * For GX and OpenType variation fonts, a bitmap strike makes sense
- * only if the default instance is active (this is, no glyph
- * variation takes place); otherwise, FreeType simply ignores bitmap
- * strikes. The same is true for all named instances that are
- * different from the default instance.
+ * For GX and OpenType variation fonts, a bitmap strike makes sense only
+ * if the default instance is active (this is, no glyph variation takes
+ * place); otherwise, FreeType simply ignores bitmap strikes. The same
+ * is true for all named instances that are different from the default
+ * instance.
*
* Don't use this function if you are using the FreeType cache API.
*/
@@ -2621,40 +2516,38 @@
* FT_Size_Request_Type
*
* @description:
- * An enumeration type that lists the supported size request types,
- * i.e., what input size (in font units) maps to the requested output
- * size (in pixels, as computed from the arguments of
- * @FT_Size_Request).
+ * An enumeration type that lists the supported size request types, i.e.,
+ * what input size (in font units) maps to the requested output size (in
+ * pixels, as computed from the arguments of @FT_Size_Request).
*
* @values:
* FT_SIZE_REQUEST_TYPE_NOMINAL ::
- * The nominal size. The `units_per_EM' field of @FT_FaceRec is
- * used to determine both scaling values.
+ * The nominal size. The `units_per_EM` field of @FT_FaceRec is used
+ * to determine both scaling values.
*
* This is the standard scaling found in most applications. In
- * particular, use this size request type for TrueType fonts if
- * they provide optical scaling or something similar. Note,
- * however, that `units_per_EM' is a rather abstract value which
- * bears no relation to the actual size of the glyphs in a font.
+ * particular, use this size request type for TrueType fonts if they
+ * provide optical scaling or something similar. Note, however, that
+ * `units_per_EM` is a rather abstract value which bears no relation to
+ * the actual size of the glyphs in a font.
*
* FT_SIZE_REQUEST_TYPE_REAL_DIM ::
- * The real dimension. The sum of the `ascender' and (minus of)
- * the `descender' fields of @FT_FaceRec is used to determine both
- * scaling values.
+ * The real dimension. The sum of the `ascender` and (minus of) the
+ * `descender` fields of @FT_FaceRec is used to determine both scaling
+ * values.
*
* FT_SIZE_REQUEST_TYPE_BBOX ::
- * The font bounding box. The width and height of the `bbox' field
- * of @FT_FaceRec are used to determine the horizontal and vertical
+ * The font bounding box. The width and height of the `bbox` field of
+ * @FT_FaceRec are used to determine the horizontal and vertical
* scaling value, respectively.
*
* FT_SIZE_REQUEST_TYPE_CELL ::
- * The `max_advance_width' field of @FT_FaceRec is used to
- * determine the horizontal scaling value; the vertical scaling
- * value is determined the same way as
- * @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling
- * values are set to the smaller one. This type is useful if you
- * want to specify the font size for, say, a window of a given
- * dimension and 80x24 cells.
+ * The `max_advance_width` field of @FT_FaceRec is used to determine
+ * the horizontal scaling value; the vertical scaling value is
+ * determined the same way as @FT_SIZE_REQUEST_TYPE_REAL_DIM does.
+ * Finally, both scaling values are set to the smaller one. This type
+ * is useful if you want to specify the font size for, say, a window of
+ * a given dimension and 80x24 cells.
*
* FT_SIZE_REQUEST_TYPE_SCALES ::
* Specify the scaling values directly.
@@ -2692,33 +2585,31 @@
* See @FT_Size_Request_Type.
*
* width ::
- * The desired width, given as a 26.6 fractional
- * point value (with 72pt = 1in).
+ * The desired width, given as a 26.6 fractional point value (with 72pt
+ * = 1in).
*
* height ::
- * The desired height, given as a 26.6 fractional
- * point value (with 72pt = 1in).
+ * The desired height, given as a 26.6 fractional point value (with
+ * 72pt = 1in).
*
* horiResolution ::
- * The horizontal resolution (dpi, i.e., pixels per
- * inch). If set to zero, `width' is treated as a
- * 26.6 fractional *pixel* value, which gets
- * internally rounded to an integer.
+ * The horizontal resolution (dpi, i.e., pixels per inch). If set to
+ * zero, `width` is treated as a 26.6 fractional **pixel** value, which
+ * gets internally rounded to an integer.
*
* vertResolution ::
- * The vertical resolution (dpi, i.e., pixels per
- * inch). If set to zero, `height' is treated as a
- * 26.6 fractional *pixel* value, which gets
- * internally rounded to an integer.
+ * The vertical resolution (dpi, i.e., pixels per inch). If set to
+ * zero, `height` is treated as a 26.6 fractional **pixel** value,
+ * which gets internally rounded to an integer.
*
* @note:
- * If `width' is zero, the horizontal scaling value is set equal
- * to the vertical scaling value, and vice versa.
+ * If `width` is zero, the horizontal scaling value is set equal to the
+ * vertical scaling value, and vice versa.
*
- * If `type' is FT_SIZE_REQUEST_TYPE_SCALES, `width' and `height' are
- * interpreted directly as 16.16 fractional scaling values, without
- * any further modification, and both `horiResolution' and
- * `vertResolution' are ignored.
+ * If `type` is `FT_SIZE_REQUEST_TYPE_SCALES`, `width` and `height` are
+ * interpreted directly as 16.16 fractional scaling values, without any
+ * further modification, and both `horiResolution` and `vertResolution`
+ * are ignored.
*/
typedef struct FT_Size_RequestRec_
{
@@ -2762,20 +2653,19 @@
* FreeType error code. 0~means success.
*
* @note:
- * Although drivers may select the bitmap strike matching the
- * request, you should not rely on this if you intend to select a
- * particular bitmap strike. Use @FT_Select_Size instead in that
- * case.
+ * Although drivers may select the bitmap strike matching the request,
+ * you should not rely on this if you intend to select a particular
+ * bitmap strike. Use @FT_Select_Size instead in that case.
*
- * The relation between the requested size and the resulting glyph
- * size is dependent entirely on how the size is defined in the
- * source face. The font designer chooses the final size of each
- * glyph relative to this size. For more information refer to
- * `https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
+ * The relation between the requested size and the resulting glyph size
+ * is dependent entirely on how the size is defined in the source face.
+ * The font designer chooses the final size of each glyph relative to
+ * this size. For more information refer to
+ * 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
*
- * Contrary to @FT_Set_Char_Size, this function doesn't have special
- * code to normalize zero-valued widths, heights, or resolutions
- * (which lead to errors in most cases).
+ * Contrary to @FT_Set_Char_Size, this function doesn't have special code
+ * to normalize zero-valued widths, heights, or resolutions (which lead
+ * to errors in most cases).
*
* Don't use this function if you are using the FreeType cache API.
*/
@@ -2814,17 +2704,17 @@
*
* @note:
* While this function allows fractional points as input values, the
- * resulting ppem value for the given resolution is always rounded to
- * the nearest integer.
+ * resulting ppem value for the given resolution is always rounded to the
+ * nearest integer.
*
- * If either the character width or height is zero, it is set equal
- * to the other value.
+ * If either the character width or height is zero, it is set equal to
+ * the other value.
*
* If either the horizontal or vertical resolution is zero, it is set
* equal to the other value.
*
- * A character width or height smaller than 1pt is set to 1pt; if
- * both resolution values are zero, they are set to 72dpi.
+ * A character width or height smaller than 1pt is set to 1pt; if both
+ * resolution values are zero, they are set to 72dpi.
*
* Don't use this function if you are using the FreeType cache API.
*/
@@ -2881,37 +2771,35 @@
*
* @inout:
* face ::
- * A handle to the target face object where the glyph
- * is loaded.
+ * A handle to the target face object where the glyph is loaded.
*
* @input:
* glyph_index ::
- * The index of the glyph in the font file. For
- * CID-keyed fonts (either in PS or in CFF format)
- * this argument specifies the CID value.
+ * The index of the glyph in the font file. For CID-keyed fonts
+ * (either in PS or in CFF format) this argument specifies the CID
+ * value.
*
* load_flags ::
- * A flag indicating what to load for this glyph. The
- * @FT_LOAD_XXX constants can be used to control the
- * glyph loading process (e.g., whether the outline
- * should be scaled, whether to load bitmaps or not,
- * whether to hint the outline, etc).
+ * A flag indicating what to load for this glyph. The @FT_LOAD_XXX
+ * constants can be used to control the glyph loading process (e.g.,
+ * whether the outline should be scaled, whether to load bitmaps or
+ * not, whether to hint the outline, etc).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The loaded glyph may be transformed. See @FT_Set_Transform for
- * the details.
+ * The loaded glyph may be transformed. See @FT_Set_Transform for the
+ * details.
*
- * For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is
- * returned for invalid CID values (this is, for CID values that
- * don't have a corresponding glyph in the font). See the discussion
- * of the @FT_FACE_FLAG_CID_KEYED flag for more details.
+ * 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
+ * @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.
+ * 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,
@@ -2930,20 +2818,18 @@
*
* @inout:
* face ::
- * A handle to a target face object where the glyph
- * is loaded.
+ * A handle to a target face object where the glyph is loaded.
*
* @input:
* char_code ::
- * The glyph's character code, according to the
- * current charmap used in the face.
+ * The glyph's character code, according to the current charmap used in
+ * the face.
*
* load_flags ::
- * A flag indicating what to load for this glyph. The
- * @FT_LOAD_XXX constants can be used to control the
- * glyph loading process (e.g., whether the outline
- * should be scaled, whether to load bitmaps or not,
- * whether to hint the outline, etc).
+ * A flag indicating what to load for this glyph. The @FT_LOAD_XXX
+ * constants can be used to control the glyph loading process (e.g.,
+ * whether the outline should be scaled, whether to load bitmaps or
+ * not, whether to hint the outline, etc).
*
* @return:
* FreeType error code. 0~means success.
@@ -2951,13 +2837,12 @@
* @note:
* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.
*
- * Many fonts contain glyphs that can't be loaded by this function
- * since its glyph indices are not listed in any of the font's
- * charmaps.
+ * Many fonts contain glyphs that can't be loaded by this function since
+ * its glyph indices are not listed in any of the font's charmaps.
*
- * If no active cmap is set up (i.e., `face->charmap' is zero), the
- * call to @FT_Get_Char_Index is omitted, and the function behaves
- * identically to @FT_Load_Glyph.
+ * If no active cmap is set up (i.e., `face->charmap` is zero), the call
+ * to @FT_Get_Char_Index is omitted, and the function behaves identically
+ * to @FT_Load_Glyph.
*/
FT_EXPORT( FT_Error )
FT_Load_Char( FT_Face face,
@@ -2965,14 +2850,14 @@
FT_Int32 load_flags );
- /*************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_LOAD_XXX
*
* @description:
- * A list of bit field constants for @FT_Load_Glyph to indicate what
- * kind of operations to perform during glyph loading.
+ * A list of bit field constants for @FT_Load_Glyph to indicate what kind
+ * of operations to perform during glyph loading.
*
* @values:
* FT_LOAD_DEFAULT ::
@@ -2980,15 +2865,14 @@
* operation. In this case, the following happens:
*
* 1. FreeType looks for a bitmap for the glyph corresponding to the
- * face's current size. If one is found, the function returns.
- * The bitmap data can be accessed from the glyph slot (see note
- * below).
+ * face's current size. If one is found, the function returns. The
+ * bitmap data can be accessed from the glyph slot (see note below).
*
* 2. If no embedded bitmap is searched for or found, FreeType looks
- * for a scalable outline. If one is found, it is loaded from
- * the font file, scaled to device pixels, then `hinted' to the
- * pixel grid in order to optimize it. The outline data can be
- * accessed from the glyph slot (see note below).
+ * for a scalable outline. If one is found, it is loaded from the font
+ * file, scaled to device pixels, then 'hinted' to the pixel grid in
+ * order to optimize it. The outline data can be accessed from the
+ * glyph slot (see note below).
*
* Note that by default the glyph loader doesn't render outlines into
* bitmaps. The following flags are used to modify this default
@@ -3000,14 +2884,14 @@
* This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and
* unsets @FT_LOAD_RENDER.
*
- * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using
- * FT_LOAD_NO_SCALE usually yields meaningless outlines because the
- * subglyphs must be scaled and positioned with hinting instructions.
- * This can be solved by loading the font without FT_LOAD_NO_SCALE and
- * setting the character size to `font->units_per_EM'.
+ * If the font is 'tricky' (see @FT_FACE_FLAG_TRICKY for more), using
+ * `FT_LOAD_NO_SCALE` usually yields meaningless outlines because the
+ * subglyphs must be scaled and positioned with hinting instructions.
+ * This can be solved by loading the font without `FT_LOAD_NO_SCALE`
+ * and setting the character size to `font->units_per_EM`.
*
* FT_LOAD_NO_HINTING ::
- * Disable hinting. This generally generates `blurrier' bitmap glyphs
+ * Disable hinting. This generally generates 'blurrier' bitmap glyphs
* when the glyph are rendered in any of the anti-aliased modes. See
* also the note below.
*
@@ -3028,34 +2912,37 @@
*
* FT_LOAD_VERTICAL_LAYOUT ::
* Load the glyph for vertical text layout. In particular, the
- * `advance' value in the @FT_GlyphSlotRec structure is set to the
- * `vertAdvance' value of the `metrics' field.
+ * `advance` value in the @FT_GlyphSlotRec structure is set to the
+ * `vertAdvance` value of the `metrics` field.
*
- * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use
- * this flag currently. Reason is that in this case vertical metrics
- * get synthesized, and those values are not always consistent across
+ * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use this
+ * flag currently. Reason is that in this case vertical metrics get
+ * synthesized, and those values are not always consistent across
* various font formats.
*
* FT_LOAD_FORCE_AUTOHINT ::
- * Prefer the auto-hinter over the font's native hinter. See also
- * the note below.
+ * Prefer the auto-hinter over the font's native hinter. See also the
+ * note below.
*
* FT_LOAD_PEDANTIC ::
* Make the font driver perform pedantic verifications during glyph
- * loading. This is mostly used to detect broken glyphs in fonts.
- * By default, FreeType tries to handle broken fonts also.
+ * loading and hinting. This is mostly used to detect broken glyphs in
+ * fonts. By default, FreeType tries to handle broken fonts also.
*
* In particular, errors from the TrueType bytecode engine are not
- * passed to the application if this flag is not set; this might
- * result in partially hinted or distorted glyphs in case a glyph's
- * bytecode is buggy.
+ * passed to the application if this flag is not set; this might result
+ * in partially hinted or distorted glyphs in case a glyph's bytecode
+ * is buggy.
*
* FT_LOAD_NO_RECURSE ::
- * Don't load composite glyphs recursively. Instead, the font
- * driver should set the `num_subglyph' and `subglyphs' values of
- * the glyph slot accordingly, and set `glyph->format' to
- * @FT_GLYPH_FORMAT_COMPOSITE. The description of subglyphs can
- * then be accessed with @FT_Get_SubGlyph_Info.
+ * Don't load composite glyphs recursively. Instead, the font driver
+ * fills the `num_subglyph` and `subglyphs` values of the glyph slot;
+ * it also sets `glyph->format` to @FT_GLYPH_FORMAT_COMPOSITE. The
+ * description of subglyphs can then be accessed with
+ * @FT_Get_SubGlyph_Info.
+ *
+ * Don't use this flag for retrieving metrics information since some
+ * font drivers only return rudimentary data.
*
* This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM.
*
@@ -3072,9 +2959,8 @@
* monochrome-optimized hinting algorithm is used.
*
* FT_LOAD_LINEAR_DESIGN ::
- * Keep `linearHoriAdvance' and `linearVertAdvance' fields of
- * @FT_GlyphSlotRec in font units. See @FT_GlyphSlotRec for
- * details.
+ * Keep `linearHoriAdvance` and `linearVertAdvance` fields of
+ * @FT_GlyphSlotRec in font units. See @FT_GlyphSlotRec for details.
*
* FT_LOAD_NO_AUTOHINT ::
* Disable the auto-hinter. See also the note below.
@@ -3089,19 +2975,19 @@
* color bitmaps are found, they are converted to 256-level gray
* bitmaps, using the @FT_PIXEL_MODE_GRAY format.
*
- * [Since 2.10] If the glyph index contains an entry in the face's
- * `COLR' table with a `CPAL' palette table (as defined in the
- * OpenType specification), make @FT_Render_Glyph provide a default
+ * [Since 2.10, experimental] If the glyph index contains an entry in
+ * the face's 'COLR' table with a 'CPAL' palette table (as defined in
+ * the OpenType specification), make @FT_Render_Glyph provide a default
* blending of the color glyph layers associated with the glyph index,
* using the same bitmap format as embedded color bitmap images. This
* is mainly for convenience; for full control of color layers use
* @FT_Get_Color_Glyph_Layer and FreeType's color functions like
- * @FT_Palette_Select instead of setting FT_LOAD_COLOR for rendering
+ * @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering
* so that the client application can handle blending by itself.
*
* FT_LOAD_COMPUTE_METRICS ::
- * [Since 2.6.1] Compute glyph metrics from the glyph data, without
- * the use of bundled metrics tables (for example, the `hdmx' table in
+ * [Since 2.6.1] Compute glyph metrics from the glyph data, without the
+ * use of bundled metrics tables (for example, the 'hdmx' table in
* TrueType fonts). This flag is mainly used by font validating or
* font editing applications, which need to ignore, verify, or edit
* those tables.
@@ -3110,9 +2996,9 @@
*
* FT_LOAD_BITMAP_METRICS_ONLY ::
* [Since 2.7.1] Request loading of the metrics and bitmap image
- * information of a (possibly embedded) bitmap glyph without
- * allocating or copying the bitmap image data itself. No effect if
- * the target glyph is not a bitmap image.
+ * information of a (possibly embedded) bitmap glyph without allocating
+ * or copying the bitmap image data itself. No effect if the target
+ * glyph is not a bitmap image.
*
* This flag unsets @FT_LOAD_RENDER.
*
@@ -3127,8 +3013,8 @@
* @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can
* disable hinting by setting @FT_LOAD_NO_HINTING or change the
* precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set
- * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be
- * used at all.
+ * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be used
+ * at all.
*
* See the description of @FT_FACE_FLAG_TRICKY for a special exception
* (affecting only a handful of Asian fonts).
@@ -3139,7 +3025,7 @@
* Note that the auto-hinter needs a valid Unicode cmap (either a native
* one or synthesized by FreeType) for producing correct results. If a
* font provides an incorrect mapping (for example, assigning the
- * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a
+ * character code U+005A, LATIN CAPITAL LETTER~Z, to a glyph depicting a
* mathematical integral sign), the auto-hinter might produce useless
* results.
*
@@ -3159,7 +3045,7 @@
#define FT_LOAD_MONOCHROME ( 1L << 12 )
#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 )
#define FT_LOAD_NO_AUTOHINT ( 1L << 15 )
- /* Bits 16-19 are used by `FT_LOAD_TARGET_' */
+ /* Bits 16-19 are used by `FT_LOAD_TARGET_` */
#define FT_LOAD_COLOR ( 1L << 20 )
#define FT_LOAD_COMPUTE_METRICS ( 1L << 21 )
#define FT_LOAD_BITMAP_METRICS_ONLY ( 1L << 22 )
@@ -3178,19 +3064,17 @@
*
* @description:
* A list of values to select a specific hinting algorithm for the
- * hinter. You should OR one of these values to your `load_flags'
- * when calling @FT_Load_Glyph.
+ * hinter. You should OR one of these values to your `load_flags` when
+ * calling @FT_Load_Glyph.
*
- * Note that a font's native hinters may ignore the hinting algorithm
- * you have specified (e.g., the TrueType bytecode interpreter). You
- * can set @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is
- * used.
+ * Note that a font's native hinters may ignore the hinting algorithm you
+ * have specified (e.g., the TrueType bytecode interpreter). You can set
+ * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used.
*
* @values:
* FT_LOAD_TARGET_NORMAL ::
* The default hinting algorithm, optimized for standard gray-level
- * rendering. For monochrome output, use @FT_LOAD_TARGET_MONO
- * instead.
+ * rendering. For monochrome output, use @FT_LOAD_TARGET_MONO instead.
*
* FT_LOAD_TARGET_LIGHT ::
* A lighter hinting algorithm for gray-level modes. Many generated
@@ -3203,13 +3087,13 @@
* auto-hinter.
*
* Advance widths are rounded to integer values; however, using the
- * `lsb_delta' and `rsb_delta' fields of @FT_GlyphSlotRec, it is
+ * `lsb_delta` and `rsb_delta` fields of @FT_GlyphSlotRec, it is
* possible to get fractional advance widths for subpixel positioning
* (which is recommended to use).
*
- * If configuration option AF_CONFIG_OPTION_TT_SIZE_METRICS is active,
- * TrueType-like metrics are used to make this mode behave similarly
- * as in unpatched FreeType versions between 2.4.6 and 2.7.1
+ * If configuration option `AF_CONFIG_OPTION_TT_SIZE_METRICS` is
+ * active, TrueType-like metrics are used to make this mode behave
+ * similarly as in unpatched FreeType versions between 2.4.6 and 2.7.1
* (inclusive).
*
* FT_LOAD_TARGET_MONO ::
@@ -3217,6 +3101,12 @@
* output. The result is probably unpleasant if the glyph is rendered
* in non-monochrome modes.
*
+ * Note that for outline fonts only the TrueType font driver has proper
+ * monochrome hinting support, provided the TTFs contain hints for B/W
+ * rendering (which most fonts no longer provide). If these conditions
+ * are not met it is very likely that you get ugly results at smaller
+ * sizes.
+ *
* FT_LOAD_TARGET_LCD ::
* A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally
* decimated LCD displays.
@@ -3226,25 +3116,25 @@
* decimated LCD displays.
*
* @note:
- * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your
- * `load_flags'. They can't be ORed.
+ * You should use only _one_ of the `FT_LOAD_TARGET_XXX` values in your
+ * `load_flags`. They can't be ORed.
*
* If @FT_LOAD_RENDER is also set, the glyph is rendered in the
* corresponding mode (i.e., the mode that matches the used algorithm
- * best). An exception 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
- * rendering mode. As an example, it is possible to use the `light'
+ * rendering mode. As an example, it is possible to use the 'light'
* hinting algorithm and have the results rendered in horizontal LCD
* pixel mode, with code like
*
- * {
+ * ```
* FT_Load_Glyph( face, glyph_index,
* load_flags | FT_LOAD_TARGET_LIGHT );
*
* FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
- * }
+ * ```
*
* In general, you should stick with one rendering mode. For example,
* switching between @FT_LOAD_TARGET_NORMAL and @FT_LOAD_TARGET_MONO
@@ -3282,8 +3172,8 @@
* FT_Set_Transform
*
* @description:
- * Set the transformation that is applied to glyph images when they
- * are loaded into a glyph slot through @FT_Load_Glyph.
+ * Set the transformation that is applied to glyph images when they are
+ * loaded into a glyph slot through @FT_Load_Glyph.
*
* @inout:
* face ::
@@ -3291,20 +3181,19 @@
*
* @input:
* matrix ::
- * A pointer to the transformation's 2x2 matrix. Use NULL
- * for the identity matrix.
+ * A pointer to the transformation's 2x2 matrix. Use `NULL` for the
+ * identity matrix.
* delta ::
- * A pointer to the translation vector. Use NULL for the
- * null vector.
+ * A pointer to the translation vector. Use `NULL` for the null vector.
*
* @note:
- * The transformation is only applied to scalable image formats after
- * the glyph has been loaded. It means that hinting is unaltered by
- * the transformation and is performed on the character size given in
- * the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes.
+ * The transformation is only applied to scalable image formats after the
+ * glyph has been loaded. It means that hinting is unaltered by the
+ * transformation and is performed on the character size given in the
+ * last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes.
*
- * Note that this also transforms the `face.glyph.advance' field, but
- * *not* the values in `face.glyph.metrics'.
+ * Note that this also transforms the `face.glyph.advance` field, but
+ * **not** the values in `face.glyph.metrics`.
*/
FT_EXPORT( void )
FT_Set_Transform( FT_Face face,
@@ -3321,9 +3210,9 @@
* Render modes supported by FreeType~2. Each mode corresponds to a
* specific type of scanline conversion performed on the outline.
*
- * For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode'
- * field in the @FT_GlyphSlotRec structure gives the format of the
- * returned bitmap.
+ * For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode` field
+ * in the @FT_GlyphSlotRec structure gives the format of the returned
+ * bitmap.
*
* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,
* indicating pixel coverage. Use linear alpha blending and gamma
@@ -3332,44 +3221,42 @@
*
* @values:
* FT_RENDER_MODE_NORMAL ::
- * Default render mode; it corresponds to 8-bit anti-aliased
- * bitmaps.
+ * Default render mode; it corresponds to 8-bit anti-aliased bitmaps.
*
* FT_RENDER_MODE_LIGHT ::
- * This is equivalent to @FT_RENDER_MODE_NORMAL. It is only
- * defined as a separate value because render modes are also used
- * indirectly to define hinting algorithm selectors. See
- * @FT_LOAD_TARGET_XXX for details.
+ * This is equivalent to @FT_RENDER_MODE_NORMAL. It is only defined as
+ * a separate value because render modes are also used indirectly to
+ * define hinting algorithm selectors. See @FT_LOAD_TARGET_XXX for
+ * details.
*
* FT_RENDER_MODE_MONO ::
- * This mode corresponds to 1-bit bitmaps (with 2~levels of
- * opacity).
+ * This mode corresponds to 1-bit bitmaps (with 2~levels of opacity).
*
* FT_RENDER_MODE_LCD ::
- * This mode corresponds to horizontal RGB and BGR subpixel
- * displays like LCD screens. It produces 8-bit bitmaps that are
- * 3~times the width of the original glyph outline in pixels, and
- * which use the @FT_PIXEL_MODE_LCD mode.
+ * This mode corresponds to horizontal RGB and BGR subpixel displays
+ * like LCD screens. It produces 8-bit bitmaps that are 3~times the
+ * width of the original glyph outline in pixels, and which use the
+ * @FT_PIXEL_MODE_LCD mode.
*
* FT_RENDER_MODE_LCD_V ::
* This mode corresponds to vertical RGB and BGR subpixel displays
- * (like PDA screens, rotated LCD displays, etc.). It produces
- * 8-bit bitmaps that are 3~times the height of the original
- * glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode.
+ * (like PDA screens, rotated LCD displays, etc.). It produces 8-bit
+ * bitmaps that are 3~times the height of the original glyph outline in
+ * pixels and use the @FT_PIXEL_MODE_LCD_V mode.
*
* @note:
- * Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
- * `ftoption.h', which enables patented ClearType-style rendering,
- * the LCD-optimized glyph bitmaps should be filtered to reduce color
- * fringes inherent to this technology. You can either set up LCD
- * filtering with @FT_Library_SetLcdFilter or @FT_Face_Properties,
- * or do the filtering yourself. The default FreeType LCD rendering
- * technology does not require filtering.
+ * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your
+ * `ftoption.h`, which enables patented ClearType-style rendering, the
+ * LCD-optimized glyph bitmaps should be filtered to reduce color fringes
+ * inherent to this technology. You can either set up LCD filtering with
+ * @FT_Library_SetLcdFilter or @FT_Face_Properties, or do the filtering
+ * yourself. The default FreeType LCD rendering technology does not
+ * require filtering.
*
* The selected render mode only affects vector glyphs of a font.
* Embedded bitmaps often have a different pixel mode like
- * @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform
- * them into 8-bit pixmaps.
+ * @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
+ * into 8-bit pixmaps.
*/
typedef enum FT_Render_Mode_
{
@@ -3385,7 +3272,7 @@
/* these constants are deprecated; use the corresponding */
- /* `FT_Render_Mode' values instead */
+ /* `FT_Render_Mode` values instead */
#define ft_render_mode_normal FT_RENDER_MODE_NORMAL
#define ft_render_mode_mono FT_RENDER_MODE_MONO
@@ -3396,27 +3283,23 @@
* FT_Render_Glyph
*
* @description:
- * Convert a given glyph image to a bitmap. It does so by inspecting
- * the glyph image format, finding the relevant renderer, and
- * invoking it.
+ * Convert a given glyph image to a bitmap. It does so by inspecting the
+ * glyph image format, finding the relevant renderer, and invoking it.
*
* @inout:
* slot ::
- * A handle to the glyph slot containing the image to
- * convert.
+ * A handle to the glyph slot containing the image to convert.
*
* @input:
* render_mode ::
- * The render mode used to render the glyph image into
- * a bitmap. See @FT_Render_Mode for a list of
- * possible values.
+ * The render mode used to render the glyph image into a bitmap. See
+ * @FT_Render_Mode for a list of possible values.
*
- * If @FT_RENDER_MODE_NORMAL is used, the flag
- * @FT_LOAD_COLOR can be additionally set to make the
- * function provide a default blending of colored
- * glyph layers associated with the current glyph slot
- * (provided the font contains such layers) instead of
- * rendering the glyph slot's outline. See
+ * If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph
+ * with flag @FT_LOAD_COLOR makes FT_Render_Glyph provide a default
+ * blending of colored glyph layers associated with the current glyph
+ * slot (provided the font contains such layers) instead of rendering
+ * the glyph slot's outline. This is an experimental feature; see
* @FT_LOAD_COLOR for more information.
*
* @return:
@@ -3424,84 +3307,80 @@
*
* @note:
* To get meaningful results, font scaling values must be set with
- * functions like @FT_Set_Char_Size before calling `FT_Render_Glyph'.
+ * functions like @FT_Set_Char_Size before calling `FT_Render_Glyph`.
*
- * When FreeType outputs a bitmap of a glyph, it really outputs an
- * alpha coverage map. If a pixel is completely covered by a
- * filled-in outline, the bitmap contains 0xFF at that pixel, meaning
- * that 0xFF/0xFF fraction of that pixel is covered, meaning the
- * pixel is 100% black (or 0% bright). If a pixel is only 50%
- * covered (value 0x80), the pixel is made 50% black (50% bright or a
- * middle shade of grey). 0% covered means 0% black (100% bright or
- * white).
+ * When FreeType outputs a bitmap of a glyph, it really outputs an alpha
+ * coverage map. If a pixel is completely covered by a filled-in
+ * outline, the bitmap contains 0xFF at that pixel, meaning that
+ * 0xFF/0xFF fraction of that pixel is covered, meaning the pixel is 100%
+ * black (or 0% bright). If a pixel is only 50% covered (value 0x80),
+ * the pixel is made 50% black (50% bright or a middle shade of grey).
+ * 0% covered means 0% black (100% bright or white).
*
- * On high-DPI screens like on smartphones and tablets, the pixels
- * are so small that their chance of being completely covered and
- * therefore completely black are fairly good. On the low-DPI
- * screens, however, the situation is different. The pixels are too
- * large for most of the details of a glyph and shades of gray are
- * the norm rather than the exception.
+ * On high-DPI screens like on smartphones and tablets, the pixels are so
+ * small that their chance of being completely covered and therefore
+ * completely black are fairly good. On the low-DPI screens, however,
+ * the situation is different. The pixels are too large for most of the
+ * details of a glyph and shades of gray are the norm rather than the
+ * exception.
*
- * 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
+ * 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.
+ * '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.
*
* The blending function for placing text over a background is
*
- * {
+ * ```
* dst = alpha * src + (1 - alpha) * dst ,
- * }
+ * ```
*
* which is known as the OVER operator.
*
- * To correctly composite an antialiased pixel of a glyph onto a
- * surface,
+ * To correctly composite an antialiased pixel of a glyph onto a surface,
*
* 1. take the foreground and background colors (e.g., in sRGB space)
* and apply gamma to get them in a linear space,
*
* 2. use OVER to blend the two linear colors using the glyph pixel
- * as the alpha value (remember, the glyph bitmap is an alpha
- * coverage bitmap), and
+ * as the alpha value (remember, the glyph bitmap is an alpha coverage
+ * bitmap), and
*
* 3. apply inverse gamma to the blended pixel and write it back to
* the image.
*
- * Internal testing at Adobe found that a target inverse gamma of~1.8
- * for step~3 gives good results across a wide range of displays with
- * an sRGB gamma curve or a similar one.
+ * Internal testing at Adobe found that a target inverse gamma of~1.8 for
+ * step~3 gives good results across a wide range of displays with an sRGB
+ * gamma curve or a similar one.
*
* This process can cost performance. There is an approximation that
* does not need to know about the background color; see
* https://bel.fi/alankila/lcd/ and
* https://bel.fi/alankila/lcd/alpcor.html for details.
*
- * *ATTENTION*: Linear blending is even more important when dealing
+ * **ATTENTION**: Linear blending is even more important when dealing
* with subpixel-rendered glyphs to prevent color-fringing! A
* subpixel-rendered glyph must first be filtered with a filter that
- * gives equal weight to the three color primaries and does not
- * exceed a sum of 0x100, see section @lcd_rendering. Then the
- * only difference to gray linear blending is that subpixel-rendered
- * linear blending is done 3~times per pixel: red foreground subpixel
- * to red background subpixel and so on for green and blue.
+ * gives equal weight to the three color primaries and does not exceed a
+ * sum of 0x100, see section @lcd_rendering. Then the only difference to
+ * gray linear blending is that subpixel-rendered linear blending is done
+ * 3~times per pixel: red foreground subpixel to red background subpixel
+ * and so on for green and blue.
*/
FT_EXPORT( FT_Error )
FT_Render_Glyph( FT_GlyphSlot slot,
@@ -3519,23 +3398,20 @@
*
* @values:
* FT_KERNING_DEFAULT ::
- * Return grid-fitted kerning distances in
- * 26.6 fractional pixels.
+ * Return grid-fitted kerning distances in 26.6 fractional pixels.
*
* FT_KERNING_UNFITTED ::
- * Return un-grid-fitted kerning distances in
- * 26.6 fractional pixels.
+ * Return un-grid-fitted kerning distances in 26.6 fractional pixels.
*
* FT_KERNING_UNSCALED ::
- * Return the kerning vector in original font
- * units.
+ * Return the kerning vector in original font units.
*
* @note:
- * FT_KERNING_DEFAULT returns full pixel values; it also makes
- * FreeType heuristically scale down kerning distances at small ppem
- * values so that they don't become too big.
+ * `FT_KERNING_DEFAULT` returns full pixel values; it also makes FreeType
+ * heuristically scale down kerning distances at small ppem values so
+ * that they don't become too big.
*
- * Both FT_KERNING_DEFAULT and FT_KERNING_UNFITTED use the current
+ * Both `FT_KERNING_DEFAULT` and `FT_KERNING_UNFITTED` use the current
* horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to
* convert font units to pixels.
*/
@@ -3549,7 +3425,7 @@
/* these constants are deprecated; use the corresponding */
- /* `FT_Kerning_Mode' values instead */
+ /* `FT_Kerning_Mode` values instead */
#define ft_kerning_default FT_KERNING_DEFAULT
#define ft_kerning_unfitted FT_KERNING_UNFITTED
#define ft_kerning_unscaled FT_KERNING_UNSCALED
@@ -3574,29 +3450,27 @@
* The index of the right glyph in the kern pair.
*
* kern_mode ::
- * See @FT_Kerning_Mode for more information.
- * Determines the scale and dimension of the returned
- * kerning vector.
+ * See @FT_Kerning_Mode for more information. Determines the scale and
+ * dimension of the returned kerning vector.
*
* @output:
* akerning ::
- * The kerning vector. This is either in font units,
- * fractional pixels (26.6 format), or pixels for
- * scalable formats, and in pixels for fixed-sizes
- * formats.
+ * The kerning vector. This is either in font units, fractional pixels
+ * (26.6 format), or pixels for scalable formats, and in pixels for
+ * fixed-sizes formats.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * Only horizontal layouts (left-to-right & right-to-left) are
- * supported by this method. Other layouts, or more sophisticated
- * kernings, are out of the scope of this API function -- they can be
- * implemented through format-specific interfaces.
+ * Only horizontal layouts (left-to-right & right-to-left) are supported
+ * by this method. Other layouts, or more sophisticated kernings, are
+ * out of the scope of this API function -- they can be implemented
+ * through format-specific interfaces.
*
- * Kerning for OpenType fonts implemented in a `GPOS' table is not
+ * Kerning for OpenType fonts implemented in a 'GPOS' table is not
* supported; use @FT_HAS_KERNING to find out whether a font has data
- * that can be extracted with `FT_Get_Kerning'.
+ * that can be extracted with `FT_Get_Kerning`.
*/
FT_EXPORT( FT_Error )
FT_Get_Kerning( FT_Face face,
@@ -3622,26 +3496,25 @@
* The point size in 16.16 fractional points.
*
* degree ::
- * The degree of tightness. Increasingly negative
- * values represent tighter track kerning, while
- * increasingly positive values represent looser track
- * kerning. Value zero means no track kerning.
+ * The degree of tightness. Increasingly negative values represent
+ * tighter track kerning, while increasingly positive values represent
+ * looser track kerning. Value zero means no track kerning.
*
* @output:
* akerning ::
- * The kerning in 16.16 fractional points, to be
- * uniformly applied between all glyphs.
+ * The kerning in 16.16 fractional points, to be uniformly applied
+ * between all glyphs.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * Currently, only the Type~1 font driver supports track kerning,
- * using data from AFM files (if attached with @FT_Attach_File or
+ * Currently, only the Type~1 font driver supports track kerning, using
+ * data from AFM files (if attached with @FT_Attach_File or
* @FT_Attach_Stream).
*
- * Only very few AFM files come with track kerning data; please refer
- * to Adobe's AFM specification for more details.
+ * Only very few AFM files come with track kerning data; please refer to
+ * Adobe's AFM specification for more details.
*/
FT_EXPORT( FT_Error )
FT_Get_Track_Kerning( FT_Face face,
@@ -3656,8 +3529,8 @@
* FT_Get_Glyph_Name
*
* @description:
- * Retrieve the ASCII name of a given glyph in a face. This only
- * works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.
+ * Retrieve the ASCII name of a given glyph in a face. This only works
+ * for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.
*
* @input:
* face ::
@@ -3667,31 +3540,28 @@
* The glyph index.
*
* buffer_max ::
- * The maximum number of bytes available in the
- * buffer.
+ * The maximum number of bytes available in the buffer.
*
* @output:
* buffer ::
- * A pointer to a target buffer where the name is
- * copied to.
+ * A pointer to a target buffer where the name is copied to.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * An error is returned if the face doesn't provide glyph names or if
- * the glyph index is invalid. In all cases of failure, the first
- * byte of `buffer' is set to~0 to indicate an empty name.
+ * An error is returned if the face doesn't provide glyph names or if the
+ * glyph index is invalid. In all cases of failure, the first byte of
+ * `buffer` is set to~0 to indicate an empty name.
*
* The glyph name is truncated to fit within the buffer if it is too
* long. The returned string is always zero-terminated.
*
- * Be aware that FreeType reorders glyph indices internally so that
- * glyph index~0 always corresponds to the `missing glyph' (called
- * `.notdef').
+ * Be aware that FreeType reorders glyph indices internally so that glyph
+ * index~0 always corresponds to the 'missing glyph' (called '.notdef').
*
* This function always returns an error if the config macro
- * `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'.
+ * `FT_CONFIG_OPTION_NO_GLYPH_NAMES` is not defined in `ftoption.h`.
*/
FT_EXPORT( FT_Error )
FT_Get_Glyph_Name( FT_Face face,
@@ -3714,25 +3584,23 @@
* A handle to the source face object.
*
* @return:
- * A pointer to the face's PostScript name. NULL if unavailable.
+ * A pointer to the face's PostScript name. `NULL` if unavailable.
*
* @note:
- * The returned pointer is owned by the face and is destroyed with
- * it.
+ * The returned pointer is owned by the face and is destroyed with it.
*
* For variation fonts, this string changes if you select a different
- * instance, and you have to call `FT_Get_PostScript_Name' again to
- * retrieve it. FreeType follows Adobe TechNote #5902, `Generating
+ * instance, and you have to call `FT_Get_PostScript_Name` again to
+ * retrieve it. FreeType follows Adobe TechNote #5902, 'Generating
* PostScript Names for Fonts Using OpenType Font Variations'.
*
* https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html
*
* [Since 2.9] Special PostScript names for named instances are only
- * returned if the named instance is set with @FT_Set_Named_Instance
- * (and the font has corresponding entries in its `fvar' table). If
- * @FT_IS_VARIATION returns true, the algorithmically derived
- * PostScript name is provided, not looking up special entries for
- * named instances.
+ * returned if the named instance is set with @FT_Set_Named_Instance (and
+ * the font has corresponding entries in its 'fvar' table). If
+ * @FT_IS_VARIATION returns true, the algorithmically derived PostScript
+ * name is provided, not looking up special entries for named instances.
*/
FT_EXPORT( const char* )
FT_Get_Postscript_Name( FT_Face face );
@@ -3745,7 +3613,7 @@
*
* @description:
* Select a given charmap by its encoding tag (as listed in
- * `freetype.h').
+ * `freetype.h`).
*
* @inout:
* face ::
@@ -3759,14 +3627,14 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function returns an error if no charmap in the face
- * corresponds to the encoding queried here.
+ * This function returns an error if no charmap in the face corresponds
+ * to the encoding queried here.
*
* Because many fonts contain more than a single cmap for Unicode
- * encoding, this function has some special code to select the one
- * that covers Unicode best (`best' in the sense that a UCS-4 cmap is
- * preferred to a UCS-2 cmap). It is thus preferable to
- * @FT_Set_Charmap in this case.
+ * encoding, this function has some special code to select the one that
+ * covers Unicode best ('best' in the sense that a UCS-4 cmap is
+ * preferred to a UCS-2 cmap). It is thus preferable to @FT_Set_Charmap
+ * in this case.
*/
FT_EXPORT( FT_Error )
FT_Select_Charmap( FT_Face face,
@@ -3793,9 +3661,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function returns an error if the charmap is not part of
- * the face (i.e., if it is not listed in the `face->charmaps'
- * table).
+ * This function returns an error if the charmap is not part of the face
+ * (i.e., if it is not listed in the `face->charmaps` table).
*
* It also fails if an OpenType type~14 charmap is selected (which
* doesn't map character codes to glyph indices at all).
@@ -3805,7 +3672,7 @@
FT_CharMap charmap );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_Charmap_Index
@@ -3819,7 +3686,7 @@
*
* @return:
* The index into the array of character maps within the face to which
- * `charmap' belongs. If an error occurs, -1 is returned.
+ * `charmap` belongs. If an error occurs, -1 is returned.
*
*/
FT_EXPORT( FT_Int )
@@ -3832,8 +3699,8 @@
* FT_Get_Char_Index
*
* @description:
- * Return the glyph index of a given character code. This function
- * uses the currently selected charmap to do the mapping.
+ * Return the glyph index of a given character code. This function uses
+ * the currently selected charmap to do the mapping.
*
* @input:
* face ::
@@ -3843,20 +3710,19 @@
* The character code.
*
* @return:
- * The glyph index. 0~means `undefined character code'.
+ * The glyph index. 0~means 'undefined character code'.
*
* @note:
- * If you use FreeType to manipulate the contents of font files
- * directly, be aware that the glyph index returned by this function
- * doesn't always correspond to the internal indices used within the
- * file. This is done to ensure that value~0 always corresponds to
- * the `missing glyph'. If the first glyph is not named `.notdef',
- * then for Type~1 and Type~42 fonts, `.notdef' will be moved into
- * the glyph ID~0 position, and whatever was there will be moved to
- * the position `.notdef' had. For Type~1 fonts, if there is no
- * `.notdef' glyph at all, then one will be created at index~0 and
- * whatever was there will be moved to the last index -- Type~42
- * fonts are considered invalid under this condition.
+ * If you use FreeType to manipulate the contents of font files directly,
+ * be aware that the glyph index returned by this function doesn't always
+ * correspond to the internal indices used within the file. This is done
+ * to ensure that value~0 always corresponds to the 'missing glyph'. If
+ * the first glyph is not named '.notdef', then for Type~1 and Type~42
+ * fonts, '.notdef' will be moved into the glyph ID~0 position, and
+ * whatever was there will be moved to the position '.notdef' had. For
+ * Type~1 fonts, if there is no '.notdef' glyph at all, then one will be
+ * created at index~0 and whatever was there will be moved to the last
+ * index -- Type~42 fonts are considered invalid under this condition.
*/
FT_EXPORT( FT_UInt )
FT_Get_Char_Index( FT_Face face,
@@ -3878,18 +3744,17 @@
*
* @output:
* agindex ::
- * Glyph index of first character code. 0~if charmap is
- * empty.
+ * Glyph index of first character code. 0~if charmap is empty.
*
* @return:
* The charmap's first character code.
*
* @note:
- * You should use this function together with @FT_Get_Next_Char to
- * parse all character codes available in a given charmap. The code
- * should look like this:
+ * You should use this function together with @FT_Get_Next_Char to parse
+ * all character codes available in a given charmap. The code should
+ * look like this:
*
- * {
+ * ```
* FT_ULong charcode;
* FT_UInt gindex;
*
@@ -3901,18 +3766,18 @@
*
* charcode = FT_Get_Next_Char( face, charcode, &gindex );
* }
- * }
+ * ```
*
- * 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 @FT_Get_CMap_Format)
- * normally have entries for all Unicode characters up to 0x1FFFFF,
- * which can cause *a lot* of iterations.
+ * 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 @FT_Get_CMap_Format) normally have
+ * entries for all Unicode characters up to 0x1FFFFF, which can cause *a
+ * lot* of iterations.
*
- * 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.
+ * 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.
*/
FT_EXPORT( FT_ULong )
FT_Get_First_Char( FT_Face face,
@@ -3925,9 +3790,9 @@
* FT_Get_Next_Char
*
* @description:
- * Return the next character code in the current charmap of a given
- * face following the value `char_code', as well as the corresponding
- * glyph index.
+ * Return the next character code in the current charmap of a given face
+ * following the value `char_code`, as well as the corresponding glyph
+ * index.
*
* @input:
* face ::
@@ -3938,19 +3803,18 @@
*
* @output:
* agindex ::
- * Glyph index of next character code. 0~if charmap
- * is empty.
+ * Glyph index of next character code. 0~if charmap is empty.
*
* @return:
* The charmap's next character code.
*
* @note:
- * You should use this function with @FT_Get_First_Char to walk
- * over all character codes available in a given charmap. See the
- * note for that function for a simple code example.
+ * You should use this function with @FT_Get_First_Char to walk over all
+ * character codes available in a given charmap. See the note for that
+ * function for a simple code example.
*
- * Note that `*agindex' is set to~0 when there are no more codes in
- * the charmap.
+ * Note that `*agindex` is set to~0 when there are no more codes in the
+ * charmap.
*/
FT_EXPORT( FT_ULong )
FT_Get_Next_Char( FT_Face face,
@@ -3958,7 +3822,7 @@
FT_UInt *agindex );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Face_Properties
@@ -3966,27 +3830,26 @@
* @description:
* Set or override certain (library or module-wide) properties on a
* face-by-face basis. Useful for finer-grained control and avoiding
- * locks on shared structures (threads can modify their own faces as
- * they see fit).
+ * locks on shared structures (threads can modify their own faces as they
+ * see fit).
*
- * Contrary to @FT_Property_Set, this function uses @FT_Parameter so
- * that you can pass multiple properties to the target face in one call.
- * Note that only a subset of the available properties can be
- * controlled.
+ * Contrary to @FT_Property_Set, this function uses @FT_Parameter so that
+ * you can pass multiple properties to the target face in one call. Note
+ * that only a subset of the available properties can be controlled.
*
* * @FT_PARAM_TAG_STEM_DARKENING (stem darkening, corresponding to the
- * property `no-stem-darkening' provided by the `autofit', `cff',
- * `type1', and `t1cid' modules; see @no-stem-darkening).
+ * property `no-stem-darkening` provided by the 'autofit', 'cff',
+ * 'type1', and 't1cid' modules; see @no-stem-darkening).
*
* * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (LCD filter weights, corresponding
* to function @FT_Library_SetLcdFilterWeights).
*
* * @FT_PARAM_TAG_RANDOM_SEED (seed value for the CFF, Type~1, and CID
- * `random' operator, corresponding to the `random-seed' property
- * provided by the `cff', `type1', and `t1cid' modules; see
+ * 'random' operator, corresponding to the `random-seed` property
+ * provided by the 'cff', 'type1', and 't1cid' modules; see
* @random-seed).
*
- * Pass NULL as `data' in @FT_Parameter for a given tag to reset the
+ * Pass `NULL` as `data` in @FT_Parameter for a given tag to reset the
* option and use the library or module default again.
*
* @input:
@@ -3997,17 +3860,17 @@
* The number of properties that follow.
*
* properties ::
- * A handle to an @FT_Parameter array with `num_properties' elements.
+ * A handle to an @FT_Parameter array with `num_properties` elements.
*
* @return:
* FreeType error code. 0~means success.
*
* @example:
- * Here an example that sets three properties. You must define
- * FT_CONFIG_OPTION_SUBPIXEL_RENDERING to make the LCD filter examples
+ * Here is an example that sets three properties. You must define
+ * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` to make the LCD filter examples
* work.
*
- * {
+ * ```
* FT_Parameter property1;
* FT_Bool darken_stems = 1;
*
@@ -4033,11 +3896,11 @@
* property3.data = &random_seed;
*
* FT_Face_Properties( face, 3, properties );
- * }
+ * ```
*
* The next example resets a single property to its default value.
*
- * {
+ * ```
* FT_Parameter property;
*
*
@@ -4045,7 +3908,7 @@
* property.data = NULL;
*
* FT_Face_Properties( face, 1, &property );
- * }
+ * ```
*
* @since:
* 2.8
@@ -4073,23 +3936,22 @@
* The glyph name.
*
* @return:
- * The glyph index. 0~means `undefined character code'.
+ * The glyph index. 0~means 'undefined character code'.
*/
FT_EXPORT( FT_UInt )
- FT_Get_Name_Index( FT_Face face,
- FT_String* glyph_name );
+ FT_Get_Name_Index( FT_Face face,
+ const FT_String* glyph_name );
- /*************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_SUBGLYPH_FLAG_XXX
*
* @description:
- * A list of constants describing subglyphs. Please refer to the
- * `glyf' table description in the OpenType specification for the
- * meaning of the various flags (which get synthesized for
- * non-OpenType subglyphs).
+ * A list of constants describing subglyphs. Please refer to the 'glyf'
+ * table description in the OpenType specification for the meaning of the
+ * various flags (which get synthesized for non-OpenType subglyphs).
*
* https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description
*
@@ -4112,15 +3974,15 @@
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_SubGlyph_Info
*
* @description:
* Retrieve a description of a given subglyph. Only use it if
- * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is
- * returned otherwise.
+ * `glyph->format` is @FT_GLYPH_FORMAT_COMPOSITE; an error is returned
+ * otherwise.
*
* @input:
* glyph ::
@@ -4128,7 +3990,7 @@
*
* sub_index ::
* The index of the subglyph. Must be less than
- * `glyph->num_subglyphs'.
+ * `glyph->num_subglyphs`.
*
* @output:
* p_index ::
@@ -4150,10 +4012,12 @@
* FreeType error code. 0~means success.
*
* @note:
- * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be
- * interpreted depending on the flags returned in `*p_flags'. See the
+ * The values of `*p_arg1`, `*p_arg2`, and `*p_transform` must be
+ * interpreted depending on the flags returned in `*p_flags`. See the
* OpenType specification for details.
*
+ * https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description
+ *
*/
FT_EXPORT( FT_Error )
FT_Get_SubGlyph_Info( FT_GlyphSlot glyph,
@@ -4174,15 +4038,15 @@
* Glyph Layer Management
*
* @abstract:
- * Retrieving and manipulating OpenType's `COLR' table data.
+ * Retrieving and manipulating OpenType's 'COLR' table data.
*
* @description:
* The functions described here allow access of colored glyph layer data
- * in OpenType's `COLR' tables.
+ * in OpenType's 'COLR' tables.
*/
- /**********************************************************************
+ /**************************************************************************
*
* @struct:
* FT_LayerIterator
@@ -4199,8 +4063,8 @@
* The current layer. Will be set by @FT_Get_Color_Glyph_Layer.
*
* p ::
- * An opaque pointer into `COLR' table data. The caller must set this
- * to NULL before the first call of @FT_Get_Color_Glyph_Layer.
+ * An opaque pointer into 'COLR' table data. The caller must set this
+ * to `NULL` before the first call of @FT_Get_Color_Glyph_Layer.
*/
typedef struct FT_LayerIterator_
{
@@ -4211,13 +4075,13 @@
} FT_LayerIterator;
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_Color_Glyph_Layer
*
* @description:
- * This is an interface to the `COLR' table in OpenType fonts to
+ * This is an interface to the 'COLR' table in OpenType fonts to
* iteratively retrieve the colored glyph layers associated with the
* current glyph slot.
*
@@ -4230,7 +4094,7 @@
* layer.
*
* The returned elements are ordered in the z~direction from bottom to
- * top; the `n'th element should be rendered with the associated palette
+ * top; the 'n'th element should be rendered with the associated palette
* color and blended on top of the already rendered layers (elements 0,
* 1, ..., n-1).
*
@@ -4244,7 +4108,7 @@
* @inout:
* iterator ::
* An @FT_LayerIterator object. For the first call you should set
- * `iterator->p' to NULL. For all following calls, simply use the
+ * `iterator->p` to `NULL`. For all following calls, simply use the
* same object again.
*
* @output:
@@ -4260,9 +4124,9 @@
* The color palette can be retrieved with @FT_Palette_Select.
*
* @return:
- * Value~1 if everything is OK. If there are no more layers (or if
- * there are no layers at all), value~0 gets returned. In case of an
- * error, value~0 is returned also.
+ * Value~1 if everything is OK. If there are no more layers (or if there
+ * are no layers at all), value~0 gets returned. In case of an error,
+ * value~0 is returned also.
*
* @note:
* This function is necessary if you want to handle glyph layers by
@@ -4270,11 +4134,12 @@
* objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access
* to this information.
*
- * @FT_Render_Glyph, however, handles colored glyph layers
- * automatically if the @FT_LOAD_COLOR flag is passed to it.
+ * Note that @FT_Render_Glyph is able to handle colored glyph layers
+ * automatically if the @FT_LOAD_COLOR flag is passed to a previous call
+ * to @FT_Load_Glyph. [This is an experimental feature.]
*
* @example:
- * {
+ * ```
* FT_Color* palette;
* FT_LayerIterator iterator;
*
@@ -4316,7 +4181,7 @@
* &layer_color_index,
* &iterator ) );
* }
- * }
+ * ```
*/
FT_EXPORT( FT_Bool )
FT_Get_Color_Glyph_Layer( FT_Face face,
@@ -4339,11 +4204,11 @@
* FT_FSTYPE_XXX
*
* @description:
- * A list of bit flags used in the `fsType' field of the OS/2 table
- * in a TrueType or OpenType font and the `FSType' entry in a
- * PostScript font. These bit flags are returned by
- * @FT_Get_FSType_Flags; they inform client applications of embedding
- * and subsetting restrictions associated with a font.
+ * A list of bit flags used in the `fsType` field of the OS/2 table in a
+ * TrueType or OpenType font and the `FSType` entry in a PostScript font.
+ * These bit flags are returned by @FT_Get_FSType_Flags; they inform
+ * client applications of embedding and subsetting restrictions
+ * associated with a font.
*
* See
* https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf
@@ -4355,36 +4220,36 @@
* installed on the remote system by an application.
*
* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING ::
- * Fonts that have only this bit set must not be modified, embedded
- * or exchanged in any manner without first obtaining permission of
- * the font software copyright owner.
+ * Fonts that have only this bit set must not be modified, embedded or
+ * exchanged in any manner without first obtaining permission of the
+ * font software copyright owner.
*
* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING ::
* The font may be embedded and temporarily loaded on the remote
- * system. Documents containing Preview & Print fonts must be
- * opened `read-only'; no edits can be applied to the document.
+ * system. Documents containing Preview & Print fonts must be opened
+ * 'read-only'; no edits can be applied to the document.
*
* FT_FSTYPE_EDITABLE_EMBEDDING ::
- * The font may be embedded but must only be installed temporarily
- * on other systems. In contrast to Preview & Print fonts,
- * documents containing editable fonts may be opened for reading,
- * editing is permitted, and changes may be saved.
+ * The font may be embedded but must only be installed temporarily on
+ * other systems. In contrast to Preview & Print fonts, documents
+ * containing editable fonts may be opened for reading, editing is
+ * permitted, and changes may be saved.
*
* FT_FSTYPE_NO_SUBSETTING ::
* The font may not be subsetted prior to embedding.
*
* FT_FSTYPE_BITMAP_EMBEDDING_ONLY ::
- * Only bitmaps contained in the font may be embedded; no outline
- * data may be embedded. If there are no bitmaps available in the
- * font, then the font is unembeddable.
+ * Only bitmaps contained in the font may be embedded; no outline data
+ * may be embedded. If there are no bitmaps available in the font,
+ * then the font is unembeddable.
*
* @note:
* The flags are ORed together, thus more than a single value can be
* returned.
*
- * While the `fsType' flags can indicate that a font may be embedded,
- * a license with the font vendor may be separately required to use
- * the font in this way.
+ * While the `fsType` flags can indicate that a font may be embedded, a
+ * license with the font vendor may be separately required to use the
+ * font in this way.
*/
#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000
#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002
@@ -4400,19 +4265,19 @@
* FT_Get_FSType_Flags
*
* @description:
- * Return the `fsType' flags for a font.
+ * Return the `fsType` flags for a font.
*
* @input:
* face ::
* A handle to the source face object.
*
* @return:
- * The `fsType' flags, see @FT_FSTYPE_XXX.
+ * The `fsType` flags, see @FT_FSTYPE_XXX.
*
* @note:
- * Use this function rather than directly reading the `fs_type' field
- * in the @PS_FontInfoRec structure, which is only guaranteed to
- * return the correct results for Type~1 fonts.
+ * Use this function rather than directly reading the `fs_type` field in
+ * the @PS_FontInfoRec structure, which is only guaranteed to return the
+ * correct results for Type~1 fonts.
*
* @since:
* 2.3.8
@@ -4430,48 +4295,45 @@
* Unicode Variation Sequences
*
* @abstract:
- * The FreeType~2 interface to Unicode Variation Sequences (UVS),
- * using the SFNT cmap format~14.
+ * The FreeType~2 interface to Unicode Variation Sequences (UVS), using
+ * the SFNT cmap format~14.
*
* @description:
- * Many characters, especially for CJK scripts, have variant forms.
- * They are a sort of grey area somewhere between being totally
- * irrelevant and semantically distinct; for this reason, the Unicode
- * consortium decided to introduce Variation Sequences (VS),
- * consisting of a Unicode base character and a variation selector
- * instead of further extending the already huge number of
- * characters.
+ * Many characters, especially for CJK scripts, have variant forms. They
+ * are a sort of grey area somewhere between being totally irrelevant and
+ * semantically distinct; for this reason, the Unicode consortium decided
+ * to introduce Variation Sequences (VS), consisting of a Unicode base
+ * character and a variation selector instead of further extending the
+ * already huge number of characters.
*
- * Unicode maintains two different sets, namely `Standardized
- * Variation Sequences' and registered `Ideographic Variation
- * Sequences' (IVS), collected in the `Ideographic Variation
- * Database' (IVD).
+ * Unicode maintains two different sets, namely 'Standardized Variation
+ * Sequences' and registered 'Ideographic Variation Sequences' (IVS),
+ * collected in the 'Ideographic Variation Database' (IVD).
*
* https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt
- * https://unicode.org/reports/tr37/
- * https://unicode.org/ivd/
+ * https://unicode.org/reports/tr37/ https://unicode.org/ivd/
*
* To date (January 2017), the character with the most ideographic
* variations is U+9089, having 32 such IVS.
*
- * Three Mongolian Variation Selectors have the values U+180B-U+180D;
- * 256 generic Variation Selectors are encoded in the ranges
- * U+FE00-U+FE0F and U+E0100-U+E01EF. IVS currently use Variation
- * Selectors from the range U+E0100-U+E01EF only.
+ * Three Mongolian Variation Selectors have the values U+180B-U+180D; 256
+ * generic Variation Selectors are encoded in the ranges U+FE00-U+FE0F
+ * and U+E0100-U+E01EF. IVS currently use Variation Selectors from the
+ * range U+E0100-U+E01EF only.
*
* A VS consists of the base character value followed by a single
* Variation Selector. For example, to get the first variation of
- * U+9089, you have to write the character sequence `U+9089 U+E0100'.
+ * U+9089, you have to write the character sequence `U+9089 U+E0100`.
*
- * Adobe and MS decided to support both standardized and ideographic
- * VS with a new cmap subtable (format~14). It is an odd subtable
- * because it is not a mapping of input code points to glyphs, but
- * contains lists of all variations supported by the font.
+ * Adobe and MS decided to support both standardized and ideographic VS
+ * with a new cmap subtable (format~14). It is an odd subtable because
+ * it is not a mapping of input code points to glyphs, but contains lists
+ * of all variations supported by the font.
*
- * A variation may be either `default' or `non-default' for a given
- * font. A default variation is the one you will get for that code
- * point if you look it up in the standard Unicode cmap. A
- * non-default variation is a different glyph.
+ * A variation may be either 'default' or 'non-default' for a given font.
+ * A default variation is the one you will get for that code point if you
+ * look it up in the standard Unicode cmap. A non-default variation is a
+ * different glyph.
*
*/
@@ -4482,8 +4344,8 @@
* FT_Face_GetCharVariantIndex
*
* @description:
- * Return the glyph index of a given character code as modified by
- * the variation selector.
+ * Return the glyph index of a given character code as modified by the
+ * variation selector.
*
* @input:
* face ::
@@ -4496,20 +4358,18 @@
* The Unicode code point of the variation selector.
*
* @return:
- * The glyph index. 0~means either `undefined character code', or
- * `undefined selector code', or `no variation selector cmap
- * subtable', or `current CharMap is not Unicode'.
+ * The glyph index. 0~means either 'undefined character code', or
+ * 'undefined selector code', or 'no variation selector cmap subtable',
+ * or 'current CharMap is not Unicode'.
*
* @note:
- * If you use FreeType to manipulate the contents of font files
- * directly, be aware that the glyph index returned by this function
- * doesn't always correspond to the internal indices used within
- * the file. This is done to ensure that value~0 always corresponds
- * to the `missing glyph'.
+ * If you use FreeType to manipulate the contents of font files directly,
+ * be aware that the glyph index returned by this function doesn't always
+ * correspond to the internal indices used within the file. This is done
+ * to ensure that value~0 always corresponds to the 'missing glyph'.
*
* This function is only meaningful if
- * a) the font has a variation selector cmap sub table,
- * and
+ * a) the font has a variation selector cmap sub table, and
* b) the current charmap has a Unicode encoding.
*
* @since:
@@ -4527,8 +4387,8 @@
* FT_Face_GetCharVariantIsDefault
*
* @description:
- * Check whether this variation of this Unicode character is the one
- * to be found in the `cmap'.
+ * Check whether this variation of this Unicode character is the one to
+ * be found in the charmap.
*
* @input:
* face ::
@@ -4541,12 +4401,12 @@
* The Unicode codepoint of the variation selector.
*
* @return:
- * 1~if found in the standard (Unicode) cmap, 0~if found in the
- * variation selector cmap, or -1 if it is not a variation.
+ * 1~if found in the standard (Unicode) cmap, 0~if found in the variation
+ * selector cmap, or -1 if it is not a variation.
*
* @note:
- * This function is only meaningful if the font has a variation
- * selector cmap subtable.
+ * This function is only meaningful if the font has a variation selector
+ * cmap subtable.
*
* @since:
* 2.3.6
@@ -4563,21 +4423,21 @@
* FT_Face_GetVariantSelectors
*
* @description:
- * Return a zero-terminated list of Unicode variation selectors found
- * in the font.
+ * Return a zero-terminated list of Unicode variation selectors found in
+ * the font.
*
* @input:
* face ::
* A handle to the source face object.
*
* @return:
- * A pointer to an array of selector code points, or NULL if there is
+ * A pointer to an array of selector code points, or `NULL` if there is
* no valid variation selector cmap subtable.
*
* @note:
- * The last item in the array is~0; the array is owned by the
- * @FT_Face object but can be overwritten or released on the next
- * call to a FreeType function.
+ * The last item in the array is~0; the array is owned by the @FT_Face
+ * object but can be overwritten or released on the next call to a
+ * FreeType function.
*
* @since:
* 2.3.6
@@ -4592,8 +4452,8 @@
* FT_Face_GetVariantsOfChar
*
* @description:
- * Return a zero-terminated list of Unicode variation selectors found
- * for the specified character code.
+ * Return a zero-terminated list of Unicode variation selectors found for
+ * the specified character code.
*
* @input:
* face ::
@@ -4604,13 +4464,13 @@
*
* @return:
* A pointer to an array of variation selector code points that are
- * active for the given character, or NULL if the corresponding list
- * is empty.
+ * active for the given character, or `NULL` if the corresponding list is
+ * empty.
*
* @note:
- * The last item in the array is~0; the array is owned by the
- * @FT_Face object but can be overwritten or released on the next
- * call to a FreeType function.
+ * The last item in the array is~0; the array is owned by the @FT_Face
+ * object but can be overwritten or released on the next call to a
+ * FreeType function.
*
* @since:
* 2.3.6
@@ -4626,8 +4486,8 @@
* FT_Face_GetCharsOfVariant
*
* @description:
- * Return a zero-terminated list of Unicode character codes found for
- * the specified variation selector.
+ * Return a zero-terminated list of Unicode character codes found for the
+ * specified variation selector.
*
* @input:
* face ::
@@ -4638,13 +4498,13 @@
*
* @return:
* A list of all the code points that are specified by this selector
- * (both default and non-default codes are returned) or NULL if there
+ * (both default and non-default codes are returned) or `NULL` if there
* is no valid cmap or the variation selector is invalid.
*
* @note:
- * The last item in the array is~0; the array is owned by the
- * @FT_Face object but can be overwritten or released on the next
- * call to a FreeType function.
+ * The last item in the array is~0; the array is owned by the @FT_Face
+ * object but can be overwritten or released on the next call to a
+ * FreeType function.
*
* @since:
* 2.3.6
@@ -4666,8 +4526,13 @@
* Crunching fixed numbers and vectors.
*
* @description:
- * This section contains various functions used to perform
- * computations on 16.16 fixed-float numbers or 2d vectors.
+ * This section contains various functions used to perform computations
+ * on 16.16 fixed-float numbers or 2d vectors.
+ *
+ * **Attention**: Most arithmetic functions take `FT_Long` as arguments.
+ * For historical reasons, FreeType was designed under the assumption
+ * that `FT_Long` is a 32-bit integer; results can thus be undefined if
+ * the arguments don't fit into 32 bits.
*
* @order:
* FT_MulDiv
@@ -4689,8 +4554,8 @@
* FT_MulDiv
*
* @description:
- * Compute `(a*b)/c' with maximum accuracy, using a 64-bit
- * intermediate integer whenever necessary.
+ * Compute `(a*b)/c` with maximum accuracy, using a 64-bit intermediate
+ * integer whenever necessary.
*
* This function isn't necessarily as fast as some processor-specific
* operations, but is at least completely portable.
@@ -4706,9 +4571,9 @@
* The divisor.
*
* @return:
- * The result of `(a*b)/c'. This function never traps when trying to
- * divide by zero; it simply returns `MaxInt' or `MinInt' depending
- * on the signs of `a' and `b'.
+ * The result of `(a*b)/c`. This function never traps when trying to
+ * divide by zero; it simply returns 'MaxInt' or 'MinInt' depending on
+ * the signs of `a` and `b`.
*/
FT_EXPORT( FT_Long )
FT_MulDiv( FT_Long a,
@@ -4722,7 +4587,7 @@
* FT_MulFix
*
* @description:
- * Compute `(a*b)/0x10000' with maximum accuracy. Its main use is to
+ * Compute `(a*b)/0x10000` with maximum accuracy. Its main use is to
* multiply a given value by a 16.16 fixed-point factor.
*
* @input:
@@ -4730,22 +4595,21 @@
* The first multiplier.
*
* b ::
- * The second multiplier. Use a 16.16 factor here whenever
- * possible (see note below).
+ * The second multiplier. Use a 16.16 factor here whenever possible
+ * (see note below).
*
* @return:
- * The result of `(a*b)/0x10000'.
+ * The result of `(a*b)/0x10000`.
*
* @note:
- * This function has been optimized for the case where the absolute
- * value of `a' is less than 2048, and `b' is a 16.16 scaling factor.
- * As this happens mainly when scaling from notional units to
- * fractional pixels in FreeType, it resulted in noticeable speed
- * improvements between versions 2.x and 1.x.
+ * This function has been optimized for the case where the absolute value
+ * of `a` is less than 2048, and `b` is a 16.16 scaling factor. As this
+ * happens mainly when scaling from notional units to fractional pixels
+ * in FreeType, it resulted in noticeable speed improvements between
+ * versions 2.x and 1.x.
*
- * As a conclusion, always try to place a 16.16 factor as the
- * _second_ argument of this function; this can make a great
- * difference.
+ * As a conclusion, always try to place a 16.16 factor as the _second_
+ * argument of this function; this can make a great difference.
*/
FT_EXPORT( FT_Long )
FT_MulFix( FT_Long a,
@@ -4758,7 +4622,7 @@
* FT_DivFix
*
* @description:
- * Compute `(a*0x10000)/b' with maximum accuracy. Its main use is to
+ * Compute `(a*0x10000)/b` with maximum accuracy. Its main use is to
* divide a given value by a 16.16 fixed-point factor.
*
* @input:
@@ -4769,7 +4633,7 @@
* The denominator. Use a 16.16 factor here.
*
* @return:
- * The result of `(a*0x10000)/b'.
+ * The result of `(a*0x10000)/b`.
*/
FT_EXPORT( FT_Long )
FT_DivFix( FT_Long a,
@@ -4789,7 +4653,7 @@
* The number to be rounded.
*
* @return:
- * `a' rounded to the nearest 16.16 fixed integer, halfway cases away
+ * `a` rounded to the nearest 16.16 fixed integer, halfway cases away
* from zero.
*
* @note:
@@ -4812,7 +4676,7 @@
* The number for which the ceiling function is to be computed.
*
* @return:
- * `a' rounded towards plus infinity.
+ * `a` rounded towards plus infinity.
*
* @note:
* The function uses wrap-around arithmetic.
@@ -4834,7 +4698,7 @@
* The number for which the floor function is to be computed.
*
* @return:
- * `a' rounded towards minus infinity.
+ * `a` rounded towards minus infinity.
*/
FT_EXPORT( FT_Fixed )
FT_FloorFix( FT_Fixed a );
@@ -4857,10 +4721,10 @@
* A pointer to the source 2x2 matrix.
*
* @note:
- * The result is undefined if either `vector' or `matrix' is invalid.
+ * The result is undefined if either `vector` or `matrix` is invalid.
*/
FT_EXPORT( void )
- FT_Vector_Transform( FT_Vector* vec,
+ FT_Vector_Transform( FT_Vector* vector,
const FT_Matrix* matrix );
@@ -4876,9 +4740,9 @@
* Functions and macros related to FreeType versions.
*
* @description:
- * Note that those functions and macros are of limited use because
- * even a new release of FreeType with only documentation changes
- * increases the version number.
+ * Note that those functions and macros are of limited use because even a
+ * new release of FreeType with only documentation changes increases the
+ * version number.
*
* @order:
* FT_Library_Version
@@ -4893,14 +4757,14 @@
*/
- /*************************************************************************
+ /**************************************************************************
*
* @enum:
* FREETYPE_XXX
*
* @description:
- * These three macros identify the FreeType source code version.
- * Use @FT_Library_Version to access them at runtime.
+ * These three macros identify the FreeType source code version. Use
+ * @FT_Library_Version to access them at runtime.
*
* @values:
* FREETYPE_MAJOR ::
@@ -4911,13 +4775,12 @@
* The patch level.
*
* @note:
- * The version number of FreeType if built as a dynamic link library
- * with the `libtool' package is _not_ controlled by these three
- * macros.
+ * The version number of FreeType if built as a dynamic link library with
+ * the 'libtool' package is _not_ controlled by these three macros.
*
*/
#define FREETYPE_MAJOR 2
-#define FREETYPE_MINOR 9
+#define FREETYPE_MINOR 10
#define FREETYPE_PATCH 1
@@ -4927,10 +4790,9 @@
* FT_Library_Version
*
* @description:
- * Return the version of the FreeType library being used. This is
- * useful when dynamically linking to the library, since one cannot
- * use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and
- * @FREETYPE_PATCH.
+ * Return the version of the FreeType library being used. This is useful
+ * when dynamically linking to the library, since one cannot use the
+ * macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and @FREETYPE_PATCH.
*
* @input:
* library ::
@@ -4947,12 +4809,12 @@
* The patch version number.
*
* @note:
- * The reason why this function takes a `library' argument is because
- * certain programs implement library initialization in a custom way
- * that doesn't use @FT_Init_FreeType.
+ * The reason why this function takes a `library` argument is because
+ * certain programs implement library initialization in a custom way that
+ * doesn't use @FT_Init_FreeType.
*
- * In such cases, the library version might not be available before
- * the library object has been created.
+ * In such cases, the library version might not be available before the
+ * library object has been created.
*/
FT_EXPORT( void )
FT_Library_Version( FT_Library library,
diff --git a/include/freetype/ftadvanc.h b/include/freetype/ftadvanc.h
index 9c3f545..95c38f9 100644
--- a/include/freetype/ftadvanc.h
+++ b/include/freetype/ftadvanc.h
@@ -4,7 +4,7 @@
*
* Quick computation of advance widths (specification only).
*
- * Copyright 2008-2018 by
+ * Copyright (C) 2008-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -62,20 +62,18 @@
* FT_ADVANCE_FLAG_FAST_ONLY
*
* @description:
- * A bit-flag to be OR-ed with the `flags' parameter of the
+ * A bit-flag to be OR-ed with the `flags` parameter of the
* @FT_Get_Advance and @FT_Get_Advances functions.
*
* If set, it indicates that you want these functions to fail if the
- * corresponding hinting mode or font driver doesn't allow for very
- * quick advance computation.
+ * corresponding hinting mode or font driver doesn't allow for very quick
+ * advance computation.
*
- * Typically, glyphs that are either unscaled, unhinted, bitmapped,
- * or light-hinted can have their advance width computed very
- * quickly.
+ * Typically, glyphs that are either unscaled, unhinted, bitmapped, or
+ * light-hinted can have their advance width computed very quickly.
*
- * Normal and bytecode hinted modes that require loading, scaling,
- * and hinting of the glyph outline, are extremely slow by
- * comparison.
+ * Normal and bytecode hinted modes that require loading, scaling, and
+ * hinting of the glyph outline, are extremely slow by comparison.
*/
#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L
@@ -86,8 +84,7 @@
* FT_Get_Advance
*
* @description:
- * Retrieve the advance value of a given glyph outline in an
- * @FT_Face.
+ * Retrieve the advance value of a given glyph outline in an @FT_Face.
*
* @input:
* face ::
@@ -97,30 +94,28 @@
* The glyph index.
*
* load_flags ::
- * A set of bit flags similar to those used when
- * calling @FT_Load_Glyph, used to determine what kind
- * of advances you need.
+ * A set of bit flags similar to those used when calling
+ * @FT_Load_Glyph, used to determine what kind of advances you need.
* @output:
* padvance ::
- * The advance value. If scaling is performed (based on
- * the value of `load_flags'), the advance value is in
- * 16.16 format. Otherwise, it is in font units.
+ * The advance value. If scaling is performed (based on the value of
+ * `load_flags`), the advance value is in 16.16 format. Otherwise, it
+ * is in font units.
*
- * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the
- * vertical advance corresponding to a vertical layout.
- * Otherwise, it is the horizontal advance in a
- * horizontal layout.
+ * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance
+ * corresponding to a vertical layout. Otherwise, it is the horizontal
+ * advance in a horizontal layout.
*
* @return:
* FreeType error code. 0 means success.
*
* @note:
- * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and
- * if the corresponding font backend doesn't have a quick way to
- * retrieve the advances.
+ * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
+ * the corresponding font backend doesn't have a quick way to retrieve
+ * the advances.
*
- * A scaled advance is returned in 16.16 format but isn't transformed
- * by the affine transformation specified by @FT_Set_Transform.
+ * A scaled advance is returned in 16.16 format but isn't transformed by
+ * the affine transformation specified by @FT_Set_Transform.
*/
FT_EXPORT( FT_Error )
FT_Get_Advance( FT_Face face,
@@ -135,8 +130,7 @@
* FT_Get_Advances
*
* @description:
- * Retrieve the advance values of several glyph outlines in an
- * @FT_Face.
+ * Retrieve the advance values of several glyph outlines in an @FT_Face.
*
* @input:
* face ::
@@ -149,34 +143,32 @@
* The number of advance values you want to retrieve.
*
* load_flags ::
- * A set of bit flags similar to those used when
- * calling @FT_Load_Glyph.
+ * A set of bit flags similar to those used when calling
+ * @FT_Load_Glyph.
*
* @output:
* padvance ::
- * The advance values. This array, to be provided by the
- * caller, must contain at least `count' elements.
+ * The advance values. This array, to be provided by the caller, must
+ * contain at least `count` elements.
*
- * If scaling is performed (based on the value of
- * `load_flags'), the advance values are in 16.16 format.
- * Otherwise, they are in font units.
+ * If scaling is performed (based on the value of `load_flags`), the
+ * advance values are in 16.16 format. Otherwise, they are in font
+ * units.
*
- * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the
- * vertical advances corresponding to a vertical layout.
- * Otherwise, they are the horizontal advances in a
- * horizontal layout.
+ * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances
+ * corresponding to a vertical layout. Otherwise, they are the
+ * horizontal advances in a horizontal layout.
*
* @return:
* FreeType error code. 0 means success.
*
* @note:
- * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and
- * if the corresponding font backend doesn't have a quick way to
- * retrieve the advances.
+ * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
+ * the corresponding font backend doesn't have a quick way to retrieve
+ * the advances.
*
- * Scaled advances are returned in 16.16 format but aren't
- * transformed by the affine transformation specified by
- * @FT_Set_Transform.
+ * Scaled advances are returned in 16.16 format but aren't transformed by
+ * the affine transformation specified by @FT_Set_Transform.
*/
FT_EXPORT( FT_Error )
FT_Get_Advances( FT_Face face,
diff --git a/include/freetype/ftbbox.h b/include/freetype/ftbbox.h
index 9a0dcfc..22da70c 100644
--- a/include/freetype/ftbbox.h
+++ b/include/freetype/ftbbox.h
@@ -4,7 +4,7 @@
*
* FreeType exact bbox computation (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -22,7 +22,7 @@
* boxes.
*
* It is separated from the rest of the engine for various technical
- * reasons. It may well be integrated in `ftoutln' later.
+ * reasons. It may well be integrated in 'ftoutln' later.
*
*/
@@ -58,11 +58,10 @@
* FT_Outline_Get_BBox
*
* @description:
- * Compute the exact bounding box of an outline. This is slower
- * than computing the control box. However, it uses an advanced
- * algorithm that returns _very_ quickly when the two boxes
- * coincide. Otherwise, the outline Bezier arcs are traversed to
- * extract their extrema.
+ * Compute the exact bounding box of an outline. This is slower than
+ * computing the control box. However, it uses an advanced algorithm
+ * that returns _very_ quickly when the two boxes coincide. Otherwise,
+ * the outline Bezier arcs are traversed to extract their extrema.
*
* @input:
* outline ::
@@ -78,10 +77,10 @@
* @note:
* If the font is tricky and the glyph has been loaded with
* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get
- * reasonable values for the BBox 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 BBox,
- * which can be eventually converted back to font units.
+ * reasonable values for the BBox 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 BBox, which can be
+ * eventually converted back to font units.
*/
FT_EXPORT( FT_Error )
FT_Outline_Get_BBox( FT_Outline* outline,
diff --git a/include/freetype/ftbdf.h b/include/freetype/ftbdf.h
index 69dbb4d..1c46da5 100644
--- a/include/freetype/ftbdf.h
+++ b/include/freetype/ftbdf.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing BDF-specific strings (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -44,13 +44,13 @@
* BDF and PCF specific API.
*
* @description:
- * This section contains the declaration of functions specific to BDF
- * and PCF fonts.
+ * This section contains the declaration of functions specific to BDF and
+ * PCF fonts.
*
*/
- /**********************************************************************
+ /**************************************************************************
*
* @enum:
* BDF_PropertyType
@@ -81,19 +81,19 @@
} BDF_PropertyType;
- /**********************************************************************
+ /**************************************************************************
*
* @type:
* BDF_Property
*
* @description:
- * A handle to a @BDF_PropertyRec structure to model a given
- * BDF/PCF property.
+ * A handle to a @BDF_PropertyRec structure to model a given BDF/PCF
+ * property.
*/
typedef struct BDF_PropertyRec_* BDF_Property;
- /**********************************************************************
+ /**************************************************************************
*
* @struct:
* BDF_PropertyRec
@@ -107,7 +107,7 @@
*
* u.atom ::
* The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be
- * NULL, indicating an empty string.
+ * `NULL`, indicating an empty string.
*
* u.integer ::
* A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
@@ -128,14 +128,14 @@
} BDF_PropertyRec;
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_BDF_Charset_ID
*
* @description:
- * Retrieve a BDF font character set identity, according to
- * the BDF specification.
+ * Retrieve a BDF font character set identity, according to the BDF
+ * specification.
*
* @input:
* face ::
@@ -160,7 +160,7 @@
const char* *acharset_registry );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_BDF_Property
@@ -187,15 +187,15 @@
* otherwise. It also returns an error if the property is not in the
* font.
*
- * A `property' is a either key-value pair within the STARTPROPERTIES
+ * A 'property' is a either key-value pair within the STARTPROPERTIES
* ... ENDPROPERTIES block of a BDF font or a key-value pair from the
- * `info->props' array within a `FontRec' structure of a PCF font.
+ * `info->props` array within a `FontRec` structure of a PCF font.
*
- * Integer properties are always stored as `signed' within PCF fonts;
+ * Integer properties are always stored as 'signed' within PCF fonts;
* consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
* for BDF fonts only.
*
- * In case of error, `aproperty->type' is always set to
+ * In case of error, `aproperty->type` is always set to
* @BDF_PROPERTY_TYPE_NONE.
*/
FT_EXPORT( FT_Error )
diff --git a/include/freetype/ftbitmap.h b/include/freetype/ftbitmap.h
index c9370af..a6acdb9 100644
--- a/include/freetype/ftbitmap.h
+++ b/include/freetype/ftbitmap.h
@@ -4,7 +4,7 @@
*
* FreeType utility functions for bitmaps (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -46,10 +46,16 @@
* Handling FT_Bitmap objects.
*
* @description:
- * This section contains functions for handling @FT_Bitmap objects.
- * Note that none of the functions changes the bitmap's `flow' (as
- * indicated by the sign of the `pitch' field in `FT_Bitmap').
+ * This section contains functions for handling @FT_Bitmap objects,
+ * automatically adjusting the target's bitmap buffer size as needed.
*
+ * Note that none of the functions changes the bitmap's 'flow' (as
+ * indicated by the sign of the `pitch` field in @FT_Bitmap).
+ *
+ * To set the flow, assign an appropriate positive or negative value to
+ * the `pitch` field of the target @FT_Bitmap object after calling
+ * @FT_Bitmap_Init but before calling any of the other functions
+ * described here.
*/
@@ -66,7 +72,7 @@
* A pointer to the bitmap structure.
*
* @note:
- * A deprecated name for the same function is `FT_Bitmap_New'.
+ * A deprecated name for the same function is `FT_Bitmap_New`.
*/
FT_EXPORT( void )
FT_Bitmap_Init( FT_Bitmap *abitmap );
@@ -98,6 +104,10 @@
*
* @return:
* FreeType error code. 0~means success.
+ *
+ * @note:
+ * `source->buffer` and `target->buffer` must neither be equal nor
+ * overlap.
*/
FT_EXPORT( FT_Error )
FT_Bitmap_Copy( FT_Library library,
@@ -111,21 +121,21 @@
* FT_Bitmap_Embolden
*
* @description:
- * Embolden a bitmap. The new bitmap will be about `xStrength'
- * pixels wider and `yStrength' pixels higher. The left and bottom
- * borders are kept unchanged.
+ * Embolden a bitmap. The new bitmap will be about `xStrength` pixels
+ * wider and `yStrength` pixels higher. The left and bottom borders are
+ * kept unchanged.
*
* @input:
* library ::
* A handle to a library object.
*
* xStrength ::
- * How strong the glyph is emboldened horizontally.
- * Expressed in 26.6 pixel format.
+ * How strong the glyph is emboldened horizontally. Expressed in 26.6
+ * pixel format.
*
* yStrength ::
- * How strong the glyph is emboldened vertically.
- * Expressed in 26.6 pixel format.
+ * How strong the glyph is emboldened vertically. Expressed in 26.6
+ * pixel format.
*
* @inout:
* bitmap ::
@@ -135,14 +145,14 @@
* FreeType error code. 0~means success.
*
* @note:
- * The current implementation restricts `xStrength' to be less than
- * or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.
+ * The current implementation restricts `xStrength` to be less than or
+ * equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.
*
- * If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,
- * you should call @FT_GlyphSlot_Own_Bitmap on the slot first.
+ * If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, you
+ * should call @FT_GlyphSlot_Own_Bitmap on the slot first.
*
- * Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format
- * are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).
+ * Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format are
+ * converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).
*/
FT_EXPORT( FT_Error )
FT_Bitmap_Embolden( FT_Library library,
@@ -157,9 +167,9 @@
* FT_Bitmap_Convert
*
* @description:
- * Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp
- * to a bitmap object with depth 8bpp, making the number of used
- * bytes per line (a.k.a. the `pitch') a multiple of `alignment'.
+ * Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp to
+ * a bitmap object with depth 8bpp, making the number of used bytes per
+ * line (a.k.a. the 'pitch') a multiple of `alignment`.
*
* @input:
* library ::
@@ -169,8 +179,8 @@
* The source bitmap.
*
* alignment ::
- * The pitch of the bitmap is a multiple of this
- * argument. Common values are 1, 2, or 4.
+ * The pitch of the bitmap is a multiple of this argument. Common
+ * values are 1, 2, or 4.
*
* @output:
* target ::
@@ -185,8 +195,11 @@
*
* Use @FT_Bitmap_Done to finally remove the bitmap object.
*
- * The `library' argument is taken to have access to FreeType's
- * memory handling functions.
+ * The `library` argument is taken to have access to FreeType's memory
+ * handling functions.
+ *
+ * `source->buffer` and `target->buffer` must neither be equal nor
+ * overlap.
*/
FT_EXPORT( FT_Error )
FT_Bitmap_Convert( FT_Library library,
@@ -212,14 +225,15 @@
*
* source_offset ::
* The offset vector to the upper left corner of the source bitmap in
- * 26.6 pixel format. This can be a fractional pixel value.
+ * 26.6 pixel format. It should represent an integer offset; the
+ * function will set the lowest six bits to zero to enforce that.
*
* color ::
- * The color used to draw `source' onto `target'.
+ * The color used to draw `source` onto `target`.
*
* @inout:
* target ::
- * A handle to an `FT_Bitmap' object. It should be either initialized
+ * A handle to an `FT_Bitmap` object. It should be either initialized
* as empty with a call to @FT_Bitmap_Init, or it should be of type
* @FT_PIXEL_MODE_BGRA.
*
@@ -234,12 +248,15 @@
* @note:
* This function doesn't perform clipping.
*
- * The bitmap in `target' gets allocated or reallocated as needed; the
- * vector `atarget_offset' is updated accordingly.
+ * The bitmap in `target` gets allocated or reallocated as needed; the
+ * vector `atarget_offset` is updated accordingly.
*
* In case of allocation or reallocation, the bitmap's pitch is set to
- * `4~*~width'. Both `source' and `target' must have the same bitmap
- * flow (as indicated by the sign of the `pitch' field).
+ * `4 * width`. Both `source` and `target` must have the same bitmap
+ * flow (as indicated by the sign of the `pitch` field).
+ *
+ * `source->buffer` and `target->buffer` must neither be equal nor
+ * overlap.
*
* @since:
* 2.10
@@ -259,7 +276,7 @@
* FT_GlyphSlot_Own_Bitmap
*
* @description:
- * Make sure that a glyph slot owns `slot->bitmap'.
+ * Make sure that a glyph slot owns `slot->bitmap`.
*
* @input:
* slot ::
@@ -269,8 +286,7 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function is to be used in combination with
- * @FT_Bitmap_Embolden.
+ * This function is to be used in combination with @FT_Bitmap_Embolden.
*/
FT_EXPORT( FT_Error )
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
@@ -295,8 +311,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * The `library' argument is taken to have access to FreeType's
- * memory handling functions.
+ * The `library` argument is taken to have access to FreeType's memory
+ * handling functions.
*/
FT_EXPORT( FT_Error )
FT_Bitmap_Done( FT_Library library,
diff --git a/include/freetype/ftbzip2.h b/include/freetype/ftbzip2.h
index 07a7367..ae88cfd 100644
--- a/include/freetype/ftbzip2.h
+++ b/include/freetype/ftbzip2.h
@@ -4,7 +4,7 @@
*
* Bzip2-compressed stream support.
*
- * Copyright 2010-2018 by
+ * Copyright (C) 2010-2019 by
* Joel Klinghed.
*
* This file is part of the FreeType project, and may only be used,
@@ -48,15 +48,15 @@
*/
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stream_OpenBzip2
*
* @description:
* Open a new stream to parse bzip2-compressed font files. This is
- * mainly used to support the compressed `*.pcf.bz2' fonts that come
- * with XFree86.
+ * mainly used to support the compressed `*.pcf.bz2` fonts that come with
+ * XFree86.
*
* @input:
* stream ::
@@ -71,9 +71,9 @@
* @note:
* The source stream must be opened _before_ calling this function.
*
- * Calling the internal function `FT_Stream_Close' on the new stream will
- * *not* call `FT_Stream_Close' on the source stream. None of the stream
- * objects will be released to the heap.
+ * Calling the internal function `FT_Stream_Close` on the new stream will
+ * **not** call `FT_Stream_Close` on the source stream. None of the
+ * stream objects will be released to the heap.
*
* The stream implementation is very basic and resets the decompression
* process each time seeking backwards is needed within the stream.
@@ -81,10 +81,10 @@
* In certain builds of the library, bzip2 compression recognition is
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
* This means that if no font driver is capable of handling the raw
- * compressed file, the library will try to open a bzip2 compressed stream
- * from it and re-open the face with it.
+ * compressed file, the library will try to open a bzip2 compressed
+ * stream from it and re-open the face with it.
*
- * This function may return `FT_Err_Unimplemented_Feature' if your build
+ * This function may return `FT_Err_Unimplemented_Feature` if your build
* of FreeType was not compiled with bzip2 support.
*/
FT_EXPORT( FT_Error )
diff --git a/include/freetype/ftcache.h b/include/freetype/ftcache.h
index 5dedb52..0d589d0 100644
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -4,7 +4,7 @@
*
* FreeType Cache subsystem (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- /*************************************************************************
+ /**************************************************************************
*
* @section:
* cache_subsystem
@@ -44,7 +44,7 @@
* objects, as well as caching information like character maps and glyph
* images while limiting their maximum memory usage.
*
- * Note that all types and functions begin with the `FTC_' prefix.
+ * Note that all types and functions begin with the `FTC_` prefix.
*
* The cache is highly portable and thus doesn't know anything about the
* fonts installed on your system, or how to access them. This implies
@@ -59,7 +59,7 @@
* to convert an @FTC_FaceID into a new @FT_Face object. The latter is
* then completely managed by the cache, including its termination
* through @FT_Done_Face. To monitor termination of face objects, the
- * finalizer callback in the `generic' field of the @FT_Face object can
+ * finalizer callback in the `generic` field of the @FT_Face object can
* be used, which might also be used to store the @FTC_FaceID of the
* face.
*
@@ -69,14 +69,14 @@
* possible.
*
* Note that for the cache to work correctly, the face ID values must be
- * *persistent*, which means that the contents they point to should not
+ * **persistent**, which means that the contents they point to should not
* change at runtime, or that their value should not become invalid.
*
* If this is unavoidable (e.g., when a font is uninstalled at runtime),
* you should call @FTC_Manager_RemoveFaceID as soon as possible, to let
- * the cache get rid of any references to the old @FTC_FaceID it may
- * keep internally. Failure to do so will lead to incorrect behaviour
- * or even crashes.
+ * the cache get rid of any references to the old @FTC_FaceID it may keep
+ * internally. Failure to do so will lead to incorrect behaviour or even
+ * crashes.
*
* To use the cache, start with calling @FTC_Manager_New to create a new
* @FTC_Manager object, which models a single cache instance. You can
@@ -91,11 +91,11 @@
* later use @FTC_ImageCache_Lookup to retrieve the corresponding
* @FT_Glyph objects from the cache.
*
- * If you need lots of small bitmaps, it is much more memory efficient
- * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
- * returns @FTC_SBitRec structures, which are used to store small
- * bitmaps directly. (A small bitmap is one whose metrics and
- * dimensions all fit into 8-bit integers).
+ * If you need lots of small bitmaps, it is much more memory efficient to
+ * call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
+ * returns @FTC_SBitRec structures, which are used to store small bitmaps
+ * directly. (A small bitmap is one whose metrics and dimensions all fit
+ * into 8-bit integers).
*
* We hope to also provide a kerning cache in the near future.
*
@@ -142,7 +142,7 @@
/*************************************************************************/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FTC_FaceID
@@ -151,11 +151,11 @@
* An opaque pointer type that is used to identity face objects. The
* contents of such objects is application-dependent.
*
- * These pointers are typically used to point to a user-defined
- * structure containing a font file path, and face index.
+ * These pointers are typically used to point to a user-defined structure
+ * containing a font file path, and face index.
*
* @note:
- * Never use NULL as a valid @FTC_FaceID.
+ * Never use `NULL` as a valid @FTC_FaceID.
*
* Face IDs are passed by the client to the cache manager that calls,
* when needed, the @FTC_Face_Requester to translate them into new
@@ -166,13 +166,13 @@
* immediately call @FTC_Manager_RemoveFaceID before any other cache
* function.
*
- * Failure to do so will result in incorrect behaviour or even
- * memory leaks and crashes.
+ * Failure to do so will result in incorrect behaviour or even memory
+ * leaks and crashes.
*/
typedef FT_Pointer FTC_FaceID;
- /************************************************************************
+ /**************************************************************************
*
* @functype:
* FTC_Face_Requester
@@ -200,7 +200,7 @@
* FreeType error code. 0~means success.
*
* @note:
- * The third parameter `req_data' is the same as the one passed by the
+ * The third parameter `req_data` is the same as the one passed by the
* client when @FTC_Manager_New is called.
*
* The face requester should not perform funny things on the returned
@@ -233,20 +233,20 @@
* FTC_Manager
*
* @description:
- * This object corresponds to one instance of the cache-subsystem.
- * It is used to cache one or more @FT_Face objects, along with
- * corresponding @FT_Size objects.
+ * This object corresponds to one instance of the cache-subsystem. It is
+ * used to cache one or more @FT_Face objects, along with corresponding
+ * @FT_Size objects.
*
- * The manager intentionally limits the total number of opened
- * @FT_Face and @FT_Size objects to control memory usage. See the
- * `max_faces' and `max_sizes' parameters of @FTC_Manager_New.
+ * The manager intentionally limits the total number of opened @FT_Face
+ * and @FT_Size objects to control memory usage. See the `max_faces` and
+ * `max_sizes` parameters of @FTC_Manager_New.
*
- * The manager is also used to cache `nodes' of various types while
+ * The manager is also used to cache 'nodes' of various types while
* limiting their total memory usage.
*
- * All limitations are enforced by keeping lists of managed objects
- * in most-recently-used order, and flushing old nodes to make room
- * for new ones.
+ * All limitations are enforced by keeping lists of managed objects in
+ * most-recently-used order, and flushing old nodes to make room for new
+ * ones.
*/
typedef struct FTC_ManagerRec_* FTC_Manager;
@@ -258,13 +258,13 @@
*
* @description:
* An opaque handle to a cache node object. Each cache node is
- * reference-counted. A node with a count of~0 might be flushed
- * out of a full cache whenever a lookup request is performed.
+ * reference-counted. A node with a count of~0 might be flushed out of a
+ * full cache whenever a lookup request is performed.
*
- * If you look up nodes, you have the ability to `acquire' them,
- * i.e., to increment their reference count. This will prevent the
- * node from being flushed out of the cache until you explicitly
- * `release' it (see @FTC_Node_Unref).
+ * If you look up nodes, you have the ability to 'acquire' them, i.e., to
+ * increment their reference count. This will prevent the node from
+ * being flushed out of the cache until you explicitly 'release' it (see
+ * @FTC_Node_Unref).
*
* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup.
*/
@@ -284,30 +284,29 @@
* The parent FreeType library handle to use.
*
* max_faces ::
- * Maximum number of opened @FT_Face objects managed by
- * this cache instance. Use~0 for defaults.
+ * Maximum number of opened @FT_Face objects managed by this cache
+ * instance. Use~0 for defaults.
*
* max_sizes ::
- * Maximum number of opened @FT_Size objects managed by
- * this cache instance. Use~0 for defaults.
+ * Maximum number of opened @FT_Size objects managed by this cache
+ * instance. Use~0 for defaults.
*
* max_bytes ::
- * Maximum number of bytes to use for cached data nodes.
- * Use~0 for defaults. Note that this value does not
- * account for managed @FT_Face and @FT_Size objects.
+ * Maximum number of bytes to use for cached data nodes. Use~0 for
+ * defaults. Note that this value does not account for managed
+ * @FT_Face and @FT_Size objects.
*
* requester ::
- * An application-provided callback used to translate
- * face IDs into real @FT_Face objects.
+ * An application-provided callback used to translate face IDs into
+ * real @FT_Face objects.
*
* req_data ::
- * A generic pointer that is passed to the requester
- * each time it is called (see @FTC_Face_Requester).
+ * A generic pointer that is passed to the requester each time it is
+ * called (see @FTC_Face_Requester).
*
* @output:
* amanager ::
- * A handle to a new manager object. 0~in case of
- * failure.
+ * A handle to a new manager object. 0~in case of failure.
*
* @return:
* FreeType error code. 0~means success.
@@ -383,20 +382,20 @@
* should never try to discard it yourself.
*
* The @FT_Face object doesn't necessarily have a current size object
- * (i.e., face->size can be~0). If you need a specific `font size',
- * use @FTC_Manager_LookupSize instead.
+ * (i.e., face->size can be~0). If you need a specific 'font size', use
+ * @FTC_Manager_LookupSize instead.
*
- * Never change the face's transformation matrix (i.e., never call
- * the @FT_Set_Transform function) on a returned face! If you need
- * to transform glyphs, do it yourself after glyph loading.
+ * Never change the face's transformation matrix (i.e., never call the
+ * @FT_Set_Transform function) on a returned face! If you need to
+ * transform glyphs, do it yourself after glyph loading.
*
- * When you perform a lookup, out-of-memory errors are detected
- * _within_ the lookup and force incremental flushes of the cache
- * until enough memory is released for the lookup to succeed.
+ * When you perform a lookup, out-of-memory errors are detected _within_
+ * the lookup and force incremental flushes of the cache until enough
+ * memory is released for the lookup to succeed.
*
- * If a lookup fails with `FT_Err_Out_Of_Memory' the cache has
- * already been completely flushed, and still no memory was available
- * for the operation.
+ * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already
+ * been completely flushed, and still no memory was available for the
+ * operation.
*/
FT_EXPORT( FT_Error )
FTC_Manager_LookupFace( FTC_Manager manager,
@@ -410,9 +409,8 @@
* FTC_ScalerRec
*
* @description:
- * A structure used to describe a given character size in either
- * pixels or points to the cache manager. See
- * @FTC_Manager_LookupSize.
+ * A structure used to describe a given character size in either pixels
+ * or points to the cache manager. See @FTC_Manager_LookupSize.
*
* @fields:
* face_id ::
@@ -425,17 +423,17 @@
* The character height.
*
* pixel ::
- * A Boolean. If 1, the `width' and `height' fields are
- * interpreted as integer pixel character sizes.
- * Otherwise, they are expressed as 1/64th of points.
+ * A Boolean. If 1, the `width` and `height` fields are interpreted as
+ * integer pixel character sizes. Otherwise, they are expressed as
+ * 1/64th of points.
*
* x_res ::
- * Only used when `pixel' is value~0 to indicate the
- * horizontal resolution in dpi.
+ * Only used when `pixel` is value~0 to indicate the horizontal
+ * resolution in dpi.
*
* y_res ::
- * Only used when `pixel' is value~0 to indicate the
- * vertical resolution in dpi.
+ * Only used when `pixel` is value~0 to indicate the vertical
+ * resolution in dpi.
*
* @note:
* This type is mainly used to retrieve @FT_Size objects through the
@@ -491,18 +489,17 @@
* The returned @FT_Size object is always owned by the manager. You
* should never try to discard it by yourself.
*
- * You can access the parent @FT_Face object simply as `size->face'
- * if you need it. Note that this object is also owned by the
- * manager.
+ * You can access the parent @FT_Face object simply as `size->face` if
+ * you need it. Note that this object is also owned by the manager.
*
* @note:
- * When you perform a lookup, out-of-memory errors are detected
- * _within_ the lookup and force incremental flushes of the cache
- * until enough memory is released for the lookup to succeed.
+ * When you perform a lookup, out-of-memory errors are detected _within_
+ * the lookup and force incremental flushes of the cache until enough
+ * memory is released for the lookup to succeed.
*
- * If a lookup fails with `FT_Err_Out_Of_Memory' the cache has
- * already been completely flushed, and still no memory is available
- * for the operation.
+ * If a lookup fails with `FT_Err_Out_Of_Memory` the cache has already
+ * been completely flushed, and still no memory is available for the
+ * operation.
*/
FT_EXPORT( FT_Error )
FTC_Manager_LookupSize( FTC_Manager manager,
@@ -532,15 +529,15 @@
FTC_Manager manager );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FTC_Manager_RemoveFaceID
*
* @description:
- * A special function used to indicate to the cache manager that
- * a given @FTC_FaceID is no longer valid, either because its
- * content changed, or because it was deallocated or uninstalled.
+ * A special function used to indicate to the cache manager that a given
+ * @FTC_FaceID is no longer valid, either because its content changed, or
+ * because it was deallocated or uninstalled.
*
* @input:
* manager ::
@@ -551,11 +548,11 @@
*
* @note:
* This function flushes all nodes from the cache corresponding to this
- * `face_id', with the exception of nodes with a non-null reference
+ * `face_id`, with the exception of nodes with a non-null reference
* count.
*
- * Such nodes are however modified internally so as to never appear
- * in later lookups with the same `face_id' value, and to be immediately
+ * Such nodes are however modified internally so as to never appear in
+ * later lookups with the same `face_id` value, and to be immediately
* destroyed when released by all their users.
*
*/
@@ -564,20 +561,20 @@
FTC_FaceID face_id );
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FTC_CMapCache
*
* @description:
- * An opaque handle used to model a charmap cache. This cache is to
- * hold character codes -> glyph indices mappings.
+ * An opaque handle used to model a charmap cache. This cache is to hold
+ * character codes -> glyph indices mappings.
*
*/
typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FTC_CMapCache_New
@@ -591,7 +588,7 @@
*
* @output:
* acache ::
- * A new cache handle. NULL in case of error.
+ * A new cache handle. `NULL` in case of error.
*
* @return:
* FreeType error code. 0~means success.
@@ -606,7 +603,7 @@
FTC_CMapCache *acache );
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FTC_CMapCache_Lookup
@@ -630,7 +627,7 @@
* The character code (in the corresponding charmap).
*
* @return:
- * Glyph index. 0~means `no glyph'.
+ * Glyph index. 0~means 'no glyph'.
*
*/
FT_EXPORT( FT_UInt )
@@ -651,7 +648,7 @@
/*************************************************************************/
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* FTC_ImageTypeRec
@@ -683,7 +680,7 @@
} FTC_ImageTypeRec;
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FTC_ImageType
@@ -710,9 +707,9 @@
* FTC_ImageCache
*
* @description:
- * A handle to a glyph image cache object. They are designed to
- * hold many distinct glyph images while not exceeding a certain
- * memory threshold.
+ * A handle to a glyph image cache object. They are designed to hold
+ * many distinct glyph images while not exceeding a certain memory
+ * threshold.
*/
typedef struct FTC_ImageCacheRec_* FTC_ImageCache;
@@ -761,32 +758,29 @@
*
* @output:
* aglyph ::
- * The corresponding @FT_Glyph object. 0~in case of
- * failure.
+ * The corresponding @FT_Glyph object. 0~in case of failure.
*
* anode ::
- * Used to return the address of the corresponding cache
- * node after incrementing its reference count (see note
- * below).
+ * Used to return the address of the corresponding cache node after
+ * incrementing its reference count (see note below).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* The returned glyph is owned and managed by the glyph image cache.
- * Never try to transform or discard it manually! You can however
- * create a copy with @FT_Glyph_Copy and modify the new one.
+ * Never try to transform or discard it manually! You can however create
+ * a copy with @FT_Glyph_Copy and modify the new one.
*
- * If `anode' is _not_ NULL, it receives the address of the cache
- * node containing the glyph image, after increasing its reference
- * count. This ensures that the node (as well as the @FT_Glyph) will
- * always be kept in the cache until you call @FTC_Node_Unref to
- * `release' it.
+ * If `anode` is _not_ `NULL`, it receives the address of the cache node
+ * containing the glyph image, after increasing its reference count.
+ * This ensures that the node (as well as the @FT_Glyph) will always be
+ * kept in the cache until you call @FTC_Node_Unref to 'release' it.
*
- * If `anode' is NULL, the cache node is left unchanged, which means
- * that the @FT_Glyph could be flushed out of the cache on the next
- * call to one of the caching sub-system APIs. Don't assume that it
- * is persistent!
+ * If `anode` is `NULL`, the cache node is left unchanged, which means
+ * that the @FT_Glyph could be flushed out of the cache on the next call
+ * to one of the caching sub-system APIs. Don't assume that it is
+ * persistent!
*/
FT_EXPORT( FT_Error )
FTC_ImageCache_Lookup( FTC_ImageCache cache,
@@ -802,8 +796,8 @@
* FTC_ImageCache_LookupScaler
*
* @description:
- * A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec
- * to specify the face ID and its size.
+ * A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec to
+ * specify the face ID and its size.
*
* @input:
* cache ::
@@ -820,32 +814,29 @@
*
* @output:
* aglyph ::
- * The corresponding @FT_Glyph object. 0~in case of
- * failure.
+ * The corresponding @FT_Glyph object. 0~in case of failure.
*
* anode ::
- * Used to return the address of the corresponding
- * cache node after incrementing its reference count
- * (see note below).
+ * Used to return the address of the corresponding cache node after
+ * incrementing its reference count (see note below).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* The returned glyph is owned and managed by the glyph image cache.
- * Never try to transform or discard it manually! You can however
- * create a copy with @FT_Glyph_Copy and modify the new one.
+ * Never try to transform or discard it manually! You can however create
+ * a copy with @FT_Glyph_Copy and modify the new one.
*
- * If `anode' is _not_ NULL, it receives the address of the cache
- * node containing the glyph image, after increasing its reference
- * count. This ensures that the node (as well as the @FT_Glyph) will
- * always be kept in the cache until you call @FTC_Node_Unref to
- * `release' it.
+ * If `anode` is _not_ `NULL`, it receives the address of the cache node
+ * containing the glyph image, after increasing its reference count.
+ * This ensures that the node (as well as the @FT_Glyph) will always be
+ * kept in the cache until you call @FTC_Node_Unref to 'release' it.
*
- * If `anode' is NULL, the cache node is left unchanged, which means
- * that the @FT_Glyph could be flushed out of the cache on the next
- * call to one of the caching sub-system APIs. Don't assume that it
- * is persistent!
+ * If `anode` is `NULL`, the cache node is left unchanged, which means
+ * that the @FT_Glyph could be flushed out of the cache on the next call
+ * to one of the caching sub-system APIs. Don't assume that it is
+ * persistent!
*
* Calls to @FT_Set_Char_Size and friends have no effect on cached
* glyphs; you should always use the FreeType cache API instead.
@@ -865,8 +856,8 @@
* FTC_SBit
*
* @description:
- * A handle to a small bitmap descriptor. See the @FTC_SBitRec
- * structure for details.
+ * A handle to a small bitmap descriptor. See the @FTC_SBitRec structure
+ * for details.
*/
typedef struct FTC_SBitRec_* FTC_SBit;
@@ -887,15 +878,13 @@
* The bitmap height in pixels.
*
* left ::
- * The horizontal distance from the pen position to the
- * left bitmap border (a.k.a. `left side bearing', or
- * `lsb').
+ * The horizontal distance from the pen position to the left bitmap
+ * border (a.k.a. 'left side bearing', or 'lsb').
*
* top ::
- * The vertical distance from the pen position (on the
- * baseline) to the upper bitmap border (a.k.a. `top
- * side bearing'). The distance is positive for upwards
- * y~coordinates.
+ * The vertical distance from the pen position (on the baseline) to the
+ * upper bitmap border (a.k.a. 'top side bearing'). The distance is
+ * positive for upwards y~coordinates.
*
* format ::
* The format of the glyph bitmap (monochrome or gray).
@@ -904,8 +893,7 @@
* Maximum gray level value (in the range 1 to~255).
*
* pitch ::
- * The number of bytes per bitmap line. May be positive
- * or negative.
+ * The number of bytes per bitmap line. May be positive or negative.
*
* xadvance ::
* The horizontal advance width in pixels.
@@ -941,9 +929,9 @@
*
* @description:
* A handle to a small bitmap cache. These are special cache objects
- * used to store small glyph bitmaps (and anti-aliased pixmaps) in a
- * much more efficient way than the traditional glyph image cache
- * implemented by @FTC_ImageCache.
+ * used to store small glyph bitmaps (and anti-aliased pixmaps) in a much
+ * more efficient way than the traditional glyph image cache implemented
+ * by @FTC_ImageCache.
*/
typedef struct FTC_SBitCacheRec_* FTC_SBitCache;
@@ -962,7 +950,7 @@
*
* @output:
* acache ::
- * A handle to the new sbit cache. NULL in case of error.
+ * A handle to the new sbit cache. `NULL` in case of error.
*
* @return:
* FreeType error code. 0~means success.
@@ -978,8 +966,8 @@
* FTC_SBitCache_Lookup
*
* @description:
- * Look up a given small glyph bitmap in a given sbit cache and
- * `lock' it to prevent its flushing from the cache until needed.
+ * Look up a given small glyph bitmap in a given sbit cache and 'lock' it
+ * to prevent its flushing from the cache until needed.
*
* @input:
* cache ::
@@ -996,31 +984,30 @@
* A handle to a small bitmap descriptor.
*
* anode ::
- * Used to return the address of the corresponding cache
- * node after incrementing its reference count (see note
- * below).
+ * Used to return the address of the corresponding cache node after
+ * incrementing its reference count (see note below).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The small bitmap descriptor and its bit buffer are owned by the
- * cache and should never be freed by the application. They might
- * as well disappear from memory on the next cache lookup, so don't
- * treat them as persistent data.
+ * The small bitmap descriptor and its bit buffer are owned by the cache
+ * and should never be freed by the application. They might as well
+ * disappear from memory on the next cache lookup, so don't treat them as
+ * persistent data.
*
- * The descriptor's `buffer' field is set to~0 to indicate a missing
+ * The descriptor's `buffer` field is set to~0 to indicate a missing
* glyph bitmap.
*
- * If `anode' is _not_ NULL, it receives the address of the cache
- * node containing the bitmap, after increasing its reference count.
- * This ensures that the node (as well as the image) will always be
- * kept in the cache until you call @FTC_Node_Unref to `release' it.
+ * If `anode` is _not_ `NULL`, it receives the address of the cache node
+ * containing the bitmap, after increasing its reference count. This
+ * ensures that the node (as well as the image) will always be kept in
+ * the cache until you call @FTC_Node_Unref to 'release' it.
*
- * If `anode' is NULL, the cache node is left unchanged, which means
- * that the bitmap could be flushed out of the cache on the next
- * call to one of the caching sub-system APIs. Don't assume that it
- * is persistent!
+ * If `anode` is `NULL`, the cache node is left unchanged, which means
+ * that the bitmap could be flushed out of the cache on the next call to
+ * one of the caching sub-system APIs. Don't assume that it is
+ * persistent!
*/
FT_EXPORT( FT_Error )
FTC_SBitCache_Lookup( FTC_SBitCache cache,
@@ -1036,8 +1023,8 @@
* FTC_SBitCache_LookupScaler
*
* @description:
- * A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec
- * to specify the face ID and its size.
+ * A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec to
+ * specify the face ID and its size.
*
* @input:
* cache ::
@@ -1057,31 +1044,30 @@
* A handle to a small bitmap descriptor.
*
* anode ::
- * Used to return the address of the corresponding
- * cache node after incrementing its reference count
- * (see note below).
+ * Used to return the address of the corresponding cache node after
+ * incrementing its reference count (see note below).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The small bitmap descriptor and its bit buffer are owned by the
- * cache and should never be freed by the application. They might
- * as well disappear from memory on the next cache lookup, so don't
- * treat them as persistent data.
+ * The small bitmap descriptor and its bit buffer are owned by the cache
+ * and should never be freed by the application. They might as well
+ * disappear from memory on the next cache lookup, so don't treat them as
+ * persistent data.
*
- * The descriptor's `buffer' field is set to~0 to indicate a missing
+ * The descriptor's `buffer` field is set to~0 to indicate a missing
* glyph bitmap.
*
- * If `anode' is _not_ NULL, it receives the address of the cache
- * node containing the bitmap, after increasing its reference count.
- * This ensures that the node (as well as the image) will always be
- * kept in the cache until you call @FTC_Node_Unref to `release' it.
+ * If `anode` is _not_ `NULL`, it receives the address of the cache node
+ * containing the bitmap, after increasing its reference count. This
+ * ensures that the node (as well as the image) will always be kept in
+ * the cache until you call @FTC_Node_Unref to 'release' it.
*
- * If `anode' is NULL, the cache node is left unchanged, which means
- * that the bitmap could be flushed out of the cache on the next
- * call to one of the caching sub-system APIs. Don't assume that it
- * is persistent!
+ * If `anode` is `NULL`, the cache node is left unchanged, which means
+ * that the bitmap could be flushed out of the cache on the next call to
+ * one of the caching sub-system APIs. Don't assume that it is
+ * persistent!
*/
FT_EXPORT( FT_Error )
FTC_SBitCache_LookupScaler( FTC_SBitCache cache,
diff --git a/include/freetype/ftchapters.h b/include/freetype/ftchapters.h
index f4297d3..2ee2697 100644
--- a/include/freetype/ftchapters.h
+++ b/include/freetype/ftchapters.h
@@ -6,7 +6,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* general_remarks
@@ -21,7 +21,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* core_api
@@ -44,7 +44,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* format_specific
@@ -67,7 +67,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* module_specific
@@ -88,7 +88,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* cache_subsystem
@@ -102,7 +102,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* support_api
@@ -127,7 +127,7 @@
*/
- /****************************************************************************
+ /**************************************************************************
*
* @chapter:
* error_codes
diff --git a/include/freetype/ftcid.h b/include/freetype/ftcid.h
index b427cbd..8eafc1c 100644
--- a/include/freetype/ftcid.h
+++ b/include/freetype/ftcid.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing CID font information (specification).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* Dereg Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,7 +50,7 @@
*/
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_CID_Registry_Ordering_Supplement
@@ -90,15 +90,15 @@
FT_Int *supplement );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_CID_Is_Internally_CID_Keyed
*
* @description:
- * Retrieve the type of the input face, CID keyed or not. In
- * contrast to the @FT_IS_CID_KEYED macro this function returns
- * successfully also for CID-keyed fonts in an SFNT wrapper.
+ * Retrieve the type of the input face, CID keyed or not. In contrast
+ * to the @FT_IS_CID_KEYED macro this function returns successfully also
+ * for CID-keyed fonts in an SFNT wrapper.
*
* @input:
* face ::
@@ -112,8 +112,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function only works with CID faces and OpenType fonts,
- * returning an error otherwise.
+ * This function only works with CID faces and OpenType fonts, returning
+ * an error otherwise.
*
* @since:
* 2.3.9
@@ -123,7 +123,7 @@
FT_Bool *is_cid );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_CID_From_Glyph_Index
@@ -146,8 +146,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function only works with CID faces and OpenType fonts,
- * returning an error otherwise.
+ * This function only works with CID faces and OpenType fonts, returning
+ * an error otherwise.
*
* @since:
* 2.3.9
diff --git a/include/freetype/ftcolor.h b/include/freetype/ftcolor.h
index e4fa4af..cf18021 100644
--- a/include/freetype/ftcolor.h
+++ b/include/freetype/ftcolor.h
@@ -4,7 +4,7 @@
*
* FreeType's glyph color management (specification).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -41,11 +41,11 @@
* Glyph Color Management
*
* @abstract:
- * Retrieving and manipulating OpenType's `CPAL' table data.
+ * Retrieving and manipulating OpenType's 'CPAL' table data.
*
* @description:
* The functions described here allow access and manipulation of color
- * palette entries in OpenType's `CPAL' tables.
+ * palette entries in OpenType's 'CPAL' tables.
*/
@@ -55,7 +55,7 @@
* FT_Color
*
* @description:
- * This structure models a BGRA color value of a `CPAL' palette entry.
+ * This structure models a BGRA color value of a 'CPAL' palette entry.
*
* The used color space is sRGB; the colors are not pre-multiplied, and
* alpha values must be explicitly set.
@@ -92,9 +92,9 @@
* FT_PALETTE_XXX
*
* @description:
- * A list of bit field constants used in the `palette_flags' array of
- * the @FT_Palette_Data structure to indicate for which background a
- * palette with a given index is usable.
+ * A list of bit field constants used in the `palette_flags` array of the
+ * @FT_Palette_Data structure to indicate for which background a palette
+ * with a given index is usable.
*
* @values:
* FT_PALETTE_FOR_LIGHT_BACKGROUND ::
@@ -102,8 +102,8 @@
* light background such as white.
*
* FT_PALETTE_FOR_DARK_BACKGROUND ::
- * The palette is appropriate to use when displaying the font on a
- * dark background such as black.
+ * The palette is appropriate to use when displaying the font on a dark
+ * background such as black.
*
* @since:
* 2.10
@@ -118,29 +118,29 @@
* FT_Palette_Data
*
* @description:
- * This structure holds the data of the `CPAL' table.
+ * This structure holds the data of the 'CPAL' table.
*
* @fields:
* num_palettes ::
* The number of palettes.
*
* palette_name_ids ::
- * A read-only array of palette name IDs with `num_palettes' elements,
- * corresponding to entries like `dark' or `light' in the font's
- * `name' table.
+ * A read-only array of palette name IDs with `num_palettes` elements,
+ * corresponding to entries like 'dark' or 'light' in the font's 'name'
+ * table.
*
- * An empty name ID in the `CPAL' table gets represented as value
+ * An empty name ID in the 'CPAL' table gets represented as value
* 0xFFFF.
*
- * NULL if the font's `CPAL' table doesn't contain appropriate data.
+ * `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
*
* palette_flags ::
- * A read-only array of palette flags with `num_palettes' elements.
+ * A read-only array of palette flags with `num_palettes` elements.
* Possible values are an ORed combination of
* @FT_PALETTE_FOR_LIGHT_BACKGROUND and
* @FT_PALETTE_FOR_DARK_BACKGROUND.
*
- * NULL if the font's `CPAL' table doesn't contain appropriate data.
+ * `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
*
* num_palette_entries ::
* The number of entries in a single palette. All palettes have the
@@ -148,17 +148,16 @@
*
* palette_entry_name_ids ::
* A read-only array of palette entry name IDs with
- * `num_palette_entries'. In each palette, entries with the same
- * index have the same function. For example, index~0 might
- * correspond to string `outline' in the font's `name' table to
- * indicate that this palette entry is used for outlines, index~1
- * might correspond to `fill' to indicate the filling color palette
- * entry, etc.
+ * `num_palette_entries`. In each palette, entries with the same index
+ * have the same function. For example, index~0 might correspond to
+ * string 'outline' in the font's 'name' table to indicate that this
+ * palette entry is used for outlines, index~1 might correspond to
+ * 'fill' to indicate the filling color palette entry, etc.
*
- * An empty entry name ID in the `CPAL' table gets represented as
- * value 0xFFFF.
+ * An empty entry name ID in the 'CPAL' table gets represented as value
+ * 0xFFFF.
*
- * NULL if the font's `CPAL' table doesn't contain appropriate data.
+ * `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
*
* @note:
* Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to
@@ -201,7 +200,7 @@
* All arrays in the returned @FT_Palette_Data structure are read-only.
*
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
*
* @since:
* 2.10
@@ -227,7 +226,7 @@
*
* A corollary of (2) is that calling the function, then modifying some
* values, then calling the function again with the same arguments resets
- * all color entries to the original `CPAL' values; all user modifications
+ * all color entries to the original 'CPAL' values; all user modifications
* are lost.
*
* @input:
@@ -239,24 +238,22 @@
*
* @output:
* apalette ::
- * An array of color entries for a palette with index `palette_index'.
- * If `apalette' is set to NULL, no array gets returned (and no color
- * entries can be modified).
+ * An array of color entries for a palette with index `palette_index`,
+ * having `num_palette_entries` elements (as found in the
+ * `FT_Palette_Data` structure). If `apalette` is set to `NULL`, no
+ * array gets returned (and no color entries can be modified).
*
- * In case the font doesn't support color palettes, NULL is returned.
+ * In case the font doesn't support color palettes, `NULL` is returned.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The number of color entries is given by the `num_palette_entries'
- * field in the @FT_Palette_Data structure.
- *
- * The array pointed to by `apalette_entries' is owned and managed by
+ * The array pointed to by `apalette_entries` is owned and managed by
* FreeType.
*
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
*
* @since:
* 2.10
@@ -273,7 +270,7 @@
* FT_Palette_Set_Foreground_Color
*
* @description:
- * `COLR' uses palette index 0xFFFF to indicate a `text foreground
+ * 'COLR' uses palette index 0xFFFF to indicate a 'text foreground
* color'. This function sets this value.
*
* @input:
@@ -281,7 +278,7 @@
* The source face handle.
*
* foreground_color ::
- * An `FT_Color' structure to define the text foreground color.
+ * An `FT_Color` structure to define the text foreground color.
*
* @return:
* FreeType error code. 0~means success.
@@ -289,13 +286,12 @@
* @note:
* If this function isn't called, the text foreground color is set to
* white opaque (BGRA value 0xFFFFFFFF) if
- * @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current
- * palette, and black opaque (BGRA value 0x000000FF) otherwise,
- * including the case that no palette types are available in the `CPAL'
- * table.
+ * @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current palette,
+ * and black opaque (BGRA value 0x000000FF) otherwise, including the case
+ * that no palette types are available in the 'CPAL' table.
*
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
*
* @since:
* 2.10
diff --git a/include/freetype/ftdriver.h b/include/freetype/ftdriver.h
index b0a53d6..497bde9 100644
--- a/include/freetype/ftdriver.h
+++ b/include/freetype/ftdriver.h
@@ -4,7 +4,7 @@
*
* FreeType API for controlling driver modules (specification only).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,8 +50,8 @@
* @FT_Property_Get. The following lists the available properties
* together with the necessary macros and structures.
*
- * Note that the auto-hinter's module name is `autofitter' for
- * historical reasons.
+ * Note that the auto-hinter's module name is 'autofitter' for historical
+ * reasons.
*
* Available properties are @increase-x-height, @no-stem-darkening
* (experimental), @darkening-parameters (experimental), @warping
@@ -74,18 +74,18 @@
* Controlling the CFF driver module.
*
* @description:
- * While FreeType's CFF driver doesn't expose API functions by itself,
- * it is possible to control its behaviour with @FT_Property_Set and
+ * While FreeType's CFF driver doesn't expose API functions by itself, it
+ * is possible to control its behaviour with @FT_Property_Set and
* @FT_Property_Get.
*
- * The CFF driver's module name is `cff'.
+ * The CFF driver's module name is 'cff'.
*
* Available properties are @hinting-engine, @no-stem-darkening,
* @darkening-parameters, and @random-seed, as documented in the
* @properties section.
*
*
- * *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
+ * **Hinting and antialiasing principles of the new engine**
*
* The rasterizer is positioning horizontal features (e.g., ascender
* height & x-height, or crossbars) on the pixel grid and minimizing the
@@ -93,35 +93,34 @@
* features (vertical stems) on the pixel grid without hinting, thus
* representing the stem position and weight accurately. Sometimes the
* vertical stems may be only partially black. In this context,
- * `antialiasing' means that stems are not positioned exactly on pixel
+ * 'antialiasing' means that stems are not positioned exactly on pixel
* borders, causing a fuzzy appearance.
*
* There are two principles behind this approach.
*
- * 1) No hinting in the horizontal direction: Unlike `superhinted'
+ * 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.
+ * 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.
*
* One of the reasons to not hint horizontally is antialiasing for LCD
- * screens: The pixel geometry of modern displays supplies three
- * vertical subpixels 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 subpixels 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.
+ * screens: The pixel geometry of modern displays supplies three vertical
+ * subpixels 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 subpixels 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.
*
* 2) Alignment in the vertical direction: Weights and spacing along the
* y~axis are less critical; what is much more important is the visual
@@ -132,16 +131,16 @@
*
* 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.
+ * '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.
*
* 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
+ * '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.
+ * Unless there are conflicting hstems, the smallest movement is taken to
+ * minimize distortion.
*
*/
@@ -158,13 +157,13 @@
* Controlling the PCF driver module.
*
* @description:
- * While FreeType's PCF driver doesn't expose API functions by itself,
- * it is possible to control its behaviour with @FT_Property_Set and
+ * While FreeType's PCF driver doesn't expose API functions by itself, it
+ * is possible to control its behaviour with @FT_Property_Set and
* @FT_Property_Get. Right now, there is a single property
* @no-long-family-names available if FreeType is compiled with
* PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
*
- * The PCF driver's module name is `pcf'.
+ * The PCF driver's module name is 'pcf'.
*
*/
@@ -187,15 +186,15 @@
* Behind the scenes, both drivers use the Adobe CFF engine for hinting;
* however, the used properties must be specified separately.
*
- * The Type~1 driver's module name is `type1'; the CID driver's module
- * name is `t1cid'.
+ * The Type~1 driver's module name is 'type1'; the CID driver's module
+ * name is 't1cid'.
*
* Available properties are @hinting-engine, @no-stem-darkening,
* @darkening-parameters, and @random-seed, as documented in the
* @properties section.
*
- * Please see the @cff_driver section for more details on the new
- * hinting engine.
+ * Please see the @cff_driver section for more details on the new hinting
+ * engine.
*
*/
@@ -217,7 +216,7 @@
* and @FT_Property_Get. The following lists the available properties
* together with the necessary macros and structures.
*
- * The TrueType driver's module name is `truetype'.
+ * The TrueType driver's module name is 'truetype'.
*
* A single property @interpreter-version is available, as documented in
* the @properties section.
@@ -225,36 +224,36 @@
* We start with a list of definitions, kindly provided by Greg
* Hitchcock.
*
- * _Bi-Level_ _Rendering_
+ * _Bi-Level Rendering_
*
* Monochromatic rendering, exclusively used in the early days of
* TrueType by both Apple and Microsoft. Microsoft's GDI interface
* supported hinting of the right-side bearing point, such that the
* advance width could be non-linear. Most often this was done to
* achieve some level of glyph symmetry. To enable reasonable
- * performance (e.g., not having to run hinting on all glyphs just to
- * get the widths) there was a bit in the head table indicating if the
- * side bearing was hinted, and additional tables, `hdmx' and `LTSH', to
- * cache hinting widths across multiple sizes and device aspect ratios.
+ * performance (e.g., not having to run hinting on all glyphs just to get
+ * the widths) there was a bit in the head table indicating if the side
+ * bearing was hinted, and additional tables, 'hdmx' and 'LTSH', to cache
+ * hinting widths across multiple sizes and device aspect ratios.
*
- * _Font_ _Smoothing_
+ * _Font Smoothing_
*
* Microsoft's GDI implementation of anti-aliasing. Not traditional
* anti-aliasing as the outlines were hinted before the sampling. The
* widths matched the bi-level rendering.
*
- * _ClearType_ _Rendering_
+ * _ClearType Rendering_
*
* Technique that uses physical subpixels to improve rendering on LCD
* (and other) displays. Because of the higher resolution, many methods
- * of improving symmetry in glyphs through hinting the right-side
- * bearing were no longer necessary. This lead to what GDI calls
- * `natural widths' ClearType, see
- * http://www.beatstamm.com/typography/RTRCh4.htm#Sec21. Since hinting
+ * of improving symmetry in glyphs through hinting the right-side bearing
+ * were no longer necessary. This lead to what GDI calls 'natural
+ * widths' ClearType, see
+ * http://rastertragedy.com/RTRCh4.htm#Sec21. Since hinting
* has extra resolution, most non-linearity went away, but it is still
* possible for hints to change the advance widths in this mode.
*
- * _ClearType_ _Compatible_ _Widths_
+ * _ClearType Compatible Widths_
*
* One of the earliest challenges with ClearType was allowing the
* implementation in GDI to be selected without requiring all UI and
@@ -263,41 +262,41 @@
* to determine the width in bi-level rendering, and then re-run in
* ClearType, with the difference in widths being absorbed in the font
* hints for ClearType (mostly in the white space of hints); see
- * http://www.beatstamm.com/typography/RTRCh4.htm#Sec20. Somewhat by
+ * http://rastertragedy.com/RTRCh4.htm#Sec20. Somewhat by
* definition, compatible width ClearType allows for non-linear widths,
* but only when the bi-level version has non-linear widths.
*
- * _ClearType_ _Subpixel_ _Positioning_
+ * _ClearType Subpixel Positioning_
*
* One of the nice benefits of ClearType is the ability to more crisply
* display fractional widths; unfortunately, the GDI model of integer
* bitmaps did not support this. However, the WPF and Direct Write
- * frameworks do support fractional widths. DWrite calls this `natural
- * mode', not to be confused with GDI's `natural widths'. Subpixel
+ * frameworks do support fractional widths. DWrite calls this 'natural
+ * mode', not to be confused with GDI's 'natural widths'. Subpixel
* positioning, in the current implementation of Direct Write,
* unfortunately does not support hinted advance widths, see
- * http://www.beatstamm.com/typography/RTRCh4.htm#Sec22. Note that the
+ * http://rastertragedy.com/RTRCh4.htm#Sec22. Note that the
* TrueType interpreter fully allows the advance width to be adjusted in
* this mode, just the DWrite client will ignore those changes.
*
- * _ClearType_ _Backward_ _Compatibility_
+ * _ClearType Backward Compatibility_
*
* This is a set of exceptions made in the TrueType interpreter to
* minimize hinting techniques that were problematic with the extra
* resolution of ClearType; see
- * http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and
+ * http://rastertragedy.com/RTRCh4.htm#Sec1 and
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx.
- * This technique is not to be confused with ClearType compatible
- * widths. ClearType backward compatibility has no direct impact on
- * changing advance widths, but there might be an indirect impact on
- * disabling some deltas. This could be worked around in backward
- * compatibility mode.
+ * This technique is not to be confused with ClearType compatible widths.
+ * ClearType backward compatibility has no direct impact on changing
+ * advance widths, but there might be an indirect impact on disabling
+ * some deltas. This could be worked around in backward compatibility
+ * mode.
*
- * _Native_ _ClearType_ _Mode_
+ * _Native ClearType Mode_
*
- * (Not to be confused with `natural widths'.) This mode removes all
- * the exceptions in the TrueType interpreter when running with
- * ClearType. Any issues on widths would still apply, though.
+ * (Not to be confused with 'natural widths'.) This mode removes all the
+ * exceptions in the TrueType interpreter when running with ClearType.
+ * Any issues on widths would still apply, though.
*
*/
@@ -328,8 +327,8 @@
* FT_HINTING_XXX
*
* @description:
- * A list of constants used for the @hinting-engine property to
- * select the hinting engine for CFF, Type~1, and CID fonts.
+ * A list of constants used for the @hinting-engine property to select
+ * the hinting engine for CFF, Type~1, and CID fonts.
*
* @values:
* FT_HINTING_FREETYPE ::
@@ -356,46 +355,46 @@
* hinting-engine
*
* @description:
- * 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.
+ * 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.
*
* The same holds for the Type~1 and CID modules if compiled with
- * T1_CONFIG_OPTION_OLD_ENGINE.
+ * `T1_CONFIG_OPTION_OLD_ENGINE`.
*
- * For the `cff' module, the default engine is `freetype' if
- * CFF_CONFIG_OPTION_OLD_ENGINE is defined, and `adobe' otherwise.
+ * For the 'cff' module, the default engine is 'freetype' if
+ * `CFF_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' otherwise.
*
- * For both the `type1' and `t1cid' modules, the default engine is
- * `freetype' if T1_CONFIG_OPTION_OLD_ENGINE is defined, and `adobe'
+ * For both the 'type1' and 't1cid' modules, the default engine is
+ * 'freetype' if `T1_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe'
* otherwise.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values `adobe' or `freetype').
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
+ * variable (using values 'adobe' or 'freetype').
*
* @example:
* The following example code demonstrates how to select Adobe's hinting
- * engine for the `cff' module (omitting the error handling).
+ * engine for the 'cff' module (omitting the error handling).
*
- * {
+ * ```
* FT_Library library;
- * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE;
+ * FT_UInt hinting_engine = FT_HINTING_ADOBE;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "cff",
* "hinting-engine", &hinting_engine );
- * }
+ * ```
*
* @since:
- * 2.4.12 (for `cff' module)
+ * 2.4.12 (for 'cff' module)
*
- * 2.9 (for `type1' and `t1cid' modules)
+ * 2.9 (for 'type1' and 't1cid' modules)
*
*/
@@ -406,10 +405,10 @@
* no-stem-darkening
*
* @description:
- * All glyphs that pass through the auto-hinter will be emboldened
- * unless this property is set to TRUE. The same is true for the CFF,
- * Type~1, and CID font modules if the `Adobe' engine is selected (which
- * is the default).
+ * All glyphs that pass through the auto-hinter will be emboldened unless
+ * this property is set to TRUE. The same is true for the CFF, Type~1,
+ * and CID font modules if the 'Adobe' engine is selected (which is the
+ * default).
*
* Stem darkening emboldens glyphs at smaller sizes to make them more
* readable on common low-DPI screens when using linear alpha blending
@@ -420,39 +419,38 @@
* Gamma correction essentially lightens fonts since shades of grey are
* shifted to higher pixel values (=~higher brightness) to match the
* original intention to the reality of our screens. The side-effect is
- * that glyphs `thin out'. Mac OS~X and Adobe's proprietary font
+ * that glyphs 'thin out'. Mac OS~X and Adobe's proprietary font
* rendering library implement a counter-measure: stem darkening at
* smaller sizes where shades of gray dominate. By emboldening a glyph
* slightly in relation to its pixel size, individual pixels get higher
- * coverage of filled-in outlines and are therefore `blacker'. This
- * counteracts the `thinning out' of glyphs, making text remain readable
+ * coverage of filled-in outlines and are therefore 'blacker'. This
+ * counteracts the 'thinning out' of glyphs, making text remain readable
* at smaller sizes.
*
* By default, the Adobe engines for CFF, Type~1, and CID fonts darken
* stems at smaller sizes, regardless of hinting, to enhance contrast.
* Setting this property, stem darkening gets switched off.
*
- * For the auto-hinter, stem-darkening is experimental currently and
- * thus switched off by default (this is, `no-stem-darkening' is set to
- * TRUE by default). Total consistency with the CFF driver is not
- * achieved right now because the emboldening method differs and glyphs
- * must be scaled down on the Y-axis to keep outline points inside their
+ * For the auto-hinter, stem-darkening is experimental currently and thus
+ * switched off by default (this is, `no-stem-darkening` is set to TRUE
+ * by default). Total consistency with the CFF driver is not achieved
+ * right now because the emboldening method differs and glyphs must be
+ * scaled down on the Y-axis to keep outline points inside their
* precomputed blue zones. The smaller the size (especially 9ppem and
* down), the higher the loss of emboldening versus the CFF driver.
*
- * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is
- * set.
+ * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values 1 and 0 for `on' and `off', respectively).
- * It can also be set per face using @FT_Face_Properties with
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
+ * variable (using values 1 and 0 for 'on' and 'off', respectively). It
+ * can also be set per face using @FT_Face_Properties with
* @FT_PARAM_TAG_STEM_DARKENING.
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_Bool no_stem_darkening = TRUE;
*
@@ -461,14 +459,14 @@
*
* FT_Property_Set( library, "cff",
* "no-stem-darkening", &no_stem_darkening );
- * }
+ * ```
*
* @since:
- * 2.4.12 (for `cff' module)
+ * 2.4.12 (for 'cff' module)
*
- * 2.6.2 (for `autofitter' module)
+ * 2.6.2 (for 'autofitter' module)
*
- * 2.9 (for `type1' and `t1cid' modules)
+ * 2.9 (for 'type1' and 't1cid' modules)
*
*/
@@ -480,29 +478,29 @@
*
* @description:
* By default, the Adobe hinting engine, as used by the CFF, Type~1, and
- * CID font drivers, darkens stems as follows (if the
- * `no-stem-darkening' property isn't set):
+ * CID font drivers, darkens stems as follows (if the `no-stem-darkening`
+ * property isn't set):
*
- * {
+ * ```
* stem width <= 0.5px: darkening amount = 0.4px
* stem width = 1px: darkening amount = 0.275px
* stem width = 1.667px: darkening amount = 0.275px
* stem width >= 2.333px: darkening amount = 0px
- * }
+ * ```
*
* and piecewise linear in-between. At configuration time, these four
* control points can be set with the macro
- * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'; the CFF, Type~1, and CID
+ * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS`; the CFF, Type~1, and CID
* drivers share these values. At runtime, the control points can be
- * changed using the `darkening-parameters' property (see the example
+ * changed using the `darkening-parameters` property (see the example
* below that demonstrates this for the Type~1 driver).
*
* The x~values give the stem width, and the y~values the darkening
* amount. The unit is 1000th of pixels. All coordinate values must be
- * positive; the x~values must be monotonically increasing; the
- * y~values must be monotonically decreasing and smaller than or
- * equal to 500 (corresponding to half a pixel); the slope of each
- * linear piece must be shallower than -1 (e.g., -.4).
+ * positive; the x~values must be monotonically increasing; the y~values
+ * must be monotonically decreasing and smaller than or equal to 500
+ * (corresponding to half a pixel); the slope of each linear piece must
+ * be shallower than -1 (e.g., -.4).
*
* The auto-hinter provides this property, too, as an experimental
* feature. See @no-stem-darkening for more.
@@ -510,17 +508,17 @@
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
* variable, using eight comma-separated integers without spaces. Here
- * the above example, using `\' to break the line for readability.
+ * the above example, using `\` to break the line for readability.
*
- * {
+ * ```
* FREETYPE_PROPERTIES=\
* type1:darkening-parameters=500,300,1000,200,1500,100,2000,0
- * }
+ * ```
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_Int darken_params[8] = { 500, 300, // x1, y1
* 1000, 200, // x2, y2
@@ -532,14 +530,14 @@
*
* FT_Property_Set( library, "type1",
* "darkening-parameters", darken_params );
- * }
+ * ```
*
* @since:
- * 2.5.1 (for `cff' module)
+ * 2.5.1 (for 'cff' module)
*
- * 2.6.2 (for `autofitter' module)
+ * 2.6.2 (for 'autofitter' module)
*
- * 2.9 (for `type1' and `t1cid' modules)
+ * 2.9 (for 'type1' and 't1cid' modules)
*
*/
@@ -550,29 +548,29 @@
* random-seed
*
* @description:
- * By default, the seed value for the CFF `random' operator and the
- * similar `0 28 callothersubr pop' command for the Type~1 and CID
+ * By default, the seed value for the CFF 'random' operator and the
+ * similar '0 28 callothersubr pop' command for the Type~1 and CID
* drivers is set to a random value. However, mainly for debugging
- * purposes, it is often necessary to use a known value as a seed so
- * that the pseudo-random number sequences generated by `random' are
+ * purposes, it is often necessary to use a known value as a seed so that
+ * the pseudo-random number sequences generated by 'random' are
* repeatable.
*
- * The `random-seed' property does that. Its argument is a signed 32bit
+ * The `random-seed` property does that. Its argument is a signed 32bit
* integer; if the value is zero or negative, the seed given by the
- * `intitialRandomSeed' private DICT operator in a CFF file gets used
- * (or a default value if there is no such operator). If the value is
- * positive, use it instead of `initialRandomSeed', which is
- * consequently ignored.
+ * `intitialRandomSeed` private DICT operator in a CFF file gets used (or
+ * a default value if there is no such operator). If the value is
+ * positive, use it instead of `initialRandomSeed`, which is consequently
+ * ignored.
*
* @note:
- * This property can be set via the `FREETYPE_PROPERTIES' environment
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
* variable. It can also be set per face using @FT_Face_Properties with
* @FT_PARAM_TAG_RANDOM_SEED.
*
* @since:
- * 2.8 (for `cff' module)
+ * 2.8 (for 'cff' module)
*
- * 2.9 (for `type1' and `t1cid' modules)
+ * 2.9 (for 'type1' and 't1cid' modules)
*
*/
@@ -583,28 +581,28 @@
* no-long-family-names
*
* @description:
- * If PCF_CONFIG_OPTION_LONG_FAMILY_NAMES is active while compiling
+ * If `PCF_CONFIG_OPTION_LONG_FAMILY_NAMES` is active while compiling
* FreeType, the PCF driver constructs long family names.
*
- * There are many PCF fonts just called `Fixed' which look completely
+ * There are many PCF fonts just called 'Fixed' which look completely
* different, and which have nothing to do with each other. When
- * selecting `Fixed' in KDE or Gnome one gets results that appear rather
- * random, the style changes often if one changes the size and one
- * cannot select some fonts at all. The improve this situation, the PCF
- * module prepends the foundry name (plus a space) to the family name.
- * It also checks whether there are `wide' characters; all put together,
- * family names like `Sony Fixed' or `Misc Fixed Wide' are constructed.
+ * selecting 'Fixed' in KDE or Gnome one gets results that appear rather
+ * random, the style changes often if one changes the size and one cannot
+ * select some fonts at all. The improve this situation, the PCF module
+ * prepends the foundry name (plus a space) to the family name. It also
+ * checks whether there are 'wide' characters; all put together, family
+ * names like 'Sony Fixed' or 'Misc Fixed Wide' are constructed.
*
- * If `no-long-family-names' is set, this feature gets switched off.
+ * If `no-long-family-names` is set, this feature gets switched off.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values 1 and 0 for `on' and `off', respectively).
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
+ * variable (using values 1 and 0 for 'on' and 'off', respectively).
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_Bool no_long_family_names = TRUE;
*
@@ -614,7 +612,7 @@
* FT_Property_Set( library, "pcf",
* "no-long-family-names",
* &no_long_family_names );
- * }
+ * ```
*
* @since:
* 2.8
@@ -630,8 +628,8 @@
* A list of constants used for the @interpreter-version property to
* select the hinting engine for Truetype fonts.
*
- * The numeric value in the constant names represents the version
- * number as returned by the `GETINFO' bytecode instruction.
+ * The numeric value in the constant names represents the version number
+ * as returned by the 'GETINFO' bytecode instruction.
*
* @values:
* TT_INTERPRETER_VERSION_35 ::
@@ -642,38 +640,37 @@
* 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.
+ * 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
+ * It is used in FreeType to select the 'minimal' subpixel hinting
* code, a stripped-down and higher performance version of the
- * `Infinality' code.
+ * 'Infinality' code.
*
* @note:
- * This property controls the behaviour of the bytecode interpreter
- * and thus how outlines get hinted. It does *not* control how glyph
- * get rasterized! In particular, it does not control subpixel color
+ * This property controls the behaviour of the bytecode interpreter and
+ * thus how outlines get hinted. It does **not** control how glyph get
+ * rasterized! In particular, it does not control subpixel color
* filtering.
*
* If FreeType has not been compiled with the configuration option
- * TT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 or~40 causes
- * an `FT_Err_Unimplemented_Feature' error.
+ * `TT_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
- * numbers returned by a call to the `GETINFO' bytecode instruction are
- * more convoluted than desired.
+ * 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.
*
- * 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.
+ * 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.
*
- * {
+ * ```
* GETINFO framework version feature
* -------------------------------------------------------------------
* 3 GDI (Win 3.1), v1.0 16-bit, first version
@@ -696,15 +693,15 @@
* 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag
* DWrite (Win 8) in GETINFO opcode,
* Gray ClearType
- * }
+ * ```
*
- * The `version' field gives a rough orientation only, since some
+ * The 'version' field gives a rough orientation only, since some
* applications provided certain features much earlier (as an example,
* Microsoft Reader used subpixel and Y-direction ClearType already in
* Windows 2000). Similarly, updates to a given framework might include
* improved hinting support.
*
- * {
+ * ```
* version sampling rendering comment
* x y x y
* --------------------------------------------------------------
@@ -714,38 +711,38 @@
* v1.9 high high color-filter gray Color ClearType
* v2.1 high normal gray B/W Gray ClearType
* v2.1 high high gray gray Gray ClearType
- * }
+ * ```
*
* Color and Gray ClearType are the two available variants of
- * `Y-direction ClearType', meaning grayscale rasterization along the
+ * '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'.
+ * 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'.
*
- * `Normal' and `high' sampling describe the (virtual) resolution to
- * access the rasterized outline after the hinting process. `Normal'
+ * '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'.
+ * 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.
*
- * 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).
+ * 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).
*
- * 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.
+ * 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
@@ -759,25 +756,25 @@
* interpreter-version
*
* @description:
- * 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).
+ * 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
+ * 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.
+ * 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
- * `https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
- * Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2,
+ * 'https://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.
@@ -785,14 +782,14 @@
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values `35', `38', or `40').
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
+ * variable (using values '35', '38', or '40').
*
* @example:
* 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_35;
@@ -803,7 +800,7 @@
* FT_Property_Set( library, "truetype",
* "interpreter-version",
* &interpreter_version );
- * }
+ * ```
*
* @since:
* 2.5
@@ -816,7 +813,7 @@
* glyph-to-script-map
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
* The auto-hinter provides various script modules to hint glyphs.
* Examples of supported scripts are Latin or CJK. Before a glyph is
@@ -824,26 +821,26 @@
* the script is then determined based on Unicode character ranges, see
* below.
*
- * OpenType fonts, however, often provide much more glyphs than
- * character codes (small caps, superscripts, ligatures, swashes, etc.),
- * to be controlled by so-called `features'. Handling OpenType features
- * can be quite complicated and thus needs a separate library on top of
+ * OpenType fonts, however, often provide much more glyphs than character
+ * codes (small caps, superscripts, ligatures, swashes, etc.), to be
+ * controlled by so-called 'features'. Handling OpenType features can be
+ * quite complicated and thus needs a separate library on top of
* FreeType.
*
* The mapping between glyph indices and scripts (in the auto-hinter
- * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
- * array with `num_glyphs' elements, as found in the font's @FT_Face
- * structure. The `glyph-to-script-map' property returns a pointer to
- * this array, which can be modified as needed. Note that the
- * modification should happen before the first glyph gets processed by
- * the auto-hinter so that the global analysis of the font shapes
- * actually uses the modified mapping.
+ * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an array
+ * with `num_glyphs` elements, as found in the font's @FT_Face structure.
+ * The `glyph-to-script-map` property returns a pointer to this array,
+ * which can be modified as needed. Note that the modification should
+ * happen before the first glyph gets processed by the auto-hinter so
+ * that the global analysis of the font shapes actually uses the modified
+ * mapping.
*
* @example:
- * The following example code demonstrates how to access it (omitting
- * the error handling).
+ * The following example code demonstrates how to access it (omitting the
+ * error handling).
*
- * {
+ * ```
* FT_Library library;
* FT_Face face;
* FT_Prop_GlyphToScriptMap prop;
@@ -860,7 +857,7 @@
* // adjust `prop.map' as needed right here
*
* FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT );
- * }
+ * ```
*
* @since:
* 2.4.11
@@ -874,7 +871,7 @@
* FT_AUTOHINTER_SCRIPT_XXX
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
* A list of constants used for the @glyph-to-script-map property to
* specify the script submodule the auto-hinter should use for hinting a
@@ -885,14 +882,14 @@
* Don't auto-hint this glyph.
*
* FT_AUTOHINTER_SCRIPT_LATIN ::
- * Apply the latin auto-hinter. For the auto-hinter, `latin' is a
- * very broad term, including Cyrillic and Greek also since characters
- * from those scripts share the same design constraints.
+ * Apply the latin auto-hinter. For the auto-hinter, 'latin' is a very
+ * broad term, including Cyrillic and Greek also since characters from
+ * those scripts share the same design constraints.
*
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
- * {
+ * ```
* U+0020 - U+007F // Basic Latin (no control characters)
* U+00A0 - U+00FF // Latin-1 Supplement (no control characters)
* U+0100 - U+017F // Latin Extended-A
@@ -921,7 +918,7 @@
* U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures)
* U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols
* U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement
- * }
+ * ```
*
* FT_AUTOHINTER_SCRIPT_CJK ::
* Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old
@@ -930,7 +927,7 @@
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
- * {
+ * ```
* U+1100 - U+11FF // Hangul Jamo
* U+2E80 - U+2EFF // CJK Radicals Supplement
* U+2F00 - U+2FDF // Kangxi Radicals
@@ -963,7 +960,7 @@
* U+2A700 - U+2B73F // CJK Unified Ideographs Extension C
* U+2B740 - U+2B81F // CJK Unified Ideographs Extension D
* U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement
- * }
+ * ```
*
* FT_AUTOHINTER_SCRIPT_INDIC ::
* Apply the indic auto-hinter, covering all major scripts from the
@@ -973,7 +970,7 @@
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
- * {
+ * ```
* U+0900 - U+0DFF // Indic Range
* U+0F00 - U+0FFF // Tibetan
* U+1900 - U+194F // Limbu
@@ -981,7 +978,7 @@
* U+A800 - U+A82F // Syloti Nagri
* U+ABC0 - U+ABFF // Meetei Mayek
* U+11800 - U+118DF // Sharada
- * }
+ * ```
*
* Note that currently Indic support is rudimentary only, missing blue
* zone support.
@@ -1002,7 +999,7 @@
* FT_Prop_GlyphToScriptMap
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
* The data exchange structure for the @glyph-to-script-map property.
*
@@ -1024,27 +1021,26 @@
* fallback-script
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
- * If no auto-hinter script module can be assigned to a glyph, a
- * fallback script gets assigned to it (see also the
- * @glyph-to-script-map property). By default, this is
- * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property,
- * this fallback value can be changed.
+ * If no auto-hinter script module can be assigned to a glyph, a fallback
+ * script gets assigned to it (see also the @glyph-to-script-map
+ * property). By default, this is @FT_AUTOHINTER_SCRIPT_CJK. Using the
+ * `fallback-script` property, this fallback value can be changed.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* It's important to use the right timing for changing this value: The
- * creation of the glyph-to-script map that eventually uses the
- * fallback script value gets triggered either by setting or reading a
+ * creation of the glyph-to-script map that eventually uses the fallback
+ * script value gets triggered either by setting or reading a
* face-specific property like @glyph-to-script-map, or by auto-hinting
* any glyph from that face. In particular, if you have already created
* an @FT_Face structure but not loaded any glyph (using the
* auto-hinter), a change of the fallback script will affect this face.
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
*
@@ -1053,7 +1049,7 @@
*
* FT_Property_Set( library, "autofitter",
* "fallback-script", &fallback_script );
- * }
+ * ```
*
* @since:
* 2.4.11
@@ -1067,33 +1063,33 @@
* default-script
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
- * If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make
- * the HarfBuzz library access OpenType features for getting better
- * glyph coverages, this property sets the (auto-fitter) script to be
- * used for the default (OpenType) script data of a font's GSUB table.
- * Features for the default script are intended for all scripts not
- * explicitly handled in GSUB; an example is a `dlig' feature,
- * containing the combination of the characters `T', `E', and `L' to
- * form a `TEL' ligature.
+ * If FreeType gets compiled with `FT_CONFIG_OPTION_USE_HARFBUZZ` to make
+ * the HarfBuzz library access OpenType features for getting better glyph
+ * coverages, this property sets the (auto-fitter) script to be used for
+ * the default (OpenType) script data of a font's GSUB table. Features
+ * for the default script are intended for all scripts not explicitly
+ * handled in GSUB; an example is a 'dlig' feature, containing the
+ * combination of the characters 'T', 'E', and 'L' to form a 'TEL'
+ * ligature.
*
* By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the
- * `default-script' property, this default value can be changed.
+ * `default-script` property, this default value can be changed.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* It's important to use the right timing for changing this value: The
- * creation of the glyph-to-script map that eventually uses the
- * default script value gets triggered either by setting or reading a
+ * creation of the glyph-to-script map that eventually uses the default
+ * script value gets triggered either by setting or reading a
* face-specific property like @glyph-to-script-map, or by auto-hinting
* any glyph from that face. In particular, if you have already created
* an @FT_Face structure but not loaded any glyph (using the
* auto-hinter), a change of the default script will affect this face.
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE;
*
@@ -1102,7 +1098,7 @@
*
* FT_Property_Set( library, "autofitter",
* "default-script", &default_script );
- * }
+ * ```
*
* @since:
* 2.5.3
@@ -1116,9 +1112,9 @@
* increase-x-height
*
* @description:
- * For ppem values in the range 6~<= ppem <= `increase-x-height', round
- * up the font's x~height much more often than normally. If the value
- * is set to~0, which is the default, this feature is switched off. Use
+ * For ppem values in the range 6~<= ppem <= `increase-x-height`, round
+ * up the font's x~height much more often than normally. If the value is
+ * set to~0, which is the default, this feature is switched off. Use
* this property to improve the legibility of small font sizes if
* necessary.
*
@@ -1129,7 +1125,7 @@
* loading any glyph (using the auto-hinter).
*
* @example:
- * {
+ * ```
* FT_Library library;
* FT_Face face;
* FT_Prop_IncreaseXHeight prop;
@@ -1144,7 +1140,7 @@
*
* FT_Property_Set( library, "autofitter",
* "increase-x-height", &prop );
- * }
+ * ```
*
* @since:
* 2.4.11
@@ -1175,40 +1171,40 @@
* warping
*
* @description:
- * *Experimental* *only*
+ * **Experimental only**
*
- * If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to
+ * If FreeType gets compiled with option `AF_CONFIG_OPTION_USE_WARPER` to
* activate the warp hinting code in the auto-hinter, this property
* switches warping on and off.
*
- * Warping only works in `normal' auto-hinting mode replacing it.
- * The idea of the code is to slightly scale and shift a glyph along
- * the non-hinted dimension (which is usually the horizontal axis) so
- * that as much of its segments are aligned (more or less) to the grid.
- * To find out a glyph's optimal scaling and shifting value, various
- * parameter combinations are tried and scored.
+ * Warping only works in 'normal' auto-hinting mode replacing it. The
+ * idea of the code is to slightly scale and shift a glyph along the
+ * non-hinted dimension (which is usually the horizontal axis) so that as
+ * much of its segments are aligned (more or less) to the grid. To find
+ * out a glyph's optimal scaling and shifting value, various parameter
+ * combinations are tried and scored.
*
* By default, warping is off.
*
* @note:
* This property can be used with @FT_Property_Get also.
*
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values 1 and 0 for `on' and `off', respectively).
+ * This property can be set via the `FREETYPE_PROPERTIES` environment
+ * variable (using values 1 and 0 for 'on' and 'off', respectively).
*
* The warping code can also change advance widths. Have a look at the
- * `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure
+ * `lsb_delta` and `rsb_delta` fields in the @FT_GlyphSlotRec structure
* for details on improving inter-glyph distances while rendering.
*
* Since warping is a global property of the auto-hinter it is best to
* change its value before rendering any face. Otherwise, you should
- * reload all faces that get auto-hinted in `normal' hinting mode.
+ * reload all faces that get auto-hinted in 'normal' hinting mode.
*
* @example:
* This example shows how to switch on warping (omitting the error
* handling).
*
- * {
+ * ```
* FT_Library library;
* FT_Bool warping = 1;
*
@@ -1216,7 +1212,7 @@
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "autofitter", "warping", &warping );
- * }
+ * ```
*
* @since:
* 2.6
diff --git a/include/freetype/fterrdef.h b/include/freetype/fterrdef.h
index 3d91ed0..9bc7dc6 100644
--- a/include/freetype/fterrdef.h
+++ b/include/freetype/fterrdef.h
@@ -4,7 +4,7 @@
*
* FreeType error codes (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,21 +28,20 @@
* All possible error codes returned by FreeType functions.
*
* @description:
- * The list below is taken verbatim from the file `fterrdef.h'
- * (loaded automatically by including `FT_FREETYPE_H'). The first
- * argument of the `FT_ERROR_DEF_' macro is the error label; by
- * default, the prefix `FT_Err_' gets added so that you get error
- * names like `FT_Err_Cannot_Open_Resource'. The second argument is
- * the error code, and the last argument an error string, which is not
- * used by FreeType.
+ * The list below is taken verbatim from the file `fterrdef.h` (loaded
+ * automatically by including `FT_FREETYPE_H`). The first argument of the
+ * `FT_ERROR_DEF_` macro is the error label; by default, the prefix
+ * `FT_Err_` gets added so that you get error names like
+ * `FT_Err_Cannot_Open_Resource`. The second argument is the error code,
+ * and the last argument an error string, which is not used by FreeType.
*
- * Within your application you should *only* use error names and
- * *never* its numeric values! The latter might (and actually do)
+ * Within your application you should **only** use error names and
+ * **never** its numeric values! The latter might (and actually do)
* change in forthcoming FreeType versions.
*
- * Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero.
- * See the `Error Enumerations' subsection how to automatically
- * generate a list of error strings.
+ * Macro `FT_NOERRORDEF_` defines `FT_Err_Ok`, which is always zero. See
+ * the 'Error Enumerations' subsection how to automatically generate a
+ * list of error strings.
*
*/
diff --git a/include/freetype/fterrors.h b/include/freetype/fterrors.h
index d602bd5..2b47eb2 100644
--- a/include/freetype/fterrors.h
+++ b/include/freetype/fterrors.h
@@ -4,7 +4,7 @@
*
* FreeType error code handling (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -19,92 +19,102 @@
/**************************************************************************
*
* @section:
- * error_enumerations
+ * error_enumerations
*
* @title:
- * Error Enumerations
+ * Error Enumerations
*
* @abstract:
- * How to handle errors and error strings.
+ * How to handle errors and error strings.
*
* @description:
- * The header file `fterrors.h' (which is automatically included by
- * `freetype.h' defines the handling of FreeType's enumeration
- * constants. It can also be used to generate error message strings
- * with a small macro trick explained below.
+ * The header file `fterrors.h` (which is automatically included by
+ * `freetype.h` defines the handling of FreeType's enumeration
+ * constants. It can also be used to generate error message strings
+ * with a small macro trick explained below.
*
- * *Error* *Formats*
+ * **Error Formats**
*
- * The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be
- * defined in `ftoption.h' in order to make the higher byte indicate
- * the module where the error has happened (this is not compatible
- * with standard builds of FreeType~2, however). See the file
- * `ftmoderr.h' for more details.
+ * The configuration macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` can be
+ * defined in `ftoption.h` in order to make the higher byte indicate the
+ * module where the error has happened (this is not compatible with
+ * standard builds of FreeType~2, however). See the file `ftmoderr.h`
+ * for more details.
*
- * *Error* *Message* *Strings*
+ * **Error Message Strings**
*
- * Error definitions are set up with special macros that allow client
- * applications to build a table of error message strings. The
- * strings are not included in a normal build of FreeType~2 to save
- * space (most client applications do not use them).
+ * 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~2 to save space (most
+ * client applications do not use them).
*
- * To do so, you have to define the following macros before including
- * this file.
+ * To do so, you have to define the following macros before including
+ * this file.
*
- * {
- * FT_ERROR_START_LIST
- * }
+ * ```
+ * FT_ERROR_START_LIST
+ * ```
*
- * This macro is called before anything else to define the start of
- * the error list. It is followed by several FT_ERROR_DEF calls.
+ * This macro is called before anything else to define the start of the
+ * error list. It is followed by several `FT_ERROR_DEF` calls.
*
- * {
- * FT_ERROR_DEF( e, v, s )
- * }
+ * ```
+ * FT_ERROR_DEF( e, v, s )
+ * ```
*
- * 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.
+ * 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.
*
- * {
- * FT_ERROR_END_LIST
- * }
+ * ```
+ * FT_ERROR_END_LIST
+ * ```
*
- * This macro ends the list.
+ * This macro ends the list.
*
- * Additionally, you have to undefine `FTERRORS_H_' before #including
- * this file.
+ * Additionally, you have to undefine `FTERRORS_H_` before #including
+ * this file.
*
- * Here is a simple example.
+ * Here is a simple example.
*
- * {
- * #undef FTERRORS_H_
- * #define FT_ERRORDEF( e, v, s ) { e, s },
- * #define FT_ERROR_START_LIST {
- * #define FT_ERROR_END_LIST { 0, NULL } };
+ * ```
+ * #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[] =
+ * const struct
+ * {
+ * int err_code;
+ * const char* err_msg;
+ * } ft_errors[] =
*
- * #include FT_ERRORS_H
- * }
+ * #include FT_ERRORS_H
+ * ```
*
- * Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with
- * `FT_NOERRORDEF'; it is always zero.
+ * An alternative to using an array is a switch statement.
*
+ * ```
+ * #undef FTERRORS_H_
+ * #define FT_ERROR_START_LIST switch ( error_code ) {
+ * #define FT_ERRORDEF( e, v, s ) case v: return s;
+ * #define FT_ERROR_END_LIST }
+ * ```
+ *
+ * If you use `FT_CONFIG_OPTION_USE_MODULE_ERRORS`, `error_code` should
+ * be replaced with `FT_ERROR_BASE(error_code)` in the last example.
*/
/* */
- /* In previous FreeType versions we used `__FTERRORS_H__'. However, */
+ /* In previous FreeType versions we used `__FTERRORS_H__`. However, */
/* using two successive underscores in a non-system symbol name */
/* violates the C (and C++) standard, so it was changed to the */
/* current form. In spite of this, we have to make */
/* */
+ /* ``` */
/* #undefine __FTERRORS_H__ */
+ /* ``` */
/* */
/* work for backward compatibility. */
/* */
@@ -130,7 +140,7 @@
/* FT_ERR_PREFIX is used as a prefix for error identifiers. */
- /* By default, we use `FT_Err_'. */
+ /* By default, we use `FT_Err_`. */
/* */
#ifndef FT_ERR_PREFIX
#define FT_ERR_PREFIX FT_Err_
@@ -158,6 +168,8 @@
/* */
#ifndef FT_ERRORDEF
+#define FT_INCLUDE_ERR_PROTOS
+
#define FT_ERRORDEF( e, v, s ) e = v,
#define FT_ERROR_START_LIST enum {
#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
@@ -220,6 +232,57 @@
#undef FT_ERR_PREFIX
#endif
+ /* FT_INCLUDE_ERR_PROTOS: Control if function prototypes should be */
+ /* included with `#include FT_ERRORS_H'. This is */
+ /* only true where `FT_ERRORDEF` is undefined. */
+ /* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */
+ /* `fterrors.h`. */
+#ifdef FT_INCLUDE_ERR_PROTOS
+#undef FT_INCLUDE_ERR_PROTOS
+
+#ifndef FT_ERR_PROTOS_DEFINED
+#define FT_ERR_PROTOS_DEFINED
+
+
+FT_BEGIN_HEADER
+
+ /**************************************************************************
+ *
+ * @function:
+ * FT_Error_String
+ *
+ * @description:
+ * Retrieve the description of a valid FreeType error code.
+ *
+ * @input:
+ * error_code ::
+ * A valid FreeType error code.
+ *
+ * @return:
+ * A C~string or `NULL`, if any error occurred.
+ *
+ * @note:
+ * FreeType has to be compiled with `FT_CONFIG_OPTION_ERROR_STRINGS` or
+ * `FT_DEBUG_LEVEL_ERROR` to get meaningful descriptions.
+ * 'error_string' will be `NULL` otherwise.
+ *
+ * Module identification will be ignored:
+ *
+ * ```c
+ * strcmp( FT_Error_String( FT_Err_Unknown_File_Format ),
+ * FT_Error_String( BDF_Err_Unknown_File_Format ) ) == 0;
+ * ```
+ */
+ FT_EXPORT( const char* )
+ FT_Error_String( FT_Error error_code );
+
+FT_END_HEADER
+
+
+#endif /* FT_ERR_PROTOS_DEFINED */
+
+#endif /* FT_INCLUDE_ERR_PROTOS */
+
#endif /* !(FTERRORS_H_ && __FTERRORS_H__) */
diff --git a/include/freetype/ftfntfmt.h b/include/freetype/ftfntfmt.h
index 3f3d410..aae0b13 100644
--- a/include/freetype/ftfntfmt.h
+++ b/include/freetype/ftfntfmt.h
@@ -4,7 +4,7 @@
*
* Support functions for font formats.
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -44,10 +44,10 @@
* Getting the font format.
*
* @description:
- * The single function in this section can be used to get the font
- * format. Note that this information is not needed normally;
- * however, there are special cases (like in PDF devices) where it is
- * important to differentiate, in spite of FreeType's uniform API.
+ * The single function in this section can be used to get the font format.
+ * Note that this information is not needed normally; however, there are
+ * special cases (like in PDF devices) where it is important to
+ * differentiate, in spite of FreeType's uniform API.
*
*/
@@ -58,9 +58,9 @@
* FT_Get_Font_Format
*
* @description:
- * Return a string describing the format of a given face. Possible
- * values are `TrueType', `Type~1', `BDF', `PCF', `Type~42',
- * `CID~Type~1', `CFF', `PFR', and `Windows~FNT'.
+ * Return a string describing the format of a given face. Possible values
+ * are 'TrueType', 'Type~1', 'BDF', 'PCF', 'Type~42', 'CID~Type~1', 'CFF',
+ * 'PFR', and 'Windows~FNT'.
*
* The return value is suitable to be used as an X11 FONT_PROPERTY.
*
@@ -69,11 +69,10 @@
* Input face handle.
*
* @return:
- * Font format string. NULL in case of error.
+ * Font format string. `NULL` in case of error.
*
* @note:
- * A deprecated name for the same function is
- * `FT_Get_X11_Font_Format'.
+ * A deprecated name for the same function is `FT_Get_X11_Font_Format`.
*/
FT_EXPORT( const char* )
FT_Get_Font_Format( FT_Face face );
diff --git a/include/freetype/ftgasp.h b/include/freetype/ftgasp.h
index 605ff28..24673d8 100644
--- a/include/freetype/ftgasp.h
+++ b/include/freetype/ftgasp.h
@@ -2,9 +2,9 @@
*
* ftgasp.h
*
- * Access of TrueType's `gasp' table (specification).
+ * Access of TrueType's 'gasp' table (specification).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -32,7 +32,7 @@
FT_BEGIN_HEADER
- /***************************************************************************
+ /**************************************************************************
*
* @section:
* gasp_table
@@ -41,16 +41,16 @@
* Gasp Table
*
* @abstract:
- * Retrieving TrueType `gasp' table entries.
+ * Retrieving TrueType 'gasp' table entries.
*
* @description:
* The function @FT_Get_Gasp can be used to query a TrueType or OpenType
- * font for specific entries in its `gasp' table, if any. This is
- * mainly useful when implementing native TrueType hinting with the
- * bytecode interpreter to duplicate the Windows text rendering results.
+ * font for specific entries in its 'gasp' table, if any. This is mainly
+ * useful when implementing native TrueType hinting with the bytecode
+ * interpreter to duplicate the Windows text rendering results.
*/
- /*************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_GASP_XXX
@@ -66,7 +66,7 @@
*
* FT_GASP_DO_GRIDFIT ::
* Grid-fitting and hinting should be performed at the specified ppem.
- * This *really* means TrueType bytecode interpretation. If this bit
+ * This **really** means TrueType bytecode interpretation. If this bit
* is not set, no hinting gets applied.
*
* FT_GASP_DO_GRAY ::
@@ -80,13 +80,13 @@
* Grid-fitting must be used with ClearType's symmetric smoothing.
*
* @note:
- * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be
+ * The bit-flags `FT_GASP_DO_GRIDFIT` and `FT_GASP_DO_GRAY` are to be
* used for standard font rasterization only. Independently of that,
- * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to
- * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and
- * `FT_GASP_DO_GRAY' are consequently ignored).
+ * `FT_GASP_SYMMETRIC_SMOOTHING` and `FT_GASP_SYMMETRIC_GRIDFIT` are to
+ * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT` and
+ * `FT_GASP_DO_GRAY` are consequently ignored).
*
- * `ClearType' is Microsoft's implementation of LCD rendering, partly
+ * 'ClearType' is Microsoft's implementation of LCD rendering, partly
* protected by patents.
*
* @since:
@@ -99,15 +99,15 @@
#define FT_GASP_SYMMETRIC_SMOOTHING 0x08
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_Gasp
*
* @description:
* For a TrueType or OpenType font file, return the rasterizer behaviour
- * flags from the font's `gasp' table corresponding to a given
- * character pixel size.
+ * flags from the font's 'gasp' table corresponding to a given character
+ * pixel size.
*
* @input:
* face ::
@@ -118,12 +118,12 @@
*
* @return:
* Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
- * `gasp' table in the face.
+ * 'gasp' table in the face.
*
* @note:
* If you want to use the MM functionality of OpenType variation fonts
* (i.e., using @FT_Set_Var_Design_Coordinates and friends), call this
- * function *after* setting an instance since the return values can
+ * function **after** setting an instance since the return values can
* change.
*
* @since:
diff --git a/include/freetype/ftglyph.h b/include/freetype/ftglyph.h
index be17a77..fedab84 100644
--- a/include/freetype/ftglyph.h
+++ b/include/freetype/ftglyph.h
@@ -4,7 +4,7 @@
*
* FreeType convenience functions to handle glyphs (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,13 +18,13 @@
/**************************************************************************
*
- * This file contains the definition of several convenience functions
- * that can be used by client applications to easily retrieve glyph
- * bitmaps and outlines from a given face.
+ * This file contains the definition of several convenience functions that
+ * can be used by client applications to easily retrieve glyph bitmaps and
+ * outlines from a given face.
*
- * These functions should be optional if you are writing a font server
- * or text layout engine on top of FreeType. However, they are pretty
- * handy for many other simple uses of the library.
+ * These functions should be optional if you are writing a font server or
+ * text layout engine on top of FreeType. However, they are pretty handy
+ * for many other simple uses of the library.
*
*/
@@ -58,9 +58,10 @@
* Generic interface to manage individual glyph data.
*
* @description:
- * This section contains definitions used to manage glyph data
- * through generic FT_Glyph objects. Each of them can contain a
- * bitmap, a vector outline, or even images in other formats.
+ * This section contains definitions used to manage glyph data through
+ * generic @FT_Glyph objects. Each of them can contain a bitmap,
+ * a vector outline, or even images in other formats. These objects are
+ * detached from @FT_Face, contrary to @FT_GlyphSlot.
*
*/
@@ -76,8 +77,8 @@
*
* @description:
* Handle to an object used to model generic glyph images. It is a
- * pointer to the @FT_GlyphRec structure and can contain a glyph
- * bitmap or pointer.
+ * pointer to the @FT_GlyphRec structure and can contain a glyph bitmap
+ * or pointer.
*
* @note:
* Glyph objects are not owned by the library. You must thus release
@@ -93,8 +94,8 @@
* FT_GlyphRec
*
* @description:
- * The root glyph structure contains a given glyph image plus its
- * advance width in 16.16 fixed-point format.
+ * The root glyph structure contains a given glyph image plus its advance
+ * width in 16.16 fixed-point format.
*
* @fields:
* library ::
@@ -125,8 +126,8 @@
* FT_BitmapGlyph
*
* @description:
- * A handle to an object used to model a bitmap glyph image. This is
- * a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
+ * A handle to an object used to model a bitmap glyph image. This is a
+ * sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
*/
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
@@ -138,32 +139,31 @@
*
* @description:
* A structure used for bitmap glyph images. This really is a
- * `sub-class' of @FT_GlyphRec.
+ * 'sub-class' of @FT_GlyphRec.
*
* @fields:
* root ::
* The root @FT_Glyph fields.
*
* left ::
- * The left-side bearing, i.e., the horizontal distance
- * from the current pen position to the left border of the
- * glyph bitmap.
+ * The left-side bearing, i.e., the horizontal distance from the
+ * current pen position to the left border of the glyph bitmap.
*
* top ::
- * The top-side bearing, i.e., the vertical distance from
- * the current pen position to the top border of the glyph
- * bitmap. This distance is positive for upwards~y!
+ * The top-side bearing, i.e., the vertical distance from the current
+ * pen position to the top border of the glyph bitmap. This distance
+ * is positive for upwards~y!
*
* bitmap ::
* A descriptor for the bitmap.
*
* @note:
* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have
- * `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access
- * the bitmap's contents easily.
+ * `glyph->format == FT_GLYPH_FORMAT_BITMAP`. This lets you access the
+ * bitmap's contents easily.
*
- * The corresponding pixel buffer is always owned by @FT_BitmapGlyph
- * and is thus created and destroyed with it.
+ * The corresponding pixel buffer is always owned by @FT_BitmapGlyph and
+ * is thus created and destroyed with it.
*/
typedef struct FT_BitmapGlyphRec_
{
@@ -181,8 +181,8 @@
* FT_OutlineGlyph
*
* @description:
- * A handle to an object used to model an outline glyph image. This
- * is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
+ * A handle to an object used to model an outline glyph image. This is a
+ * sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
*/
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
@@ -193,8 +193,8 @@
* FT_OutlineGlyphRec
*
* @description:
- * A structure used for outline (vectorial) glyph images. This
- * really is a `sub-class' of @FT_GlyphRec.
+ * A structure used for outline (vectorial) glyph images. This really is
+ * a 'sub-class' of @FT_GlyphRec.
*
* @fields:
* root ::
@@ -205,15 +205,15 @@
*
* @note:
* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have
- * `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access
- * the outline's content easily.
+ * `glyph->format == FT_GLYPH_FORMAT_OUTLINE`. This lets you access the
+ * outline's content easily.
*
* As the outline is extracted from a glyph slot, its coordinates are
- * expressed normally in 26.6 pixels, unless the flag
- * @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char().
+ * expressed normally in 26.6 pixels, unless the flag @FT_LOAD_NO_SCALE
+ * was used in @FT_Load_Glyph or @FT_Load_Char.
*
- * The outline's tables are always owned by the object and are
- * destroyed with it.
+ * The outline's tables are always owned by the object and are destroyed
+ * with it.
*/
typedef struct FT_OutlineGlyphRec_
{
@@ -261,8 +261,8 @@
* FT_Get_Glyph
*
* @description:
- * A function used to extract a glyph image from a slot. Note that
- * the created @FT_Glyph object must be released with @FT_Done_Glyph.
+ * A function used to extract a glyph image from a slot. Note that the
+ * created @FT_Glyph object must be released with @FT_Done_Glyph.
*
* @input:
* slot ::
@@ -276,10 +276,9 @@
* FreeType error code. 0~means success.
*
* @note:
- * Because `*aglyph->advance.x' and `*aglyph->advance.y' are 16.16
- * fixed-point numbers, `slot->advance.x' and `slot->advance.y'
- * (which are in 26.6 fixed-point format) must be in the range
- * ]-32768;32768[.
+ * Because `*aglyph->advance.x` and `*aglyph->advance.y` are 16.16
+ * fixed-point numbers, `slot->advance.x` and `slot->advance.y` (which
+ * are in 26.6 fixed-point format) must be in the range ]-32768;32768[.
*/
FT_EXPORT( FT_Error )
FT_Get_Glyph( FT_GlyphSlot slot,
@@ -301,8 +300,7 @@
*
* @output:
* target ::
- * A handle to the target glyph object. 0~in case of
- * error.
+ * A handle to the target glyph object. 0~in case of error.
*
* @return:
* FreeType error code. 0~means success.
@@ -329,15 +327,15 @@
* A pointer to a 2x2 matrix to apply.
*
* delta ::
- * A pointer to a 2d vector to apply. Coordinates are
- * expressed in 1/64th of a pixel.
+ * A pointer to a 2d vector to apply. Coordinates are expressed in
+ * 1/64th of a pixel.
*
* @return:
* FreeType error code (if not 0, the glyph format is not scalable).
*
* @note:
- * The 2x2 transformation matrix is also applied to the glyph's
- * advance vector.
+ * The 2x2 transformation matrix is also applied to the glyph's advance
+ * vector.
*/
FT_EXPORT( FT_Error )
FT_Glyph_Transform( FT_Glyph glyph,
@@ -381,7 +379,7 @@
/* these constants are deprecated; use the corresponding */
- /* `FT_Glyph_BBox_Mode' values instead */
+ /* `FT_Glyph_BBox_Mode` values instead */
#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED
#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS
#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT
@@ -395,71 +393,71 @@
* FT_Glyph_Get_CBox
*
* @description:
- * Return a glyph's `control box'. The control box encloses all the
+ * Return a glyph's 'control box'. The control box encloses all the
* outline's points, including Bezier 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 Bezier outside arcs).
+ * slightly larger in some situations (like when rotating an outline that
+ * contains Bezier 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.
+ * Computing the control box is very fast, while getting the bounding box
+ * can take much more time as it needs to walk over all segments and arcs
+ * in the outline. To get the latter, you can use the 'ftbbox'
+ * component, which is dedicated to this single task.
*
* @input:
* glyph ::
* A handle to the source glyph object.
*
* mode ::
- * The mode that indicates how to interpret the returned
- * bounding box values.
+ * The mode that indicates how to interpret the returned bounding box
+ * values.
*
* @output:
* acbox ::
- * The glyph coordinate bounding box. Coordinates are
- * expressed in 1/64th of pixels if it is grid-fitted.
+ * The glyph coordinate bounding box. Coordinates are expressed in
+ * 1/64th of pixels if it is grid-fitted.
*
* @note:
* Coordinates are relative to the glyph origin, using the y~upwards
* convention.
*
- * If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode'
- * must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font
- * units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS
- * is another name for this constant.
+ * If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode` must
+ * be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font units in 26.6
+ * pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS is another name for
+ * this constant.
*
* If the font is tricky and the glyph has been loaded with
* @FT_LOAD_NO_SCALE, 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.
+ * 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.
*
- * 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:
+ * Note that the maximum coordinates are exclusive, which means that one
+ * can compute the width and height of the glyph image (be it in integer
+ * or 26.6 pixels) as:
*
- * {
+ * ```
* width = bbox.xMax - bbox.xMin;
* height = bbox.yMax - bbox.yMin;
- * }
+ * ```
*
- * Note also that for 26.6 coordinates, if `bbox_mode' is set to
+ * Note also that for 26.6 coordinates, if `bbox_mode` is set to
* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted,
* which corresponds to:
*
- * {
+ * ```
* bbox.xMin = FLOOR(bbox.xMin);
* bbox.yMin = FLOOR(bbox.yMin);
* bbox.xMax = CEILING(bbox.xMax);
* bbox.yMax = CEILING(bbox.yMax);
- * }
+ * ```
*
- * To get the bbox in pixel coordinates, set `bbox_mode' to
+ * To get the bbox in pixel coordinates, set `bbox_mode` to
* @FT_GLYPH_BBOX_TRUNCATE.
*
- * To get the bbox in grid-fitted pixel coordinates, set `bbox_mode'
- * to @FT_GLYPH_BBOX_PIXELS.
+ * To get the bbox in grid-fitted pixel coordinates, set `bbox_mode` to
+ * @FT_GLYPH_BBOX_PIXELS.
*/
FT_EXPORT( void )
FT_Glyph_Get_CBox( FT_Glyph glyph,
@@ -481,19 +479,16 @@
*
* @input:
* render_mode ::
- * An enumeration that describes how the data is
- * rendered.
+ * An enumeration that describes how the data is rendered.
*
* origin ::
- * A pointer to a vector used to translate the glyph
- * image before rendering. Can be~0 (if no
- * translation). The origin is expressed in
- * 26.6 pixels.
+ * A pointer to a vector used to translate the glyph image before
+ * rendering. Can be~0 (if no translation). The origin is expressed
+ * in 26.6 pixels.
*
* destroy ::
- * A boolean that indicates that the original glyph
- * image should be destroyed by this function. It is
- * never destroyed in case of error.
+ * A boolean that indicates that the original glyph image should be
+ * destroyed by this function. It is never destroyed in case of error.
*
* @return:
* FreeType error code. 0~means success.
@@ -501,14 +496,14 @@
* @note:
* This function does nothing if the glyph format isn't scalable.
*
- * The glyph image is translated with the `origin' vector before
+ * The glyph image is translated with the `origin` vector before
* rendering.
*
- * The first parameter is a pointer to an @FT_Glyph handle, that will
- * be _replaced_ by this function (with newly allocated data).
- * Typically, you would use (omitting error handling):
+ * The first parameter is a pointer to an @FT_Glyph handle, that will be
+ * _replaced_ by this function (with newly allocated data). Typically,
+ * you would use (omitting error handling):
*
- * {
+ * ```
* FT_Glyph glyph;
* FT_BitmapGlyph glyph_bitmap;
*
@@ -536,11 +531,11 @@
*
* // discard glyph image (bitmap or not)
* FT_Done_Glyph( glyph );
- * }
+ * ```
*
- * Here another example, again without error handling:
+ * Here is another example, again without error handling:
*
- * {
+ * ```
* FT_Glyph glyphs[MAX_GLYPHS]
*
*
@@ -572,7 +567,7 @@
*
* for ( idx = 0; i < MAX_GLYPHS; i++ )
* FT_Done_Glyph( glyphs[idx] );
- * }
+ * ```
*/
FT_EXPORT( FT_Error )
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
@@ -615,18 +610,18 @@
* FT_Matrix_Multiply
*
* @description:
- * Perform the matrix operation `b = a*b'.
+ * Perform the matrix operation `b = a*b`.
*
* @input:
* a ::
- * A pointer to matrix `a'.
+ * A pointer to matrix `a`.
*
* @inout:
* b ::
- * A pointer to matrix `b'.
+ * A pointer to matrix `b`.
*
* @note:
- * The result is undefined if either `a' or `b' is zero.
+ * The result is undefined if either `a` or `b` is zero.
*
* Since the function uses wrap-around arithmetic, results become
* meaningless if the arguments are very large.
@@ -646,8 +641,7 @@
*
* @inout:
* matrix ::
- * A pointer to the target matrix. Remains untouched in
- * case of error.
+ * A pointer to the target matrix. Remains untouched in case of error.
*
* @return:
* FreeType error code. 0~means success.
diff --git a/include/freetype/ftgxval.h b/include/freetype/ftgxval.h
index 532b484..b14f637 100644
--- a/include/freetype/ftgxval.h
+++ b/include/freetype/ftgxval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO, Redhat K.K,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -53,9 +53,9 @@
* An API to validate TrueTypeGX/AAT tables.
*
* @description:
- * This section contains the declaration of functions to validate
- * some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,
- * trak, prop, lcar).
+ * This section contains the declaration of functions to validate some
+ * TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, trak,
+ * prop, lcar).
*
* @order:
* FT_TrueTypeGX_Validate
@@ -73,8 +73,8 @@
/**************************************************************************
*
*
- * Warning: Use FT_VALIDATE_XXX to validate a table.
- * Following definitions are for gxvalid developers.
+ * Warning: Use `FT_VALIDATE_XXX` to validate a table.
+ * Following definitions are for gxvalid developers.
*
*
*/
@@ -92,14 +92,14 @@
#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_VALIDATE_GX_LENGTH
*
* @description:
* The number of tables checked in this module. Use it as a parameter
- * for the `table-length' argument of function @FT_TrueTypeGX_Validate.
+ * for the `table-length` argument of function @FT_TrueTypeGX_Validate.
*/
#define FT_VALIDATE_GX_LENGTH ( FT_VALIDATE_GX_LAST_INDEX + 1 )
@@ -112,7 +112,7 @@
( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
- /**********************************************************************
+ /**************************************************************************
*
* @enum:
* FT_VALIDATE_GXXXX
@@ -123,34 +123,34 @@
*
* @values:
* FT_VALIDATE_feat ::
- * Validate `feat' table.
+ * Validate 'feat' table.
*
* FT_VALIDATE_mort ::
- * Validate `mort' table.
+ * Validate 'mort' table.
*
* FT_VALIDATE_morx ::
- * Validate `morx' table.
+ * Validate 'morx' table.
*
* FT_VALIDATE_bsln ::
- * Validate `bsln' table.
+ * Validate 'bsln' table.
*
* FT_VALIDATE_just ::
- * Validate `just' table.
+ * Validate 'just' table.
*
* FT_VALIDATE_kern ::
- * Validate `kern' table.
+ * Validate 'kern' table.
*
* FT_VALIDATE_opbd ::
- * Validate `opbd' table.
+ * Validate 'opbd' table.
*
* FT_VALIDATE_trak ::
- * Validate `trak' table.
+ * Validate 'trak' table.
*
* FT_VALIDATE_prop ::
- * Validate `prop' table.
+ * Validate 'prop' table.
*
* FT_VALIDATE_lcar ::
- * Validate `lcar' table.
+ * Validate 'lcar' table.
*
* FT_VALIDATE_GX ::
* Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
@@ -181,7 +181,7 @@
FT_VALIDATE_lcar )
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_TrueTypeGX_Validate
@@ -189,8 +189,8 @@
* @description:
* Validate various TrueTypeGX tables to assure that all offsets and
* indices are valid. The idea is that a higher-level library that
- * actually does the text layout can access those tables without
- * error checking (which can be quite time consuming).
+ * actually does the text layout can access those tables without error
+ * checking (which can be quite time consuming).
*
* @input:
* face ::
@@ -201,13 +201,13 @@
* @FT_VALIDATE_GXXXX for possible values.
*
* table_length ::
- * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH
+ * The size of the `tables` array. Normally, @FT_VALIDATE_GX_LENGTH
* should be passed.
*
* @output:
* tables ::
- * The array where all validated sfnt tables are stored.
- * The array itself must be allocated by a client.
+ * The array where all validated sfnt tables are stored. The array
+ * itself must be allocated by a client.
*
* @return:
* FreeType error code. 0~means success.
@@ -217,7 +217,7 @@
* otherwise.
*
* After use, the application should deallocate the buffers pointed to by
- * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value
+ * each `tables` element, by calling @FT_TrueTypeGX_Free. A `NULL` value
* indicates that the table either doesn't exist in the font, the
* application hasn't asked for validation, or the validator doesn't have
* the ability to validate the sfnt table.
@@ -229,7 +229,7 @@
FT_UInt table_length );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_TrueTypeGX_Free
@@ -242,8 +242,7 @@
* A handle to the input face.
*
* table ::
- * The pointer to the buffer allocated by
- * @FT_TrueTypeGX_Validate.
+ * The pointer to the buffer allocated by @FT_TrueTypeGX_Validate.
*
* @note:
* This function must be used to free the buffer allocated by
@@ -254,26 +253,25 @@
FT_Bytes table );
- /**********************************************************************
+ /**************************************************************************
*
* @enum:
* FT_VALIDATE_CKERNXXX
*
* @description:
- * A list of bit-field constants used with @FT_ClassicKern_Validate
- * to indicate the classic kern dialect or dialects. If the selected
- * type doesn't fit, @FT_ClassicKern_Validate regards the table as
- * invalid.
+ * A list of bit-field constants used with @FT_ClassicKern_Validate to
+ * indicate the classic kern dialect or dialects. If the selected type
+ * doesn't fit, @FT_ClassicKern_Validate regards the table as invalid.
*
* @values:
* FT_VALIDATE_MS ::
- * Handle the `kern' table as a classic Microsoft kern table.
+ * Handle the 'kern' table as a classic Microsoft kern table.
*
* FT_VALIDATE_APPLE ::
- * Handle the `kern' table as a classic Apple kern table.
+ * Handle the 'kern' table as a classic Apple kern table.
*
* FT_VALIDATE_CKERN ::
- * Handle the `kern' as either classic Apple or Microsoft kern table.
+ * Handle the 'kern' as either classic Apple or Microsoft kern table.
*/
#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 )
#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 )
@@ -281,18 +279,18 @@
#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_ClassicKern_Validate
*
* @description:
- * Validate classic (16-bit format) kern table to assure that the offsets
- * and indices are valid. The idea is that a higher-level library that
- * actually does the text layout can access those tables without error
- * checking (which can be quite time consuming).
+ * Validate classic (16-bit format) kern table to assure that the
+ * offsets and indices are valid. The idea is that a higher-level
+ * library that actually does the text layout can access those tables
+ * without error checking (which can be quite time consuming).
*
- * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
+ * The 'kern' table validator in @FT_TrueTypeGX_Validate deals with both
* the new 32-bit format and the classic 16-bit format, while
* FT_ClassicKern_Validate only supports the classic 16-bit format.
*
@@ -313,7 +311,7 @@
*
* @note:
* After use, the application should deallocate the buffers pointed to by
- * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value
+ * `ckern_table`, by calling @FT_ClassicKern_Free. A `NULL` value
* indicates that the table doesn't exist in the font.
*/
FT_EXPORT( FT_Error )
@@ -322,7 +320,7 @@
FT_Bytes *ckern_table );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_ClassicKern_Free
diff --git a/include/freetype/ftgzip.h b/include/freetype/ftgzip.h
index 378a365..418c612 100644
--- a/include/freetype/ftgzip.h
+++ b/include/freetype/ftgzip.h
@@ -4,7 +4,7 @@
*
* Gzip-compressed stream support.
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -48,15 +48,15 @@
*/
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stream_OpenGzip
*
* @description:
- * Open a new stream to parse gzip-compressed font files. This is
- * mainly used to support the compressed `*.pcf.gz' fonts that come
- * with XFree86.
+ * Open a new stream to parse gzip-compressed font files. This is mainly
+ * used to support the compressed `*.pcf.gz` fonts that come with
+ * XFree86.
*
* @input:
* stream ::
@@ -71,9 +71,9 @@
* @note:
* The source stream must be opened _before_ calling this function.
*
- * Calling the internal function `FT_Stream_Close' on the new stream will
- * *not* call `FT_Stream_Close' on the source stream. None of the stream
- * objects will be released to the heap.
+ * Calling the internal function `FT_Stream_Close` on the new stream will
+ * **not** call `FT_Stream_Close` on the source stream. None of the
+ * stream objects will be released to the heap.
*
* The stream implementation is very basic and resets the decompression
* process each time seeking backwards is needed within the stream.
@@ -81,10 +81,10 @@
* In certain builds of the library, gzip compression recognition is
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
* This means that if no font driver is capable of handling the raw
- * compressed file, the library will try to open a gzipped stream from
- * it and re-open the face with it.
+ * compressed file, the library will try to open a gzipped stream from it
+ * and re-open the face with it.
*
- * This function may return `FT_Err_Unimplemented_Feature' if your build
+ * This function may return `FT_Err_Unimplemented_Feature` if your build
* of FreeType was not compiled with zlib support.
*/
FT_EXPORT( FT_Error )
@@ -92,14 +92,14 @@
FT_Stream source );
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Gzip_Uncompress
*
* @description:
* Decompress a zipped input buffer into an output buffer. This function
- * is modeled after zlib's `uncompress' function.
+ * is modeled after zlib's `uncompress` function.
*
* @input:
* memory ::
@@ -120,14 +120,14 @@
* 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'.
+ * advance). After calling the function, `output_len` is the size of
+ * the used data in `output`.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * This function may return `FT_Err_Unimplemented_Feature' if your build
+ * This function may return `FT_Err_Unimplemented_Feature` if your build
* of FreeType was not compiled with zlib support.
*
* @since:
diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h
index a3fa0b6..face34f 100644
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -5,7 +5,7 @@
* FreeType glyph image formats and default raster interface
* (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,7 +18,7 @@
/**************************************************************************
*
- * Note: A `raster' is simply a scan-line converter, used to render
+ * Note: A 'raster' is simply a scan-line converter, used to render
* FT_Outlines into FT_Bitmaps.
*
*/
@@ -51,9 +51,9 @@
* FT_Pos
*
* @description:
- * The type FT_Pos is used to store vectorial coordinates. Depending
- * on the context, these can represent distances in integer font
- * units, or 16.16, or 26.6 fixed-point pixel coordinates.
+ * The type FT_Pos is used to store vectorial coordinates. Depending on
+ * the context, these can represent distances in integer font units, or
+ * 16.16, or 26.6 fixed-point pixel coordinates.
*/
typedef signed long FT_Pos;
@@ -64,8 +64,8 @@
* FT_Vector
*
* @description:
- * A simple structure used to store a 2D vector; coordinates are of
- * the FT_Pos type.
+ * A simple structure used to store a 2D vector; coordinates are of the
+ * FT_Pos type.
*
* @fields:
* x ::
@@ -88,8 +88,7 @@
*
* @description:
* A structure used to hold an outline's bounding box, i.e., the
- * coordinates of its extrema in the horizontal and vertical
- * directions.
+ * coordinates of its extrema in the horizontal and vertical directions.
*
* @fields:
* xMin ::
@@ -105,18 +104,17 @@
* The vertical maximum (top-most).
*
* @note:
- * The bounding box is specified with the coordinates of the lower
- * left and the upper right corner. In PostScript, those values are
- * often called (llx,lly) and (urx,ury), respectively.
+ * The bounding box is specified with the coordinates of the lower left
+ * and the upper right corner. In PostScript, those values are often
+ * called (llx,lly) and (urx,ury), respectively.
*
- * If `yMin' is negative, this value gives the glyph's descender.
- * Otherwise, the glyph doesn't descend below the baseline.
- * Similarly, if `ymax' is positive, this value gives the glyph's
- * ascender.
+ * If `yMin` is negative, this value gives the glyph's descender.
+ * Otherwise, the glyph doesn't descend below the baseline. Similarly,
+ * if `ymax` is positive, this value gives the glyph's ascender.
*
- * `xMin' gives the horizontal distance from the glyph's origin to
- * the left edge of the glyph's bounding box. If `xMin' is negative,
- * the glyph extends to the left of the origin.
+ * `xMin` gives the horizontal distance from the glyph's origin to the
+ * left edge of the glyph's bounding box. If `xMin` is negative, the
+ * glyph extends to the left of the origin.
*/
typedef struct FT_BBox_
{
@@ -132,56 +130,53 @@
* FT_Pixel_Mode
*
* @description:
- * An enumeration type used to describe the format of pixels in a
- * given bitmap. Note that additional formats may be added in the
- * future.
+ * An enumeration type used to describe the format of pixels in a given
+ * bitmap. Note that additional formats may be added in the future.
*
* @values:
* FT_PIXEL_MODE_NONE ::
* Value~0 is reserved.
*
* FT_PIXEL_MODE_MONO ::
- * A monochrome bitmap, using 1~bit per pixel. Note that pixels
- * are stored in most-significant order (MSB), which means that
- * the left-most pixel in a byte has value 128.
+ * A monochrome bitmap, using 1~bit per pixel. Note that pixels are
+ * stored in most-significant order (MSB), which means that the
+ * left-most pixel in a byte has value 128.
*
* FT_PIXEL_MODE_GRAY ::
* An 8-bit bitmap, generally used to represent anti-aliased glyph
- * images. Each pixel is stored in one byte. Note that the number
- * of `gray' levels is stored in the `num_grays' field of the
- * @FT_Bitmap structure (it generally is 256).
+ * images. Each pixel is stored in one byte. Note that the number of
+ * 'gray' levels is stored in the `num_grays` field of the @FT_Bitmap
+ * structure (it generally is 256).
*
* FT_PIXEL_MODE_GRAY2 ::
- * A 2-bit per pixel bitmap, used to represent embedded
- * anti-aliased bitmaps in font files according to the OpenType
- * specification. We haven't found a single font using this
- * format, however.
+ * A 2-bit per pixel bitmap, used to represent embedded anti-aliased
+ * bitmaps in font files according to the OpenType specification. We
+ * haven't found a single font using this format, however.
*
* FT_PIXEL_MODE_GRAY4 ::
- * A 4-bit per pixel bitmap, representing embedded anti-aliased
- * bitmaps in font files according to the OpenType specification.
- * We haven't found a single font using this format, however.
+ * A 4-bit per pixel bitmap, representing embedded anti-aliased bitmaps
+ * in font files according to the OpenType specification. We haven't
+ * found a single font using this format, however.
*
* FT_PIXEL_MODE_LCD ::
- * An 8-bit bitmap, representing RGB or BGR decimated glyph images
- * used for display on LCD displays; the bitmap is three times
- * wider than the original glyph image. See also
- * @FT_RENDER_MODE_LCD.
+ * An 8-bit bitmap, representing RGB or BGR decimated glyph images used
+ * for display on LCD displays; the bitmap is three times wider than
+ * the original glyph image. See also @FT_RENDER_MODE_LCD.
*
* FT_PIXEL_MODE_LCD_V ::
- * An 8-bit bitmap, representing RGB or BGR decimated glyph images
- * used for display on rotated LCD displays; the bitmap is three
- * times taller than the original glyph image. See also
+ * An 8-bit bitmap, representing RGB or BGR decimated glyph images used
+ * for display on rotated LCD displays; the bitmap is three times
+ * taller than the original glyph image. See also
* @FT_RENDER_MODE_LCD_V.
*
* FT_PIXEL_MODE_BGRA ::
* [Since 2.5] An image with four 8-bit channels per pixel,
- * representing a color image (such as emoticons) with alpha
- * channel. For each pixel, the format is BGRA, which means, the
- * blue channel comes first in memory. The color channels are
- * pre-multiplied and in the sRGB colorspace. For example, full
- * red at half-translucent opacity will be represented as
- * `00,00,80,80', not `00,00,FF,80'. See also @FT_LOAD_COLOR.
+ * representing a color image (such as emoticons) with alpha channel.
+ * For each pixel, the format is BGRA, which means, the blue channel
+ * comes first in memory. The color channels are pre-multiplied and in
+ * the sRGB colorspace. For example, full red at half-translucent
+ * opacity will be represented as '00,00,80,80', not '00,00,FF,80'.
+ * See also @FT_LOAD_COLOR.
*/
typedef enum FT_Pixel_Mode_
{
@@ -199,7 +194,7 @@
} FT_Pixel_Mode;
- /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */
+ /* these constants are deprecated; use the corresponding `FT_Pixel_Mode` */
/* values instead. */
#define ft_pixel_mode_none FT_PIXEL_MODE_NONE
#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO
@@ -214,9 +209,9 @@
* FT_Bitmap
*
* @description:
- * A structure used to describe a bitmap or pixmap to the raster.
- * Note that we now manage pixmaps of various depths through the
- * `pixel_mode' field.
+ * A structure used to describe a bitmap or pixmap to the raster. Note
+ * that we now manage pixmaps of various depths through the `pixel_mode`
+ * field.
*
* @fields:
* rows ::
@@ -226,51 +221,42 @@
* The number of pixels in bitmap row.
*
* pitch ::
- * The pitch's absolute value is the number of bytes
- * taken by one bitmap row, including padding.
- * However, the pitch is positive when the bitmap has
- * a `down' flow, and negative when it has an `up'
- * flow. In all cases, the pitch is an offset to add
- * to a bitmap pointer in order to go down one row.
+ * The pitch's absolute value is the number of bytes taken by one
+ * bitmap row, including padding. However, the pitch is positive when
+ * the bitmap has a 'down' flow, and negative when it has an 'up' flow.
+ * In all cases, the pitch is an offset to add to a bitmap pointer in
+ * order to go down one row.
*
- * Note that `padding' means the alignment of a
- * bitmap to a byte border, and FreeType functions
- * normally align to the smallest possible integer
- * value.
+ * Note that 'padding' means the alignment of a bitmap to a byte
+ * border, and FreeType functions normally align to the smallest
+ * possible integer value.
*
- * For the B/W rasterizer, `pitch' is always an even
- * number.
+ * For the B/W rasterizer, `pitch` is always an even number.
*
- * To change the pitch of a bitmap (say, to make it a
- * multiple of 4), use @FT_Bitmap_Convert.
- * Alternatively, you might use callback functions to
- * directly render to the application's surface; see
- * the file `example2.cpp' in the tutorial for a
- * demonstration.
+ * To change the pitch of a bitmap (say, to make it a multiple of 4),
+ * use @FT_Bitmap_Convert. Alternatively, you might use callback
+ * functions to directly render to the application's surface; see the
+ * file `example2.cpp` in the tutorial for a demonstration.
*
* buffer ::
- * A typeless pointer to the bitmap buffer. This
- * value should be aligned on 32-bit boundaries in
- * most cases.
+ * A typeless pointer to the bitmap buffer. This value should be
+ * aligned on 32-bit boundaries in most cases.
*
* num_grays ::
- * This field is only used with
- * @FT_PIXEL_MODE_GRAY; it gives the number of gray
- * levels used in the bitmap.
+ * This field is only used with @FT_PIXEL_MODE_GRAY; it gives the
+ * number of gray levels used in the bitmap.
*
* pixel_mode ::
- * The pixel mode, i.e., how pixel bits are stored.
- * See @FT_Pixel_Mode for possible values.
+ * The pixel mode, i.e., how pixel bits are stored. See @FT_Pixel_Mode
+ * for possible values.
*
* palette_mode ::
- * This field is intended for paletted pixel modes;
- * it indicates how the palette is stored. Not
- * used currently.
+ * This field is intended for paletted pixel modes; it indicates how
+ * the palette is stored. Not used currently.
*
* palette ::
- * A typeless pointer to the bitmap palette; this
- * field is intended for paletted pixel modes. Not
- * used currently.
+ * A typeless pointer to the bitmap palette; this field is intended for
+ * paletted pixel modes. Not used currently.
*/
typedef struct FT_Bitmap_
{
@@ -311,45 +297,42 @@
* The number of points in the outline.
*
* points ::
- * A pointer to an array of `n_points' @FT_Vector
- * elements, giving the outline's point coordinates.
+ * A pointer to an array of `n_points` @FT_Vector elements, giving the
+ * outline's point coordinates.
*
* tags ::
- * A pointer to an array of `n_points' chars, giving
- * each outline point's type.
+ * A pointer to an array of `n_points` chars, giving each outline
+ * point's type.
*
- * If bit~0 is unset, the point is `off' the curve,
- * i.e., a Bezier control point, while it is `on' if
- * set.
+ * If bit~0 is unset, the point is 'off' the curve, i.e., a Bezier
+ * control point, while it is 'on' if set.
*
- * Bit~1 is meaningful for `off' points only. If set,
- * it indicates a third-order Bezier arc control point;
- * and a second-order control point if unset.
+ * Bit~1 is meaningful for 'off' points only. If set, it indicates a
+ * third-order Bezier arc control point; and a second-order control
+ * point if unset.
*
- * If bit~2 is set, bits 5-7 contain the drop-out mode
- * (as defined in the OpenType specification; the value
- * is the same as the argument to the SCANMODE
- * instruction).
+ * If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in
+ * the OpenType specification; the value is the same as the argument to
+ * the 'SCANMODE' instruction).
*
* Bits 3 and~4 are reserved for internal purposes.
*
* contours ::
- * An array of `n_contours' shorts, giving the end
- * point of each contour within the outline. For
- * example, the first contour is defined by the points
- * `0' to `contours[0]', the second one is defined by
- * the points `contours[0]+1' to `contours[1]', etc.
+ * An array of `n_contours` shorts, giving the end point of each
+ * contour within the outline. For example, the first contour is
+ * defined by the points '0' to `contours[0]`, the second one is
+ * defined by the points `contours[0]+1` to `contours[1]`, etc.
*
* flags ::
- * A set of bit flags used to characterize the outline
- * and give hints to the scan-converter and hinter on
- * how to convert/grid-fit it. See @FT_OUTLINE_XXX.
+ * A set of bit flags used to characterize the outline and give hints
+ * to the scan-converter and hinter on how to convert/grid-fit it. See
+ * @FT_OUTLINE_XXX.
*
* @note:
- * The B/W rasterizer only checks bit~2 in the `tags' array for the
- * first point of each contour. The drop-out mode as given with
+ * The B/W rasterizer only checks bit~2 in the `tags` array for the first
+ * point of each contour. The drop-out mode as given with
* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and
- * @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden.
+ * @FT_OUTLINE_INCLUDE_STUBS in `flags` is then overridden.
*/
typedef struct FT_Outline_
{
@@ -378,22 +361,22 @@
* FT_OUTLINE_XXX
*
* @description:
- * A list of bit-field constants use for the flags in an outline's
- * `flags' field.
+ * A list of bit-field constants used for the flags in an outline's
+ * `flags` field.
*
* @values:
* FT_OUTLINE_NONE ::
* Value~0 is reserved.
*
* FT_OUTLINE_OWNER ::
- * If set, this flag indicates that the outline's field arrays
- * (i.e., `points', `flags', and `contours') are `owned' by the
- * outline object, and should thus be freed when it is destroyed.
+ * If set, this flag indicates that the outline's field arrays (i.e.,
+ * `points`, `flags`, and `contours`) are 'owned' by the outline
+ * object, and should thus be freed when it is destroyed.
*
* FT_OUTLINE_EVEN_ODD_FILL ::
- * By default, outlines are filled using the non-zero winding rule.
- * If set to 1, the outline will be filled using the even-odd fill
- * rule (only works with the smooth rasterizer).
+ * By default, outlines are filled using the non-zero winding rule. If
+ * set to 1, the outline will be filled using the even-odd fill rule
+ * (only works with the smooth rasterizer).
*
* FT_OUTLINE_REVERSE_FILL ::
* By default, outside contours of an outline are oriented in
@@ -403,46 +386,44 @@
* converter.
*
* FT_OUTLINE_IGNORE_DROPOUTS ::
- * By default, the scan converter will try to detect drop-outs in
- * an outline and correct the glyph bitmap to ensure consistent
- * shape continuity. If set, this flag hints the scan-line
- * converter to ignore such cases. See below for more information.
+ * By default, the scan converter will try to detect drop-outs in an
+ * outline and correct the glyph bitmap to ensure consistent shape
+ * continuity. If set, this flag hints the scan-line converter to
+ * ignore such cases. See below for more information.
*
* FT_OUTLINE_SMART_DROPOUTS ::
- * Select smart dropout control. If unset, use simple dropout
- * control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See
- * below for more information.
+ * Select smart dropout control. If unset, use simple dropout control.
+ * Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more
+ * information.
*
* FT_OUTLINE_INCLUDE_STUBS ::
- * If set, turn pixels on for `stubs', otherwise exclude them.
- * Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for
- * more information.
+ * If set, turn pixels on for 'stubs', otherwise exclude them. Ignored
+ * if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more
+ * information.
*
* FT_OUTLINE_HIGH_PRECISION ::
* This flag indicates that the scan-line converter should try to
- * convert this outline to bitmaps with the highest possible
- * quality. It is typically set for small character sizes. Note
- * that this is only a hint that might be completely ignored by a
- * given scan-converter.
+ * convert this outline to bitmaps with the highest possible quality.
+ * It is typically set for small character sizes. Note that this is
+ * only a hint that might be completely ignored by a given
+ * scan-converter.
*
* FT_OUTLINE_SINGLE_PASS ::
* This flag is set to force a given scan-converter to only use a
* single pass over the outline to render a bitmap glyph image.
- * Normally, it is set for very large character sizes. It is only
- * a hint that might be completely ignored by a given
- * scan-converter.
+ * Normally, it is set for very large character sizes. It is only a
+ * hint that might be completely ignored by a given scan-converter.
*
* @note:
- * The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS,
- * and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth
- * rasterizer.
+ * The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and
+ * @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth rasterizer.
*
- * There exists a second mechanism to pass the drop-out mode to the
- * B/W rasterizer; see the `tags' field in @FT_Outline.
+ * There exists a second mechanism to pass the drop-out mode to the B/W
+ * rasterizer; see the `tags` field in @FT_Outline.
*
- * Please refer to the description of the `SCANTYPE' instruction in
- * the OpenType specification (in file `ttinst1.doc') how simple
- * drop-outs, smart drop-outs, and stubs are defined.
+ * Please refer to the description of the 'SCANTYPE' instruction in the
+ * OpenType specification (in file `ttinst1.doc`) how simple drop-outs,
+ * smart drop-outs, and stubs are defined.
*/
#define FT_OUTLINE_NONE 0x0
#define FT_OUTLINE_OWNER 0x1
@@ -457,7 +438,7 @@
/* these constants are deprecated; use the corresponding */
- /* `FT_OUTLINE_XXX' values instead */
+ /* `FT_OUTLINE_XXX` values instead */
#define ft_outline_none FT_OUTLINE_NONE
#define ft_outline_owner FT_OUTLINE_OWNER
#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL
@@ -468,20 +449,25 @@
/* */
-#define FT_CURVE_TAG( flag ) ( flag & 3 )
+#define FT_CURVE_TAG( flag ) ( flag & 0x03 )
-#define FT_CURVE_TAG_ON 1
-#define FT_CURVE_TAG_CONIC 0
-#define FT_CURVE_TAG_CUBIC 2
+ /* see the `tags` field in `FT_Outline` for a description of the values */
+#define FT_CURVE_TAG_ON 0x01
+#define FT_CURVE_TAG_CONIC 0x00
+#define FT_CURVE_TAG_CUBIC 0x02
-#define FT_CURVE_TAG_HAS_SCANMODE 4
+#define FT_CURVE_TAG_HAS_SCANMODE 0x04
-#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */
-#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */
+#define FT_CURVE_TAG_TOUCH_X 0x08 /* reserved for TrueType hinter */
+#define FT_CURVE_TAG_TOUCH_Y 0x10 /* reserved for TrueType hinter */
#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \
FT_CURVE_TAG_TOUCH_Y )
+ /* values 0x20, 0x40, and 0x80 are reserved */
+
+ /* these constants are deprecated; use the corresponding */
+ /* `FT_CURVE_TAG_XXX` values instead */
#define FT_Curve_Tag_On FT_CURVE_TAG_ON
#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC
#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC
@@ -495,14 +481,14 @@
* FT_Outline_MoveToFunc
*
* @description:
- * A function pointer type used to describe the signature of a `move
- * to' function during outline walking/decomposition.
+ * A function pointer type used to describe the signature of a 'move to'
+ * function during outline walking/decomposition.
*
- * A `move to' is emitted to start a new contour in an outline.
+ * A 'move to' is emitted to start a new contour in an outline.
*
* @input:
* to ::
- * A pointer to the target point of the `move to'.
+ * A pointer to the target point of the 'move to'.
*
* user ::
* A typeless pointer, which is passed from the caller of the
@@ -524,14 +510,14 @@
* FT_Outline_LineToFunc
*
* @description:
- * A function pointer type used to describe the signature of a `line
- * to' function during outline walking/decomposition.
+ * A function pointer type used to describe the signature of a 'line to'
+ * function during outline walking/decomposition.
*
- * A `line to' is emitted to indicate a segment in the outline.
+ * A 'line to' is emitted to indicate a segment in the outline.
*
* @input:
* to ::
- * A pointer to the target point of the `line to'.
+ * A pointer to the target point of the 'line to'.
*
* user ::
* A typeless pointer, which is passed from the caller of the
@@ -553,23 +539,23 @@
* FT_Outline_ConicToFunc
*
* @description:
- * A function pointer type used to describe the signature of a `conic
- * to' function during outline walking or decomposition.
+ * A function pointer type used to describe the signature of a 'conic to'
+ * function during outline walking or decomposition.
*
- * A `conic to' is emitted to indicate a second-order Bezier arc in
- * the outline.
+ * A 'conic to' is emitted to indicate a second-order Bezier arc in the
+ * outline.
*
* @input:
* control ::
- * An intermediate control point between the last position
- * and the new target in `to'.
+ * An intermediate control point between the last position and the new
+ * target in `to`.
*
* to ::
* A pointer to the target end point of the conic arc.
*
* user ::
- * A typeless pointer, which is passed from the caller of
- * the decomposition function.
+ * A typeless pointer, which is passed from the caller of the
+ * decomposition function.
*
* @return:
* Error code. 0~means success.
@@ -588,10 +574,10 @@
* FT_Outline_CubicToFunc
*
* @description:
- * A function pointer type used to describe the signature of a `cubic
- * to' function during outline walking or decomposition.
+ * A function pointer type used to describe the signature of a 'cubic to'
+ * function during outline walking or decomposition.
*
- * A `cubic to' is emitted to indicate a third-order Bezier arc.
+ * A 'cubic to' is emitted to indicate a third-order Bezier arc.
*
* @input:
* control1 ::
@@ -604,8 +590,8 @@
* A pointer to the target end point.
*
* user ::
- * A typeless pointer, which is passed from the caller of
- * the decomposition function.
+ * A typeless pointer, which is passed from the caller of the
+ * decomposition function.
*
* @return:
* Error code. 0~means success.
@@ -630,7 +616,7 @@
*
* @fields:
* move_to ::
- * The `move to' emitter.
+ * The 'move to' emitter.
*
* line_to ::
* The segment emitter.
@@ -642,25 +628,25 @@
* The third-order Bezier arc emitter.
*
* shift ::
- * The shift that is applied to coordinates before they
- * are sent to the emitter.
+ * The shift that is applied to coordinates before they are sent to the
+ * emitter.
*
* delta ::
- * The delta that is applied to coordinates before they
- * are sent to the emitter, but after the shift.
+ * The delta that is applied to coordinates before they are sent to the
+ * emitter, but after the shift.
*
* @note:
- * The point coordinates sent to the emitters are the transformed
- * version of the original coordinates (this is important for high
- * accuracy during scan-conversion). The transformation is simple:
+ * The point coordinates sent to the emitters are the transformed version
+ * of the original coordinates (this is important for high accuracy
+ * during scan-conversion). The transformation is simple:
*
- * {
+ * ```
* x' = (x << shift) - delta
* y' = (y << shift) - delta
- * }
+ * ```
*
- * Set the values of `shift' and `delta' to~0 to get the original
- * point coordinates.
+ * Set the values of `shift` and `delta` to~0 to get the original point
+ * coordinates.
*/
typedef struct FT_Outline_Funcs_
{
@@ -692,13 +678,12 @@
* This macro converts four-letter tags to an unsigned long type.
*
* @note:
- * Since many 16-bit compilers don't like 32-bit enumerations, you
- * should redefine this macro in case of problems to something like
- * this:
+ * Since many 16-bit compilers don't like 32-bit enumerations, you should
+ * redefine this macro in case of problems to something like this:
*
- * {
+ * ```
* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value
- * }
+ * ```
*
* to get a simple enumeration without assigning special numbers.
*/
@@ -727,27 +712,26 @@
* The value~0 is reserved.
*
* FT_GLYPH_FORMAT_COMPOSITE ::
- * The glyph image is a composite of several other images. This
- * format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to
- * report compound glyphs (like accented characters).
+ * The glyph image is a composite of several other images. This format
+ * is _only_ used with @FT_LOAD_NO_RECURSE, and is used to report
+ * compound glyphs (like accented characters).
*
* FT_GLYPH_FORMAT_BITMAP ::
- * The glyph image is a bitmap, and can be described as an
- * @FT_Bitmap. You generally need to access the `bitmap' field of
- * the @FT_GlyphSlotRec structure to read it.
+ * The glyph image is a bitmap, and can be described as an @FT_Bitmap.
+ * You generally need to access the `bitmap` field of the
+ * @FT_GlyphSlotRec structure to read it.
*
* FT_GLYPH_FORMAT_OUTLINE ::
- * The glyph image is a vectorial outline made of line segments
- * and Bezier arcs; it can be described as an @FT_Outline; you
- * generally want to access the `outline' field of the
- * @FT_GlyphSlotRec structure to read it.
+ * The glyph image is a vectorial outline made of line segments and
+ * Bezier arcs; it can be described as an @FT_Outline; you generally
+ * want to access the `outline` field of the @FT_GlyphSlotRec structure
+ * to read it.
*
* FT_GLYPH_FORMAT_PLOTTER ::
* The glyph image is a vectorial path with no inside and outside
* contours. Some Type~1 fonts, like those in the Hershey family,
- * contain glyphs in this format. These are described as
- * @FT_Outline, but FreeType isn't currently capable of rendering
- * them correctly.
+ * contain glyphs in this format. These are described as @FT_Outline,
+ * but FreeType isn't currently capable of rendering them correctly.
*/
typedef enum FT_Glyph_Format_
{
@@ -762,7 +746,7 @@
/* these constants are deprecated; use the corresponding */
- /* `FT_Glyph_Format' values instead. */
+ /* `FT_Glyph_Format` values instead. */
#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE
#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE
#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP
@@ -783,12 +767,12 @@
/**************************************************************************
*
- * A raster is a scan converter, in charge of rendering an outline into
- * a bitmap. This section contains the public API for rasters.
+ * A raster is a scan converter, in charge of rendering an outline into 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
- * details on renderers.
+ * specific modules called 'renderers'. See `ftrender.h` for more details
+ * on renderers.
*
*/
@@ -843,8 +827,8 @@
* FT_Span
*
* @description:
- * A structure used to model a single span of gray pixels when
- * rendering an anti-aliased bitmap.
+ * A structure used to model a single span of gray pixels when rendering
+ * an anti-aliased bitmap.
*
* @fields:
* x ::
@@ -854,16 +838,15 @@
* The span's length in pixels.
*
* coverage ::
- * The span color/coverage, ranging from 0 (background)
- * to 255 (foreground).
+ * The span color/coverage, ranging from 0 (background) to 255
+ * (foreground).
*
* @note:
* This structure is used by the span drawing callback type named
- * @FT_SpanFunc that takes the y~coordinate of the span as a
- * parameter.
+ * @FT_SpanFunc that takes the y~coordinate of the span as a parameter.
*
- * The coverage value is always between 0 and 255. If you want less
- * gray values, the callback function has to reduce them.
+ * The coverage value is always between 0 and 255. If you want less gray
+ * values, the callback function has to reduce them.
*/
typedef struct FT_Span_
{
@@ -880,29 +863,29 @@
* FT_SpanFunc
*
* @description:
- * A function used as a call-back by the anti-aliased renderer in
- * order to let client applications draw themselves the gray pixel
- * spans on each scan line.
+ * A function used as a call-back by the anti-aliased renderer in order
+ * to let client applications draw themselves the gray pixel spans on
+ * each scan line.
*
* @input:
* y ::
- * The scanline's y~coordinate.
+ * The scanline's upward y~coordinate.
*
* count ::
* The number of spans to draw on this scanline.
*
* spans ::
- * A table of `count' spans to draw on the scanline.
+ * A table of `count` spans to draw on the scanline.
*
* user ::
* User-supplied data that is passed to the callback.
*
* @note:
- * This callback allows client applications to directly render the
- * gray spans of the anti-aliased bitmap to any kind of surfaces.
+ * This callback allows client applications to directly render the gray
+ * spans of the anti-aliased bitmap to any kind of surfaces.
*
- * This can be used to write anti-aliased outlines directly to a
- * given background bitmap, and even perform translucency.
+ * This can be used to write anti-aliased outlines directly to a given
+ * background bitmap, and even perform translucency.
*/
typedef void
(*FT_SpanFunc)( int y,
@@ -947,7 +930,7 @@
* FT_RASTER_FLAG_XXX
*
* @description:
- * A list of bit flag constants as used in the `flags' field of a
+ * A list of bit flag constants as used in the `flags` field of a
* @FT_Raster_Params structure.
*
* @values:
@@ -955,35 +938,23 @@
* This value is 0.
*
* FT_RASTER_FLAG_AA ::
- * This flag is set to indicate that an
- * anti-aliased glyph image should be
- * generated. Otherwise, it will be
- * monochrome (1-bit).
+ * This flag is set to indicate that an anti-aliased glyph image should
+ * be generated. Otherwise, it will be monochrome (1-bit).
*
* FT_RASTER_FLAG_DIRECT ::
- * This flag is set to indicate direct
- * rendering. In this mode, client
- * applications must provide their own span
- * callback. This lets them directly
- * draw or compose over an existing bitmap.
- * If this bit is not set, the target
- * pixmap's buffer _must_ be zeroed before
- * rendering.
+ * This flag is set to indicate direct rendering. In this mode, client
+ * applications must provide their own span callback. This lets them
+ * directly draw or compose over an existing bitmap. If this bit is
+ * _not_ set, the target pixmap's buffer _must_ be zeroed before
+ * rendering and the output will be clipped to its size.
*
- * Direct rendering is only possible with
- * anti-aliased glyphs.
+ * Direct rendering is only possible with anti-aliased glyphs.
*
* FT_RASTER_FLAG_CLIP ::
- * This flag is only used in direct
- * rendering mode. If set, the output will
- * be clipped to a box specified in the
- * `clip_box' field of the
- * @FT_Raster_Params structure.
- *
- * Note that by default, the glyph bitmap
- * is clipped to the target pixmap, except
- * in direct rendering mode where all spans
- * are generated if no clipping box is set.
+ * This flag is only used in direct rendering mode. If set, the output
+ * will be clipped to a box specified in the `clip_box` field of the
+ * @FT_Raster_Params structure. Otherwise, the `clip_box` is
+ * effectively set to the bounding box and all spans are generated.
*/
#define FT_RASTER_FLAG_DEFAULT 0x0
#define FT_RASTER_FLAG_AA 0x1
@@ -991,7 +962,7 @@
#define FT_RASTER_FLAG_CLIP 0x4
/* these constants are deprecated; use the corresponding */
- /* `FT_RASTER_FLAG_XXX' values instead */
+ /* `FT_RASTER_FLAG_XXX` values instead */
#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT
#define ft_raster_flag_aa FT_RASTER_FLAG_AA
#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT
@@ -1004,16 +975,15 @@
* FT_Raster_Params
*
* @description:
- * A structure to hold the arguments used by a raster's render
- * function.
+ * A structure to hold the parameters used by a raster's render function,
+ * passed as an argument to @FT_Outline_Render.
*
* @fields:
* target ::
* The target bitmap.
*
* source ::
- * A pointer to the source glyph image (e.g., an
- * @FT_Outline).
+ * A pointer to the source glyph image (e.g., an @FT_Outline).
*
* flags ::
* The rendering flags.
@@ -1031,25 +1001,23 @@
* Unused.
*
* user ::
- * User-supplied data that is passed to each drawing
- * callback.
+ * User-supplied data that is passed to each drawing callback.
*
* clip_box ::
- * An optional clipping box. It is only used in
- * direct rendering mode. Note that coordinates here
- * should be expressed in _integer_ pixels (and not in
- * 26.6 fixed-point units).
+ * An optional clipping box. It is only used in direct rendering mode.
+ * Note that coordinates here should be expressed in _integer_ pixels
+ * (and not in 26.6 fixed-point units).
*
* @note:
- * An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA
- * bit flag is set in the `flags' field, otherwise a monochrome
- * bitmap is generated.
+ * An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA bit
+ * flag is set in the `flags` field, otherwise a monochrome bitmap is
+ * generated.
*
- * If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the
- * raster will call the `gray_spans' callback to draw gray pixel
- * spans. This allows direct composition over a pre-existing bitmap
- * through user-provided callbacks to perform the span drawing and
- * composition. Not supported by the monochrome rasterizer.
+ * If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags`, the raster
+ * will call the `gray_spans` callback to draw gray pixel spans. This
+ * allows direct composition over a pre-existing bitmap through
+ * user-provided callbacks to perform the span drawing and composition.
+ * Not supported by the monochrome rasterizer.
*/
typedef struct FT_Raster_Params_
{
@@ -1086,11 +1054,11 @@
* Error code. 0~means success.
*
* @note:
- * The `memory' parameter is a typeless pointer in order to avoid
- * un-wanted dependencies on the rest of the FreeType code. In
- * practice, it is an @FT_Memory object, i.e., a handle to the
- * standard FreeType memory allocator. However, this field can be
- * completely ignored by a given raster implementation.
+ * The `memory` parameter is a typeless pointer in order to avoid
+ * un-wanted dependencies on the rest of the FreeType code. In practice,
+ * it is an @FT_Memory object, i.e., a handle to the standard FreeType
+ * memory allocator. However, this field can be completely ignored by a
+ * given raster implementation.
*/
typedef int
(*FT_Raster_NewFunc)( void* memory,
@@ -1123,9 +1091,9 @@
* FT_Raster_ResetFunc
*
* @description:
- * FreeType used to provide an area of memory called the `render
- * pool' available to all registered rasterizers. This was not
- * thread safe, however, and now FreeType never allocates this pool.
+ * FreeType used to provide an area of memory called the 'render pool'
+ * available to all registered rasterizers. This was not thread safe,
+ * however, and now FreeType never allocates this pool.
*
* This function is called after a new raster object is created.
*
@@ -1134,17 +1102,16 @@
* A handle to the new raster object.
*
* pool_base ::
- * Previously, the address in memory of the render pool.
- * Set this to NULL.
+ * Previously, the address in memory of the render pool. Set this to
+ * `NULL`.
*
* pool_size ::
- * Previously, the size in bytes of the render pool.
- * Set this to 0.
+ * Previously, the size in bytes of the render pool. Set this to 0.
*
* @note:
- * Rasterizers should rely on dynamic or stack allocation if they
- * want to (a handle to the memory allocator is passed to the
- * rasterizer constructor).
+ * Rasterizers should rely on dynamic or stack allocation if they want to
+ * (a handle to the memory allocator is passed to the rasterizer
+ * constructor).
*/
typedef void
(*FT_Raster_ResetFunc)( FT_Raster raster,
@@ -1160,10 +1127,9 @@
* FT_Raster_SetModeFunc
*
* @description:
- * This function is a generic facility to change modes or attributes
- * in a given raster. This can be used for debugging purposes, or
- * simply to allow implementation-specific `features' in a given
- * raster module.
+ * This function is a generic facility to change modes or attributes in a
+ * given raster. This can be used for debugging purposes, or simply to
+ * allow implementation-specific 'features' in a given raster module.
*
* @input:
* raster ::
@@ -1197,8 +1163,8 @@
* A handle to the raster object.
*
* params ::
- * A pointer to an @FT_Raster_Params structure used to
- * store the rendering parameters.
+ * A pointer to an @FT_Raster_Params structure used to store the
+ * rendering parameters.
*
* @return:
* Error code. 0~means success.
@@ -1210,14 +1176,8 @@
* glyph formats.
*
* Note also that the render function can fail and return a
- * `FT_Err_Unimplemented_Feature' error code if the raster used does
- * not support direct composition.
- *
- * XXX: For now, the standard raster doesn't support direct
- * composition but this should change for the final release (see
- * the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c'
- * for examples of distinct implementations that support direct
- * composition).
+ * `FT_Err_Unimplemented_Feature` error code if the raster used does not
+ * support direct composition.
*/
typedef int
(*FT_Raster_RenderFunc)( FT_Raster raster,
diff --git a/include/freetype/ftincrem.h b/include/freetype/ftincrem.h
index b3a17c3..a4db02b 100644
--- a/include/freetype/ftincrem.h
+++ b/include/freetype/ftincrem.h
@@ -4,7 +4,7 @@
*
* FreeType incremental loading (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -32,7 +32,7 @@
FT_BEGIN_HEADER
- /***************************************************************************
+ /**************************************************************************
*
* @section:
* incremental
@@ -45,7 +45,7 @@
*
* @description:
* This section contains various functions used to perform so-called
- * `incremental' glyph loading. This is a mode where all glyphs loaded
+ * 'incremental' glyph loading. This is a mode where all glyphs loaded
* from a given @FT_Face are provided by the client application.
*
* Apart from that, all other tables are loaded normally from the font
@@ -60,23 +60,24 @@
*/
- /***************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Incremental
*
* @description:
* An opaque type describing a user-provided object used to implement
- * `incremental' glyph loading within FreeType. This is used to support
- * embedded fonts in certain environments (e.g., PostScript interpreters),
- * where the glyph data isn't in the font file, or must be overridden by
- * different values.
+ * 'incremental' glyph loading within FreeType. This is used to support
+ * embedded fonts in certain environments (e.g., PostScript
+ * interpreters), where the glyph data isn't in the font file, or must be
+ * overridden by different values.
*
* @note:
- * It is up to client applications to create and implement @FT_Incremental
- * objects, as long as they provide implementations for the methods
- * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc
- * and @FT_Incremental_GetGlyphMetricsFunc.
+ * It is up to client applications to create and implement
+ * @FT_Incremental objects, as long as they provide implementations for
+ * the methods @FT_Incremental_GetGlyphDataFunc,
+ * @FT_Incremental_FreeGlyphDataFunc and
+ * @FT_Incremental_GetGlyphMetricsFunc.
*
* See the description of @FT_Incremental_InterfaceRec to understand how
* to use incremental objects with FreeType.
@@ -85,14 +86,14 @@
typedef struct FT_IncrementalRec_* FT_Incremental;
- /***************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_Incremental_MetricsRec
*
* @description:
- * A small structure used to contain the basic glyph metrics returned
- * by the @FT_Incremental_GetGlyphMetricsFunc method.
+ * A small structure used to contain the basic glyph metrics returned by
+ * the @FT_Incremental_GetGlyphMetricsFunc method.
*
* @fields:
* bearing_x ::
@@ -109,7 +110,7 @@
*
* @note:
* These correspond to horizontal or vertical metrics depending on the
- * value of the `vertical' argument to the function
+ * value of the `vertical` argument to the function
* @FT_Incremental_GetGlyphMetricsFunc.
*
*/
@@ -123,7 +124,7 @@
} FT_Incremental_MetricsRec;
- /***************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_Incremental_Metrics
@@ -135,7 +136,7 @@
typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics;
- /***************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Incremental_GetGlyphDataFunc
@@ -147,8 +148,8 @@
*
* Note that the format of the glyph's data bytes depends on the font
* file format. For TrueType, it must correspond to the raw bytes within
- * the `glyf' table. For PostScript formats, it must correspond to the
- * *unencrypted* charstring bytes, without any `lenIV' header. It is
+ * the 'glyf' table. For PostScript formats, it must correspond to the
+ * **unencrypted** charstring bytes, without any `lenIV` header. It is
* undefined for any other format.
*
* @input:
@@ -169,8 +170,8 @@
*
* @note:
* If this function returns successfully the method
- * @FT_Incremental_FreeGlyphDataFunc will be called later to release
- * the data bytes.
+ * @FT_Incremental_FreeGlyphDataFunc will be called later to release the
+ * data bytes.
*
* Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
* compound glyphs.
@@ -182,7 +183,7 @@
FT_Data* adata );
- /***************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Incremental_FreeGlyphDataFunc
@@ -206,7 +207,7 @@
FT_Data* data );
- /***************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Incremental_GetGlyphMetricsFunc
@@ -214,8 +215,8 @@
* @description:
* A function used to retrieve the basic metrics of a given glyph index
* before accessing its data. This is necessary because, in certain
- * formats like TrueType, the metrics are stored in a different place from
- * the glyph images proper.
+ * formats like TrueType, the metrics are stored in a different place
+ * from the glyph images proper.
*
* @input:
* incremental ::
@@ -229,9 +230,9 @@
* If true, return vertical metrics.
*
* ametrics ::
- * This parameter is used for both input and output.
- * The original glyph metrics, if any, in font units. If metrics are
- * not available all the values must be set to zero.
+ * This parameter is used for both input and output. The original
+ * glyph metrics, if any, in font units. If metrics are not available
+ * all the values must be set to zero.
*
* @output:
* ametrics ::
@@ -252,8 +253,8 @@
* FT_Incremental_FuncsRec
*
* @description:
- * A table of functions for accessing fonts that load data
- * incrementally. Used in @FT_Incremental_InterfaceRec.
+ * A table of functions for accessing fonts that load data incrementally.
+ * Used in @FT_Incremental_InterfaceRec.
*
* @fields:
* get_glyph_data ::
@@ -263,8 +264,8 @@
* The function to release glyph data. Must not be null.
*
* get_glyph_metrics ::
- * The function to get glyph metrics. May be null if the font does
- * not provide overriding glyph metrics.
+ * The function to get glyph metrics. May be null if the font does not
+ * provide overriding glyph metrics.
*
*/
typedef struct FT_Incremental_FuncsRec_
@@ -276,7 +277,7 @@
} FT_Incremental_FuncsRec;
- /***************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_Incremental_InterfaceRec
@@ -286,7 +287,7 @@
* wants to support incremental glyph loading. You should use it with
* @FT_PARAM_TAG_INCREMENTAL as in the following example:
*
- * {
+ * ```
* FT_Incremental_InterfaceRec inc_int;
* FT_Parameter parameter;
* FT_Open_Args open_args;
@@ -309,7 +310,7 @@
* // open the font
* error = FT_Open_Face( library, &open_args, index, &face );
* ...
- * }
+ * ```
*
*/
typedef struct FT_Incremental_InterfaceRec_
@@ -320,7 +321,7 @@
} FT_Incremental_InterfaceRec;
- /***************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Incremental_Interface
diff --git a/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h
index 8d27135..3a19d04 100644
--- a/include/freetype/ftlcdfil.h
+++ b/include/freetype/ftlcdfil.h
@@ -5,7 +5,7 @@
* FreeType API for color filtering of subpixel bitmap glyphs
* (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
FT_BEGIN_HEADER
- /***************************************************************************
+ /**************************************************************************
*
* @section:
* lcd_rendering
@@ -45,9 +45,9 @@
* API to control subpixel rendering.
*
* @description:
- * FreeType provides two alternative subpixel rendering technologies.
- * Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
- * `ftoption.h', this enables patented ClearType-style rendering.
+ * FreeType provides two alternative subpixel rendering technologies.
+ * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your
+ * `ftoption.h` file, this enables patented ClearType-style rendering.
* Otherwise, Harmony LCD rendering is enabled. These technologies are
* controlled differently and API described below, although always
* available, performs its function when appropriate method is enabled
@@ -58,19 +58,20 @@
* the stripe (usually horizontal RGB) by a factor of~3. Using the
* subpixels coverages unfiltered can create severe color fringes
* especially when rendering thin features. Indeed, to produce
- * black-on-white text, the nearby color subpixels must be dimmed equally.
+ * black-on-white text, the nearby color subpixels must be dimmed
+ * equally.
*
* A good 5-tap FIR filter should be applied to subpixel coverages
* regardless of pixel boundaries and should have these properties:
*
- * 1) It should be symmetrical, like {~a, b, c, b, a~}, to avoid
+ * 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid
* any shifts in appearance.
*
- * 2) It should be color-balanced, meaning a~+ b~=~c, to reduce color
+ * 2. It should be color-balanced, meaning a~+ b~=~c, to reduce color
* fringes by distributing the computed coverage for one subpixel to
* all subpixels equally.
*
- * 3) It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain
+ * 3. It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain
* overall brightness.
*
* Boxy 3-tap filter {0, 1/3, 1/3, 1/3, 0} is sharper but is less
@@ -82,32 +83,32 @@
* subpixel-rendered bitmaps generated through @FT_Render_Glyph.
*
* Harmony LCD rendering is suitable to panels with any regular subpixel
- * structure, not just monitors with 3 color striped subpixels, as long as
- * the color subpixels have fixed positions relative to the pixel center.
- * In this case, each color channel is then rendered separately after
- * shifting the outline opposite to the subpixel shift so that the
+ * structure, not just monitors with 3 color striped subpixels, as long
+ * as the color subpixels have fixed positions relative to the pixel
+ * center. In this case, each color channel is then rendered separately
+ * after shifting the outline opposite to the subpixel shift so that the
* coverage maps are aligned. This method is immune to color fringes
* because the shifts do not change integral coverage.
*
* The subpixel geometry must be specified by xy-coordinates for each
- * subpixel. By convention they may come in the RGB order:
- * {{-1/3, 0}, {0, 0}, {1/3, 0}} for standard RGB striped panel or
- * {{-1/6, 1/4}, {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel.
+ * subpixel. By convention they may come in the RGB order: {{-1/3, 0},
+ * {0, 0}, {1/3, 0}} for standard RGB striped panel or {{-1/6, 1/4},
+ * {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel.
*
* Use the @FT_Library_SetLcdGeometry API to specify subpixel positions.
- * If one follows the RGB order convention, the same order applies
- * to the resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps.
- * Note, however, that the coordinate frame for the latter must be rotated
+ * If one follows the RGB order convention, the same order applies to the
+ * resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps. Note,
+ * however, that the coordinate frame for the latter must be rotated
* clockwise. Harmony with default LCD geometry is equivalent to
* ClearType with light filter.
*
- * As a result of ClearType filtering or Harmony rendering, the dimensions
- * of LCD bitmaps can be either wider or taller than the dimensions of
- * the corresponding outline with regard to the pixel grid. For example,
- * for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to the left, and
- * 2~subpixels to the right. The bitmap offset values are adjusted
- * accordingly, so clients shouldn't need to modify their layout and
- * glyph positioning code when enabling the filter.
+ * As a result of ClearType filtering or Harmony rendering, the
+ * dimensions of LCD bitmaps can be either wider or taller than the
+ * dimensions of the corresponding outline with regard to the pixel grid.
+ * For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to
+ * the left, and 2~subpixels to the right. The bitmap offset values are
+ * adjusted accordingly, so clients shouldn't need to modify their layout
+ * and glyph positioning code when enabling the filter.
*
* The ClearType and Harmony rendering is applicable to glyph bitmaps
* rendered through @FT_Render_Glyph, @FT_Load_Glyph, @FT_Load_Char, and
@@ -116,14 +117,14 @@
* @FT_Outline_Get_Bitmap.
*
* The described algorithms can completely remove color artefacts when
- * combined with gamma-corrected alpha blending in linear space.
- * Each of the 3~alpha values (subpixels) must by independently used to
- * blend one color channel. That is, red alpha blends the red channel of
- * the text color with the red channel of the background pixel.
+ * combined with gamma-corrected alpha blending in linear space. Each of
+ * the 3~alpha values (subpixels) must by independently used to blend one
+ * color channel. That is, red alpha blends the red channel of the text
+ * color with the red channel of the background pixel.
*/
- /****************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_LcdFilter
@@ -141,8 +142,8 @@
* with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units.
*
* FT_LCD_FILTER_LIGHT ::
- * this is a boxy, normalized, and color-balanced three-tap filter
- * with weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.
+ * this is a boxy, normalized, and color-balanced three-tap filter with
+ * weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.
*
* FT_LCD_FILTER_LEGACY ::
* FT_LCD_FILTER_LEGACY1 ::
@@ -151,12 +152,11 @@
* fringes if glyphs are not extremely well hinted to the pixel grid.
* This filter is only provided for comparison purposes, and might be
* disabled or stay unsupported in the future. The second value is
- * provided for compatibility with FontConfig, which historically
- * used different enumeration, sometimes incorrectly forwarded to
- * FreeType.
+ * provided for compatibility with FontConfig, which historically used
+ * different enumeration, sometimes incorrectly forwarded to FreeType.
*
* @since:
- * 2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2)
+ * 2.3.0 (`FT_LCD_FILTER_LEGACY1` since 2.6.2)
*/
typedef enum FT_LcdFilter_
{
@@ -189,20 +189,20 @@
* The filter type.
*
* You can use @FT_LCD_FILTER_NONE here to disable this feature, or
- * @FT_LCD_FILTER_DEFAULT to use a default filter that should work
- * well on most LCD screens.
+ * @FT_LCD_FILTER_DEFAULT to use a default filter that should work well
+ * on most LCD screens.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This feature is always disabled by default. Clients must make an
- * explicit call to this function with a `filter' value other than
+ * explicit call to this function with a `filter` value other than
* @FT_LCD_FILTER_NONE in order to enable it.
*
- * Due to *PATENTS* covering subpixel rendering, this function doesn't
- * do anything except returning `FT_Err_Unimplemented_Feature' if the
- * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
+ * Due to **PATENTS** covering subpixel rendering, this function doesn't
+ * do anything except returning `FT_Err_Unimplemented_Feature` if the
+ * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
* defined in your build of the library, which should correspond to all
* default builds of FreeType.
*
@@ -235,9 +235,9 @@
* FreeType error code. 0~means success.
*
* @note:
- * Due to *PATENTS* covering subpixel rendering, this function doesn't
- * do anything except returning `FT_Err_Unimplemented_Feature' if the
- * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
+ * Due to **PATENTS** covering subpixel rendering, this function doesn't
+ * do anything except returning `FT_Err_Unimplemented_Feature` if the
+ * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
* defined in your build of the library, which should correspond to all
* default builds of FreeType.
*
@@ -296,8 +296,8 @@
* - {{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color
* stripes shifted by a third of a pixel. This could be an RGB panel.
*
- * - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but
- * can specify a BGR panel instead, while keeping the bitmap in the same
+ * - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but can
+ * specify a BGR panel instead, while keeping the bitmap in the same
* RGB888 format.
*
* - {{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap
@@ -305,9 +305,9 @@
*
* - {{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement.
*
- * This function does nothing and returns `FT_Err_Unimplemented_Feature'
+ * This function does nothing and returns `FT_Err_Unimplemented_Feature`
* in the context of ClearType-style subpixel rendering when
- * FT_CONFIG_OPTION_SUBPIXEL_RENDERING is defined in your build of the
+ * `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is defined in your build of the
* library.
*
* @since:
diff --git a/include/freetype/ftlist.h b/include/freetype/ftlist.h
index cdea897..4782892 100644
--- a/include/freetype/ftlist.h
+++ b/include/freetype/ftlist.h
@@ -4,7 +4,7 @@
*
* Generic list support for FreeType (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,8 +18,8 @@
/**************************************************************************
*
- * This file implements functions relative to list processing. Its
- * data structures are defined in `freetype.h'.
+ * This file implements functions relative to list processing. Its data
+ * structures are defined in `freetype.h`.
*
*/
@@ -53,8 +53,8 @@
* Simple management of lists.
*
* @description:
- * This section contains various definitions related to list
- * processing using doubly-linked nodes.
+ * This section contains various definitions related to list processing
+ * using doubly-linked nodes.
*
* @order:
* FT_List
@@ -90,7 +90,7 @@
* The address of the listed object.
*
* @return:
- * List node. NULL if it wasn't found.
+ * List node. `NULL` if it wasn't found.
*/
FT_EXPORT( FT_ListNode )
FT_List_Find( FT_List list,
@@ -141,8 +141,8 @@
* FT_List_Remove
*
* @description:
- * Remove a node from a list. This function doesn't check whether
- * the node is in the list!
+ * Remove a node from a list. This function doesn't check whether the
+ * node is in the list!
*
* @input:
* node ::
@@ -163,8 +163,7 @@
* FT_List_Up
*
* @description:
- * Move a node to the head/top of a list. Used to maintain LRU
- * lists.
+ * Move a node to the head/top of a list. Used to maintain LRU lists.
*
* @inout:
* list ::
@@ -183,16 +182,16 @@
* FT_List_Iterator
*
* @description:
- * An FT_List iterator function that is called during a list parse
- * by @FT_List_Iterate.
+ * An FT_List iterator function that is called during a list parse by
+ * @FT_List_Iterate.
*
* @input:
* node ::
* The current iteration list node.
*
* user ::
- * A typeless pointer passed to @FT_List_Iterate.
- * Can be used to point to the iteration's state.
+ * A typeless pointer passed to @FT_List_Iterate. Can be used to point
+ * to the iteration's state.
*/
typedef FT_Error
(*FT_List_Iterator)( FT_ListNode node,
@@ -215,8 +214,8 @@
* iterator ::
* An iterator function, called on each node of the list.
* user ::
- * A user-supplied field that is passed as the second
- * argument to the iterator.
+ * A user-supplied field that is passed as the second argument to the
+ * iterator.
*
* @return:
* The result (a FreeType error code) of the last iterator call.
@@ -234,8 +233,8 @@
*
* @description:
* An @FT_List iterator function that is called during a list
- * finalization by @FT_List_Finalize to destroy all elements in a
- * given list.
+ * finalization by @FT_List_Finalize to destroy all elements in a given
+ * list.
*
* @input:
* system ::
@@ -245,8 +244,8 @@
* The current object to destroy.
*
* user ::
- * A typeless pointer passed to @FT_List_Iterate. It can
- * be used to point to the iteration's state.
+ * A typeless pointer passed to @FT_List_Iterate. It can be used to
+ * point to the iteration's state.
*/
typedef void
(*FT_List_Destructor)( FT_Memory memory,
@@ -267,15 +266,15 @@
* A handle to the list.
*
* destroy ::
- * A list destructor that will be applied to each element
- * of the list. Set this to NULL if not needed.
+ * A list destructor that will be applied to each element of the list.
+ * Set this to `NULL` if not needed.
*
* memory ::
* The current memory object that handles deallocation.
*
* user ::
- * A user-supplied field that is passed as the last
- * argument to the destructor.
+ * A user-supplied field that is passed as the last argument to the
+ * destructor.
*
* @note:
* This function expects that all nodes added by @FT_List_Add or
diff --git a/include/freetype/ftlzw.h b/include/freetype/ftlzw.h
index 01433ca..fd22968 100644
--- a/include/freetype/ftlzw.h
+++ b/include/freetype/ftlzw.h
@@ -4,7 +4,7 @@
*
* LZW-compressed stream support.
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -47,15 +47,14 @@
*
*/
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stream_OpenLZW
*
* @description:
- * Open a new stream to parse LZW-compressed font files. This is
- * mainly used to support the compressed `*.pcf.Z' fonts that come
- * with XFree86.
+ * Open a new stream to parse LZW-compressed font files. This is mainly
+ * used to support the compressed `*.pcf.Z` fonts that come with XFree86.
*
* @input:
* stream ::
@@ -70,9 +69,9 @@
* @note:
* The source stream must be opened _before_ calling this function.
*
- * Calling the internal function `FT_Stream_Close' on the new stream will
- * *not* call `FT_Stream_Close' on the source stream. None of the stream
- * objects will be released to the heap.
+ * Calling the internal function `FT_Stream_Close` on the new stream will
+ * **not** call `FT_Stream_Close` on the source stream. None of the
+ * stream objects will be released to the heap.
*
* The stream implementation is very basic and resets the decompression
* process each time seeking backwards is needed within the stream
@@ -80,10 +79,10 @@
* In certain builds of the library, LZW compression recognition is
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
* This means that if no font driver is capable of handling the raw
- * compressed file, the library will try to open a LZW stream from it
- * and re-open the face with it.
+ * compressed file, the library will try to open a LZW stream from it and
+ * re-open the face with it.
*
- * This function may return `FT_Err_Unimplemented_Feature' if your build
+ * This function may return `FT_Err_Unimplemented_Feature` if your build
* of FreeType was not compiled with LZW support.
*/
FT_EXPORT( FT_Error )
diff --git a/include/freetype/ftmac.h b/include/freetype/ftmac.h
index 4249ff5..92b9f3d 100644
--- a/include/freetype/ftmac.h
+++ b/include/freetype/ftmac.h
@@ -4,7 +4,7 @@
*
* Additional Mac-specific API.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,9 +18,9 @@
/****************************************************************************
*
- * NOTE: Include this file after FT_FREETYPE_H and after any
+ * NOTE: Include this file after `FT_FREETYPE_H` and after any
* Mac-specific headers (because this header uses Mac types such as
- * Handle, FSSpec, FSRef, etc.)
+ * 'Handle', 'FSSpec', 'FSRef', etc.)
*
*/
@@ -59,8 +59,8 @@
* Only available on the Macintosh.
*
* @description:
- * The following definitions are only available if FreeType is
- * compiled on a Macintosh.
+ * The following definitions are only available if FreeType is compiled
+ * on a Macintosh.
*
*/
@@ -82,8 +82,7 @@
* A FOND resource.
*
* face_index ::
- * Only supported for the -1 `sanity check' special
- * case.
+ * Only supported for the -1 'sanity check' special case.
*
* @output:
* aface ::
@@ -93,13 +92,13 @@
* FreeType error code. 0~means success.
*
* @example:
- * This function can be used to create @FT_Face objects from fonts
- * that are installed in the system as follows.
+ * This function can be used to create @FT_Face objects from fonts that
+ * are installed in the system as follows.
*
- * {
+ * ```
* fond = GetResource( 'FOND', fontName );
* error = FT_New_Face_From_FOND( library, fond, 0, &face );
- * }
+ * ```
*/
FT_EXPORT( FT_Error )
FT_New_Face_From_FOND( FT_Library library,
@@ -119,17 +118,14 @@
*
* @input:
* fontName ::
- * Mac OS name of the font (e.g., Times New Roman
- * Bold).
+ * Mac OS name of the font (e.g., Times New Roman Bold).
*
* @output:
* pathSpec ::
- * FSSpec to the file. For passing to
- * @FT_New_Face_From_FSSpec.
+ * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec.
*
* face_index ::
- * Index of the face. For passing to
- * @FT_New_Face_From_FSSpec.
+ * Index of the face. For passing to @FT_New_Face_From_FSSpec.
*
* @return:
* FreeType error code. 0~means success.
@@ -155,12 +151,10 @@
*
* @output:
* pathSpec ::
- * FSSpec to the file. For passing to
- * @FT_New_Face_From_FSSpec.
+ * FSSpec to the file. For passing to @FT_New_Face_From_FSSpec.
*
* face_index ::
- * Index of the face. For passing to
- * @FT_New_Face_From_FSSpec.
+ * Index of the face. For passing to @FT_New_Face_From_FSSpec.
*
* @return:
* FreeType error code. 0~means success.
@@ -178,8 +172,8 @@
* FT_GetFilePath_From_Mac_ATS_Name
*
* @description:
- * Return a pathname of the disk file and face index for given font
- * name that is handled by ATS framework.
+ * Return a pathname of the disk file and face index for given font name
+ * that is handled by ATS framework.
*
* @input:
* fontName ::
@@ -187,12 +181,11 @@
*
* @output:
* path ::
- * Buffer to store pathname of the file. For passing
- * to @FT_New_Face. The client must allocate this
- * buffer before calling this function.
+ * Buffer to store pathname of the file. For passing to @FT_New_Face.
+ * The client must allocate this buffer before calling this function.
*
* maxPathSize ::
- * Lengths of the buffer `path' that client allocated.
+ * Lengths of the buffer `path` that client allocated.
*
* face_index ::
* Index of the face. For passing to @FT_New_Face.
@@ -226,8 +219,8 @@
* FSSpec to the font file.
*
* face_index ::
- * The index of the face within the resource. The
- * first face has index~0.
+ * The index of the face within the resource. The first face has
+ * index~0.
* @output:
* aface ::
* A handle to a new face object.
@@ -236,8 +229,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * @FT_New_Face_From_FSSpec is identical to @FT_New_Face except
- * it accepts an FSSpec instead of a path.
+ * @FT_New_Face_From_FSSpec is identical to @FT_New_Face except it
+ * accepts an FSSpec instead of a path.
*/
FT_EXPORT( FT_Error )
FT_New_Face_From_FSSpec( FT_Library library,
@@ -265,8 +258,8 @@
* FSRef to the font file.
*
* face_index ::
- * The index of the face within the resource. The
- * first face has index~0.
+ * The index of the face within the resource. The first face has
+ * index~0.
* @output:
* aface ::
* A handle to a new face object.
@@ -275,8 +268,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * @FT_New_Face_From_FSRef is identical to @FT_New_Face except
- * it accepts an FSRef instead of a path.
+ * @FT_New_Face_From_FSRef is identical to @FT_New_Face except it accepts
+ * an FSRef instead of a path.
*/
FT_EXPORT( FT_Error )
FT_New_Face_From_FSRef( FT_Library library,
diff --git a/include/freetype/ftmm.h b/include/freetype/ftmm.h
index a903241..f2e16b6 100644
--- a/include/freetype/ftmm.h
+++ b/include/freetype/ftmm.h
@@ -4,7 +4,7 @@
*
* FreeType Multiple Master font interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -39,14 +39,14 @@
* How to manage Multiple Masters fonts.
*
* @description:
- * The following types and functions are used to manage Multiple
- * Master fonts, i.e., the selection of specific design instances by
- * setting design axis coordinates.
+ * The following types and functions are used to manage Multiple Master
+ * fonts, i.e., the selection of specific design instances by setting
+ * design axis coordinates.
*
- * Besides Adobe MM fonts, the interface supports Apple's TrueType GX
- * and OpenType variation fonts. Some of the routines only work with
- * Adobe MM fonts, others will work with all three types. They are
- * similar enough that a consistent interface makes sense.
+ * Besides Adobe MM fonts, the interface supports Apple's TrueType GX and
+ * OpenType variation fonts. Some of the routines only work with Adobe
+ * MM fonts, others will work with all three types. They are similar
+ * enough that a consistent interface makes sense.
*
*/
@@ -57,8 +57,8 @@
* FT_MM_Axis
*
* @description:
- * A structure to model a given axis in design space for Multiple
- * Masters fonts.
+ * A structure to model a given axis in design space for Multiple Masters
+ * fonts.
*
* This structure can't be used for TrueType GX or OpenType variation
* fonts.
@@ -88,8 +88,7 @@
* FT_Multi_Master
*
* @description:
- * A structure to model the axes and space of a Multiple Masters
- * font.
+ * A structure to model the axes and space of a Multiple Masters font.
*
* This structure can't be used for TrueType GX or OpenType variation
* fonts.
@@ -99,10 +98,9 @@
* Number of axes. Cannot exceed~4.
*
* num_designs ::
- * Number of designs; should be normally 2^num_axis
- * even though the Type~1 specification strangely
- * allows for intermediate designs to be present.
- * This number cannot exceed~16.
+ * Number of designs; should be normally 2^num_axis even though the
+ * Type~1 specification strangely allows for intermediate designs to be
+ * present. This number cannot exceed~16.
*
* axis ::
* A table of axis descriptors.
@@ -127,36 +125,33 @@
*
* @fields:
* name ::
- * The axis's name.
- * Not always meaningful for TrueType GX or OpenType
+ * The axis's name. Not always meaningful for TrueType GX or OpenType
* variation fonts.
*
* minimum ::
* The axis's minimum design coordinate.
*
* def ::
- * The axis's default design coordinate.
- * FreeType computes meaningful default values for Adobe
- * MM fonts.
+ * The axis's default design coordinate. FreeType computes meaningful
+ * default values for Adobe MM fonts.
*
* maximum ::
* The axis's maximum design coordinate.
*
* tag ::
- * The axis's tag (the equivalent to `name' for TrueType
- * GX and OpenType variation fonts). FreeType provides
- * default values for Adobe MM fonts if possible.
+ * The axis's tag (the equivalent to 'name' for TrueType GX and
+ * OpenType variation fonts). FreeType provides default values for
+ * Adobe MM fonts if possible.
*
* strid ::
- * The axis name entry in the font's `name' table. This
- * is another (and often better) version of the `name'
- * field for TrueType GX or OpenType variation fonts. Not
- * meaningful for Adobe MM fonts.
+ * The axis name entry in the font's 'name' table. This is another
+ * (and often better) version of the 'name' field for TrueType GX or
+ * OpenType variation fonts. Not meaningful for Adobe MM fonts.
*
* @note:
- * The fields `minimum', `def', and `maximum' are 16.16 fractional
- * values for TrueType GX and OpenType variation fonts. For Adobe MM
- * fonts, the values are integers.
+ * The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
+ * for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the
+ * values are integers.
*/
typedef struct FT_Var_Axis_
{
@@ -185,16 +180,15 @@
*
* @fields:
* coords ::
- * The design coordinates for this instance.
- * This is an array with one entry for each axis.
+ * The design coordinates for this instance. This is an array with one
+ * entry for each axis.
*
* strid ::
- * The entry in `name' table identifying this instance.
+ * The entry in 'name' table identifying this instance.
*
* psid ::
- * The entry in `name' table identifying a PostScript name
- * for this instance. Value 0xFFFF indicates a missing
- * entry.
+ * The entry in 'name' table identifying a PostScript name for this
+ * instance. Value 0xFFFF indicates a missing entry.
*/
typedef struct FT_Var_Named_Style_
{
@@ -211,48 +205,40 @@
* FT_MM_Var
*
* @description:
- * A structure to model the axes and space of an Adobe MM, TrueType
- * GX, or OpenType variation font.
+ * A structure to model the axes and space of an Adobe MM, TrueType GX,
+ * or OpenType variation font.
*
* Some fields are specific to one format and not to the others.
*
* @fields:
* num_axis ::
- * The number of axes. The maximum value is~4 for
- * Adobe MM fonts; no limit in TrueType GX or
- * OpenType variation fonts.
+ * The number of axes. The maximum value is~4 for Adobe MM fonts; no
+ * limit in TrueType GX or OpenType variation fonts.
*
* num_designs ::
- * The number of designs; should be normally
- * 2^num_axis for Adobe MM fonts. Not meaningful
- * for TrueType GX or OpenType variation fonts
- * (where every glyph could have a different
- * number of designs).
+ * The number of designs; should be normally 2^num_axis for Adobe MM
+ * fonts. Not meaningful for TrueType GX or OpenType variation fonts
+ * (where every glyph could have a different number of designs).
*
* num_namedstyles ::
- * The number of named styles; a `named style' is
- * a tuple of design coordinates that has a string
- * ID (in the `name' table) associated with it.
- * The font can tell the user that, for example,
- * [Weight=1.5,Width=1.1] is `Bold'. Another name
- * for `named style' is `named instance'.
+ * The number of named styles; a 'named style' is a tuple of design
+ * coordinates that has a string ID (in the 'name' table) associated
+ * with it. The font can tell the user that, for example,
+ * [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is
+ * 'named instance'.
*
- * For Adobe Multiple Masters fonts, this value is
- * always zero because the format does not support
- * named styles.
+ * For Adobe Multiple Masters fonts, this value is always zero because
+ * the format does not support named styles.
*
* axis ::
- * An axis descriptor table.
- * TrueType GX and OpenType variation fonts
- * contain slightly more data than Adobe MM fonts.
- * Memory management of this pointer is done
- * internally by FreeType.
+ * An axis descriptor table. TrueType GX and OpenType variation fonts
+ * contain slightly more data than Adobe MM fonts. Memory management
+ * of this pointer is done internally by FreeType.
*
* namedstyle ::
- * A named style (instance) table.
- * Only meaningful for TrueType GX and OpenType
- * variation fonts. Memory management of this
- * pointer is done internally by FreeType.
+ * A named style (instance) table. Only meaningful for TrueType GX and
+ * OpenType variation fonts. Memory management of this pointer is done
+ * internally by FreeType.
*/
typedef struct FT_MM_Var_
{
@@ -308,9 +294,8 @@
*
* @output:
* amaster ::
- * The variation descriptor.
- * Allocates a data structure, which the user must
- * deallocate with a call to @FT_Done_MM_Var after use.
+ * The variation descriptor. Allocates a data structure, which the
+ * user must deallocate with a call to @FT_Done_MM_Var after use.
*
* @return:
* FreeType error code. 0~means success.
@@ -330,8 +315,8 @@
*
* @input:
* library ::
- * A handle of the face's parent library object that was
- * used in the call to @FT_Get_MM_Var to create `amaster'.
+ * A handle of the face's parent library object that was used in the
+ * call to @FT_Get_MM_Var to create `amaster`.
*
* @return:
* FreeType error code. 0~means success.
@@ -347,8 +332,8 @@
* FT_Set_MM_Design_Coordinates
*
* @description:
- * For Adobe MM fonts, choose an interpolated font design through
- * design coordinates.
+ * For Adobe MM fonts, choose an interpolated font design through design
+ * coordinates.
*
* This function can't be used with TrueType GX or OpenType variation
* fonts.
@@ -359,10 +344,9 @@
*
* @input:
* num_coords ::
- * The number of available design coordinates. If it
- * is larger than the number of axes, ignore the excess
- * values. If it is smaller than the number of axes,
- * use default values for the remaining axes.
+ * The number of available design coordinates. If it is larger than
+ * the number of axes, ignore the excess values. If it is smaller than
+ * the number of axes, use default values for the remaining axes.
*
* coords ::
* An array of design coordinates.
@@ -372,12 +356,12 @@
*
* @note:
* [Since 2.8.1] To reset all axes to the default values, call the
- * function with `num_coords' set to zero and `coords' set to NULL.
+ * function with `num_coords` set to zero and `coords` set to `NULL`.
*
- * [Since 2.9] If `num_coords' is larger than zero, this function
- * sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
- * field (i.e., @FT_IS_VARIATION will return true). If `num_coords'
- * is zero, this bit flag gets unset.
+ * [Since 2.9] If `num_coords` is larger than zero, this function sets
+ * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+ * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
+ * this bit flag gets unset.
*/
FT_EXPORT( FT_Error )
FT_Set_MM_Design_Coordinates( FT_Face face,
@@ -401,10 +385,9 @@
*
* @input:
* num_coords ::
- * The number of available design coordinates. If it
- * is larger than the number of axes, ignore the excess
- * values. If it is smaller than the number of axes,
- * use default values for the remaining axes.
+ * The number of available design coordinates. If it is larger than
+ * the number of axes, ignore the excess values. If it is smaller than
+ * the number of axes, use default values for the remaining axes.
*
* coords ::
* An array of design coordinates.
@@ -414,14 +397,14 @@
*
* @note:
* [Since 2.8.1] To reset all axes to the default values, call the
- * function with `num_coords' set to zero and `coords' set to NULL.
- * [Since 2.9] `Default values' means the currently selected named
+ * function with `num_coords` set to zero and `coords` set to `NULL`.
+ * [Since 2.9] 'Default values' means the currently selected named
* instance (or the base font if no named instance is selected).
*
- * [Since 2.9] If `num_coords' is larger than zero, this function
- * sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
- * field (i.e., @FT_IS_VARIATION will return true). If `num_coords'
- * is zero, this bit flag gets unset.
+ * [Since 2.9] If `num_coords` is larger than zero, this function sets
+ * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+ * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
+ * this bit flag gets unset.
*/
FT_EXPORT( FT_Error )
FT_Set_Var_Design_Coordinates( FT_Face face,
@@ -445,9 +428,8 @@
* A handle to the source face.
*
* num_coords ::
- * The number of design coordinates to retrieve. If it
- * is larger than the number of axes, set the excess
- * values to~0.
+ * The number of design coordinates to retrieve. If it is larger than
+ * the number of axes, set the excess values to~0.
*
* @output:
* coords ::
@@ -482,30 +464,28 @@
*
* @input:
* num_coords ::
- * The number of available design coordinates. If it
- * is larger than the number of axes, ignore the excess
- * values. If it is smaller than the number of axes,
- * use default values for the remaining axes.
+ * The number of available design coordinates. If it is larger than
+ * the number of axes, ignore the excess values. If it is smaller than
+ * the number of axes, use default values for the remaining axes.
*
* coords ::
- * The design coordinates array (each element must be
- * between 0 and 1.0 for Adobe MM fonts, and between
- * -1.0 and 1.0 for TrueType GX and OpenType variation
- * fonts).
+ * The design coordinates array (each element must be between 0 and 1.0
+ * for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and
+ * OpenType variation fonts).
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* [Since 2.8.1] To reset all axes to the default values, call the
- * function with `num_coords' set to zero and `coords' set to NULL.
- * [Since 2.9] `Default values' means the currently selected named
+ * function with `num_coords` set to zero and `coords` set to `NULL`.
+ * [Since 2.9] 'Default values' means the currently selected named
* instance (or the base font if no named instance is selected).
*
- * [Since 2.9] If `num_coords' is larger than zero, this function
- * sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
- * field (i.e., @FT_IS_VARIATION will return true). If `num_coords'
- * is zero, this bit flag gets unset.
+ * [Since 2.9] If `num_coords` is larger than zero, this function sets
+ * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+ * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
+ * this bit flag gets unset.
*/
FT_EXPORT( FT_Error )
FT_Set_MM_Blend_Coordinates( FT_Face face,
@@ -529,10 +509,10 @@
* A handle to the source face.
*
* num_coords ::
- * The number of normalized blend coordinates to
- * retrieve. If it is larger than the number of axes,
- * set the excess values to~0.5 for Adobe MM fonts, and
- * to~0 for TrueType GX and OpenType variation fonts.
+ * The number of normalized blend coordinates to retrieve. If it is
+ * larger than the number of axes, set the excess values to~0.5 for
+ * Adobe MM fonts, and to~0 for TrueType GX and OpenType variation
+ * fonts.
*
* @output:
* coords ::
@@ -583,6 +563,98 @@
/**************************************************************************
*
+ * @function:
+ * FT_Set_MM_WeightVector
+ *
+ * @description:
+ * For Adobe MM fonts, choose an interpolated font design by directly
+ * setting the weight vector.
+ *
+ * This function can't be used with TrueType GX or OpenType variation
+ * fonts.
+ *
+ * @inout:
+ * face ::
+ * A handle to the source face.
+ *
+ * @input:
+ * len ::
+ * The length of the weight vector array. If it is larger than the
+ * number of designs, the extra values are ignored. If it is less than
+ * the number of designs, the remaining values are set to zero.
+ *
+ * weightvector ::
+ * An array representing the weight vector.
+ *
+ * @return:
+ * FreeType error code. 0~means success.
+ *
+ * @note:
+ * Adobe Multiple Master fonts limit the number of designs, and thus the
+ * length of the weight vector to~16.
+ *
+ * If `len` is zero and `weightvector` is `NULL`, the weight vector array
+ * is reset to the default values.
+ *
+ * The Adobe documentation also states that the values in the
+ * WeightVector array must total 1.0 +/-~0.001. In practice this does
+ * not seem to be enforced, so is not enforced here, either.
+ *
+ * @since:
+ * 2.10
+ */
+ FT_EXPORT( FT_Error )
+ FT_Set_MM_WeightVector( FT_Face face,
+ FT_UInt len,
+ FT_Fixed* weightvector );
+
+
+ /**************************************************************************
+ *
+ * @function:
+ * FT_Get_MM_WeightVector
+ *
+ * @description:
+ * For Adobe MM fonts, retrieve the current weight vector of the font.
+ *
+ * This function can't be used with TrueType GX or OpenType variation
+ * fonts.
+ *
+ * @inout:
+ * face ::
+ * A handle to the source face.
+ *
+ * len ::
+ * A pointer to the size of the array to be filled. If the size of the
+ * array is less than the number of designs, `FT_Err_Invalid_Argument`
+ * is returned, and `len` is set to the required size (the number of
+ * designs). If the size of the array is greater than the number of
+ * designs, the remaining entries are set to~0. On successful
+ * completion, `len` is set to the number of designs (i.e., the number
+ * of values written to the array).
+ *
+ * @output:
+ * weightvector ::
+ * An array to be filled.
+ *
+ * @return:
+ * FreeType error code. 0~means success.
+ *
+ * @note:
+ * Adobe Multiple Master fonts limit the number of designs, and thus the
+ * length of the WeightVector to~16.
+ *
+ * @since:
+ * 2.10
+ */
+ FT_EXPORT( FT_Error )
+ FT_Get_MM_WeightVector( FT_Face face,
+ FT_UInt* len,
+ FT_Fixed* weightvector );
+
+
+ /**************************************************************************
+ *
* @enum:
* FT_VAR_AXIS_FLAG_XXX
*
@@ -606,9 +678,9 @@
* FT_Get_Var_Axis_Flags
*
* @description:
- * Get the `flags' field of an OpenType Variation Axis Record.
+ * Get the 'flags' field of an OpenType Variation Axis Record.
*
- * Not meaningful for Adobe MM fonts (`*flags' is always zero).
+ * Not meaningful for Adobe MM fonts (`*flags` is always zero).
*
* @input:
* master ::
@@ -619,8 +691,7 @@
*
* @output:
* flags ::
- * The `flags' field. See @FT_VAR_AXIS_FLAG_XXX for
- * possible values.
+ * The 'flags' field. See @FT_VAR_AXIS_FLAG_XXX for possible values.
*
* @return:
* FreeType error code. 0~means success.
@@ -647,23 +718,22 @@
* A handle to the source face.
*
* instance_index ::
- * The index of the requested instance, starting
- * with value 1. If set to value 0, FreeType
- * switches to font access without a named
+ * The index of the requested instance, starting with value 1. If set
+ * to value 0, FreeType switches to font access without a named
* instance.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The function uses the value of `instance_index' to set bits 16-30
- * of the face's `face_index' field. It also resets any variation
- * applied to the font, and the @FT_FACE_FLAG_VARIATION bit of the
- * face's `face_flags' field gets reset to zero (i.e.,
- * @FT_IS_VARIATION will return false).
+ * The function uses the value of `instance_index` to set bits 16-30 of
+ * the face's `face_index` field. It also resets any variation applied
+ * to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's
+ * `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will
+ * return false).
*
- * For Adobe MM fonts (which don't have named instances) this
- * function simply resets the current face to the default instance.
+ * For Adobe MM fonts (which don't have named instances) this function
+ * simply resets the current face to the default instance.
*
* @since:
* 2.9
diff --git a/include/freetype/ftmodapi.h b/include/freetype/ftmodapi.h
index c50c9ce..8d039c4 100644
--- a/include/freetype/ftmodapi.h
+++ b/include/freetype/ftmodapi.h
@@ -4,7 +4,7 @@
*
* FreeType modules public interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -46,13 +46,13 @@
*
* @description:
* 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.
+ * Modules can be added, upgraded, and removed at runtime. Additionally,
+ * some module properties can be controlled also.
*
- * Here is a list of possible values of the `module_name' field in
- * the @FT_Module_Class structure.
+ * Here is a list of possible values of the `module_name` field in the
+ * @FT_Module_Class structure.
*
- * {
+ * ```
* autofitter
* bdf
* cff
@@ -71,7 +71,7 @@
* type42
* t1cid
* winfonts
- * }
+ * ```
*
* Note that the FreeType Cache sub-system is not a FreeType module.
*
@@ -195,9 +195,9 @@
* FT_Module_Class
*
* @description:
- * The module class descriptor. While being a public structure
- * necessary for FreeType's module bookkeeping, most of the fields are
- * essentially internal, not to be used directly by an application.
+ * The module class descriptor. While being a public structure necessary
+ * for FreeType's module bookkeeping, most of the fields are essentially
+ * internal, not to be used directly by an application.
*
* @fields:
* module_flags ::
@@ -219,7 +219,7 @@
* module_interface ::
* A typeless pointer to a structure (which varies between different
* modules) that holds the module's interface functions. This is
- * essentially what `get_interface' returns.
+ * essentially what `get_interface` returns.
*
* module_init ::
* The initializing function.
@@ -267,8 +267,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * An error will be returned if a module already exists by that name,
- * or if the module requires a version of FreeType that is too great.
+ * An error will be returned if a module already exists by that name, or
+ * if the module requires a version of FreeType that is too great.
*/
FT_EXPORT( FT_Error )
FT_Add_Module( FT_Library library,
@@ -329,7 +329,7 @@
FT_Module module );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Property_Set
@@ -352,37 +352,35 @@
*
* value ::
* A generic pointer to a variable or structure that gives the new
- * value of the property. The exact definition of `value' is
+ * value of the property. The exact definition of `value` is
* dependent on the property; see section @properties.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * If `module_name' isn't a valid module name, or `property_name'
- * doesn't specify a valid property, or if `value' doesn't represent a
+ * If `module_name` isn't a valid module name, or `property_name`
+ * doesn't specify a valid property, or if `value` doesn't represent a
* valid value for the given property, an error is returned.
*
- * The following example sets property `bar' (a simple integer) in
- * module `foo' to value~1.
+ * The following example sets property 'bar' (a simple integer) in
+ * module 'foo' to value~1.
*
- * {
+ * ```
* FT_UInt bar;
*
*
* bar = 1;
* FT_Property_Set( library, "foo", "bar", &bar );
- * }
+ * ```
*
* Note that the FreeType Cache sub-system doesn't recognize module
* property changes. To avoid glyph lookup confusion within the cache
- * you should call @FTC_Manager_Reset to completely flush the cache if
- * a module property gets changed after @FTC_Manager_New has been
- * called.
+ * you should call @FTC_Manager_Reset to completely flush the cache if a
+ * module property gets changed after @FTC_Manager_New has been called.
*
- * It is not possible to set properties of the FreeType Cache
- * sub-system itself with FT_Property_Set; use @FTC_Property_Set
- * instead.
+ * It is not possible to set properties of the FreeType Cache sub-system
+ * itself with FT_Property_Set; use @FTC_Property_Set instead.
*
* @since:
* 2.4.11
@@ -395,7 +393,7 @@
const void* value );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Property_Get
@@ -416,21 +414,21 @@
*
* @inout:
* value ::
- * A generic pointer to a variable or structure that gives the
- * value of the property. The exact definition of `value' is
- * dependent on the property; see section @properties.
+ * A generic pointer to a variable or structure that gives the value
+ * of the property. The exact definition of `value` is dependent on
+ * the property; see section @properties.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * If `module_name' isn't a valid module name, or `property_name'
- * doesn't specify a valid property, or if `value' doesn't represent a
+ * If `module_name` isn't a valid module name, or `property_name`
+ * doesn't specify a valid property, or if `value` doesn't represent a
* valid value for the given property, an error is returned.
*
- * The following example gets property `baz' (a range) in module `foo'.
+ * The following example gets property 'baz' (a range) in module 'foo'.
*
- * {
+ * ```
* typedef range_
* {
* FT_Int32 min;
@@ -442,7 +440,7 @@
*
*
* FT_Property_Get( library, "foo", "baz", &baz );
- * }
+ * ```
*
* It is not possible to retrieve properties of the FreeType Cache
* sub-system with FT_Property_Get; use @FTC_Property_Get instead.
@@ -464,17 +462,17 @@
* FT_Set_Default_Properties
*
* @description:
- * If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is
- * set, this function reads the `FREETYPE_PROPERTIES' environment
- * variable to control driver properties. See section @properties
- * for more.
+ * If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is
+ * set, this function reads the `FREETYPE_PROPERTIES` environment
+ * variable to control driver properties. See section @properties for
+ * more.
*
* If the compilation option is not set, this function does nothing.
*
- * `FREETYPE_PROPERTIES' has the following syntax form (broken here
- * into multiple lines for better readability).
+ * `FREETYPE_PROPERTIES` has the following syntax form (broken here into
+ * multiple lines for better readability).
*
- * {
+ * ```
* <optional whitespace>
* <module-name1> ':'
* <property-name1> '=' <property-value1>
@@ -482,15 +480,15 @@
* <module-name2> ':'
* <property-name2> '=' <property-value2>
* ...
- * }
+ * ```
*
* Example:
*
- * {
+ * ```
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
* cff:no-stem-darkening=1 \
* autofitter:warping=1
- * }
+ * ```
*
* @inout:
* library ::
@@ -509,10 +507,10 @@
* FT_Reference_Library
*
* @description:
- * A counter gets initialized to~1 at the time an @FT_Library
- * structure is created. This function increments the counter.
- * @FT_Done_Library then only destroys a library if the counter is~1,
- * otherwise it simply decrements the counter.
+ * A counter gets initialized to~1 at the time an @FT_Library structure
+ * is created. This function increments the counter. @FT_Done_Library
+ * then only destroys a library if the counter is~1, otherwise it simply
+ * decrements the counter.
*
* This function helps in managing life-cycles of structures that
* reference @FT_Library objects.
@@ -537,19 +535,19 @@
* FT_New_Library
*
* @description:
- * This function is used to create a new FreeType library instance
- * from a given memory object. It is thus possible to use libraries
- * with distinct memory allocators within the same program. Note,
- * however, that the used @FT_Memory structure is expected to remain
- * valid for the life of the @FT_Library object.
+ * This function is used to create a new FreeType library instance from a
+ * given memory object. It is thus possible to use libraries with
+ * distinct memory allocators within the same program. Note, however,
+ * that the used @FT_Memory structure is expected to remain valid for the
+ * life of the @FT_Library object.
*
* Normally, you would call this function (followed by a call to
- * @FT_Add_Default_Modules or a series of calls to @FT_Add_Module,
- * and a call to @FT_Set_Default_Properties) instead of
- * @FT_Init_FreeType to initialize the FreeType library.
+ * @FT_Add_Default_Modules or a series of calls to @FT_Add_Module, and a
+ * call to @FT_Set_Default_Properties) instead of @FT_Init_FreeType to
+ * initialize the FreeType library.
*
- * Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a
- * library instance.
+ * Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a library
+ * instance.
*
* @input:
* memory ::
@@ -577,8 +575,8 @@
* FT_Done_Library
*
* @description:
- * Discard a given library object. This closes all drivers and
- * discards all resource objects.
+ * Discard a given library object. This closes all drivers and discards
+ * all resource objects.
*
* @input:
* library ::
@@ -594,14 +592,58 @@
FT_EXPORT( FT_Error )
FT_Done_Library( FT_Library library );
- /* */
- typedef void
+ /**************************************************************************
+ *
+ * @functype:
+ * FT_DebugHook_Func
+ *
+ * @description:
+ * A drop-in replacement (or rather a wrapper) for the bytecode or
+ * charstring interpreter's main loop function.
+ *
+ * Its job is essentially
+ *
+ * - to activate debug mode to enforce single-stepping,
+ *
+ * - to call the main loop function to interpret the next opcode, and
+ *
+ * - to show the changed context to the user.
+ *
+ * An example for such a main loop function is `TT_RunIns` (declared in
+ * FreeType's internal header file `src/truetype/ttinterp.h`).
+ *
+ * Have a look at the source code of the `ttdebug` FreeType demo program
+ * for an example of a drop-in replacement.
+ *
+ * @inout:
+ * arg ::
+ * A typeless pointer, to be cast to the main loop function's data
+ * structure (which depends on the font module). For TrueType fonts
+ * it is bytecode interpreter's execution context, `TT_ExecContext`,
+ * which is declared in FreeType's internal header file `tttypes.h`.
+ */
+ typedef FT_Error
(*FT_DebugHook_Func)( void* arg );
/**************************************************************************
*
+ * @enum:
+ * FT_DEBUG_HOOK_XXX
+ *
+ * @description:
+ * A list of named debug hook indices.
+ *
+ * @values:
+ * FT_DEBUG_HOOK_TRUETYPE::
+ * This hook index identifies the TrueType bytecode debugger.
+ */
+#define FT_DEBUG_HOOK_TRUETYPE 0
+
+
+ /**************************************************************************
+ *
* @function:
* FT_Set_Debug_Hook
*
@@ -609,26 +651,27 @@
* Set a debug hook function for debugging the interpreter of a font
* format.
*
+ * While this is a public API function, an application needs access to
+ * FreeType's internal header files to do something useful.
+ *
+ * Have a look at the source code of the `ttdebug` FreeType demo program
+ * for an example of its usage.
+ *
* @inout:
* library ::
* A handle to the library object.
*
* @input:
* hook_index ::
- * The index of the debug hook. You should use the
- * values defined in `ftobjs.h', e.g.,
- * `FT_DEBUG_HOOK_TRUETYPE'.
+ * The index of the debug hook. You should use defined enumeration
+ * macros like @FT_DEBUG_HOOK_TRUETYPE.
*
* debug_hook ::
* The function used to debug the interpreter.
*
* @note:
- * Currently, four debug hook slots are available, but only two (for
- * the TrueType and the Type~1 interpreter) are defined.
- *
- * Since the internal headers of FreeType are no longer installed,
- * the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.
- * This is a bug and will be fixed in a forthcoming release.
+ * Currently, four debug hook slots are available, but only one (for the
+ * TrueType interpreter) is defined.
*/
FT_EXPORT( void )
FT_Set_Debug_Hook( FT_Library library,
@@ -642,9 +685,9 @@
* FT_Add_Default_Modules
*
* @description:
- * Add the set of default drivers to a given library object.
- * This is only useful when you create a library object with
- * @FT_New_Library (usually to plug a custom memory manager).
+ * Add the set of default drivers to a given library object. This is
+ * only useful when you create a library object with @FT_New_Library
+ * (usually to plug a custom memory manager).
*
* @inout:
* library ::
@@ -679,9 +722,9 @@
* FT_TrueTypeEngineType
*
* @description:
- * A list of values describing which kind of TrueType bytecode
- * engine is implemented in a given FT_Library instance. It is used
- * by the @FT_Get_TrueType_Engine_Type function.
+ * A list of values describing which kind of TrueType bytecode engine is
+ * implemented in a given FT_Library instance. It is used by the
+ * @FT_Get_TrueType_Engine_Type function.
*
* @values:
* FT_TRUETYPE_ENGINE_TYPE_NONE ::
@@ -691,9 +734,9 @@
* Deprecated and removed.
*
* FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
- * The library implements a bytecode interpreter that covers
- * the full instruction set of the TrueType virtual machine (this
- * was governed by patents until May 2010, hence the name).
+ * The library implements a bytecode interpreter that covers the full
+ * instruction set of the TrueType virtual machine (this was governed
+ * by patents until May 2010, hence the name).
*
* @since:
* 2.2
@@ -714,8 +757,8 @@
* FT_Get_TrueType_Engine_Type
*
* @description:
- * Return an @FT_TrueTypeEngineType value to indicate which level of
- * the TrueType virtual machine a given library instance supports.
+ * Return an @FT_TrueTypeEngineType value to indicate which level of the
+ * TrueType virtual machine a given library instance supports.
*
* @input:
* library ::
diff --git a/include/freetype/ftmoderr.h b/include/freetype/ftmoderr.h
index 661b0da..e169935 100644
--- a/include/freetype/ftmoderr.h
+++ b/include/freetype/ftmoderr.h
@@ -4,7 +4,7 @@
*
* FreeType module error offsets (specification).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -20,60 +20,69 @@
*
* This file is used to define the FreeType module error codes.
*
- * If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is
+ * If the macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` in `ftoption.h` is
* set, the lower byte of an error value identifies the error code as
* usual. In addition, the higher byte identifies the module. For
- * example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the
- * error `TT_Err_Invalid_File_Format' has value 0x1303, the error
- * `T1_Err_Invalid_File_Format' has value 0x1403, etc.
+ * example, the error `FT_Err_Invalid_File_Format` has value 0x0003, the
+ * error `TT_Err_Invalid_File_Format` has value 0x1303, the error
+ * `T1_Err_Invalid_File_Format` has value 0x1403, etc.
*
- * Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero,
+ * Note that `FT_Err_Ok`, `TT_Err_Ok`, etc. are always equal to zero,
* including the high byte.
*
- * If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of
- * an error value is set to zero.
+ * If `FT_CONFIG_OPTION_USE_MODULE_ERRORS` isn't set, the higher byte of an
+ * error value is set to zero.
*
- * To hide the various `XXX_Err_' prefixes in the source code, FreeType
- * provides some macros in `fttypes.h'.
+ * To hide the various `XXX_Err_` prefixes in the source code, FreeType
+ * provides some macros in `fttypes.h`.
*
* FT_ERR( err )
- * Add current error module prefix (as defined with the
- * `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module
- * the line
*
+ * Add current error module prefix (as defined with the `FT_ERR_PREFIX`
+ * macro) to `err`. For example, in the BDF module the line
+ *
+ * ```
* error = FT_ERR( Invalid_Outline );
+ * ```
*
* expands to
*
+ * ```
* error = BDF_Err_Invalid_Outline;
+ * ```
*
- * For simplicity, you can always use `FT_Err_Ok' directly instead
- * of `FT_ERR( Ok )'.
+ * For simplicity, you can always use `FT_Err_Ok` directly instead of
+ * `FT_ERR( Ok )`.
*
* FT_ERR_EQ( errcode, err )
* FT_ERR_NEQ( errcode, err )
- * Compare error code `errcode' with the error `err' for equality
- * and inequality, respectively. Example:
*
+ * Compare error code `errcode` with the error `err` for equality and
+ * inequality, respectively. Example:
+ *
+ * ```
* if ( FT_ERR_EQ( error, Invalid_Outline ) )
* ...
+ * ```
*
- * Using this macro you don't have to think about error prefixes.
- * Of course, if module errors are not active, the above example is
- * the same as
+ * Using this macro you don't have to think about error prefixes. Of
+ * course, if module errors are not active, the above example is the
+ * same as
*
+ * ```
* if ( error == FT_Err_Invalid_Outline )
* ...
+ * ```
*
* FT_ERROR_BASE( errcode )
* FT_ERROR_MODULE( errcode )
+ *
* Get base error and module error code, respectively.
*
+ * It can also be used to create a module error message table easily with
+ * something like
*
- * It can also be used to create a module error message table easily
- * with something like
- *
- * {
+ * ```
* #undef FTMODERR_H_
* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s },
* #define FT_MODERR_START_LIST {
@@ -86,7 +95,7 @@
* } ft_mod_errors[] =
*
* #include FT_MODULE_ERRORS_H
- * }
+ * ```
*
*/
diff --git a/include/freetype/ftotval.h b/include/freetype/ftotval.h
index 698b429..c034f48 100644
--- a/include/freetype/ftotval.h
+++ b/include/freetype/ftotval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating OpenType tables (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -55,8 +55,8 @@
* An API to validate OpenType tables.
*
* @description:
- * This section contains the declaration of functions to validate
- * some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
+ * This section contains the declaration of functions to validate some
+ * OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
*
* @order:
* FT_OpenType_Validate
@@ -67,7 +67,7 @@
*/
- /**********************************************************************
+ /**************************************************************************
*
* @enum:
* FT_VALIDATE_OTXXX
@@ -114,7 +114,7 @@
FT_VALIDATE_MATH )
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_OpenType_Validate
@@ -122,8 +122,8 @@
* @description:
* Validate various OpenType tables to assure that all offsets and
* indices are valid. The idea is that a higher-level library that
- * actually does the text layout can access those tables without
- * error checking (which can be quite time consuming).
+ * actually does the text layout can access those tables without error
+ * checking (which can be quite time consuming).
*
* @input:
* face ::
@@ -157,7 +157,7 @@
* otherwise.
*
* After use, the application should deallocate the five tables with
- * @FT_OpenType_Free. A NULL value indicates that the table either
+ * @FT_OpenType_Free. A `NULL` value indicates that the table either
* doesn't exist in the font, or the application hasn't asked for
* validation.
*/
@@ -171,7 +171,7 @@
FT_Bytes *JSTF_table );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_OpenType_Free
diff --git a/include/freetype/ftoutln.h b/include/freetype/ftoutln.h
index 9dae104..b72327b 100644
--- a/include/freetype/ftoutln.h
+++ b/include/freetype/ftoutln.h
@@ -5,7 +5,7 @@
* Support for the FT_Outline type used to store glyph shapes of
* most scalable font formats (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -47,7 +47,7 @@
*
* @description:
* This section contains routines used to create and destroy scalable
- * glyph images known as `outlines'. These can also be measured,
+ * glyph images known as 'outlines'. These can also be measured,
* transformed, and converted into bitmaps and pixmaps.
*
* @order:
@@ -89,7 +89,7 @@
*
* @description:
* Walk over an outline's structure to decompose it into individual
- * segments and Bezier arcs. This function also emits `move to'
+ * segments and Bezier arcs. This function also emits 'move to'
* operations to indicate the start of new contours in the outline.
*
* @input:
@@ -97,30 +97,28 @@
* A pointer to the source target.
*
* func_interface ::
- * A table of `emitters', i.e., function pointers
- * called during decomposition to indicate path
- * operations.
+ * A table of 'emitters', i.e., function pointers called during
+ * decomposition to indicate path operations.
*
* @inout:
* user ::
- * A typeless pointer that is passed to each
- * emitter during the decomposition. It can be
- * used to store the state during the
+ * A typeless pointer that is passed to each emitter during the
+ * decomposition. It can be used to store the state during the
* decomposition.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * A contour that contains a single point only is represented by a
- * `move to' operation followed by `line to' to the same point. In
- * most cases, it is best to filter this out before using the
- * outline for stroking purposes (otherwise it would result in a
- * visible dot when round caps are used).
+ * A contour that contains a single point only is represented by a 'move
+ * to' operation followed by 'line to' to the same point. In most cases,
+ * it is best to filter this out before using the outline for stroking
+ * purposes (otherwise it would result in a visible dot when round caps
+ * are used).
*
* Similarly, the function returns success for an empty outline also
- * (doing nothing, this is, not calling any emitter); if necessary,
- * you should filter this out, too.
+ * (doing nothing, this is, not calling any emitter); if necessary, you
+ * should filter this out, too.
*/
FT_EXPORT( FT_Error )
FT_Outline_Decompose( FT_Outline* outline,
@@ -138,18 +136,17 @@
*
* @input:
* library ::
- * A handle to the library object from where the
- * outline is allocated. Note however that the new
- * outline will *not* necessarily be *freed*, when
- * destroying the library, by @FT_Done_FreeType.
+ * A handle to the library object from where the outline is allocated.
+ * Note however that the new outline will **not** necessarily be
+ * **freed**, when destroying the library, by @FT_Done_FreeType.
*
* numPoints ::
- * The maximum number of points within the outline.
- * Must be smaller than or equal to 0xFFFF (65535).
+ * The maximum number of points within the outline. Must be smaller
+ * than or equal to 0xFFFF (65535).
*
* numContours ::
- * The maximum number of contours within the outline.
- * This value must be in the range 0 to `numPoints'.
+ * The maximum number of contours within the outline. This value must
+ * be in the range 0 to `numPoints`.
*
* @output:
* anoutline ::
@@ -159,8 +156,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * The reason why this function takes a `library' parameter is simply
- * to use the library's memory allocator.
+ * The reason why this function takes a `library` parameter is simply to
+ * use the library's memory allocator.
*/
FT_EXPORT( FT_Error )
FT_Outline_New( FT_Library library,
@@ -169,13 +166,6 @@
FT_Outline *anoutline );
- FT_EXPORT( FT_Error )
- FT_Outline_New_Internal( FT_Memory memory,
- FT_UInt numPoints,
- FT_Int numContours,
- FT_Outline *anoutline );
-
-
/**************************************************************************
*
* @function:
@@ -186,8 +176,7 @@
*
* @input:
* library ::
- * A handle of the library object used to allocate the
- * outline.
+ * A handle of the library object used to allocate the outline.
*
* outline ::
* A pointer to the outline object to be discarded.
@@ -196,19 +185,14 @@
* FreeType error code. 0~means success.
*
* @note:
- * If the outline's `owner' field is not set, only the outline
- * descriptor will be released.
+ * If the outline's 'owner' field is not set, only the outline descriptor
+ * will be released.
*/
FT_EXPORT( FT_Error )
FT_Outline_Done( FT_Library library,
FT_Outline* outline );
- FT_EXPORT( FT_Error )
- FT_Outline_Done_Internal( FT_Memory memory,
- FT_Outline* outline );
-
-
/**************************************************************************
*
* @function:
@@ -238,16 +222,16 @@
* FT_Outline_Get_CBox
*
* @description:
- * Return an outline's `control box'. The control box encloses all
- * the outline's points, including Bezier control points. Though it
+ * Return an outline's 'control box'. The control box encloses all the
+ * outline's points, including Bezier 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 Bezier outside arcs).
+ * slightly larger in some situations (like when rotating an outline that
+ * contains Bezier 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.
+ * 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 ::
@@ -296,9 +280,9 @@
* FT_Outline_Copy
*
* @description:
- * Copy an outline into another one. Both objects must have the
- * same sizes (number of points & number of contours) when this
- * function is called.
+ * Copy an outline into another one. Both objects must have the same
+ * sizes (number of points & number of contours) when this function is
+ * called.
*
* @input:
* source ::
@@ -322,8 +306,8 @@
* FT_Outline_Transform
*
* @description:
- * Apply a simple 2x2 matrix to all of an outline's points. Useful
- * for applying rotations, slanting, flipping, etc.
+ * Apply a simple 2x2 matrix to all of an outline's points. Useful for
+ * applying rotations, slanting, flipping, etc.
*
* @inout:
* outline ::
@@ -349,10 +333,10 @@
*
* @description:
* Embolden an outline. The new outline will be at most 4~times
- * `strength' pixels wider and higher. You may think of the left and
+ * `strength` pixels wider and higher. You may think of the left and
* bottom borders as unchanged.
*
- * Negative `strength' values to reduce the outline thickness are
+ * Negative `strength` values to reduce the outline thickness are
* possible also.
*
* @inout:
@@ -361,31 +345,30 @@
*
* @input:
* strength ::
- * How strong the glyph is emboldened. Expressed in
- * 26.6 pixel format.
+ * How strong the glyph is emboldened. Expressed in 26.6 pixel format.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The used algorithm to increase or decrease the thickness of the
- * glyph doesn't change the number of points; this means that certain
- * situations like acute angles or intersections are sometimes
- * handled incorrectly.
+ * The used algorithm to increase or decrease the thickness of the glyph
+ * doesn't change the number of points; this means that certain
+ * situations like acute angles or intersections are sometimes handled
+ * incorrectly.
*
- * If you need `better' metrics values you should call
+ * If you need 'better' metrics values you should call
* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.
*
* To get meaningful results, font scaling values must be set with
* functions like @FT_Set_Char_Size before calling FT_Render_Glyph.
*
* @example:
- * {
+ * ```
* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );
*
* if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )
* FT_Outline_Embolden( &face->glyph->outline, strength );
- * }
+ * ```
*
*/
FT_EXPORT( FT_Error )
@@ -399,10 +382,9 @@
* FT_Outline_EmboldenXY
*
* @description:
- * Embolden an outline. The new outline will be `xstrength' pixels
- * wider and `ystrength' pixels higher. Otherwise, it is similar to
- * @FT_Outline_Embolden, which uses the same strength in both
- * directions.
+ * Embolden an outline. The new outline will be `xstrength` pixels wider
+ * and `ystrength` pixels higher. Otherwise, it is similar to
+ * @FT_Outline_Embolden, which uses the same strength in both directions.
*
* @since:
* 2.4.10
@@ -419,19 +401,19 @@
* FT_Outline_Reverse
*
* @description:
- * Reverse the drawing direction of an outline. This is used to
- * ensure consistent fill conventions for mirrored glyphs.
+ * Reverse the drawing direction of an outline. This is used to ensure
+ * consistent fill conventions for mirrored glyphs.
*
* @inout:
* outline ::
* A pointer to the target outline descriptor.
*
* @note:
- * This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in
- * the outline's `flags' field.
+ * This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in the
+ * outline's `flags` field.
*
- * It shouldn't be used by a normal client application, unless it
- * knows what it is doing.
+ * It shouldn't be used by a normal client application, unless it knows
+ * what it is doing.
*/
FT_EXPORT( void )
FT_Outline_Reverse( FT_Outline* outline );
@@ -461,15 +443,15 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function does NOT CREATE the bitmap, it only renders an
+ * This function does **not create** the bitmap, it only renders an
* outline image within the one you pass to it! Consequently, the
- * various fields in `abitmap' should be set accordingly.
+ * various fields in `abitmap` should be set accordingly.
*
* It will use the raster corresponding to the default glyph format.
*
- * The value of the `num_grays' field in `abitmap' is ignored. If
- * you select the gray-level rasterizer, and you want less than 256
- * gray levels, you have to use @FT_Outline_Render directly.
+ * The value of the `num_grays` field in `abitmap` is ignored. If you
+ * select the gray-level rasterizer, and you want less than 256 gray
+ * levels, you have to use @FT_Outline_Render directly.
*/
FT_EXPORT( FT_Error )
FT_Outline_Get_Bitmap( FT_Library library,
@@ -484,9 +466,6 @@
*
* @description:
* Render an outline within a bitmap using the current scan-convert.
- * This function uses an @FT_Raster_Params structure as an argument,
- * allowing advanced features like direct composition, translucency,
- * etc.
*
* @input:
* library ::
@@ -497,23 +476,25 @@
*
* @inout:
* params ::
- * A pointer to an @FT_Raster_Params structure used to
- * describe the rendering operation.
+ * A pointer to an @FT_Raster_Params structure used to describe the
+ * rendering operation.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * You should know what you are doing and how @FT_Raster_Params works
- * to use this function.
+ * This advanced function uses @FT_Raster_Params as an argument,
+ * allowing FreeType rasterizer to be used for direct composition,
+ * translucency, etc. You should know how to set up @FT_Raster_Params
+ * for this function to work.
*
- * The field `params.source' will be set to `outline' before the scan
+ * The field `params.source` will be set to `outline` before the scan
* converter is called, which means that the value you give to it is
* actually ignored.
*
- * The gray-level rasterizer always uses 256 gray levels. If you
- * want less gray levels, you have to provide your own span callback.
- * See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the
+ * The gray-level rasterizer always uses 256 gray levels. If you want
+ * less gray levels, you have to provide your own span callback. See the
+ * @FT_RASTER_FLAG_DIRECT value of the `flags` field in the
* @FT_Raster_Params structure for more details.
*/
FT_EXPORT( FT_Error )
@@ -535,22 +516,22 @@
*
* @values:
* FT_ORIENTATION_TRUETYPE ::
- * According to the TrueType specification, clockwise contours must
- * be filled, and counter-clockwise ones must be unfilled.
+ * According to the TrueType specification, clockwise contours must be
+ * filled, and counter-clockwise ones must be unfilled.
*
* FT_ORIENTATION_POSTSCRIPT ::
- * According to the PostScript specification, counter-clockwise contours
- * must be filled, and clockwise ones must be unfilled.
+ * According to the PostScript specification, counter-clockwise
+ * contours must be filled, and clockwise ones must be unfilled.
*
* FT_ORIENTATION_FILL_RIGHT ::
* This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
- * remember that in TrueType, everything that is to the right of
- * the drawing direction of a contour must be filled.
+ * remember that in TrueType, everything that is to the right of the
+ * drawing direction of a contour must be filled.
*
* FT_ORIENTATION_FILL_LEFT ::
* This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
- * remember that in PostScript, everything that is to the left of
- * the drawing direction of a contour must be filled.
+ * remember that in PostScript, everything that is to the left of the
+ * drawing direction of a contour must be filled.
*
* FT_ORIENTATION_NONE ::
* The orientation cannot be determined. That is, different parts of
@@ -574,11 +555,11 @@
* FT_Outline_Get_Orientation
*
* @description:
- * This function analyzes a glyph outline and tries to compute its
- * fill orientation (see @FT_Orientation). This is done by integrating
- * the total area covered by the outline. The positive integral
- * corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
- * is returned. The negative integral corresponds to the counter-clockwise
+ * This function analyzes a glyph outline and tries to compute its fill
+ * orientation (see @FT_Orientation). This is done by integrating the
+ * total area covered by the outline. The positive integral corresponds
+ * to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT is
+ * returned. The negative integral corresponds to the counter-clockwise
* orientation and @FT_ORIENTATION_TRUETYPE is returned.
*
* Note that this will return @FT_ORIENTATION_TRUETYPE for empty
diff --git a/include/freetype/ftparams.h b/include/freetype/ftparams.h
index 004eaf5..c374ee2 100644
--- a/include/freetype/ftparams.h
+++ b/include/freetype/ftparams.h
@@ -4,7 +4,7 @@
*
* FreeType API for possible FT_Parameter tags (specification only).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -51,16 +51,16 @@
*/
- /***************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
*
* @description:
* A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
- * family names in the `name' table (introduced in OpenType version
- * 1.4). Use this for backward compatibility with legacy systems that
- * have a four-faces-per-family restriction.
+ * family names in the 'name' table (introduced in OpenType version 1.4).
+ * Use this for backward compatibility with legacy systems that have a
+ * four-faces-per-family restriction.
*
* @since:
* 2.8
@@ -75,14 +75,14 @@
FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
- /***************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
*
* @description:
* A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
- * subfamily names in the `name' table (introduced in OpenType version
+ * subfamily names in the 'name' table (introduced in OpenType version
* 1.4). Use this for backward compatibility with legacy systems that
* have a four-faces-per-family restriction.
*
@@ -99,7 +99,7 @@
FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
- /***************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_PARAM_TAG_INCREMENTAL
@@ -121,8 +121,8 @@
* @description:
* An @FT_Parameter tag to be used with @FT_Face_Properties. The
* corresponding argument specifies the five LCD filter weights for a
- * given face (if using @FT_LOAD_TARGET_LCD, for example), overriding
- * the global default values or the values set up with
+ * given face (if using @FT_LOAD_TARGET_LCD, for example), overriding the
+ * global default values or the values set up with
* @FT_Library_SetLcdFilterWeights.
*
* @since:
@@ -141,8 +141,7 @@
* @description:
* An @FT_Parameter tag to be used with @FT_Face_Properties. The
* corresponding 32bit signed integer argument overrides the font
- * driver's random seed value with a face-specific one; see
- * @random-seed.
+ * driver's random seed value with a face-specific one; see @random-seed.
*
* @since:
* 2.8
@@ -163,10 +162,10 @@
* darkening, overriding the global default values or the values set up
* with @FT_Property_Set (see @no-stem-darkening).
*
- * This is a passive setting that only takes effect if the font driver
- * or autohinter honors it, which the CFF, Type~1, and CID drivers
- * always do, but the autohinter only in `light' hinting mode (as of
- * version 2.9).
+ * This is a passive setting that only takes effect if the font driver or
+ * autohinter honors it, which the CFF, Type~1, and CID drivers always
+ * do, but the autohinter only in 'light' hinting mode (as of version
+ * 2.9).
*
* @since:
* 2.8
@@ -176,7 +175,7 @@
FT_MAKE_TAG( 'd', 'a', 'r', 'k' )
- /***************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_PARAM_TAG_UNPATENTED_HINTING
@@ -184,9 +183,9 @@
* @description:
* Deprecated, no effect.
*
- * Previously: A constant used as the tag of an @FT_Parameter structure to
- * indicate that unpatented methods only should be used by the TrueType
- * bytecode interpreter for a typeface opened by @FT_Open_Face.
+ * Previously: A constant used as the tag of an @FT_Parameter structure
+ * to indicate that unpatented methods only should be used by the
+ * TrueType bytecode interpreter for a typeface opened by @FT_Open_Face.
*
*/
#define FT_PARAM_TAG_UNPATENTED_HINTING \
diff --git a/include/freetype/ftpfr.h b/include/freetype/ftpfr.h
index deaae61..b4eca76 100644
--- a/include/freetype/ftpfr.h
+++ b/include/freetype/ftpfr.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing PFR-specific data (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -49,7 +49,7 @@
*/
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PFR_Metrics
@@ -63,22 +63,22 @@
*
* @output:
* aoutline_resolution ::
- * Outline resolution. This is equivalent to `face->units_per_EM'
- * for non-PFR fonts. Optional (parameter can be NULL).
+ * Outline resolution. This is equivalent to `face->units_per_EM` for
+ * non-PFR fonts. Optional (parameter can be `NULL`).
*
* ametrics_resolution ::
- * Metrics resolution. This is equivalent to `outline_resolution'
- * for non-PFR fonts. Optional (parameter can be NULL).
+ * Metrics resolution. This is equivalent to `outline_resolution` for
+ * non-PFR fonts. Optional (parameter can be `NULL`).
*
* ametrics_x_scale ::
- * A 16.16 fixed-point number used to scale distance expressed
- * in metrics units to device subpixels. This is equivalent to
- * `face->size->x_scale', but for metrics only. Optional (parameter
- * can be NULL).
+ * A 16.16 fixed-point number used to scale distance expressed in
+ * metrics units to device subpixels. This is equivalent to
+ * `face->size->x_scale`, but for metrics only. Optional (parameter
+ * can be `NULL`).
*
* ametrics_y_scale ::
- * Same as `ametrics_x_scale' but for the vertical direction.
- * optional (parameter can be NULL).
+ * Same as `ametrics_x_scale` but for the vertical direction.
+ * optional (parameter can be `NULL`).
*
* @return:
* FreeType error code. 0~means success.
@@ -95,7 +95,7 @@
FT_Fixed *ametrics_y_scale );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PFR_Kerning
@@ -123,11 +123,11 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function always return distances in original PFR metrics
- * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
- * mode, which always returns distances converted to outline units.
+ * This function always return distances in original PFR metrics units.
+ * This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED mode,
+ * which always returns distances converted to outline units.
*
- * You can use the value of the `x_scale' and `y_scale' parameters
+ * You can use the value of the `x_scale` and `y_scale` parameters
* returned by @FT_Get_PFR_Metrics to scale these to device subpixels.
*/
FT_EXPORT( FT_Error )
@@ -137,7 +137,7 @@
FT_Vector *avector );
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PFR_Advance
@@ -161,7 +161,7 @@
* FreeType error code. 0~means success.
*
* @note:
- * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
+ * You can use the `x_scale` or `y_scale` results of @FT_Get_PFR_Metrics
* to convert the advance to device subpixels (i.e., 1/64th of pixels).
*/
FT_EXPORT( FT_Error )
diff --git a/include/freetype/ftrender.h b/include/freetype/ftrender.h
index 2b7e5c8..a01c774 100644
--- a/include/freetype/ftrender.h
+++ b/include/freetype/ftrender.h
@@ -4,7 +4,7 @@
*
* FreeType renderer modules public interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -132,12 +132,11 @@
* The glyph image format this renderer handles.
*
* render_glyph ::
- * A method used to render the image that is in a
- * given glyph slot into a bitmap.
+ * A method used to render the image that is in a given glyph slot into
+ * a bitmap.
*
* transform_glyph ::
- * A method used to transform the image that is in
- * a given glyph slot.
+ * A method used to transform the image that is in a given glyph slot.
*
* get_glyph_cbox ::
* A method used to access the glyph's cbox.
@@ -146,8 +145,8 @@
* A method used to pass additional parameters.
*
* raster_class ::
- * For @FT_GLYPH_FORMAT_OUTLINE renderers only.
- * This is a pointer to its raster's class.
+ * For @FT_GLYPH_FORMAT_OUTLINE renderers only. This is a pointer to
+ * its raster's class.
*/
typedef struct FT_Renderer_Class_
{
@@ -184,8 +183,8 @@
* A renderer handle. 0~if none found.
*
* @note:
- * An error will be returned if a module already exists by that name,
- * or if the module requires a version of FreeType that is too great.
+ * An error will be returned if a module already exists by that name, or
+ * if the module requires a version of FreeType that is too great.
*
* To add a new renderer, simply use @FT_Add_Module. To retrieve a
* renderer by its name, use @FT_Get_Module.
@@ -221,13 +220,13 @@
* FreeType error code. 0~means success.
*
* @note:
- * In case of success, the renderer will be used to convert glyph
- * images in the renderer's known format into bitmaps.
+ * In case of success, the renderer will be used to convert glyph images
+ * in the renderer's known format into bitmaps.
*
* This doesn't change the current renderer for other formats.
*
- * Currently, no FreeType renderer module uses `parameters'; you
- * should thus always pass NULL as the value.
+ * Currently, no FreeType renderer module uses `parameters`; you should
+ * thus always pass `NULL` as the value.
*/
FT_EXPORT( FT_Error )
FT_Set_Renderer( FT_Library library,
diff --git a/include/freetype/ftsizes.h b/include/freetype/ftsizes.h
index 481a053..6c63cef 100644
--- a/include/freetype/ftsizes.h
+++ b/include/freetype/ftsizes.h
@@ -4,7 +4,7 @@
*
* FreeType size objects management (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -19,8 +19,8 @@
/**************************************************************************
*
* Typical application would normally not need to use these functions.
- * However, they have been placed in a public API for the rare cases
- * where they are needed.
+ * However, they have been placed in a public API for the rare cases where
+ * they are needed.
*
*/
@@ -54,22 +54,20 @@
* Managing multiple sizes per face.
*
* @description:
- * When creating a new face object (e.g., with @FT_New_Face), an
- * @FT_Size object is automatically created and used to store all
- * pixel-size dependent information, available in the `face->size'
- * field.
+ * When creating a new face object (e.g., with @FT_New_Face), an @FT_Size
+ * object is automatically created and used to store all pixel-size
+ * dependent information, available in the `face->size` field.
*
- * It is however possible to create more sizes for a given face,
- * mostly in order to manage several character pixel sizes of the
- * same font family and style. See @FT_New_Size and @FT_Done_Size.
+ * It is however possible to create more sizes for a given face, mostly
+ * in order to manage several character pixel sizes of the same font
+ * family and style. See @FT_New_Size and @FT_Done_Size.
*
- * Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only
- * modify the contents of the current `active' size; you thus need
- * to use @FT_Activate_Size to change it.
+ * Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only modify the
+ * contents of the current 'active' size; you thus need to use
+ * @FT_Activate_Size to change it.
*
- * 99% of applications won't need the functions provided here,
- * especially if they use the caching sub-system, so be cautious
- * when using these.
+ * 99% of applications won't need the functions provided here, especially
+ * if they use the caching sub-system, so be cautious when using these.
*
*/
@@ -94,8 +92,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * You need to call @FT_Activate_Size in order to select the new size
- * for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,
+ * You need to call @FT_Activate_Size in order to select the new size for
+ * upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,
* @FT_Load_Glyph, @FT_Load_Char, etc.
*/
FT_EXPORT( FT_Error )
@@ -109,9 +107,8 @@
* FT_Done_Size
*
* @description:
- * Discard a given size object. Note that @FT_Done_Face
- * automatically discards all size objects allocated with
- * @FT_New_Size.
+ * Discard a given size object. Note that @FT_Done_Face automatically
+ * discards all size objects allocated with @FT_New_Size.
*
* @input:
* size ::
@@ -130,12 +127,12 @@
* FT_Activate_Size
*
* @description:
- * Even though it is possible to create several size objects for a
- * given face (see @FT_New_Size for details), functions like
- * @FT_Load_Glyph or @FT_Load_Char only use the one that has been
- * activated last to determine the `current character pixel size'.
+ * Even though it is possible to create several size objects for a given
+ * face (see @FT_New_Size for details), functions like @FT_Load_Glyph or
+ * @FT_Load_Char only use the one that has been activated last to
+ * determine the 'current character pixel size'.
*
- * This function can be used to `activate' a previously created size
+ * This function can be used to 'activate' a previously created size
* object.
*
* @input:
@@ -146,8 +143,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * If `face' is the size's parent face object, this function changes
- * the value of `face->size' to the input size handle.
+ * If `face` is the size's parent face object, this function changes the
+ * value of `face->size` to the input size handle.
*/
FT_EXPORT( FT_Error )
FT_Activate_Size( FT_Size size );
diff --git a/include/freetype/ftsnames.h b/include/freetype/ftsnames.h
index 0a0ac31..4d43602 100644
--- a/include/freetype/ftsnames.h
+++ b/include/freetype/ftsnames.h
@@ -2,12 +2,12 @@
*
* ftsnames.h
*
- * Simple interface to access SFNT `name' tables (which are used
+ * Simple interface to access SFNT 'name' tables (which are used
* to hold font names, copyright info, notices, etc.) (specification).
*
* This is _not_ used to retrieve glyph names!
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -49,10 +49,10 @@
* Access the names embedded in TrueType and OpenType files.
*
* @description:
- * The TrueType and OpenType specifications allow the inclusion of
- * a special names table (`name') in font files. This table contains
- * textual (and internationalized) information regarding the font,
- * like family name, copyright, version, etc.
+ * The TrueType and OpenType specifications allow the inclusion of a
+ * special names table ('name') in font files. This table contains
+ * textual (and internationalized) information regarding the font, like
+ * family name, copyright, version, etc.
*
* The definitions below are used to access them if available.
*
@@ -67,43 +67,39 @@
* FT_SfntName
*
* @description:
- * A structure used to model an SFNT `name' table entry.
+ * A structure used to model an SFNT 'name' table entry.
*
* @fields:
* platform_id ::
- * The platform ID for `string'.
- * See @TT_PLATFORM_XXX for possible values.
+ * The platform ID for `string`. See @TT_PLATFORM_XXX for possible
+ * values.
*
* encoding_id ::
- * The encoding ID for `string'.
- * See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,
- * @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX
- * for possible values.
+ * The encoding ID for `string`. See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,
+ * @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX for possible
+ * values.
*
* language_id ::
- * The language ID for `string'.
- * See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for
- * possible values.
+ * The language ID for `string`. See @TT_MAC_LANGID_XXX and
+ * @TT_MS_LANGID_XXX for possible values.
*
- * Registered OpenType values for `language_id' are
- * always smaller than 0x8000; values equal or larger
- * than 0x8000 usually indicate a language tag string
- * (introduced in OpenType version 1.6). Use function
- * @FT_Get_Sfnt_LangTag with `language_id' as its
- * argument to retrieve the associated language tag.
+ * Registered OpenType values for `language_id` are always smaller than
+ * 0x8000; values equal or larger than 0x8000 usually indicate a
+ * language tag string (introduced in OpenType version 1.6). Use
+ * function @FT_Get_Sfnt_LangTag with `language_id` as its argument to
+ * retrieve the associated language tag.
*
* name_id ::
- * An identifier for `string'.
- * See @TT_NAME_ID_XXX for possible values.
+ * An identifier for `string`. See @TT_NAME_ID_XXX for possible
+ * values.
*
* string ::
- * The `name' string. Note that its format differs
- * depending on the (platform,encoding) pair, being
- * either a string of bytes (without a terminating
- * NULL byte) or containing UTF-16BE entities.
+ * The 'name' string. Note that its format differs depending on the
+ * (platform,encoding) pair, being either a string of bytes (without a
+ * terminating `NULL` byte) or containing UTF-16BE entities.
*
* string_len ::
- * The length of `string' in bytes.
+ * The length of `string` in bytes.
*
* @note:
* Please refer to the TrueType or OpenType specification for more
@@ -128,18 +124,18 @@
* FT_Get_Sfnt_Name_Count
*
* @description:
- * Retrieve the number of name strings in the SFNT `name' table.
+ * Retrieve the number of name strings in the SFNT 'name' table.
*
* @input:
* face ::
* A handle to the source face.
*
* @return:
- * The number of strings in the `name' table.
+ * The number of strings in the 'name' table.
*
* @note:
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
*/
FT_EXPORT( FT_UInt )
FT_Get_Sfnt_Name_Count( FT_Face face );
@@ -151,14 +147,14 @@
* FT_Get_Sfnt_Name
*
* @description:
- * Retrieve a string of the SFNT `name' table for a given index.
+ * Retrieve a string of the SFNT 'name' table for a given index.
*
* @input:
* face ::
* A handle to the source face.
*
* idx ::
- * The index of the `name' string.
+ * The index of the 'name' string.
*
* @output:
* aname ::
@@ -168,19 +164,19 @@
* FreeType error code. 0~means success.
*
* @note:
- * The `string' array returned in the `aname' structure is not
- * null-terminated. Note that you don't have to deallocate `string'
- * by yourself; FreeType takes care of it if you call @FT_Done_Face.
+ * The `string` array returned in the `aname` structure is not
+ * null-terminated. Note that you don't have to deallocate `string` by
+ * yourself; FreeType takes care of it if you call @FT_Done_Face.
*
* Use @FT_Get_Sfnt_Name_Count to get the total number of available
- * `name' table entries, then do a loop until you get the right
- * platform, encoding, and name ID.
+ * 'name' table entries, then do a loop until you get the right platform,
+ * encoding, and name ID.
*
- * `name' table format~1 entries can use language tags also, see
+ * 'name' table format~1 entries can use language tags also, see
* @FT_Get_Sfnt_LangTag.
*
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
*/
FT_EXPORT( FT_Error )
FT_Get_Sfnt_Name( FT_Face face,
@@ -194,16 +190,15 @@
* FT_SfntLangTag
*
* @description:
- * A structure to model a language tag entry from an SFNT `name'
- * table.
+ * A structure to model a language tag entry from an SFNT 'name' table.
*
* @fields:
* string ::
- * The language tag string, encoded in UTF-16BE
- * (without trailing NULL bytes).
+ * The language tag string, encoded in UTF-16BE (without trailing
+ * `NULL` bytes).
*
* string_len ::
- * The length of `string' in *bytes*.
+ * The length of `string` in **bytes**.
*
* @note:
* Please refer to the TrueType or OpenType specification for more
@@ -227,36 +222,36 @@
*
* @description:
* Retrieve the language tag associated with a language ID of an SFNT
- * `name' table entry.
+ * 'name' table entry.
*
* @input:
* face ::
* A handle to the source face.
*
* langID ::
- * The language ID, as returned by @FT_Get_Sfnt_Name.
- * This is always a value larger than 0x8000.
+ * The language ID, as returned by @FT_Get_Sfnt_Name. This is always a
+ * value larger than 0x8000.
*
* @output:
* alangTag ::
- * The language tag associated with the `name' table
- * entry's language ID.
+ * The language tag associated with the 'name' table entry's language
+ * ID.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * The `string' array returned in the `alangTag' structure is not
- * null-terminated. Note that you don't have to deallocate `string'
- * by yourself; FreeType takes care of it if you call @FT_Done_Face.
+ * The `string` array returned in the `alangTag` structure is not
+ * null-terminated. Note that you don't have to deallocate `string` by
+ * yourself; FreeType takes care of it if you call @FT_Done_Face.
*
- * Only `name' table format~1 supports language tags. For format~0
+ * Only 'name' table format~1 supports language tags. For format~0
* tables, this function always returns FT_Err_Invalid_Table. For
* invalid format~1 language ID values, FT_Err_Invalid_Argument is
* returned.
*
* This function always returns an error if the config macro
- * `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+ * `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
*
* @since:
* 2.8
diff --git a/include/freetype/ftstroke.h b/include/freetype/ftstroke.h
index 91d2776..01a9c18 100644
--- a/include/freetype/ftstroke.h
+++ b/include/freetype/ftstroke.h
@@ -4,7 +4,7 @@
*
* FreeType path stroker (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- /************************************************************************
+ /**************************************************************************
*
* @section:
* glyph_stroker
@@ -39,11 +39,11 @@
* Generating bordered and stroked glyphs.
*
* @description:
- * This component generates stroked outlines of a given vectorial
- * glyph. It also allows you to retrieve the `outside' and/or the
- * `inside' borders of the stroke.
+ * This component generates stroked outlines of a given vectorial glyph.
+ * It also allows you to retrieve the 'outside' and/or the 'inside'
+ * borders of the stroke.
*
- * This can be useful to generate `bordered' glyph, i.e., glyphs
+ * This can be useful to generate 'bordered' glyph, i.e., glyphs
* displayed with a coloured (and anti-aliased) border around their
* shape.
*
@@ -81,7 +81,7 @@
*/
- /**************************************************************
+ /**************************************************************************
*
* @type:
* FT_Stroker
@@ -92,51 +92,48 @@
typedef struct FT_StrokerRec_* FT_Stroker;
- /**************************************************************
+ /**************************************************************************
*
* @enum:
* FT_Stroker_LineJoin
*
* @description:
- * These values determine how two joining lines are rendered
- * in a stroker.
+ * These values determine how two joining lines are rendered in a
+ * stroker.
*
* @values:
* FT_STROKER_LINEJOIN_ROUND ::
- * Used to render rounded line joins. Circular arcs are used
- * to join two lines smoothly.
+ * Used to render rounded line joins. Circular arcs are used to join
+ * two lines smoothly.
*
* FT_STROKER_LINEJOIN_BEVEL ::
- * Used to render beveled line joins. The outer corner of
- * the joined lines is filled by enclosing the triangular
- * region of the corner with a straight line between the
- * outer corners of each stroke.
+ * Used to render beveled line joins. The outer corner of the joined
+ * lines is filled by enclosing the triangular region of the corner
+ * with a straight line between the outer corners of each stroke.
*
* FT_STROKER_LINEJOIN_MITER_FIXED ::
- * Used to render mitered line joins, with fixed bevels if the
- * miter limit is exceeded. The outer edges of the strokes
- * for the two segments are extended until they meet at an
- * angle. If the segments meet at too sharp an angle (such
- * that the miter would extend from the intersection of the
- * segments a distance greater than the product of the miter
- * limit value and the border radius), then a bevel join (see
- * above) is used instead. This prevents long spikes being
- * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter
- * line join as used in PostScript and PDF.
+ * Used to render mitered line joins, with fixed bevels if the miter
+ * limit is exceeded. The outer edges of the strokes for the two
+ * segments are extended until they meet at an angle. If the segments
+ * meet at too sharp an angle (such that the miter would extend from
+ * the intersection of the segments a distance greater than the product
+ * of the miter limit value and the border radius), then a bevel join
+ * (see above) is used instead. This prevents long spikes being
+ * created. `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line
+ * join as used in PostScript and PDF.
*
* FT_STROKER_LINEJOIN_MITER_VARIABLE ::
* FT_STROKER_LINEJOIN_MITER ::
- * Used to render mitered line joins, with variable bevels if
- * the miter limit is exceeded. The intersection of the
- * strokes is clipped at a line perpendicular to the bisector
- * of the angle between the strokes, at the distance from the
- * intersection of the segments equal to the product of the
- * miter limit value and the border radius. This prevents
- * long spikes being created.
- * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line
- * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias
- * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for
- * backward compatibility.
+ * Used to render mitered line joins, with variable bevels if the miter
+ * limit is exceeded. The intersection of the strokes is clipped at a
+ * line perpendicular to the bisector of the angle between the strokes,
+ * at the distance from the intersection of the segments equal to the
+ * product of the miter limit value and the border radius. This
+ * prevents long spikes being created.
+ * `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join
+ * as used in XPS. `FT_STROKER_LINEJOIN_MITER` is an alias for
+ * `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward
+ * compatibility.
*/
typedef enum FT_Stroker_LineJoin_
{
@@ -149,27 +146,25 @@
} FT_Stroker_LineJoin;
- /**************************************************************
+ /**************************************************************************
*
* @enum:
* FT_Stroker_LineCap
*
* @description:
- * These values determine how the end of opened sub-paths are
- * rendered in a stroke.
+ * These values determine how the end of opened sub-paths are rendered in
+ * a stroke.
*
* @values:
* FT_STROKER_LINECAP_BUTT ::
- * The end of lines is rendered as a full stop on the last
- * point itself.
+ * The end of lines is rendered as a full stop on the last point
+ * itself.
*
* FT_STROKER_LINECAP_ROUND ::
- * The end of lines is rendered as a half-circle around the
- * last point.
+ * The end of lines is rendered as a half-circle around the last point.
*
* FT_STROKER_LINECAP_SQUARE ::
- * The end of lines is rendered as a square around the
- * last point.
+ * The end of lines is rendered as a square around the last point.
*/
typedef enum FT_Stroker_LineCap_
{
@@ -180,14 +175,14 @@
} FT_Stroker_LineCap;
- /**************************************************************
+ /**************************************************************************
*
* @enum:
* FT_StrokerBorder
*
* @description:
- * These values are used to select a given stroke border
- * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
+ * These values are used to select a given stroke border in
+ * @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
*
* @values:
* FT_STROKER_BORDER_LEFT ::
@@ -197,9 +192,9 @@
* Select the right border, relative to the drawing direction.
*
* @note:
- * Applications are generally interested in the `inside' and `outside'
+ * Applications are generally interested in the 'inside' and 'outside'
* borders. However, there is no direct mapping between these and the
- * `left' and `right' ones, since this really depends on the glyph's
+ * 'left' and 'right' ones, since this really depends on the glyph's
* drawing orientation, which varies between font formats.
*
* You can however use @FT_Outline_GetInsideBorder and
@@ -213,14 +208,14 @@
} FT_StrokerBorder;
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Outline_GetInsideBorder
*
* @description:
- * Retrieve the @FT_StrokerBorder value corresponding to the
- * `inside' borders of a given outline.
+ * Retrieve the @FT_StrokerBorder value corresponding to the 'inside'
+ * borders of a given outline.
*
* @input:
* outline ::
@@ -234,14 +229,14 @@
FT_Outline_GetInsideBorder( FT_Outline* outline );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Outline_GetOutsideBorder
*
* @description:
- * Retrieve the @FT_StrokerBorder value corresponding to the
- * `outside' borders of a given outline.
+ * Retrieve the @FT_StrokerBorder value corresponding to the 'outside'
+ * borders of a given outline.
*
* @input:
* outline ::
@@ -255,7 +250,7 @@
FT_Outline_GetOutsideBorder( FT_Outline* outline );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_New
@@ -269,7 +264,7 @@
*
* @output:
* astroker ::
- * A new stroker object handle. NULL in case of error.
+ * A new stroker object handle. `NULL` in case of error.
*
* @return:
* FreeType error code. 0~means success.
@@ -279,7 +274,7 @@
FT_Stroker *astroker );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_Set
@@ -301,13 +296,12 @@
* The line join style.
*
* miter_limit ::
- * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and
- * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles,
- * expressed as 16.16 fixed-point value.
+ * The miter limit for the `FT_STROKER_LINEJOIN_MITER_FIXED` and
+ * `FT_STROKER_LINEJOIN_MITER_VARIABLE` line join styles, expressed as
+ * 16.16 fixed-point value.
*
* @note:
- * The radius is expressed in the same units as the outline
- * coordinates.
+ * The radius is expressed in the same units as the outline coordinates.
*
* This function calls @FT_Stroker_Rewind automatically.
*/
@@ -319,16 +313,15 @@
FT_Fixed miter_limit );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_Rewind
*
* @description:
- * Reset a stroker object without changing its attributes.
- * You should call this function before beginning a new
- * series of calls to @FT_Stroker_BeginSubPath or
- * @FT_Stroker_EndSubPath.
+ * Reset a stroker object without changing its attributes. You should
+ * call this function before beginning a new series of calls to
+ * @FT_Stroker_BeginSubPath or @FT_Stroker_EndSubPath.
*
* @input:
* stroker ::
@@ -338,15 +331,15 @@
FT_Stroker_Rewind( FT_Stroker stroker );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_ParseOutline
*
* @description:
- * A convenience function used to parse a whole outline with
- * the stroker. The resulting outline(s) can be retrieved
- * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
+ * A convenience function used to parse a whole outline with the stroker.
+ * The resulting outline(s) can be retrieved later by functions like
+ * @FT_Stroker_GetCounts and @FT_Stroker_Export.
*
* @input:
* stroker ::
@@ -356,18 +349,18 @@
* The source outline.
*
* opened ::
- * A boolean. If~1, the outline is treated as an open path instead
- * of a closed one.
+ * A boolean. If~1, the outline is treated as an open path instead of
+ * a closed one.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
- * If `opened' is~0 (the default), the outline is treated as a closed
- * path, and the stroker generates two distinct `border' outlines.
+ * If `opened` is~0 (the default), the outline is treated as a closed
+ * path, and the stroker generates two distinct 'border' outlines.
*
- * If `opened' is~1, the outline is processed as an open path, and the
- * stroker generates a single `stroke' outline.
+ * If `opened` is~1, the outline is processed as an open path, and the
+ * stroker generates a single 'stroke' outline.
*
* This function calls @FT_Stroker_Rewind automatically.
*/
@@ -377,7 +370,7 @@
FT_Bool opened );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_BeginSubPath
@@ -399,8 +392,8 @@
* FreeType error code. 0~means success.
*
* @note:
- * This function is useful when you need to stroke a path that is
- * not stored as an @FT_Outline object.
+ * This function is useful when you need to stroke a path that is not
+ * stored as an @FT_Outline object.
*/
FT_EXPORT( FT_Error )
FT_Stroker_BeginSubPath( FT_Stroker stroker,
@@ -408,7 +401,7 @@
FT_Bool open );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_EndSubPath
@@ -424,22 +417,22 @@
* FreeType error code. 0~means success.
*
* @note:
- * You should call this function after @FT_Stroker_BeginSubPath.
- * If the subpath was not `opened', this function `draws' a
- * single line segment to the start position when needed.
+ * You should call this function after @FT_Stroker_BeginSubPath. If the
+ * subpath was not 'opened', this function 'draws' a single line segment
+ * to the start position when needed.
*/
FT_EXPORT( FT_Error )
FT_Stroker_EndSubPath( FT_Stroker stroker );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_LineTo
*
* @description:
- * `Draw' a single line segment in the stroker's current sub-path,
- * from the last position.
+ * 'Draw' a single line segment in the stroker's current sub-path, from
+ * the last position.
*
* @input:
* stroker ::
@@ -460,13 +453,13 @@
FT_Vector* to );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_ConicTo
*
* @description:
- * `Draw' a single quadratic Bezier in the stroker's current sub-path,
+ * 'Draw' a single quadratic Bezier in the stroker's current sub-path,
* from the last position.
*
* @input:
@@ -492,14 +485,14 @@
FT_Vector* to );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_CubicTo
*
* @description:
- * `Draw' a single cubic Bezier in the stroker's current sub-path,
- * from the last position.
+ * 'Draw' a single cubic Bezier in the stroker's current sub-path, from
+ * the last position.
*
* @input:
* stroker ::
@@ -528,16 +521,16 @@
FT_Vector* to );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_GetBorderCounts
*
* @description:
- * Call this function once you have finished parsing your paths
- * with the stroker. It returns the number of points and
- * contours necessary to export one of the `border' or `stroke'
- * outlines generated by the stroker.
+ * Call this function once you have finished parsing your paths with the
+ * stroker. It returns the number of points and contours necessary to
+ * export one of the 'border' or 'stroke' outlines generated by the
+ * stroker.
*
* @input:
* stroker ::
@@ -557,15 +550,15 @@
* FreeType error code. 0~means success.
*
* @note:
- * When an outline, or a sub-path, is `closed', the stroker generates
- * two independent `border' outlines, named `left' and `right'.
+ * When an outline, or a sub-path, is 'closed', the stroker generates two
+ * independent 'border' outlines, named 'left' and 'right'.
*
- * When the outline, or a sub-path, is `opened', the stroker merges
- * the `border' outlines with caps. The `left' border receives all
- * points, while the `right' border becomes empty.
+ * When the outline, or a sub-path, is 'opened', the stroker merges the
+ * 'border' outlines with caps. The 'left' border receives all points,
+ * while the 'right' border becomes empty.
*
- * Use the function @FT_Stroker_GetCounts instead if you want to
- * retrieve the counts associated to both borders.
+ * Use the function @FT_Stroker_GetCounts instead if you want to retrieve
+ * the counts associated to both borders.
*/
FT_EXPORT( FT_Error )
FT_Stroker_GetBorderCounts( FT_Stroker stroker,
@@ -574,19 +567,17 @@
FT_UInt *anum_contours );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_ExportBorder
*
* @description:
- * Call this function after @FT_Stroker_GetBorderCounts to
- * export the corresponding border to your own @FT_Outline
- * structure.
+ * Call this function after @FT_Stroker_GetBorderCounts to export the
+ * corresponding border to your own @FT_Outline structure.
*
- * Note that this function appends the border points and
- * contours to your outline, but does not try to resize its
- * arrays.
+ * Note that this function appends the border points and contours to your
+ * outline, but does not try to resize its arrays.
*
* @input:
* stroker ::
@@ -599,19 +590,19 @@
* The target outline handle.
*
* @note:
- * Always call this function after @FT_Stroker_GetBorderCounts to
- * get sure that there is enough room in your @FT_Outline object to
- * receive all new data.
+ * Always call this function after @FT_Stroker_GetBorderCounts to get
+ * sure that there is enough room in your @FT_Outline object to receive
+ * all new data.
*
- * When an outline, or a sub-path, is `closed', the stroker generates
- * two independent `border' outlines, named `left' and `right'.
+ * When an outline, or a sub-path, is 'closed', the stroker generates two
+ * independent 'border' outlines, named 'left' and 'right'.
*
- * When the outline, or a sub-path, is `opened', the stroker merges
- * the `border' outlines with caps. The `left' border receives all
- * points, while the `right' border becomes empty.
+ * When the outline, or a sub-path, is 'opened', the stroker merges the
+ * 'border' outlines with caps. The 'left' border receives all points,
+ * while the 'right' border becomes empty.
*
- * Use the function @FT_Stroker_Export instead if you want to
- * retrieve all borders at once.
+ * Use the function @FT_Stroker_Export instead if you want to retrieve
+ * all borders at once.
*/
FT_EXPORT( void )
FT_Stroker_ExportBorder( FT_Stroker stroker,
@@ -619,16 +610,15 @@
FT_Outline* outline );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_GetCounts
*
* @description:
- * Call this function once you have finished parsing your paths
- * with the stroker. It returns the number of points and
- * contours necessary to export all points/borders from the stroked
- * outline/path.
+ * Call this function once you have finished parsing your paths with the
+ * stroker. It returns the number of points and contours necessary to
+ * export all points/borders from the stroked outline/path.
*
* @input:
* stroker ::
@@ -650,18 +640,17 @@
FT_UInt *anum_contours );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_Export
*
* @description:
- * Call this function after @FT_Stroker_GetBorderCounts to
- * export all borders to your own @FT_Outline structure.
+ * Call this function after @FT_Stroker_GetBorderCounts to export all
+ * borders to your own @FT_Outline structure.
*
- * Note that this function appends the border points and
- * contours to your outline, but does not try to resize its
- * arrays.
+ * Note that this function appends the border points and contours to your
+ * outline, but does not try to resize its arrays.
*
* @input:
* stroker ::
@@ -675,7 +664,7 @@
FT_Outline* outline );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Stroker_Done
@@ -685,13 +674,13 @@
*
* @input:
* stroker ::
- * A stroker handle. Can be NULL.
+ * A stroker handle. Can be `NULL`.
*/
FT_EXPORT( void )
FT_Stroker_Done( FT_Stroker stroker );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Glyph_Stroke
@@ -708,8 +697,7 @@
* A stroker handle.
*
* destroy ::
- * A Boolean. If~1, the source glyph object is destroyed
- * on success.
+ * A Boolean. If~1, the source glyph object is destroyed on success.
*
* @return:
* FreeType error code. 0~means success.
@@ -719,8 +707,8 @@
*
* Adding stroke may yield a significantly wider and taller glyph
* depending on how large of a radius was used to stroke the glyph. You
- * may need to manually adjust horizontal and vertical advance amounts
- * to account for this added size.
+ * may need to manually adjust horizontal and vertical advance amounts to
+ * account for this added size.
*/
FT_EXPORT( FT_Error )
FT_Glyph_Stroke( FT_Glyph *pglyph,
@@ -728,14 +716,14 @@
FT_Bool destroy );
- /**************************************************************
+ /**************************************************************************
*
* @function:
* FT_Glyph_StrokeBorder
*
* @description:
- * Stroke a given outline glyph object with a given stroker, but
- * only return either its inside or outside border.
+ * Stroke a given outline glyph object with a given stroker, but only
+ * return either its inside or outside border.
*
* @inout:
* pglyph ::
@@ -746,12 +734,11 @@
* A stroker handle.
*
* inside ::
- * A Boolean. If~1, return the inside border, otherwise
- * the outside border.
+ * A Boolean. If~1, return the inside border, otherwise the outside
+ * border.
*
* destroy ::
- * A Boolean. If~1, the source glyph object is destroyed
- * on success.
+ * A Boolean. If~1, the source glyph object is destroyed on success.
*
* @return:
* FreeType error code. 0~means success.
@@ -761,8 +748,8 @@
*
* Adding stroke may yield a significantly wider and taller glyph
* depending on how large of a radius was used to stroke the glyph. You
- * may need to manually adjust horizontal and vertical advance amounts
- * to account for this added size.
+ * may need to manually adjust horizontal and vertical advance amounts to
+ * account for this added size.
*/
FT_EXPORT( FT_Error )
FT_Glyph_StrokeBorder( FT_Glyph *pglyph,
diff --git a/include/freetype/ftsynth.h b/include/freetype/ftsynth.h
index f2e7856..8754f97 100644
--- a/include/freetype/ftsynth.h
+++ b/include/freetype/ftsynth.h
@@ -5,7 +5,7 @@
* FreeType synthesizing code for emboldening and slanting
* (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,7 +35,7 @@
/* Main reason for not lifting the functions in this module to a */
- /* `standard' API is that the used parameters for emboldening and */
+ /* 'standard' API is that the used parameters for emboldening and */
/* slanting are not configurable. Consider the functions as a */
/* code resource that should be copied into the application and */
/* adapted to the particular needs. */
@@ -57,7 +57,7 @@
FT_BEGIN_HEADER
- /* Embolden a glyph by a `reasonable' value (which is highly a matter of */
+ /* Embolden a glyph by a 'reasonable' value (which is highly a matter of */
/* taste). This function is actually a convenience function, providing */
/* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */
/* */
diff --git a/include/freetype/ftsystem.h b/include/freetype/ftsystem.h
index 0b415b6..889a6ba 100644
--- a/include/freetype/ftsystem.h
+++ b/include/freetype/ftsystem.h
@@ -4,7 +4,7 @@
*
* FreeType low-level system interface definition (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,10 +38,9 @@
* How FreeType manages memory and i/o.
*
* @description:
- * This section contains various definitions related to memory
- * management and i/o access. You need to understand this
- * information if you want to use a custom memory manager or you own
- * i/o streams.
+ * This section contains various definitions related to memory management
+ * and i/o access. You need to understand this information if you want to
+ * use a custom memory manager or you own i/o streams.
*
*/
@@ -53,7 +52,7 @@
*/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Memory
@@ -66,13 +65,13 @@
typedef struct FT_MemoryRec_* FT_Memory;
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* FT_Alloc_Func
*
* @description:
- * A function used to allocate `size' bytes from `memory'.
+ * A function used to allocate `size` bytes from `memory`.
*
* @input:
* memory ::
@@ -90,7 +89,7 @@
long size );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* FT_Free_Func
@@ -111,7 +110,7 @@
void* block );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* FT_Realloc_Func
@@ -146,7 +145,7 @@
void* block );
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_MemoryRec
@@ -184,7 +183,7 @@
*/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Stream
@@ -193,21 +192,21 @@
* A handle to an input stream.
*
* @also:
- * See @FT_StreamRec for the publicly accessible fields of a given
- * stream object.
+ * See @FT_StreamRec for the publicly accessible fields of a given stream
+ * object.
*
*/
typedef struct FT_StreamRec_* FT_Stream;
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_StreamDesc
*
* @description:
* A union type used to store either a long or a pointer. This is used
- * to store a file descriptor or a `FILE*' in an input stream.
+ * to store a file descriptor or a `FILE*` in an input stream.
*
*/
typedef union FT_StreamDesc_
@@ -218,7 +217,7 @@
} FT_StreamDesc;
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* FT_Stream_IoFunc
@@ -243,9 +242,8 @@
* The number of bytes effectively read by the stream.
*
* @note:
- * This function might be called to perform a seek or skip operation
- * with a `count' of~0. A non-zero return value then indicates an
- * error.
+ * This function might be called to perform a seek or skip operation with
+ * a `count` of~0. A non-zero return value then indicates an error.
*
*/
typedef unsigned long
@@ -255,7 +253,7 @@
unsigned long count );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* FT_Stream_CloseFunc
@@ -272,7 +270,7 @@
(*FT_Stream_CloseFunc)( FT_Stream stream );
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* FT_StreamRec
@@ -283,7 +281,7 @@
* @input:
* base ::
* For memory-based streams, this is the address of the first stream
- * byte in memory. This field should always be set to NULL for
+ * byte in memory. This field should always be set to `NULL` for
* disk-based streams.
*
* size ::
@@ -299,7 +297,7 @@
*
* descriptor ::
* This field is a union that can hold an integer or a pointer. It is
- * used by stream implementations to store file descriptors or `FILE*'
+ * used by stream implementations to store file descriptors or `FILE*`
* pointers.
*
* pathname ::
@@ -314,14 +312,13 @@
* The stream's close function.
*
* memory ::
- * The memory manager to use to preload frames. This is set
- * internally by FreeType and shouldn't be touched by stream
- * implementations.
+ * The memory manager to use to preload frames. This is set internally
+ * by FreeType and shouldn't be touched by stream implementations.
*
* cursor ::
* This field is set and used internally by FreeType when parsing
- * frames. In particular, the `FT_GET_XXX' macros use this instead
- * of the `pos' field.
+ * frames. In particular, the `FT_GET_XXX` macros use this instead of
+ * the `pos` field.
*
* limit ::
* This field is set and used internally by FreeType when parsing
diff --git a/include/freetype/fttrigon.h b/include/freetype/fttrigon.h
index 7a27bb2..37e1412 100644
--- a/include/freetype/fttrigon.h
+++ b/include/freetype/fttrigon.h
@@ -4,7 +4,7 @@
*
* FreeType trigonometric functions (specification).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -39,7 +39,7 @@
*/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* FT_Angle
@@ -52,7 +52,7 @@
typedef FT_Fixed FT_Angle;
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ANGLE_PI
@@ -64,7 +64,7 @@
#define FT_ANGLE_PI ( 180L << 16 )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ANGLE_2PI
@@ -76,7 +76,7 @@
#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ANGLE_PI2
@@ -88,7 +88,7 @@
#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 )
- /*************************************************************************
+ /**************************************************************************
*
* @macro:
* FT_ANGLE_PI4
@@ -100,7 +100,7 @@
#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 )
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Sin
@@ -124,7 +124,7 @@
FT_Sin( FT_Angle angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Cos
@@ -148,7 +148,7 @@
FT_Cos( FT_Angle angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Tan
@@ -168,14 +168,14 @@
FT_Tan( FT_Angle angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Atan2
*
* @description:
- * Return the arc-tangent corresponding to a given vector (x,y) in
- * the 2d plane.
+ * Return the arc-tangent corresponding to a given vector (x,y) in the 2d
+ * plane.
*
* @input:
* x ::
@@ -193,7 +193,7 @@
FT_Fixed y );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Angle_Diff
@@ -210,7 +210,7 @@
* Second angle.
*
* @return:
- * Constrained value of `value2-value1'.
+ * Constrained value of `angle2-angle1`.
*
*/
FT_EXPORT( FT_Angle )
@@ -218,15 +218,15 @@
FT_Angle angle2 );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Vector_Unit
*
* @description:
* Return the unit vector corresponding to a given angle. After the
- * call, the value of `vec.x' will be `cos(angle)', and the value of
- * `vec.y' will be `sin(angle)'.
+ * call, the value of `vec.x` will be `cos(angle)`, and the value of
+ * `vec.y` will be `sin(angle)`.
*
* This function is useful to retrieve both the sinus and cosinus of a
* given angle quickly.
@@ -245,7 +245,7 @@
FT_Angle angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Vector_Rotate
@@ -267,7 +267,7 @@
FT_Angle angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Vector_Length
@@ -288,7 +288,7 @@
FT_Vector_Length( FT_Vector* vec );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Vector_Polarize
@@ -314,7 +314,7 @@
FT_Angle *angle );
- /*************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Vector_From_Polar
diff --git a/include/freetype/fttypes.h b/include/freetype/fttypes.h
index 9da08a0..1057150 100644
--- a/include/freetype/fttypes.h
+++ b/include/freetype/fttypes.h
@@ -4,7 +4,7 @@
*
* FreeType simple types definitions (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -126,8 +126,8 @@
* FT_UFWord
*
* @description:
- * An unsigned 16-bit integer used to store a distance in original
- * font units.
+ * An unsigned 16-bit integer used to store a distance in original font
+ * units.
*/
typedef unsigned short FT_UFWord; /* unsigned distance */
@@ -270,8 +270,7 @@
* FT_F26Dot6
*
* @description:
- * A signed 26.6 fixed-point type used for vectorial pixel
- * coordinates.
+ * A signed 26.6 fixed-point type used for vectorial pixel coordinates.
*/
typedef signed long FT_F26Dot6;
@@ -294,8 +293,8 @@
* FT_Error
*
* @description:
- * The FreeType error code type. A value of~0 is always interpreted
- * as a successful operation.
+ * The FreeType error code type. A value of~0 is always interpreted as a
+ * successful operation.
*/
typedef int FT_Error;
@@ -317,9 +316,9 @@
* FT_Offset
*
* @description:
- * This is equivalent to the ANSI~C `size_t' type, i.e., the largest
- * _unsigned_ integer type used to express a file size or position,
- * or a memory block size.
+ * This is equivalent to the ANSI~C `size_t` type, i.e., the largest
+ * _unsigned_ integer type used to express a file size or position, or a
+ * memory block size.
*/
typedef size_t FT_Offset;
@@ -330,9 +329,9 @@
* FT_PtrDist
*
* @description:
- * This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the
- * largest _signed_ integer type used to express the distance
- * between two pointers.
+ * This is equivalent to the ANSI~C `ptrdiff_t` type, i.e., the largest
+ * _signed_ integer type used to express the distance between two
+ * pointers.
*/
typedef ft_ptrdiff_t FT_PtrDist;
@@ -367,13 +366,13 @@
* FT_Matrix
*
* @description:
- * A simple structure used to store a 2x2 matrix. Coefficients are
- * in 16.16 fixed-point format. The computation performed is:
+ * A simple structure used to store a 2x2 matrix. Coefficients are in
+ * 16.16 fixed-point format. The computation performed is:
*
- * {
+ * ```
* x' = x*xx + y*xy
* y' = x*yx + y*yy
- * }
+ * ```
*
* @fields:
* xx ::
@@ -425,13 +424,13 @@
* FT_Generic_Finalizer
*
* @description:
- * Describe a function used to destroy the `client' data of any
- * FreeType object. See the description of the @FT_Generic type for
- * details of usage.
+ * Describe a function used to destroy the 'client' data of any FreeType
+ * object. See the description of the @FT_Generic type for details of
+ * usage.
*
* @input:
- * The address of the FreeType object that is under finalization.
- * Its client data is accessed through its `generic' field.
+ * The address of the FreeType object that is under finalization. Its
+ * client data is accessed through its `generic` field.
*/
typedef void (*FT_Generic_Finalizer)( void* object );
@@ -446,25 +445,24 @@
* variety of FreeType core objects. For example, a text layout API
* might want to associate a glyph cache to a given size object.
*
- * Some FreeType object contains a `generic' field, of type
- * FT_Generic, which usage is left to client applications and font
- * servers.
+ * Some FreeType object contains a `generic` field, of type `FT_Generic`,
+ * which usage is left to client applications and font servers.
*
- * It can be used to store a pointer to client-specific data, as well
- * as the address of a `finalizer' function, which will be called by
+ * It can be used to store a pointer to client-specific data, as well as
+ * the address of a 'finalizer' function, which will be called by
* FreeType when the object is destroyed (for example, the previous
- * client example would put the address of the glyph cache destructor
- * in the `finalizer' field).
+ * client example would put the address of the glyph cache destructor in
+ * the `finalizer` field).
*
* @fields:
* data ::
- * A typeless pointer to any client-specified data. This
- * field is completely ignored by the FreeType library.
+ * A typeless pointer to any client-specified data. This field is
+ * completely ignored by the FreeType library.
*
* finalizer ::
- * A pointer to a `generic finalizer' function, which
- * will be called when the object is destroyed. If this
- * field is set to NULL, no code will be called.
+ * A pointer to a 'generic finalizer' function, which will be called
+ * when the object is destroyed. If this field is set to `NULL`, no
+ * code will be called.
*/
typedef struct FT_Generic_
{
@@ -480,12 +478,12 @@
* FT_MAKE_TAG
*
* @description:
- * This macro converts four-letter tags that are used to label
- * TrueType tables into an unsigned long, to be used within FreeType.
+ * This macro converts four-letter tags that are used to label TrueType
+ * tables into an unsigned long, to be used within FreeType.
*
* @note:
- * The produced values *must* be 32-bit integers. Don't redefine
- * this macro.
+ * The produced values **must** be 32-bit integers. Don't redefine this
+ * macro.
*/
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
(FT_Tag) \
@@ -518,9 +516,9 @@
* FT_ListNode
*
* @description:
- * Many elements and objects in FreeType are listed through an
- * @FT_List record (see @FT_ListRec). As its name suggests, an
- * FT_ListNode is a handle to a single list element.
+ * Many elements and objects in FreeType are listed through an @FT_List
+ * record (see @FT_ListRec). As its name suggests, an FT_ListNode is a
+ * handle to a single list element.
*/
typedef struct FT_ListNodeRec_* FT_ListNode;
@@ -546,10 +544,10 @@
*
* @fields:
* prev ::
- * The previous element in the list. NULL if first.
+ * The previous element in the list. `NULL` if first.
*
* next ::
- * The next element in the list. NULL if last.
+ * The next element in the list. `NULL` if last.
*
* data ::
* A typeless pointer to the listed object.
@@ -569,8 +567,8 @@
* FT_ListRec
*
* @description:
- * A structure used to hold a simple doubly-linked list. These are
- * used in many parts of FreeType.
+ * A structure used to hold a simple doubly-linked list. These are used
+ * in many parts of FreeType.
*
* @fields:
* head ::
@@ -590,13 +588,13 @@
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
-#define FT_BOOL( x ) ( (FT_Bool)( x ) )
+#define FT_BOOL( x ) ( (FT_Bool)( (x) != 0 ) )
/* concatenate C tokens */
#define FT_ERR_XCAT( x, y ) x ## y
#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y )
- /* see `ftmoderr.h' for descriptions of the following macros */
+ /* see `ftmoderr.h` for descriptions of the following macros */
#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e )
diff --git a/include/freetype/ftwinfnt.h b/include/freetype/ftwinfnt.h
index 5d0eb0f..a2fba90 100644
--- a/include/freetype/ftwinfnt.h
+++ b/include/freetype/ftwinfnt.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing Windows fnt-specific data.
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,26 +50,25 @@
*/
- /*************************************************************************
+ /**************************************************************************
*
* @enum:
* FT_WinFNT_ID_XXX
*
* @description:
- * A list of valid values for the `charset' byte in
- * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX
- * encodings (except for cp1361) can be found at
- * ftp://ftp.unicode.org/Public in the MAPPINGS/VENDORS/MICSFT/WINDOWS
- * subdirectory. cp1361 is roughly a superset of
- * MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
+ * A list of valid values for the `charset` byte in @FT_WinFNT_HeaderRec.
+ * Exact mapping tables for the various 'cpXXXX' encodings (except for
+ * 'cp1361') can be found at 'ftp://ftp.unicode.org/Public/' in the
+ * `MAPPINGS/VENDORS/MICSFT/WINDOWS` subdirectory. 'cp1361' is roughly a
+ * superset of `MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT`.
*
* @values:
* FT_WinFNT_ID_DEFAULT ::
- * This is used for font enumeration and font creation as a
- * `don't care' value. Valid font files don't contain this value.
- * When querying for information about the character set of the font
- * that is currently selected into a specified device context, this
- * return value (of the related Windows API) simply denotes failure.
+ * This is used for font enumeration and font creation as a 'don't
+ * care' value. Valid font files don't contain this value. When
+ * querying for information about the character set of the font that is
+ * currently selected into a specified device context, this return
+ * value (of the related Windows API) simply denotes failure.
*
* FT_WinFNT_ID_SYMBOL ::
* There is no known mapping table available.
@@ -80,26 +79,27 @@
* FT_WinFNT_ID_OEM ::
* From Michael Poettgen <michael@poettgen.de>:
*
- * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
- * is used for the charset of vector fonts, like `modern.fon',
- * `roman.fon', and `script.fon' on Windows.
+ * The 'Windows Font Mapping' article says that `FT_WinFNT_ID_OEM` is
+ * used for the charset of vector fonts, like `modern.fon`,
+ * `roman.fon`, and `script.fon` on Windows.
*
- * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
+ * The 'CreateFont' documentation says: The `FT_WinFNT_ID_OEM` value
* specifies a character set that is operating-system dependent.
*
- * The `IFIMETRICS' documentation from the `Windows Driver
- * Development Kit' says: This font supports an OEM-specific
- * character set. The OEM character set is system dependent.
+ * The 'IFIMETRICS' documentation from the 'Windows Driver Development
+ * Kit' says: This font supports an OEM-specific character set. The
+ * OEM character set is system dependent.
*
- * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
- * second default codepage that most international versions of
- * Windows have. It is one of the OEM codepages from
+ * In general OEM, as opposed to ANSI (i.e., 'cp1252'), denotes the
+ * second default codepage that most international versions of Windows
+ * have. It is one of the OEM codepages from
*
- * https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers ,
+ * https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers
+ * ,
*
- * and is used for the `DOS boxes', to support legacy applications.
- * A German Windows version for example usually uses ANSI codepage
- * 1252 and OEM codepage 850.
+ * and is used for the 'DOS boxes', to support legacy applications. A
+ * German Windows version for example usually uses ANSI codepage 1252
+ * and OEM codepage 850.
*
* FT_WinFNT_ID_CP874 ::
* A superset of Thai TIS 620 and ISO 8859-11.
@@ -112,8 +112,8 @@
* ordering and minor deviations).
*
* FT_WinFNT_ID_CP949 ::
- * A superset of Korean Hangul KS~C 5601-1987 (with different
- * ordering and minor deviations).
+ * A superset of Korean Hangul KS~C 5601-1987 (with different ordering
+ * and minor deviations).
*
* FT_WinFNT_ID_CP950 ::
* A superset of traditional Chinese Big~5 ETen (with different
@@ -234,7 +234,7 @@
typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header;
- /**********************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_WinFNT_Header
diff --git a/include/freetype/internal/autohint.h b/include/freetype/internal/autohint.h
index c20a18e..f64c28b 100644
--- a/include/freetype/internal/autohint.h
+++ b/include/freetype/internal/autohint.h
@@ -2,9 +2,9 @@
*
* autohint.h
*
- * High-level `autohint' module-specific interface (specification).
+ * High-level 'autohint' module-specific interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -30,31 +30,31 @@
/**************************************************************************
*
- * A small technical note regarding automatic hinting in order to
- * clarify this module interface.
+ * A small technical note regarding automatic hinting in order to clarify
+ * this module interface.
*
* An automatic hinter might compute two kinds of data for a given face:
*
* - global hints: Usually some metrics that describe global properties
* of the face. It is computed by scanning more or less
* aggressively the glyphs in the face, and thus can be
- * very slow to compute (even if the size of global
- * hints is really small).
+ * very slow to compute (even if the size of global hints
+ * is really small).
*
- * - glyph hints: These describe some important features of the glyph
+ * - glyph hints: These describe some important features of the glyph
* outline, as well as how to align them. They are
* generally much faster to compute than global hints.
*
- * The current FreeType auto-hinter does a pretty good job while
- * performing fast computations for both global and glyph hints.
- * However, we might be interested in introducing more complex and
- * powerful algorithms in the future, like the one described in the John
- * D. Hobby paper, which unfortunately requires a lot more horsepower.
+ * The current FreeType auto-hinter does a pretty good job while performing
+ * fast computations for both global and glyph hints. However, we might be
+ * interested in introducing more complex and powerful algorithms in the
+ * future, like the one described in the John D. Hobby paper, which
+ * unfortunately requires a lot more horsepower.
*
* Because a sufficiently sophisticated font management system would
- * typically implement an LRU cache of opened face objects to reduce
- * memory usage, it is a good idea to be able to avoid recomputing
- * global hints every time the same face is re-opened.
+ * typically implement an LRU cache of opened face objects to reduce memory
+ * usage, it is a good idea to be able to avoid recomputing global hints
+ * every time the same face is re-opened.
*
* We thus provide the ability to cache global hints outside of the face
* object, in order to speed up font re-opening time. Of course, this
@@ -62,10 +62,10 @@
* it.
*
* I initially thought that it would be a good idea to cache the glyph
- * hints too. However, my general idea now is that if you really need
- * to cache these too, you are simply in need of a new font format,
- * where all this information could be stored within the font file and
- * decoded on the fly.
+ * hints too. However, my general idea now is that if you really need to
+ * cache these too, you are simply in need of a new font format, where all
+ * this information could be stored within the font file and decoded on the
+ * fly.
*
*/
@@ -87,8 +87,8 @@
*
* @description:
* Retrieve the global hints computed for a given face object. The
- * resulting data is dissociated from the face and will survive a
- * call to FT_Done_Face(). It must be discarded through the API
+ * resulting data is dissociated from the face and will survive a call to
+ * FT_Done_Face(). It must be discarded through the API
* FT_AutoHinter_GlobalDoneFunc().
*
* @input:
@@ -119,8 +119,8 @@
*
* @description:
* Discard the global hints retrieved through
- * FT_AutoHinter_GlobalGetFunc(). This is the only way these hints
- * are freed from memory.
+ * FT_AutoHinter_GlobalGetFunc(). This is the only way these hints are
+ * freed from memory.
*
* @input:
* hinter ::
@@ -140,9 +140,9 @@
* FT_AutoHinter_GlobalResetFunc
*
* @description:
- * This function is used to recompute the global metrics in a given
- * font. This is useful when global font data changes (e.g. Multiple
- * Masters fonts where blend coordinates change).
+ * This function is used to recompute the global metrics in a given font.
+ * This is useful when global font data changes (e.g. Multiple Masters
+ * fonts where blend coordinates change).
*
* @input:
* hinter ::
@@ -162,8 +162,8 @@
* FT_AutoHinter_GlyphLoadFunc
*
* @description:
- * This function is used to load, scale, and automatically hint a
- * glyph from a given face.
+ * This function is used to load, scale, and automatically hint a glyph
+ * from a given face.
*
* @input:
* face ::
@@ -176,8 +176,8 @@
* The load flags.
*
* @note:
- * This function is capable of loading composite glyphs by hinting
- * each sub-glyph independently (which improves quality).
+ * This function is capable of loading composite glyphs by hinting each
+ * sub-glyph independently (which improves quality).
*
* It will call the font driver with @FT_Load_Glyph, with
* @FT_LOAD_NO_SCALE set.
diff --git a/include/freetype/internal/cffotypes.h b/include/freetype/internal/cffotypes.h
index c01dba4..b26893e 100644
--- a/include/freetype/internal/cffotypes.h
+++ b/include/freetype/internal/cffotypes.h
@@ -4,7 +4,7 @@
*
* Basic OpenType/CFF object type definitions (specification).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -76,7 +76,7 @@
* CFF_Internal
*
* @description:
- * The interface to the `internal' field of `FT_Size'.
+ * The interface to the 'internal' field of `FT_Size`.
*/
typedef struct CFF_InternalRec_
{
diff --git a/include/freetype/internal/cfftypes.h b/include/freetype/internal/cfftypes.h
index 534ee16..2fc905e 100644
--- a/include/freetype/internal/cfftypes.h
+++ b/include/freetype/internal/cfftypes.h
@@ -5,7 +5,7 @@
* Basic OpenType/CFF type definitions and interface (specification
* only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -46,8 +46,7 @@
* The source input stream.
*
* start ::
- * The position of the first index byte in the
- * input stream.
+ * The position of the first index byte in the input stream.
*
* count ::
* The number of elements in the index.
@@ -56,15 +55,13 @@
* The size in bytes of object offsets in index.
*
* data_offset ::
- * The position of first data byte in the index's
- * bytes.
+ * The position of first data byte in the index's bytes.
*
* data_size ::
* The size of the data table in this index.
*
* offsets ::
- * A table of element offsets in the index. Must be
- * loaded explicitly.
+ * A table of element offsets in the index. Must be loaded explicitly.
*
* bytes ::
* If the index is loaded in memory, its bytes.
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h
index 733b674..1811fcd 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -4,7 +4,7 @@
*
* Arithmetic computations (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -252,7 +252,7 @@
* FT_MulDiv_No_Round
*
* @description:
- * A very simple function used to perform the computation `(a*b)/c'
+ * A very simple function used to perform the computation '(a*b)/c'
* (without rounding) with maximum accuracy (it uses a 64-bit
* intermediate integer whenever necessary).
*
@@ -268,9 +268,9 @@
* The divisor.
*
* @return:
- * The result of `(a*b)/c'. This function never traps when trying to
- * divide by zero; it simply returns `MaxInt' or `MinInt' depending
- * on the signs of `a' and `b'.
+ * The result of '(a*b)/c'. This function never traps when trying to
+ * divide by zero; it simply returns 'MaxInt' or 'MinInt' depending on
+ * the signs of 'a' and 'b'.
*/
FT_BASE( FT_Long )
FT_MulDiv_No_Round( FT_Long a,
@@ -279,12 +279,11 @@
/*
- * A variant of FT_Matrix_Multiply which scales its result afterwards.
- * The idea is that both `a' and `b' are scaled by factors of 10 so that
- * the values are as precise as possible to get a correct result during
- * the 64bit multiplication. Let `sa' and `sb' be the scaling factors of
- * `a' and `b', respectively, then the scaling factor of the result is
- * `sa*sb'.
+ * A variant of FT_Matrix_Multiply which scales its result afterwards. The
+ * idea is that both `a' and `b' are scaled by factors of 10 so that the
+ * values are as precise as possible to get a correct result during the
+ * 64bit multiplication. Let `sa' and `sb' be the scaling factors of `a'
+ * and `b', respectively, then the scaling factor of the result is `sa*sb'.
*/
FT_BASE( void )
FT_Matrix_Multiply_Scaled( const FT_Matrix* a,
@@ -318,22 +317,22 @@
/*
- * This function normalizes a vector and returns its original length.
- * The normalized vector is a 16.16 fixed-point unit vector with length
- * close to 0x10000. The accuracy of the returned length is limited to
- * 16 bits also. The function utilizes quick inverse square root
- * approximation without divisions and square roots relying on Newton's
- * iterations instead.
+ * This function normalizes a vector and returns its original length. The
+ * normalized vector is a 16.16 fixed-point unit vector with length close
+ * to 0x10000. The accuracy of the returned length is limited to 16 bits
+ * also. The function utilizes quick inverse square root approximation
+ * without divisions and square roots relying on Newton's iterations
+ * instead.
*/
FT_BASE( FT_UInt32 )
FT_Vector_NormLen( FT_Vector* vector );
/*
- * Return -1, 0, or +1, depending on the orientation of a given corner.
- * We use the Cartesian coordinate system, with positive vertical values
- * going upwards. The function returns +1 if the corner turns to the
- * left, -1 to the right, and 0 for undecidable cases.
+ * Return -1, 0, or +1, depending on the orientation of a given corner. We
+ * use the Cartesian coordinate system, with positive vertical values going
+ * upwards. The function returns +1 if the corner turns to the left, -1 to
+ * the right, and 0 for undecidable cases.
*/
FT_BASE( FT_Int )
ft_corner_orientation( FT_Pos in_x,
@@ -379,6 +378,7 @@
#if FT_SIZEOF_INT == 4
#include <intrin.h>
+#pragma intrinsic( _BitScanReverse )
static __inline FT_Int32
FT_MSB_i386( FT_UInt32 x )
@@ -386,7 +386,6 @@
unsigned long where;
- /* not available in older VC versions */
_BitScanReverse( &where, x );
return (FT_Int32)where;
@@ -433,7 +432,7 @@
* The value to compute the root for.
*
* @return:
- * The result of `sqrt(x)'.
+ * The result of 'sqrt(x)'.
*
* @note:
* This function is not very fast.
@@ -489,6 +488,19 @@
#define NEG_INT32( a ) \
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
+#ifdef FT_LONG64
+
+#define ADD_INT64( a, b ) \
+ (FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
+#define SUB_INT64( a, b ) \
+ (FT_Int64)( (FT_UInt64)(a) - (FT_UInt64)(b) )
+#define MUL_INT64( a, b ) \
+ (FT_Int64)( (FT_UInt64)(a) * (FT_UInt64)(b) )
+#define NEG_INT64( a ) \
+ (FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
+
+#endif /* FT_LONG64 */
+
FT_END_HEADER
diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h
index d6e8a3a..54a9673 100644
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -4,7 +4,7 @@
*
* Debugging and logging component (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -15,7 +15,7 @@
*
*
* IMPORTANT: A description of FreeType's debugging support can be
- * found in `docs/DEBUG.TXT'. Read it if you need to use or
+ * found in 'docs/DEBUG.TXT'. Read it if you need to use or
* understand this code.
*
*/
@@ -44,8 +44,8 @@
/**************************************************************************
*
- * Define the trace enums as well as the trace levels array when they
- * are needed.
+ * Define the trace enums as well as the trace levels array when they are
+ * needed.
*
*/
@@ -84,11 +84,15 @@
#ifdef FT_DEBUG_LEVEL_TRACE
-#define FT_TRACE( level, varformat ) \
- do \
- { \
- if ( ft_trace_levels[FT_COMPONENT] >= level ) \
- FT_Message varformat; \
+ /* we need two macros here to make cpp expand `FT_COMPONENT' */
+#define FT_TRACE_COMP( x ) FT_TRACE_COMP_( x )
+#define FT_TRACE_COMP_( x ) trace_ ## x
+
+#define FT_TRACE( level, varformat ) \
+ do \
+ { \
+ if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
+ FT_Message varformat; \
} while ( 0 )
#else /* !FT_DEBUG_LEVEL_TRACE */
@@ -111,8 +115,8 @@
* FT_DEBUG_LEVEL_TRACE definition.
*
* @note:
- * This function may be useful if you want to access elements of
- * the internal trace levels array by an index.
+ * This function may be useful if you want to access elements of the
+ * internal trace levels array by an index.
*/
FT_BASE( FT_Int )
FT_Trace_Get_Count( void );
@@ -131,8 +135,8 @@
*
* @return:
* The name of the trace component. This is a statically allocated
- * C~string, so do not free it after use. NULL if FreeType is not built
- * with FT_DEBUG_LEVEL_TRACE definition.
+ * C~string, so do not free it after use. `NULL` if FreeType is not
+ * built with FT_DEBUG_LEVEL_TRACE definition.
*
* @note:
* Use @FT_Trace_Get_Count to get the number of available trace
@@ -209,8 +213,8 @@
/**************************************************************************
*
- * Define the FT_ASSERT and FT_THROW macros. The call to `FT_Throw'
- * makes it possible to easily set a breakpoint at this function.
+ * Define the FT_ASSERT and FT_THROW macros. The call to `FT_Throw` makes
+ * it possible to easily set a breakpoint at this function.
*
*/
@@ -241,7 +245,7 @@
/**************************************************************************
*
- * Define `FT_Message' and `FT_Panic' when needed.
+ * Define `FT_Message` and `FT_Panic` when needed.
*
*/
diff --git a/include/freetype/internal/ftdrv.h b/include/freetype/internal/ftdrv.h
index 745b78a..09e846e 100644
--- a/include/freetype/internal/ftdrv.h
+++ b/include/freetype/internal/ftdrv.h
@@ -4,7 +4,7 @@
*
* FreeType internal font driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -129,46 +129,37 @@
*
*
* load_glyph ::
- * A function handle to load a glyph to a slot.
- * This field is mandatory!
+ * A function handle to load a glyph to a slot. This field is
+ * mandatory!
*
* get_kerning ::
- * A function handle to return the unscaled
- * kerning for a given pair of glyphs. Can be
- * set to 0 if the format doesn't support
- * kerning.
+ * A function handle to return the unscaled kerning for a given pair of
+ * glyphs. Can be set to 0 if the format doesn't support kerning.
*
* attach_file ::
- * This function handle is used to read
- * additional data for a face from another
- * file/stream. For example, this can be used to
- * add data from AFM or PFM files on a Type 1
- * face, or a CIDMap on a CID-keyed face.
+ * This function handle is used to read additional data for a face from
+ * another file/stream. For example, this can be used to add data from
+ * AFM or PFM files on a Type 1 face, or a CIDMap on a CID-keyed face.
*
* get_advances ::
- * A function handle used to return advance
- * widths of `count' glyphs (in font units),
- * starting at `first'. The `vertical' flag must
- * be set to get vertical advance heights. The
- * `advances' buffer is caller-allocated.
- * The idea of this function is to be able to
- * perform device-independent text layout without
- * loading a single glyph image.
+ * A function handle used to return advance widths of 'count' glyphs
+ * (in font units), starting at 'first'. The 'vertical' flag must be
+ * set to get vertical advance heights. The 'advances' buffer is
+ * caller-allocated. The idea of this function is to be able to
+ * perform device-independent text layout without loading a single
+ * glyph image.
*
* request_size ::
- * A handle to a function used to request the new
- * character size. Can be set to 0 if the
- * scaling done in the base layer suffices.
+ * A handle to a function used to request the new character size. Can
+ * be set to 0 if the scaling done in the base layer suffices.
*
* select_size ::
- * A handle to a function used to select a new
- * fixed size. It is used only if
- * @FT_FACE_FLAG_FIXED_SIZES is set. Can be set
- * to 0 if the scaling done in the base layer
- * suffices.
+ * A handle to a function used to select a new fixed size. It is used
+ * only if @FT_FACE_FLAG_FIXED_SIZES is set. Can be set to 0 if the
+ * scaling done in the base layer suffices.
* @note:
- * Most function pointers, with the exception of `load_glyph', can be
- * set to 0 to indicate a default behaviour.
+ * Most function pointers, with the exception of `load_glyph`, can be set
+ * to 0 to indicate a default behaviour.
*/
typedef struct FT_Driver_ClassRec_
{
@@ -206,8 +197,8 @@
* FT_DECLARE_DRIVER
*
* @description:
- * Used to create a forward declaration of an FT_Driver_ClassRec
- * struct instance.
+ * Used to create a forward declaration of an FT_Driver_ClassRec struct
+ * instance.
*
* @macro:
* FT_DEFINE_DRIVER
@@ -215,12 +206,12 @@
* @description:
* Used to initialize an instance of FT_Driver_ClassRec struct.
*
- * `ftinit.c' (ft_create_default_module_classes) already contains a
- * mechanism to call these functions for the default modules
- * described in `ftmodule.h'.
+ * `ftinit.c` (ft_create_default_module_classes) already contains a
+ * mechanism to call these functions for the default modules described in
+ * `ftmodule.h`.
*
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * The struct will be allocated in the global scope (or the scope where
+ * the macro is used).
*/
#define FT_DECLARE_DRIVER( class_ ) \
FT_CALLBACK_TABLE \
diff --git a/include/freetype/internal/ftgloadr.h b/include/freetype/internal/ftgloadr.h
index c731b2d..770871d 100644
--- a/include/freetype/internal/ftgloadr.h
+++ b/include/freetype/internal/ftgloadr.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph loader (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
@@ -138,11 +138,6 @@
FT_BASE( void )
FT_GlyphLoader_Add( FT_GlyphLoader loader );
- /* copy points from one glyph loader to another */
- FT_BASE( FT_Error )
- FT_GlyphLoader_CopyPoints( FT_GlyphLoader target,
- FT_GlyphLoader source );
-
/* */
diff --git a/include/freetype/internal/ftmemory.h b/include/freetype/internal/ftmemory.h
index f15c77d..78bd3bc 100644
--- a/include/freetype/internal/ftmemory.h
+++ b/include/freetype/internal/ftmemory.h
@@ -4,7 +4,7 @@
*
* The FreeType memory management macros (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
@@ -34,7 +34,7 @@
* FT_SET_ERROR
*
* @description:
- * This macro is used to set an implicit `error' variable to a given
+ * This macro is used to set an implicit 'error' variable to a given
* expression's value (usually a function call), and convert it to a
* boolean which is set whenever the value is != 0.
*/
@@ -59,8 +59,8 @@
/*
* C++ refuses to handle statements like p = (void*)anything, with `p' a
- * typed pointer. Since we don't have a `typeof' operator in standard
- * C++, we have to use a template to emulate it.
+ * typed pointer. Since we don't have a `typeof' operator in standard C++,
+ * we have to use a template to emulate it.
*/
#ifdef __cplusplus
@@ -107,8 +107,8 @@
/*
- * The allocation functions return a pointer, and the error code
- * is written to through the `p_error' parameter.
+ * The allocation functions return a pointer, and the error code is written
+ * to through the `p_error' parameter.
*/
/* The `q' variants of the functions below (`q' for `quick') don't fill */
@@ -253,9 +253,8 @@
/*
- * Return the maximum number of addressable elements in an array.
- * We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
- * any problems.
+ * Return the maximum number of addressable elements in an array. We limit
+ * ourselves to INT_MAX, rather than UINT_MAX, to avoid any problems.
*/
#define FT_ARRAY_MAX( ptr ) ( FT_INT_MAX / sizeof ( *(ptr) ) )
diff --git a/include/freetype/internal/ftobjs.h b/include/freetype/internal/ftobjs.h
index 88ced18..0c1d3e5 100644
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -4,7 +4,7 @@
*
* The FreeType private base classes (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -73,9 +73,9 @@
#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) )
/*
- * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
- * algorithm. We use alpha = 1, beta = 3/8, giving us results with a
- * largest error less than 7% compared to the exact value.
+ * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min' algorithm.
+ * We use alpha = 1, beta = 3/8, giving us results with a largest error
+ * less than 7% compared to the exact value.
*/
#define FT_HYPOT( x, y ) \
( x = FT_ABS( x ), \
@@ -110,9 +110,8 @@
/*
- * character classification functions -- since these are used to parse
- * font files, we must not use those in <ctypes.h> which are
- * locale-dependent
+ * character classification functions -- since these are used to parse font
+ * files, we must not use those in <ctypes.h> which are locale-dependent
*/
#define ft_isdigit( x ) ( ( (unsigned)(x) - '0' ) < 10U )
@@ -186,7 +185,7 @@
FT_UInt32 char_code,
FT_UInt32 variant_selector );
- typedef FT_Bool
+ typedef FT_Int
(*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap,
FT_UInt32 char_code,
FT_UInt32 variant_selector );
@@ -279,14 +278,12 @@
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap,
- FT_Render_Mode render_mode,
FT_Byte* weights );
/* This is the default LCD filter, an in-place, 5-tap FIR filter. */
FT_BASE( void )
ft_lcd_filter_fir( FT_Bitmap* bitmap,
- FT_Render_Mode mode,
FT_LcdFiveTapFilter weights );
#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
@@ -297,67 +294,65 @@
* FT_Face_InternalRec
*
* @description:
- * This structure contains the internal fields of each FT_Face
- * object. These fields may change between different releases of
- * FreeType.
+ * This structure contains the internal fields of each FT_Face object.
+ * These fields may change between different releases of FreeType.
*
* @fields:
* max_points ::
- * The maximum number of points used to store the vectorial outline
+ * The maximum number of points used to store the vectorial outline of
+ * any glyph in this face. If this value cannot be known in advance,
+ * or if the face isn't scalable, this should be set to 0. Only
+ * relevant for scalable formats.
+ *
+ * max_contours ::
+ * The maximum number of contours used to store the vectorial outline
* of any glyph in this face. If this value cannot be known in
* advance, or if the face isn't scalable, this should be set to 0.
* Only relevant for scalable formats.
*
- * max_contours ::
- * The maximum number of contours used to store the vectorial
- * outline of any glyph in this face. If this value cannot be
- * known in advance, or if the face isn't scalable, this should be
- * set to 0. Only relevant for scalable formats.
- *
* transform_matrix ::
- * A 2x2 matrix of 16.16 coefficients used to transform glyph
- * outlines after they are loaded from the font. Only used by the
- * convenience functions.
+ * A 2x2 matrix of 16.16 coefficients used to transform glyph outlines
+ * after they are loaded from the font. Only used by the convenience
+ * functions.
*
* transform_delta ::
- * A translation vector used to transform glyph outlines after they
- * are loaded from the font. Only used by the convenience
- * functions.
+ * A translation vector used to transform glyph outlines after they are
+ * loaded from the font. Only used by the convenience functions.
*
* transform_flags ::
* Some flags used to classify the transform. Only used by the
* convenience functions.
*
* services ::
- * A cache for frequently used services. It should be only
- * accessed with the macro `FT_FACE_LOOKUP_SERVICE'.
+ * A cache for frequently used services. It should be only accessed
+ * with the macro `FT_FACE_LOOKUP_SERVICE`.
*
* incremental_interface ::
- * If non-null, the interface through which glyph data and metrics
- * are loaded incrementally for faces that do not provide all of
- * this data when first opened. This field exists only if
+ * If non-null, the interface through which glyph data and metrics are
+ * loaded incrementally for faces that do not provide all of this data
+ * when first opened. This field exists only if
* @FT_CONFIG_OPTION_INCREMENTAL is defined.
*
* no_stem_darkening ::
- * Overrides the module-level default, see @stem-darkening[cff],
- * for example. FALSE and TRUE toggle stem darkening on and off,
+ * Overrides the module-level default, see @stem-darkening[cff], for
+ * example. FALSE and TRUE toggle stem darkening on and off,
* respectively, value~-1 means to use the module/driver default.
*
* random_seed ::
- * If positive, override the seed value for the CFF `random'
- * operator. Value~0 means to use the font's value. Value~-1
- * means to use the CFF driver's default.
+ * If positive, override the seed value for the CFF 'random' operator.
+ * Value~0 means to use the font's value. Value~-1 means to use the
+ * CFF driver's default.
*
* lcd_weights ::
* lcd_filter_func ::
- * These fields specify the LCD filtering weights and callback
- * function for ClearType-style subpixel rendering.
+ * These fields specify the LCD filtering weights and callback function
+ * for ClearType-style subpixel rendering.
*
* refcount ::
* A counter initialized to~1 at the time an @FT_Face structure is
* created. @FT_Reference_Face increments this counter, and
- * @FT_Done_Face only destroys a face if the counter is~1,
- * otherwise it simply decrements it.
+ * @FT_Done_Face only destroys a face if the counter is~1, otherwise it
+ * simply decrements it.
*/
typedef struct FT_Face_InternalRec_
{
@@ -396,29 +391,24 @@
*
* @fields:
* loader ::
- * The glyph loader object used to load outlines
- * into the glyph slot.
+ * The glyph loader object used to load outlines into the glyph slot.
*
* flags ::
- * Possible values are zero or
- * FT_GLYPH_OWN_BITMAP. The latter indicates
- * that the FT_GlyphSlot structure owns the
- * bitmap buffer.
+ * Possible values are zero or FT_GLYPH_OWN_BITMAP. The latter
+ * indicates that the FT_GlyphSlot structure owns the bitmap buffer.
*
* glyph_transformed ::
- * Boolean. Set to TRUE when the loaded glyph
- * must be transformed through a specific
- * font transformation. This is _not_ the same
- * as the face transform set through
- * FT_Set_Transform().
+ * Boolean. Set to TRUE when the loaded glyph must be transformed
+ * through a specific font transformation. This is _not_ the same as
+ * the face transform set through FT_Set_Transform().
*
* glyph_matrix ::
- * The 2x2 matrix corresponding to the glyph
- * transformation, if necessary.
+ * The 2x2 matrix corresponding to the glyph transformation, if
+ * necessary.
*
* glyph_delta ::
- * The 2d translation vector corresponding to
- * the glyph transformation, if necessary.
+ * The 2d translation vector corresponding to the glyph transformation,
+ * if necessary.
*
* glyph_hints ::
* Format-specific glyph hints management.
@@ -450,8 +440,7 @@
* FT_Size_InternalRec
*
* @description:
- * This structure contains the internal fields of each FT_Size
- * object.
+ * This structure contains the internal fields of each FT_Size object.
*
* @fields:
* module_data ::
@@ -568,8 +557,8 @@
* A module-specific interface if available, 0 otherwise.
*
* @note:
- * You should better be familiar with FreeType internals to know
- * which module to look for, and what its interface is :-)
+ * You should better be familiar with FreeType internals to know which
+ * module to look for, and what its interface is :-)
*/
FT_BASE( const void* )
FT_Get_Module_Interface( FT_Library library,
@@ -627,10 +616,9 @@
* FT_New_GlyphSlot
*
* @description:
- * It is sometimes useful to have more than one glyph slot for a
- * given face object. This function is used to create additional
- * slots. All of them are automatically discarded when the face is
- * destroyed.
+ * It is sometimes useful to have more than one glyph slot for a given
+ * face object. This function is used to create additional slots. All
+ * of them are automatically discarded when the face is destroyed.
*
* @input:
* face ::
@@ -655,8 +643,8 @@
*
* @description:
* Destroys a given glyph slot. Remember however that all slots are
- * automatically destroyed with its parent. Using this function is
- * not always mandatory.
+ * automatically destroyed with its parent. Using this function is not
+ * always mandatory.
*
* @input:
* slot ::
@@ -711,8 +699,9 @@
ft_glyphslot_free_bitmap( FT_GlyphSlot slot );
- /* Preset bitmap metrics of an outline glyphslot prior to rendering. */
- FT_BASE( void )
+ /* Preset bitmap metrics of an outline glyphslot prior to rendering */
+ /* and check whether the truncated bbox is too large for rendering. */
+ FT_BASE( FT_Bool )
ft_glyphslot_preset_bitmap( FT_GlyphSlot slot,
FT_Render_Mode mode,
const FT_Vector* origin );
@@ -789,25 +778,23 @@
* FT_DriverRec
*
* @description:
- * The root font driver class. A font driver is responsible for
- * managing and loading font files of a given format.
+ * The root font driver class. A font driver is responsible for managing
+ * and loading font files of a given format.
*
* @fields:
* root ::
* Contains the fields of the root module class.
*
* clazz ::
- * A pointer to the font driver's class. Note that
- * this is NOT root.clazz. `class' wasn't used
- * as it is a reserved word in C++.
+ * A pointer to the font driver's class. Note that this is NOT
+ * root.clazz. 'class' wasn't used as it is a reserved word in C++.
*
* faces_list ::
- * The list of faces currently opened by this
- * driver.
+ * The list of faces currently opened by this driver.
*
* glyph_loader ::
- * Unused. Used to be glyph loader for all faces
- * managed by this driver.
+ * Unused. Used to be glyph loader for all faces managed by this
+ * driver.
*/
typedef struct FT_DriverRec_
{
@@ -832,25 +819,19 @@
/*************************************************************************/
- /* This hook is used by the TrueType debugger. It must be set to an */
- /* alternate truetype bytecode interpreter function. */
-#define FT_DEBUG_HOOK_TRUETYPE 0
-
-
/**************************************************************************
*
* @struct:
* FT_LibraryRec
*
* @description:
- * The FreeType library class. This is the root of all FreeType
- * data. Use FT_New_Library() to create a library object, and
- * FT_Done_Library() to discard it and all child objects.
+ * The FreeType library class. This is the root of all FreeType data.
+ * Use FT_New_Library() to create a library object, and FT_Done_Library()
+ * to discard it and all child objects.
*
* @fields:
* memory ::
- * The library's memory object. Manages memory
- * allocation.
+ * The library's memory object. Manages memory allocation.
*
* version_major ::
* The major version number of the library.
@@ -862,60 +843,52 @@
* The current patch level of the library.
*
* num_modules ::
- * The number of modules currently registered
- * within this library. This is set to 0 for new
- * libraries. New modules are added through the
- * FT_Add_Module() API function.
+ * The number of modules currently registered within this library.
+ * This is set to 0 for new libraries. New modules are added through
+ * the FT_Add_Module() API function.
*
* modules ::
- * A table used to store handles to the currently
- * registered modules. Note that each font driver
- * contains a list of its opened faces.
+ * A table used to store handles to the currently registered
+ * modules. Note that each font driver contains a list of its opened
+ * faces.
*
* renderers ::
- * The list of renderers currently registered
- * within the library.
+ * The list of renderers currently registered within the library.
*
* cur_renderer ::
- * The current outline renderer. This is a
- * shortcut used to avoid parsing the list on
- * each call to FT_Outline_Render(). It is a
- * handle to the current renderer for the
- * FT_GLYPH_FORMAT_OUTLINE format.
+ * The current outline renderer. This is a shortcut used to avoid
+ * parsing the list on each call to FT_Outline_Render(). It is a
+ * handle to the current renderer for the FT_GLYPH_FORMAT_OUTLINE
+ * format.
*
* auto_hinter ::
* The auto-hinter module interface.
*
* debug_hooks ::
- * An array of four function pointers that allow
- * debuggers to hook into a font format's
- * interpreter. Currently, only the TrueType
- * bytecode debugger uses this.
+ * An array of four function pointers that allow debuggers to hook into
+ * a font format's interpreter. Currently, only the TrueType bytecode
+ * debugger uses this.
*
* lcd_weights ::
- * The LCD filter weights for ClearType-style
- * subpixel rendering.
+ * The LCD filter weights for ClearType-style subpixel rendering.
*
* lcd_filter_func ::
- * The LCD filtering callback function for
- * for ClearType-style subpixel rendering.
+ * The LCD filtering callback function for for ClearType-style subpixel
+ * rendering.
*
* lcd_geometry ::
- * This array specifies LCD subpixel geometry
- * and controls Harmony LCD rendering technique,
- * alternative to ClearType.
+ * This array specifies LCD subpixel geometry and controls Harmony LCD
+ * rendering technique, alternative to ClearType.
*
* pic_container ::
- * Contains global structs and tables, instead
- * of defining them globally.
+ * Contains global structs and tables, instead of defining them
+ * globally.
*
* refcount ::
- * A counter initialized to~1 at the time an
- * @FT_Library structure is created.
- * @FT_Reference_Library increments this counter,
- * and @FT_Done_Library only destroys a library
- * if the counter is~1, otherwise it simply
- * decrements it.
+ * A counter initialized to~1 at the time an @FT_Library structure is
+ * created. @FT_Reference_Library increments this counter, and
+ * @FT_Done_Library only destroys a library if the counter is~1,
+ * otherwise it simply decrements it.
*/
typedef struct FT_LibraryRec_
{
@@ -966,8 +939,8 @@
FT_UInt buffer_max );
typedef FT_UInt
- (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face,
- FT_String* glyph_name );
+ (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face,
+ const FT_String* glyph_name );
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
@@ -1022,9 +995,9 @@
* FT_DEFINE_OUTLINE_FUNCS
*
* @description:
- * Used to initialize an instance of FT_Outline_Funcs struct.
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * Used to initialize an instance of FT_Outline_Funcs struct. The struct
+ * will be allocated in the global scope (or the scope where the macro is
+ * used).
*/
#define FT_DEFINE_OUTLINE_FUNCS( \
class_, \
@@ -1051,9 +1024,9 @@
* FT_DEFINE_RASTER_FUNCS
*
* @description:
- * Used to initialize an instance of FT_Raster_Funcs struct.
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * Used to initialize an instance of FT_Raster_Funcs struct. The struct
+ * will be allocated in the global scope (or the scope where the macro is
+ * used).
*/
#define FT_DEFINE_RASTER_FUNCS( \
class_, \
@@ -1081,8 +1054,8 @@
* FT_DEFINE_GLYPH
*
* @description:
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * The struct will be allocated in the global scope (or the scope where
+ * the macro is used).
*/
#define FT_DEFINE_GLYPH( \
class_, \
@@ -1114,8 +1087,8 @@
* FT_DECLARE_RENDERER
*
* @description:
- * Used to create a forward declaration of a
- * FT_Renderer_Class struct instance.
+ * Used to create a forward declaration of a FT_Renderer_Class struct
+ * instance.
*
* @macro:
* FT_DEFINE_RENDERER
@@ -1123,8 +1096,8 @@
* @description:
* Used to initialize an instance of FT_Renderer_Class struct.
*
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * The struct will be allocated in the global scope (or the scope where
+ * the macro is used).
*/
#define FT_DECLARE_RENDERER( class_ ) \
FT_EXPORT_VAR( const FT_Renderer_Class ) class_;
@@ -1175,8 +1148,8 @@
* FT_DECLARE_MODULE
*
* @description:
- * Used to create a forward declaration of a
- * FT_Module_Class struct instance.
+ * Used to create a forward declaration of a FT_Module_Class struct
+ * instance.
*
* @macro:
* FT_DEFINE_MODULE
@@ -1184,16 +1157,16 @@
* @description:
* Used to initialize an instance of an FT_Module_Class struct.
*
- * The struct will be allocated in the global scope (or the scope
- * where the macro is used).
+ * The struct will be allocated in the global scope (or the scope where
+ * the macro is used).
*
* @macro:
* FT_DEFINE_ROOT_MODULE
*
* @description:
* Used to initialize an instance of an FT_Module_Class struct inside
- * another struct that contains it or in a function that initializes
- * that containing struct.
+ * another struct that contains it or in a function that initializes that
+ * containing struct.
*/
#define FT_DECLARE_MODULE( class_ ) \
FT_CALLBACK_TABLE \
diff --git a/include/freetype/internal/ftpsprop.h b/include/freetype/internal/ftpsprop.h
index dd0588f..574837f 100644
--- a/include/freetype/internal/ftpsprop.h
+++ b/include/freetype/internal/ftpsprop.h
@@ -4,7 +4,7 @@
*
* Get and set properties of PostScript drivers (specification).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftrfork.h b/include/freetype/internal/ftrfork.h
index a056171..75b3e53 100644
--- a/include/freetype/internal/ftrfork.h
+++ b/include/freetype/internal/ftrfork.h
@@ -4,7 +4,7 @@
*
* Embedded resource forks accessor (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO and Redhat K.K.
*
* This file is part of the FreeType project, and may only be used,
@@ -72,8 +72,8 @@
} FT_RFork_Rule;
/* For fast translation between rule index and rule type,
- * the macros FT_RFORK_xxx should be kept consistent with
- * the raccess_guess_funcs table
+ * the macros FT_RFORK_xxx should be kept consistent with the
+ * raccess_guess_funcs table
*/
typedef struct ft_raccess_guess_rec_ {
ft_raccess_guess_func func;
@@ -98,11 +98,11 @@
* FT_Raccess_Guess
*
* @description:
- * Guess a file name and offset where the actual resource fork is
- * stored. The macro FT_RACCESS_N_RULES holds the number of
- * guessing rules; the guessed result for the Nth rule is
- * represented as a triplet: a new file name (new_names[N]), a file
- * offset (offsets[N]), and an error code (errors[N]).
+ * Guess a file name and offset where the actual resource fork is stored.
+ * The macro FT_RACCESS_N_RULES holds the number of guessing rules; the
+ * guessed result for the Nth rule is represented as a triplet: a new
+ * file name (new_names[N]), a file offset (offsets[N]), and an error
+ * code (errors[N]).
*
* @input:
* library ::
@@ -112,24 +112,24 @@
* A file stream containing the resource fork.
*
* base_name ::
- * The (base) file name of the resource fork used for some
- * guessing rules.
+ * The (base) file name of the resource fork used for some guessing
+ * rules.
*
* @output:
* new_names ::
* An array of guessed file names in which the resource forks may
- * exist. If `new_names[N]' is NULL, the guessed file name is
- * equal to `base_name'.
+ * exist. If 'new_names[N]' is `NULL`, the guessed file name is equal
+ * to `base_name`.
*
* offsets ::
- * An array of guessed file offsets. `offsets[N]' holds the file
+ * An array of guessed file offsets. 'offsets[N]' holds the file
* offset of the possible start of the resource fork in file
- * `new_names[N]'.
+ * 'new_names[N]'.
*
* errors ::
- * An array of FreeType error codes. `errors[N]' is the error
- * code of Nth guessing rule function. If `errors[N]' is not
- * FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless.
+ * An array of FreeType error codes. 'errors[N]' is the error code of
+ * Nth guessing rule function. If 'errors[N]' is not FT_Err_Ok,
+ * 'new_names[N]' and 'offsets[N]' are meaningless.
*/
FT_BASE( void )
FT_Raccess_Guess( FT_Library library,
@@ -146,10 +146,10 @@
* FT_Raccess_Get_HeaderInfo
*
* @description:
- * Get the information from the header of resource fork. The
- * information includes the file offset where the resource map
- * starts, and the file offset where the resource data starts.
- * `FT_Raccess_Get_DataOffsets' requires these two data.
+ * Get the information from the header of resource fork. The information
+ * includes the file offset where the resource map starts, and the file
+ * offset where the resource data starts. `FT_Raccess_Get_DataOffsets`
+ * requires these two data.
*
* @input:
* library ::
@@ -185,9 +185,9 @@
* FT_Raccess_Get_DataOffsets
*
* @description:
- * Get the data offsets for a tag in a resource fork. Offsets are
- * stored in an array because, in some cases, resources in a resource
- * fork have the same tag.
+ * Get the data offsets for a tag in a resource fork. Offsets are stored
+ * in an array because, in some cases, resources in a resource fork have
+ * the same tag.
*
* @input:
* library ::
@@ -206,17 +206,16 @@
* The resource tag.
*
* 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 `sfnt' resources, sorting
- * may induce a different order of the faces in comparison to that
- * by QuickDraw API.
+ * 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 'sfnt' resources, sorting may induce a
+ * different order of the faces in comparison to that by QuickDraw API.
*
* @output:
* offsets ::
- * The stream offsets for the resource data specified by `tag'.
- * This array is allocated by the function, so you have to call
- * @ft_mem_free after use.
+ * The stream offsets for the resource data specified by 'tag'. This
+ * array is allocated by the function, so you have to call @ft_mem_free
+ * after use.
*
* count ::
* The length of offsets array.
@@ -225,8 +224,8 @@
* FreeType error code. FT_Err_Ok means success.
*
* @note:
- * Normally you should use `FT_Raccess_Get_HeaderInfo' to get the
- * value for `map_offset' and `rdata_pos'.
+ * Normally you should use `FT_Raccess_Get_HeaderInfo` to get the value
+ * for `map_offset` and `rdata_pos`.
*/
FT_BASE( FT_Error )
FT_Raccess_Get_DataOffsets( FT_Library library,
diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h
index 3f493b5..8836cf3 100644
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -4,7 +4,7 @@
*
* The FreeType services (specification only).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -17,13 +17,13 @@
/**************************************************************************
*
- * Each module can export one or more `services'. Each service is
+ * Each module can export one or more 'services'. Each service is
* identified by a constant string and modeled by a pointer; the latter
* generally corresponds to a structure containing function pointers.
*
- * Note that a service's data cannot be a mere function pointer because
- * in C it is possible that function pointers might be implemented
- * differently than data pointers (e.g. 48 bits instead of 32).
+ * Note that a service's data cannot be a mere function pointer because in
+ * C it is possible that function pointers might be implemented differently
+ * than data pointers (e.g. 48 bits instead of 32).
*
*/
@@ -47,15 +47,15 @@
* The source face handle.
*
* id ::
- * A string describing the service as defined in the service's
- * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
- * `multi-masters'). It is automatically prefixed with
- * `FT_SERVICE_ID_'.
+ * A string describing the service as defined in the service's header
+ * files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
+ * 'multi-masters'). It is automatically prefixed with
+ * `FT_SERVICE_ID_`.
*
* @output:
* ptr ::
- * A variable that receives the service pointer. Will be NULL
- * if not found.
+ * A variable that receives the service pointer. Will be `NULL` if not
+ * found.
*/
#ifdef __cplusplus
@@ -99,15 +99,15 @@
* The source face handle.
*
* id ::
- * A string describing the service as defined in the service's
- * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
- * `multi-masters'). It is automatically prefixed with
- * `FT_SERVICE_ID_'.
+ * A string describing the service as defined in the service's header
+ * files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
+ * 'multi-masters'). It is automatically prefixed with
+ * `FT_SERVICE_ID_`.
*
* @output:
* ptr ::
- * A variable that receives the service pointer. Will be NULL
- * if not found.
+ * A variable that receives the service pointer. Will be `NULL` if not
+ * found.
*/
#ifdef __cplusplus
@@ -146,8 +146,8 @@
/*************************************************************************/
/*
- * The following structure is used to _describe_ a given service
- * to the library. This is useful to build simple static service lists.
+ * The following structure is used to _describe_ a given service to the
+ * library. This is useful to build simple static service lists.
*/
typedef struct FT_ServiceDescRec_
{
@@ -176,8 +176,8 @@
* @description:
* Used to initialize an array of FT_ServiceDescRec structures.
*
- * The array will be allocated in the global scope (or the scope
- * where the macro is used).
+ * The array will be allocated in the global scope (or the scope where
+ * the macro is used).
*/
#define FT_DEFINE_SERVICEDESCREC1( class_, \
serv_id_1, serv_data_1 ) \
@@ -351,13 +351,13 @@
/*
- * Parse a list of FT_ServiceDescRec descriptors and look for
- * a specific service by ID. Note that the last element in the
- * array must be { NULL, NULL }, and that the function should
- * return NULL if the service isn't available.
+ * Parse a list of FT_ServiceDescRec descriptors and look for a specific
+ * service by ID. Note that the last element in the array must be { NULL,
+ * NULL }, and that the function should return NULL if the service isn't
+ * available.
*
- * This function can be used by modules to implement their
- * `get_service' method.
+ * This function can be used by modules to implement their `get_service'
+ * method.
*/
FT_BASE( FT_Pointer )
ft_service_list_lookup( FT_ServiceDesc service_descriptors,
@@ -374,14 +374,14 @@
/*
* This structure is used to store a cache for several frequently used
- * services. It is the type of `face->internal->services'. You
- * should only use FT_FACE_LOOKUP_SERVICE to access it.
+ * services. It is the type of `face->internal->services'. You should
+ * only use FT_FACE_LOOKUP_SERVICE to access it.
*
* All fields should have the type FT_Pointer to relax compilation
* dependencies. We assume the developer isn't completely stupid.
*
- * Each field must be named `service_XXXX' where `XXX' corresponds to
- * the correct FT_SERVICE_ID_XXXX macro. See the definition of
+ * Each field must be named `service_XXXX' where `XXX' corresponds to the
+ * correct FT_SERVICE_ID_XXXX macro. See the definition of
* FT_FACE_LOOKUP_SERVICE below how this is implemented.
*
*/
@@ -426,7 +426,7 @@
*
* @output:
* ptr ::
- * A variable receiving the service data. NULL if not available.
+ * A variable receiving the service data. `NULL` if not available.
*/
#ifdef __cplusplus
diff --git a/include/freetype/internal/ftstream.h b/include/freetype/internal/ftstream.h
index aaf8e0b..a579a03 100644
--- a/include/freetype/internal/ftstream.h
+++ b/include/freetype/internal/ftstream.h
@@ -4,7 +4,7 @@
*
* Stream handling (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -96,13 +96,13 @@
/* The structure type must be set in the FT_STRUCTURE macro before */
/* calling the FT_FRAME_START() macro. */
/* */
-#define FT_FIELD_SIZE( f ) \
+#define FT_FIELD_SIZE( f ) \
(FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f )
-#define FT_FIELD_SIZE_DELTA( f ) \
+#define FT_FIELD_SIZE_DELTA( f ) \
(FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] )
-#define FT_FIELD_OFFSET( f ) \
+#define FT_FIELD_OFFSET( f ) \
(FT_UShort)( offsetof( FT_STRUCTURE, f ) )
#define FT_FRAME_FIELD( frame_op, field ) \
@@ -149,8 +149,8 @@
/**************************************************************************
*
- * Integer extraction macros -- the `buffer' parameter must ALWAYS be of
- * type `char*' or equivalent (1-byte elements).
+ * Integer extraction macros -- the 'buffer' parameter must ALWAYS be of
+ * type 'char*' or equivalent (1-byte elements).
*/
#define FT_BYTE_( p, i ) ( ((const FT_Byte*)(p))[(i)] )
@@ -166,8 +166,19 @@
/*
- * `FT_PEEK_XXX' are generic macros to get data from a buffer position.
- * No safety checks are performed.
+ * function acts on increases does range for emits
+ * pointer checking frames error
+ * -------------------------------------------------------------------
+ * FT_PEEK_XXX buffer pointer no no no no
+ * FT_NEXT_XXX buffer pointer yes no no no
+ * FT_GET_XXX stream->cursor yes yes yes no
+ * FT_READ_XXX stream->pos yes yes no yes
+ */
+
+
+ /*
+ * `FT_PEEK_XXX' are generic macros to get data from a buffer position. No
+ * safety checks are performed.
*/
#define FT_PEEK_SHORT( p ) FT_INT16( FT_BYTE_U16( p, 0, 8 ) | \
FT_BYTE_U16( p, 1, 0 ) )
@@ -267,11 +278,11 @@
/**************************************************************************
*
- * The `FT_GET_XXX' macros use an implicit `stream' variable.
+ * The `FT_GET_XXX` macros use an implicit 'stream' variable.
*
- * Note that a call to `FT_STREAM_SEEK' or `FT_STREAM_POS' has *no* effect
- * on `FT_GET_XXX'! They operate on `stream->pos', while `FT_GET_XXX' use
- * `stream->cursor'.
+ * Note that a call to `FT_STREAM_SEEK` or `FT_STREAM_POS` has **no**
+ * effect on `FT_GET_XXX`! They operate on `stream->pos`, while
+ * `FT_GET_XXX` use `stream->cursor`.
*/
#if 0
#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor )
@@ -319,8 +330,8 @@
* The `FT_READ_XXX' macros use implicit `stream' and `error' variables.
*
* `FT_READ_XXX' can be controlled with `FT_STREAM_SEEK' and
- * `FT_STREAM_POS'. They use the full machinery to check whether a read
- * is valid.
+ * `FT_STREAM_POS'. They use the full machinery to check whether a read is
+ * valid.
*/
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
@@ -406,12 +417,14 @@
/* Enter a frame of `count' consecutive bytes in a stream. Returns an */
/* error if the frame could not be read/accessed. The caller can use */
- /* the `FT_Stream_Get_XXX' functions to retrieve frame data without */
+ /* the `FT_Stream_GetXXX' functions to retrieve frame data without */
/* error checks. */
/* */
/* You must _always_ call `FT_Stream_ExitFrame' once you have entered */
/* a stream frame! */
/* */
+ /* Nested frames are not permitted. */
+ /* */
FT_BASE( FT_Error )
FT_Stream_EnterFrame( FT_Stream stream,
FT_ULong count );
@@ -420,14 +433,17 @@
FT_BASE( void )
FT_Stream_ExitFrame( FT_Stream stream );
+
/* Extract a stream frame. If the stream is disk-based, a heap block */
/* is allocated and the frame bytes are read into it. If the stream */
- /* is memory-based, this function simply set a pointer to the data. */
+ /* is memory-based, this function simply sets a pointer to the data. */
/* */
/* Useful to optimize access to memory-based streams transparently. */
/* */
- /* All extracted frames must be `freed' with a call to the function */
- /* FT_Stream_ReleaseFrame(). */
+ /* `FT_Stream_GetXXX' functions can't be used. */
+ /* */
+ /* An extracted frame must be `freed' with a call to the function */
+ /* `FT_Stream_ReleaseFrame'. */
/* */
FT_BASE( FT_Error )
FT_Stream_ExtractFrame( FT_Stream stream,
@@ -439,6 +455,7 @@
FT_Stream_ReleaseFrame( FT_Stream stream,
FT_Byte** pbytes );
+
/* read a byte from an entered frame */
FT_BASE( FT_Char )
FT_Stream_GetChar( FT_Stream stream );
diff --git a/include/freetype/internal/fttrace.h b/include/freetype/internal/fttrace.h
index 78b731c..f5f9598 100644
--- a/include/freetype/internal/fttrace.h
+++ b/include/freetype/internal/fttrace.h
@@ -4,7 +4,7 @@
*
* Tracing handling (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -48,6 +48,7 @@
/* SFNT driver components */
FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */
+FT_TRACE_DEF( sfwoff ) /* WOFF format handler (sfwoff.c) */
FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */
diff --git a/include/freetype/internal/ftvalid.h b/include/freetype/internal/ftvalid.h
index 265d79b..38aa06c 100644
--- a/include/freetype/internal/ftvalid.h
+++ b/include/freetype/internal/ftvalid.h
@@ -4,7 +4,7 @@
*
* FreeType validation support (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -54,17 +54,17 @@
* FT_VALIDATE_TIGHT ::
* A table that passes this validation level can be used reliably and
* doesn't contain invalid data. For example, a charmap table that
- * returns invalid glyph indices will not pass, even though it can
- * be used with FreeType in default mode (the library will simply
- * return an error later when trying to load the glyph).
+ * returns invalid glyph indices will not pass, even though it can be
+ * used with FreeType in default mode (the library will simply return an
+ * error later when trying to load the glyph).
*
* It also checks that fields which must be a multiple of 2, 4, or 8,
* don't have incorrect values, etc.
*
* FT_VALIDATE_PARANOID ::
* Only for font debugging. Checks that a table follows the
- * specification by 100%. Very few fonts will be able to pass this
- * level anyway but it can be useful for certain tools like font
+ * specification by 100%. Very few fonts will be able to pass this level
+ * anyway but it can be useful for certain tools like font
* editors/converters.
*/
typedef enum FT_ValidationLevel_
diff --git a/include/freetype/internal/internal.h b/include/freetype/internal/internal.h
index 8261043..3c8830f 100644
--- a/include/freetype/internal/internal.h
+++ b/include/freetype/internal/internal.h
@@ -4,7 +4,7 @@
*
* Internal header files (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,8 +18,8 @@
/**************************************************************************
*
- * This file is automatically included by `ft2build.h'.
- * Do not include it manually!
+ * This file is automatically included by `ft2build.h`. Do not include it
+ * manually!
*
*/
@@ -40,6 +40,7 @@
#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h>
#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h>
+#define FT_INTERNAL_WOFF_TYPES_H <freetype/internal/wofftypes.h>
#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h>
#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h>
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h
index 2c5a6d2..f962a97 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -5,7 +5,7 @@
* Auxiliary functions and data structures related to PostScript fonts
* (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,7 +35,7 @@
FT_BEGIN_HEADER
- /************************************************************************
+ /**************************************************************************
*
* PostScript modules driver class.
*/
@@ -96,10 +96,10 @@
(*done)( PS_Table table );
FT_Error
- (*add)( PS_Table table,
- FT_Int idx,
- void* object,
- FT_UInt length );
+ (*add)( PS_Table table,
+ FT_Int idx,
+ const void* object,
+ FT_UInt length );
void
(*release)( PS_Table table );
@@ -113,25 +113,22 @@
* PS_TableRec
*
* @description:
- * A PS_Table is a simple object used to store an array of objects in
- * a single memory block.
+ * A PS_Table is a simple object used to store an array of objects in a
+ * single memory block.
*
* @fields:
* block ::
- * The address in memory of the growheap's block. This
- * can change between two object adds, due to
- * reallocation.
+ * The address in memory of the growheap's block. This can change
+ * between two object adds, due to reallocation.
*
* cursor ::
* The current top of the grow heap within its block.
*
* capacity ::
- * The current size of the heap block. Increments by
- * 1kByte chunks.
+ * The current size of the heap block. Increments by 1kByte chunks.
*
* init ::
- * Set to 0xDEADBEEF if `elements' and `lengths' have
- * been allocated.
+ * Set to 0xDEADBEEF if 'elements' and 'lengths' have been allocated.
*
* max_elems ::
* The maximum number of elements in table.
@@ -146,8 +143,7 @@
* A table of element sizes within the block.
*
* memory ::
- * The object used for memory operations
- * (alloc/realloc).
+ * The object used for memory operations (alloc/realloc).
*
* funcs ::
* A table of method pointers for this object.
@@ -556,9 +552,8 @@
* Set but not used.
*
* metrics_only ::
- * A boolean indicating that we only want to compute
- * the metrics of a given glyph, not load all of its
- * points.
+ * A boolean indicating that we only want to compute the metrics of a
+ * given glyph, not load all of its points.
*
* is_t1 ::
* Set if current font type is Type 1.
@@ -815,8 +810,7 @@
* Unused.
*
* parse_state ::
- * An enumeration which controls the charstring
- * parsing state.
+ * An enumeration which controls the charstring parsing state.
*
* load_points ::
* If this flag is not set, no points are loaded.
@@ -825,9 +819,8 @@
* Set but not used.
*
* metrics_only ::
- * A boolean indicating that we only want to compute
- * the metrics of a given glyph, not load all of its
- * points.
+ * A boolean indicating that we only want to compute the metrics of a
+ * given glyph, not load all of its points.
*
* funcs ::
* An array of function pointers for the builder.
@@ -1100,9 +1093,8 @@
* Set but not used.
*
* metrics_only ::
- * A boolean indicating that we only want to compute
- * the metrics of a given glyph, not load all of its
- * points.
+ * A boolean indicating that we only want to compute the metrics of a
+ * given glyph, not load all of its points.
*
* hints_funcs ::
* Auxiliary pointer for hinting.
@@ -1294,8 +1286,7 @@
*
* @fields:
* memory ::
- * The object used for memory operations (alloc and
- * realloc).
+ * The object used for memory operations (alloc and realloc).
*
* stream ::
* This is an opaque object.
@@ -1304,8 +1295,7 @@
* The result will be stored here.
*
* get_index ::
- * A user provided function to get a glyph index by its
- * name.
+ * A user provided function to get a glyph index by its name.
*/
typedef struct AFM_ParserRec_
{
diff --git a/include/freetype/internal/pshints.h b/include/freetype/internal/pshints.h
index 90a28ac..699acea 100644
--- a/include/freetype/internal/pshints.h
+++ b/include/freetype/internal/pshints.h
@@ -4,9 +4,9 @@
*
* Interface to Postscript-specific (Type 1 and Type 2) hints
* recorders (specification only). These are used to support native
- * T1/T2 hints in the `type1', `cid', and `cff' font drivers.
+ * T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers.
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -73,7 +73,7 @@
/*************************************************************************/
/*************************************************************************/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* T1_Hints
@@ -86,16 +86,16 @@
* @T1_Hints_FuncsRec structure. Recording glyph hints is normally
* achieved through the following scheme:
*
- * - Open a new hint recording session by calling the `open' method.
+ * - Open a new hint recording session by calling the 'open' method.
* This rewinds the recorder and prepare it for new input.
*
* - For each hint found in the glyph charstring, call the corresponding
- * method (`stem', `stem3', or `reset'). Note that these functions do
+ * method ('stem', 'stem3', or 'reset'). Note that these functions do
* not return an error code.
*
- * - Close the recording session by calling the `close' method. It
- * returns an error code if the hints were invalid or something
- * strange happened (e.g., memory shortage).
+ * - Close the recording session by calling the 'close' method. It
+ * returns an error code if the hints were invalid or something strange
+ * happened (e.g., memory shortage).
*
* The hints accumulated in the object can later be used by the
* PostScript hinter.
@@ -104,7 +104,7 @@
typedef struct T1_HintsRec_* T1_Hints;
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* T1_Hints_Funcs
@@ -117,7 +117,7 @@
typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs;
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_OpenFunc
@@ -139,14 +139,14 @@
(*T1_Hints_OpenFunc)( T1_Hints hints );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_SetStemFunc
*
* @description:
* A method of the @T1_Hints class used to record a new horizontal or
- * vertical stem. This corresponds to the Type 1 `hstem' and `vstem'
+ * vertical stem. This corresponds to the Type 1 'hstem' and 'vstem'
* operators.
*
* @input:
@@ -164,15 +164,15 @@
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
* horizontal coordinates (x) for vertical stems (dim=1).
*
- * `coords[0]' is the absolute stem position (lowest coordinate);
- * `coords[1]' is the length.
+ * 'coords[0]' is the absolute stem position (lowest coordinate);
+ * 'coords[1]' is the length.
*
* The length can be negative, in which case it must be either -20 or
- * -21. It is interpreted as a `ghost' stem, according to the Type 1
+ * -21. It is interpreted as a 'ghost' stem, according to the Type 1
* specification.
*
- * If the length is -21 (corresponding to a bottom ghost stem), then
- * the real stem position is `coords[0]+coords[1]'.
+ * If the length is -21 (corresponding to a bottom ghost stem), then the
+ * real stem position is 'coords[0]+coords[1]'.
*
*/
typedef void
@@ -181,7 +181,7 @@
FT_Fixed* coords );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_SetStem3Func
@@ -215,7 +215,7 @@
FT_Fixed* coords );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_ResetFunc
@@ -238,7 +238,7 @@
FT_UInt end_point );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_CloseFunc
@@ -267,7 +267,7 @@
FT_UInt end_point );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T1_Hints_ApplyFunc
@@ -297,7 +297,7 @@
* On input, all points within the outline are in font coordinates. On
* output, they are in 1/64th of pixels.
*
- * The scaling transformation is taken from the `globals' object which
+ * The scaling transformation is taken from the 'globals' object which
* must correspond to the same font as the glyph.
*
*/
@@ -308,7 +308,7 @@
FT_Render_Mode hint_mode );
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* T1_Hints_FuncsRec
@@ -360,7 +360,7 @@
/*************************************************************************/
/*************************************************************************/
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* T2_Hints
@@ -373,16 +373,16 @@
* @T2_Hints_FuncsRec structure. Recording glyph hints is normally
* achieved through the following scheme:
*
- * - Open a new hint recording session by calling the `open' method.
+ * - Open a new hint recording session by calling the 'open' method.
* This rewinds the recorder and prepare it for new input.
*
* - For each hint found in the glyph charstring, call the corresponding
- * method (`stems', `hintmask', `counters'). Note that these
- * functions do not return an error code.
+ * method ('stems', 'hintmask', 'counters'). Note that these functions
+ * do not return an error code.
*
- * - Close the recording session by calling the `close' method. It
- * returns an error code if the hints were invalid or something
- * strange happened (e.g., memory shortage).
+ * - Close the recording session by calling the 'close' method. It
+ * returns an error code if the hints were invalid or something strange
+ * happened (e.g., memory shortage).
*
* The hints accumulated in the object can later be used by the
* Postscript hinter.
@@ -391,7 +391,7 @@
typedef struct T2_HintsRec_* T2_Hints;
- /*************************************************************************
+ /**************************************************************************
*
* @type:
* T2_Hints_Funcs
@@ -404,7 +404,7 @@
typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs;
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_OpenFunc
@@ -426,7 +426,7 @@
(*T2_Hints_OpenFunc)( T2_Hints hints );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_StemsFunc
@@ -434,7 +434,7 @@
* @description:
* A method of the @T2_Hints class used to set the table of stems in
* either the vertical or horizontal dimension. Equivalent to the
- * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
+ * 'hstem', 'vstem', 'hstemhm', and 'vstemhm' Type 2 operators.
*
* @input:
* hints ::
@@ -447,18 +447,18 @@
* The number of stems.
*
* coords ::
- * An array of `count' (position,length) pairs in 16.16 format.
+ * An array of 'count' (position,length) pairs in 16.16 format.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
* horizontal coordinates (x) for vertical stems (dim=1).
*
- * There are `2*count' elements in the `coords' array. Each even
- * element is an absolute position in font units, each odd element is a
- * length in font units.
+ * There are '2*count' elements in the 'coords' array. Each even element
+ * is an absolute position in font units, each odd element is a length in
+ * font units.
*
- * A length can be negative, in which case it must be either -20 or
- * -21. It is interpreted as a `ghost' stem, according to the Type 1
+ * A length can be negative, in which case it must be either -20 or -21.
+ * It is interpreted as a 'ghost' stem, according to the Type 1
* specification.
*
*/
@@ -469,22 +469,22 @@
FT_Fixed* coordinates );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_MaskFunc
*
* @description:
* A method of the @T2_Hints class used to set a given hintmask (this
- * corresponds to the `hintmask' Type 2 operator).
+ * corresponds to the 'hintmask' Type 2 operator).
*
* @input:
* hints ::
* A handle to the Type 2 hints recorder.
*
* end_point ::
- * The glyph index of the last point to which the previously defined
- * or activated hints apply.
+ * The glyph index of the last point to which the previously defined or
+ * activated hints apply.
*
* bit_count ::
* The number of bits in the hint mask.
@@ -494,13 +494,13 @@
*
* @note:
* If the hintmask starts the charstring (before any glyph point
- * definition), the value of `end_point' should be 0.
+ * definition), the value of `end_point` should be 0.
*
- * `bit_count' is the number of meaningful bits in the `bytes' array; it
+ * `bit_count` is the number of meaningful bits in the 'bytes' array; it
* must be equal to the total number of hints defined so far (i.e.,
* horizontal+verticals).
*
- * The `bytes' array can come directly from the Type 2 charstring and
+ * The 'bytes' array can come directly from the Type 2 charstring and
* respects the same format.
*
*/
@@ -511,14 +511,14 @@
const FT_Byte* bytes );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_CounterFunc
*
* @description:
- * A method of the @T2_Hints class used to set a given counter mask
- * (this corresponds to the `hintmask' Type 2 operator).
+ * A method of the @T2_Hints class used to set a given counter mask (this
+ * corresponds to the 'hintmask' Type 2 operator).
*
* @input:
* hints ::
@@ -536,13 +536,13 @@
*
* @note:
* If the hintmask starts the charstring (before any glyph point
- * definition), the value of `end_point' should be 0.
+ * definition), the value of `end_point` should be 0.
*
- * `bit_count' is the number of meaningful bits in the `bytes' array; it
+ * `bit_count` is the number of meaningful bits in the 'bytes' array; it
* must be equal to the total number of hints defined so far (i.e.,
* horizontal+verticals).
*
- * The `bytes' array can come directly from the Type 2 charstring and
+ * The 'bytes' array can come directly from the Type 2 charstring and
* respects the same format.
*
*/
@@ -552,7 +552,7 @@
const FT_Byte* bytes );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_CloseFunc
@@ -581,15 +581,14 @@
FT_UInt end_point );
- /*************************************************************************
+ /**************************************************************************
*
* @functype:
* T2_Hints_ApplyFunc
*
* @description:
* A method of the @T2_Hints class used to apply hints to the
- * corresponding glyph outline. Must be called after the `close'
- * method.
+ * corresponding glyph outline. Must be called after the 'close' method.
*
* @input:
* hints ::
@@ -611,7 +610,7 @@
* On input, all points within the outline are in font coordinates. On
* output, they are in 1/64th of pixels.
*
- * The scaling transformation is taken from the `globals' object which
+ * The scaling transformation is taken from the 'globals' object which
* must correspond to the same font than the glyph.
*
*/
@@ -622,7 +621,7 @@
FT_Render_Mode hint_mode );
- /*************************************************************************
+ /**************************************************************************
*
* @struct:
* T2_Hints_FuncsRec
diff --git a/include/freetype/internal/services/svbdf.h b/include/freetype/internal/services/svbdf.h
index b29f537..e4786ed 100644
--- a/include/freetype/internal/services/svbdf.h
+++ b/include/freetype/internal/services/svbdf.h
@@ -4,7 +4,7 @@
*
* The FreeType BDF services (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svcfftl.h b/include/freetype/internal/services/svcfftl.h
index 9e4486e..6c62173 100644
--- a/include/freetype/internal/services/svcfftl.h
+++ b/include/freetype/internal/services/svcfftl.h
@@ -4,7 +4,7 @@
*
* The FreeType CFF tables loader service (specification).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svcid.h b/include/freetype/internal/services/svcid.h
index 9ef0a0c..555a5af 100644
--- a/include/freetype/internal/services/svcid.h
+++ b/include/freetype/internal/services/svcid.h
@@ -4,7 +4,7 @@
*
* The FreeType CID font services (specification).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* Derek Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svfntfmt.h b/include/freetype/internal/services/svfntfmt.h
index 6182362..6f4285e 100644
--- a/include/freetype/internal/services/svfntfmt.h
+++ b/include/freetype/internal/services/svfntfmt.h
@@ -4,7 +4,7 @@
*
* The FreeType font format service (specification only).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,8 +27,8 @@
/*
* A trivial service used to return the name of a face's font driver,
- * according to the XFree86 nomenclature. Note that the service data
- * is a simple constant string pointer.
+ * according to the XFree86 nomenclature. Note that the service data is a
+ * simple constant string pointer.
*/
#define FT_SERVICE_ID_FONT_FORMAT "font-format"
diff --git a/include/freetype/internal/services/svgldict.h b/include/freetype/internal/services/svgldict.h
index 0840b58..0949621 100644
--- a/include/freetype/internal/services/svgldict.h
+++ b/include/freetype/internal/services/svgldict.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph dictionary services (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -26,8 +26,8 @@
/*
- * A service used to retrieve glyph names, as well as to find the
- * index of a given glyph name in a font.
+ * A service used to retrieve glyph names, as well as to find the index of
+ * a given glyph name in a font.
*
*/
@@ -41,8 +41,8 @@
FT_UInt buffer_max );
typedef FT_UInt
- (*FT_GlyphDict_NameIndexFunc)( FT_Face face,
- FT_String* glyph_name );
+ (*FT_GlyphDict_NameIndexFunc)( FT_Face face,
+ const FT_String* glyph_name );
FT_DEFINE_SERVICE( GlyphDict )
diff --git a/include/freetype/internal/services/svgxval.h b/include/freetype/internal/services/svgxval.h
index 7fa27ff..0bb76f3 100644
--- a/include/freetype/internal/services/svgxval.h
+++ b/include/freetype/internal/services/svgxval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/include/freetype/internal/services/svkern.h b/include/freetype/internal/services/svkern.h
index ef95b32..f992a32 100644
--- a/include/freetype/internal/services/svkern.h
+++ b/include/freetype/internal/services/svkern.h
@@ -4,7 +4,7 @@
*
* The FreeType Kerning service (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svmetric.h b/include/freetype/internal/services/svmetric.h
index 91de020..d688bc7 100644
--- a/include/freetype/internal/services/svmetric.h
+++ b/include/freetype/internal/services/svmetric.h
@@ -4,7 +4,7 @@
*
* The FreeType services for metrics variations (specification).
*
- * Copyright 2016-2018 by
+ * Copyright (C) 2016-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svmm.h b/include/freetype/internal/services/svmm.h
index 6aeaa45..3652f20 100644
--- a/include/freetype/internal/services/svmm.h
+++ b/include/freetype/internal/services/svmm.h
@@ -4,7 +4,7 @@
*
* The FreeType Multiple Masters and GX var services (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -86,47 +86,63 @@
typedef void
(*FT_Done_Blend_Func)( FT_Face );
+ typedef FT_Error
+ (*FT_Set_MM_WeightVector_Func)( FT_Face face,
+ FT_UInt len,
+ FT_Fixed* weight_vector );
+
+ typedef FT_Error
+ (*FT_Get_MM_WeightVector_Func)( FT_Face face,
+ FT_UInt* len,
+ FT_Fixed* weight_vector );
+
FT_DEFINE_SERVICE( MultiMasters )
{
- FT_Get_MM_Func get_mm;
- FT_Set_MM_Design_Func set_mm_design;
- FT_Set_MM_Blend_Func set_mm_blend;
- FT_Get_MM_Blend_Func get_mm_blend;
- FT_Get_MM_Var_Func get_mm_var;
- FT_Set_Var_Design_Func set_var_design;
- FT_Get_Var_Design_Func get_var_design;
- FT_Set_Instance_Func set_instance;
+ FT_Get_MM_Func get_mm;
+ FT_Set_MM_Design_Func set_mm_design;
+ FT_Set_MM_Blend_Func set_mm_blend;
+ FT_Get_MM_Blend_Func get_mm_blend;
+ FT_Get_MM_Var_Func get_mm_var;
+ FT_Set_Var_Design_Func set_var_design;
+ FT_Get_Var_Design_Func get_var_design;
+ FT_Set_Instance_Func set_instance;
+ FT_Set_MM_WeightVector_Func set_mm_weightvector;
+ FT_Get_MM_WeightVector_Func get_mm_weightvector;
/* for internal use; only needed for code sharing between modules */
- FT_Get_Var_Blend_Func get_var_blend;
- FT_Done_Blend_Func done_blend;
+ FT_Get_Var_Blend_Func get_var_blend;
+ FT_Done_Blend_Func done_blend;
};
-#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
- get_mm_, \
- set_mm_design_, \
- set_mm_blend_, \
- get_mm_blend_, \
- get_mm_var_, \
- set_var_design_, \
- get_var_design_, \
- set_instance_, \
- get_var_blend_, \
- done_blend_ ) \
- static const FT_Service_MultiMastersRec class_ = \
- { \
- get_mm_, \
- set_mm_design_, \
- set_mm_blend_, \
- get_mm_blend_, \
- get_mm_var_, \
- set_var_design_, \
- get_var_design_, \
- set_instance_, \
- get_var_blend_, \
- done_blend_ \
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
+ get_mm_, \
+ set_mm_design_, \
+ set_mm_blend_, \
+ get_mm_blend_, \
+ get_mm_var_, \
+ set_var_design_, \
+ get_var_design_, \
+ set_instance_, \
+ set_weightvector_, \
+ get_weightvector_, \
+ get_var_blend_, \
+ done_blend_ ) \
+ static const FT_Service_MultiMastersRec class_ = \
+ { \
+ get_mm_, \
+ set_mm_design_, \
+ set_mm_blend_, \
+ get_mm_blend_, \
+ get_mm_var_, \
+ set_var_design_, \
+ get_var_design_, \
+ set_instance_, \
+ set_weightvector_, \
+ get_weightvector_, \
+ get_var_blend_, \
+ done_blend_ \
};
/* */
diff --git a/include/freetype/internal/services/svotval.h b/include/freetype/internal/services/svotval.h
index 9a3ff47..cab4c6e 100644
--- a/include/freetype/internal/services/svotval.h
+++ b/include/freetype/internal/services/svotval.h
@@ -4,7 +4,7 @@
*
* The FreeType OpenType validation service (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpfr.h b/include/freetype/internal/services/svpfr.h
index 21deb31..fd01d61 100644
--- a/include/freetype/internal/services/svpfr.h
+++ b/include/freetype/internal/services/svpfr.h
@@ -4,7 +4,7 @@
*
* Internal PFR service functions (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpostnm.h b/include/freetype/internal/services/svpostnm.h
index 1e39dce..18e3843 100644
--- a/include/freetype/internal/services/svpostnm.h
+++ b/include/freetype/internal/services/svpostnm.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript name services (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -25,10 +25,10 @@
FT_BEGIN_HEADER
/*
- * A trivial service used to retrieve the PostScript name of a given
- * font when available. The `get_name' field should never be NULL.
+ * A trivial service used to retrieve the PostScript name of a given font
+ * when available. The `get_name' field should never be `NULL`.
*
- * The corresponding function can return NULL to indicate that the
+ * The corresponding function can return `NULL` to indicate that the
* PostScript name is not available.
*
* The name is owned by the face and will be destroyed with it.
diff --git a/include/freetype/internal/services/svprop.h b/include/freetype/internal/services/svprop.h
index 7e84cc8..e48d015 100644
--- a/include/freetype/internal/services/svprop.h
+++ b/include/freetype/internal/services/svprop.h
@@ -4,7 +4,7 @@
*
* The FreeType property service (specification).
*
- * Copyright 2012-2018 by
+ * Copyright (C) 2012-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpscmap.h b/include/freetype/internal/services/svpscmap.h
index 136879d..dfac3ba 100644
--- a/include/freetype/internal/services/svpscmap.h
+++ b/include/freetype/internal/services/svpscmap.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript charmap service (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,21 +35,20 @@
(*PS_Unicode_ValueFunc)( const char* glyph_name );
/*
- * Macintosh name id to glyph name. NULL if invalid index.
+ * Macintosh name id to glyph name. `NULL` if invalid index.
*/
typedef const char*
(*PS_Macintosh_NameFunc)( FT_UInt name_index );
/*
- * Adobe standard string ID to glyph name. NULL if invalid index.
+ * Adobe standard string ID to glyph name. `NULL` if invalid index.
*/
typedef const char*
(*PS_Adobe_Std_StringsFunc)( FT_UInt string_index );
/*
- * Simple unicode -> glyph index charmap built from font glyph names
- * table.
+ * Simple unicode -> glyph index charmap built from font glyph names table.
*/
typedef struct PS_UniMap_
{
@@ -72,7 +71,7 @@
/*
* A function which returns a glyph name for a given index. Returns
- * NULL if invalid index.
+ * `NULL` if invalid index.
*/
typedef const char*
(*PS_GetGlyphNameFunc)( FT_Pointer data,
diff --git a/include/freetype/internal/services/svpsinfo.h b/include/freetype/internal/services/svpsinfo.h
index 214fd1e..fb4e0e3 100644
--- a/include/freetype/internal/services/svpsinfo.h
+++ b/include/freetype/internal/services/svpsinfo.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript info service (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svsfnt.h b/include/freetype/internal/services/svsfnt.h
index 035e119..464aa20 100644
--- a/include/freetype/internal/services/svsfnt.h
+++ b/include/freetype/internal/services/svsfnt.h
@@ -4,7 +4,7 @@
*
* The FreeType SFNT table loading service (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svttcmap.h b/include/freetype/internal/services/svttcmap.h
index cc4328f..0fcb813 100644
--- a/include/freetype/internal/services/svttcmap.h
+++ b/include/freetype/internal/services/svttcmap.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType/sfnt cmap extra information service.
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* Masatake YAMATO, Redhat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -45,15 +45,14 @@
* @fields:
* language ::
* The language ID used in Mac fonts. Definitions of values are in
- * `ttnameid.h'.
+ * `ttnameid.h`.
*
* format ::
- * The cmap format. OpenType 1.6 defines the formats 0 (byte
- * encoding table), 2~(high-byte mapping through table), 4~(segment
- * mapping to delta values), 6~(trimmed table mapping), 8~(mixed
- * 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented
- * coverage), 13~(last resort font), and 14 (Unicode Variation
- * Sequences).
+ * The cmap format. OpenType 1.6 defines the formats 0 (byte encoding
+ * table), 2~(high-byte mapping through table), 4~(segment mapping to
+ * delta values), 6~(trimmed table mapping), 8~(mixed 16-bit and 32-bit
+ * coverage), 10~(trimmed array), 12~(segmented coverage), 13~(last
+ * resort font), and 14 (Unicode Variation Sequences).
*/
typedef struct TT_CMapInfo_
{
diff --git a/include/freetype/internal/services/svtteng.h b/include/freetype/internal/services/svtteng.h
index 2564a41..a852f5c 100644
--- a/include/freetype/internal/services/svtteng.h
+++ b/include/freetype/internal/services/svtteng.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType engine query service (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svttglyf.h b/include/freetype/internal/services/svttglyf.h
index 38444e9..c879877 100644
--- a/include/freetype/internal/services/svttglyf.h
+++ b/include/freetype/internal/services/svttglyf.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType glyph service.
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svwinfnt.h b/include/freetype/internal/services/svwinfnt.h
index 3aaa8a8..38ee020 100644
--- a/include/freetype/internal/services/svwinfnt.h
+++ b/include/freetype/internal/services/svwinfnt.h
@@ -4,7 +4,7 @@
*
* The FreeType Windows FNT/FONT service (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h
index 178d892..b19241c 100644
--- a/include/freetype/internal/sfnt.h
+++ b/include/freetype/internal/sfnt.h
@@ -2,9 +2,9 @@
*
* sfnt.h
*
- * High-level `sfnt' driver interface (specification).
+ * High-level 'sfnt' driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -23,6 +23,7 @@
#include <ft2build.h>
#include FT_INTERNAL_DRIVER_H
#include FT_INTERNAL_TRUETYPE_TYPES_H
+#include FT_INTERNAL_WOFF_TYPES_H
FT_BEGIN_HEADER
@@ -34,8 +35,8 @@
* TT_Init_Face_Func
*
* @description:
- * First part of the SFNT face object initialization. This finds
- * the face in a SFNT file or collection, and load its format tag in
+ * First part of the SFNT face object initialization. This finds the
+ * face in a SFNT file or collection, and load its format tag in
* face->format_tag.
*
* @input:
@@ -46,10 +47,9 @@
* A handle to the target face object.
*
* face_index ::
- * The index of the TrueType font, if we are opening a
- * collection, in bits 0-15. The numbered instance
- * index~+~1 of a GX (sub)font, if applicable, in bits
- * 16-30.
+ * The index of the TrueType font, if we are opening a collection, in
+ * bits 0-15. The numbered instance index~+~1 of a GX (sub)font, if
+ * applicable, in bits 16-30.
*
* num_params ::
* The number of additional parameters.
@@ -63,12 +63,11 @@
* @note:
* The stream cursor must be at the font file's origin.
*
- * This function recognizes fonts embedded in a `TrueType
- * collection'.
+ * This function recognizes fonts embedded in a 'TrueType collection'.
*
- * Once the format tag has been validated by the font driver, it
- * should then call the TT_Load_Face_Func() callback to read the rest
- * of the SFNT tables in the object.
+ * Once the format tag has been validated by the font driver, it should
+ * then call the TT_Load_Face_Func() callback to read the rest of the
+ * SFNT tables in the object.
*/
typedef FT_Error
(*TT_Init_Face_Func)( FT_Stream stream,
@@ -84,9 +83,9 @@
* TT_Load_Face_Func
*
* @description:
- * Second part of the SFNT face object initialization. This loads
- * the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the
- * face object.
+ * Second part of the SFNT face object initialization. This loads the
+ * common SFNT tables (head, OS/2, maxp, metrics, etc.) in the face
+ * object.
*
* @input:
* stream ::
@@ -96,10 +95,9 @@
* A handle to the target face object.
*
* face_index ::
- * The index of the TrueType font, if we are opening a
- * collection, in bits 0-15. The numbered instance
- * index~+~1 of a GX (sub)font, if applicable, in bits
- * 16-30.
+ * The index of the TrueType font, if we are opening a collection, in
+ * bits 0-15. The numbered instance index~+~1 of a GX (sub)font, if
+ * applicable, in bits 16-30.
*
* num_params ::
* The number of additional parameters.
@@ -153,30 +151,24 @@
* The face object to look for.
*
* tag ::
- * The tag of table to load. Use the value 0 if you want
- * to access the whole font file, else set this parameter
- * to a valid TrueType table tag that you can forge with
- * the MAKE_TT_TAG macro.
+ * The tag of table to load. Use the value 0 if you want to access the
+ * whole font file, else set this parameter to a valid TrueType table
+ * tag that you can forge with the MAKE_TT_TAG macro.
*
* offset ::
- * The starting offset in the table (or the file if
- * tag == 0).
+ * The starting offset in the table (or the file if tag == 0).
*
* length ::
* The address of the decision variable:
*
- * If length == NULL:
- * Loads the whole table. Returns an error if
- * `offset' == 0!
+ * If `length == NULL`: Loads the whole table. Returns an error if
+ * 'offset' == 0!
*
- * If *length == 0:
- * Exits immediately; returning the length of the given
- * table or of the font file, depending on the value of
- * `tag'.
+ * If `*length == 0`: Exits immediately; returning the length of the
+ * given table or of the font file, depending on the value of 'tag'.
*
- * If *length != 0:
- * Loads the next `length' bytes of table or font,
- * starting at offset `offset' (in table or font too).
+ * If `*length != 0`: Loads the next 'length' bytes of table or font,
+ * starting at offset 'offset' (in table or font too).
*
* @output:
* buffer ::
@@ -199,8 +191,8 @@
* TT_Find_SBit_Image_Func
*
* @description:
- * Check whether an embedded bitmap (an `sbit') exists for a given
- * glyph, at a given strike.
+ * Check whether an embedded bitmap (an 'sbit') exists for a given glyph,
+ * at a given strike.
*
* @input:
* face ::
@@ -220,12 +212,11 @@
* The SBit strike containing the glyph index.
*
* aglyph_offset ::
- * The offset of the glyph data in `EBDT' table.
+ * The offset of the glyph data in 'EBDT' table.
*
* @return:
* FreeType error code. 0 means success. Returns
- * SFNT_Err_Invalid_Argument if no sbit exists for the requested
- * glyph.
+ * SFNT_Err_Invalid_Argument if no sbit exists for the requested glyph.
*/
typedef FT_Error
(*TT_Find_SBit_Image_Func)( TT_Face face,
@@ -259,11 +250,11 @@
* FreeType error code. 0 means success.
*
* @note:
- * The stream cursor must be positioned at the glyph's offset within
- * the `EBDT' table before the call.
+ * The stream cursor must be positioned at the glyph's offset within the
+ * 'EBDT' table before the call.
*
* If the image format uses variable metrics, the stream cursor is
- * positioned just after the metrics header in the `EBDT' table on
+ * positioned just after the metrics header in the 'EBDT' table on
* function exit.
*/
typedef FT_Error
@@ -305,11 +296,11 @@
* A big sbit metrics structure for the glyph image.
*
* @return:
- * FreeType error code. 0 means success. Returns an error if no
- * glyph sbit exists for the index.
+ * FreeType error code. 0 means success. Returns an error if no glyph
+ * sbit exists for the index.
*
* @note:
- * The `map.buffer' field is always freed before the glyph is loaded.
+ * The `map.buffer` field is always freed before the glyph is loaded.
*/
typedef FT_Error
(*TT_Load_SBit_Image_Func)( TT_Face face,
@@ -341,8 +332,8 @@
* The index of the sbit strike.
*
* @return:
- * FreeType error code. 0 means success. Returns an error if no
- * sbit strike exists for the selected ppem values.
+ * FreeType error code. 0 means success. Returns an error if no sbit
+ * strike exists for the selected ppem values.
*/
typedef FT_Error
(*TT_Set_SBit_Strike_Func)( TT_Face face,
@@ -370,8 +361,8 @@
* the metrics of the strike.
*
* @return:
- * FreeType error code. 0 means success. Returns an error if no
- * such sbit strike exists.
+ * FreeType error code. 0 means success. Returns an error if no such
+ * sbit strike exists.
*/
typedef FT_Error
(*TT_Load_Strike_Metrics_Func)( TT_Face face,
@@ -392,8 +383,8 @@
* The glyph index.
*
* PSname ::
- * The address of a string pointer. Will be NULL in case
- * of error, otherwise it is a pointer to the glyph name.
+ * The address of a string pointer. Will be `NULL` in case of error,
+ * otherwise it is a pointer to the glyph name.
*
* You must not modify the returned string!
*
@@ -454,12 +445,10 @@
*
* @output:
* abearing ::
- * The horizontal (or vertical) bearing. Set to zero in
- * case of error.
+ * The horizontal (or vertical) bearing. Set to zero in case of error.
*
* aadvance ::
- * The horizontal (or vertical) advance. Set to zero in
- * case of error.
+ * The horizontal (or vertical) advance. Set to zero in case of error.
*/
typedef void
(*TT_Get_Metrics_Func)( TT_Face face,
@@ -475,7 +464,7 @@
* TT_Set_Palette_Func
*
* @description:
- * Load the colors into `face->palette' for a given palette index.
+ * Load the colors into `face->palette` for a given palette index.
*
* @input:
* face ::
@@ -510,7 +499,7 @@
* @inout:
* iterator ::
* An @FT_LayerIterator object. For the first call you should set
- * `iterator->p' to NULL. For all following calls, simply use the
+ * `iterator->p` to `NULL`. For all following calls, simply use the
* same object again.
*
* @output:
@@ -524,9 +513,9 @@
* instead (to be set up by the application outside of FreeType).
*
* @return:
- * Value~1 if everything is OK. If there are no more layers (or if
- * there are no layers at all), value~0 gets returned. In case of an
- * error, value~0 is returned also.
+ * Value~1 if everything is OK. If there are no more layers (or if there
+ * are no layers at all), value~0 gets returned. In case of an error,
+ * value~0 is returned also.
*/
typedef FT_Bool
(*TT_Get_Colr_Layer_Func)( TT_Face face,
@@ -542,10 +531,10 @@
* TT_Blend_Colr_Func
*
* @description:
- * Blend the bitmap in `new_glyph' into `base_glyph' using the color
- * specified by `color_index'. If `color_index' is 0xFFFF, use
- * `face->foreground_color' if `face->have_foreground_color' is set.
- * Otherwise check `face->palette_data.palette_flags': If present and
+ * Blend the bitmap in `new_glyph` into `base_glyph` using the color
+ * specified by `color_index`. If `color_index` is 0xFFFF, use
+ * `face->foreground_color` if `face->have_foreground_color` is set.
+ * Otherwise check `face->palette_data.palette_flags`: If present and
* @FT_PALETTE_FOR_DARK_BACKGROUND is set, use BGRA value 0xFFFFFFFF
* (white opaque). Otherwise use BGRA value 0x000000FF (black opaque).
*
@@ -557,11 +546,11 @@
* Color index from the COLR table.
*
* base_glyph ::
- * Slot for bitmap to be merged into. The underlying
- * bitmap may get reallocated.
+ * Slot for bitmap to be merged into. The underlying bitmap may get
+ * reallocated.
*
* new_glyph ::
- * Slot to be incooperated into `base_glyph'.
+ * Slot to be incooperated into `base_glyph`.
*
* @return:
* FreeType error code. 0 means success. Returns an error if
@@ -580,8 +569,7 @@
* TT_Get_Name_Func
*
* @description:
- * From the `name' table, return a given ENGLISH name record in
- * ASCII.
+ * From the 'name' table, return a given ENGLISH name record in ASCII.
*
* @input:
* face ::
@@ -592,8 +580,8 @@
*
* @inout:
* name ::
- * The address of an allocated string pointer. NULL if
- * no name is present.
+ * The address of an allocated string pointer. `NULL` if no name is
+ * present.
*
* @return:
* FreeType error code. 0 means success.
@@ -610,8 +598,8 @@
* TT_Get_Name_ID_Func
*
* @description:
- * Search whether an ENGLISH version for a given name ID is in the
- * `name' table.
+ * Search whether an ENGLISH version for a given name ID is in the 'name'
+ * table.
*
* @input:
* face ::
@@ -622,12 +610,12 @@
*
* @output:
* win ::
- * If non-negative, an index into the `name' table with
- * the corresponding (3,1) or (3,0) Windows entry.
+ * If non-negative, an index into the 'name' table with the
+ * corresponding (3,1) or (3,0) Windows entry.
*
* apple ::
- * If non-negative, an index into the `name' table with
- * the corresponding (1,0) Apple entry.
+ * If non-negative, an index into the 'name' table with the
+ * corresponding (1,0) Apple entry.
*
* @return:
* 1 if there is either a win or apple entry (or both), 0 otheriwse.
@@ -658,8 +646,8 @@
* FreeType error code. 0 means success.
*
* @note:
- * The function uses `face->goto_table' to seek the stream to the
- * start of the table, except while loading the font directory.
+ * The function uses `face->goto_table` to seek the stream to the start
+ * of the table, except while loading the font directory.
*/
typedef FT_Error
(*TT_Load_Table_Func)( TT_Face face,
@@ -690,9 +678,14 @@
* Return the horizontal kerning value between two glyphs.
*
* @input:
- * face :: A handle to the source face object.
- * left_glyph :: The left glyph index.
- * right_glyph :: The right glyph index.
+ * face ::
+ * A handle to the source face object.
+ *
+ * left_glyph ::
+ * The left glyph index.
+ *
+ * right_glyph ::
+ * The right glyph index.
*
* @return:
* The kerning value in font units.
@@ -709,8 +702,8 @@
* SFNT_Interface
*
* @description:
- * This structure holds pointers to the functions used to load and
- * free the basic tables that are required in a `sfnt' font file.
+ * This structure holds pointers to the functions used to load and free
+ * the basic tables that are required in a 'sfnt' font file.
*
* @fields:
* Check the various xxx_Func() descriptions for details.
diff --git a/include/freetype/internal/t1types.h b/include/freetype/internal/t1types.h
index 67c3857..d94c8c1 100644
--- a/include/freetype/internal/t1types.h
+++ b/include/freetype/internal/t1types.h
@@ -5,7 +5,7 @@
* Basic Type1/Type2 type definitions and interface (specification
* only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -55,16 +55,14 @@
*
* @fields:
* num_chars ::
- * The number of character codes in the encoding.
- * Usually 256.
+ * The number of character codes in the encoding. Usually 256.
*
* code_first ::
* The lowest valid character code in the encoding.
*
* code_last ::
- * The highest valid character code in the encoding
- * + 1. When equal to code_first there are no valid
- * character codes.
+ * The highest valid character code in the encoding + 1. When equal to
+ * code_first there are no valid character codes.
*
* char_index ::
* An array of corresponding glyph indices.
@@ -78,8 +76,8 @@
FT_Int code_first;
FT_Int code_last;
- FT_UShort* char_index;
- FT_String** char_name;
+ FT_UShort* char_index;
+ const FT_String** char_name;
} T1_EncodingRec, *T1_Encoding;
diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h
index 4df6b29..23db240 100644
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -5,7 +5,7 @@
* Basic SFNT/TrueType type definitions and interface (specification
* only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,21 +53,20 @@
* TTC_HeaderRec
*
* @description:
- * TrueType collection header. This table contains the offsets of
- * the font headers of each distinct TrueType face in the file.
+ * TrueType collection header. This table contains the offsets of the
+ * font headers of each distinct TrueType face in the file.
*
* @fields:
* tag ::
- * Must be `ttc ' to indicate a TrueType collection.
+ * Must be 'ttc~' to indicate a TrueType collection.
*
* version ::
* The version number.
*
* count ::
- * The number of faces in the collection. The
- * specification says this should be an unsigned long, but
- * we use a signed long since we need the value -1 for
- * specific purposes.
+ * The number of faces in the collection. The specification says this
+ * should be an unsigned long, but we use a signed long since we need
+ * the value -1 for specific purposes.
*
* offsets ::
* The offsets of the font headers, one per face.
@@ -98,13 +97,13 @@
* The number of tables in file.
*
* search_range ::
- * Must be `16 * (max power of 2 <= num_tables)'.
+ * Must be '16 * (max power of 2 <= num_tables)'.
*
* entry_selector ::
- * Must be log2 of `search_range / 16'.
+ * Must be log2 of 'search_range / 16'.
*
* range_shift ::
- * Must be `num_tables * 16 - search_range'.
+ * Must be 'num_tables * 16 - search_range'.
*/
typedef struct SFNT_HeaderRec_
{
@@ -135,8 +134,8 @@
* The table checksum. This value can be ignored.
*
* Offset ::
- * The offset of the table from the start of the TrueType
- * font in its resource.
+ * The offset of the table from the start of the TrueType font in its
+ * resource.
*
* Length ::
* The table length (in bytes).
@@ -154,85 +153,10 @@
/**************************************************************************
*
* @struct:
- * WOFF_HeaderRec
- *
- * @description:
- * WOFF file format header.
- *
- * @fields:
- * See
- *
- * https://www.w3.org/TR/WOFF/#WOFFHeader
- */
- typedef struct WOFF_HeaderRec_
- {
- FT_ULong signature;
- FT_ULong flavor;
- FT_ULong length;
- FT_UShort num_tables;
- FT_UShort reserved;
- FT_ULong totalSfntSize;
- FT_UShort majorVersion;
- FT_UShort minorVersion;
- FT_ULong metaOffset;
- FT_ULong metaLength;
- FT_ULong metaOrigLength;
- FT_ULong privOffset;
- FT_ULong privLength;
-
- } WOFF_HeaderRec, *WOFF_Header;
-
-
- /**************************************************************************
- *
- * @struct:
- * WOFF_TableRec
- *
- * @description:
- * This structure describes a given table of a WOFF font.
- *
- * @fields:
- * Tag ::
- * A four-bytes tag describing the table.
- *
- * Offset ::
- * The offset of the table from the start of the WOFF
- * font in its resource.
- *
- * CompLength ::
- * Compressed table length (in bytes).
- *
- * OrigLength ::
- * Uncompressed table length (in bytes).
- *
- * CheckSum ::
- * The table checksum. This value can be ignored.
- *
- * OrigOffset ::
- * The uncompressed table file offset. This value gets
- * computed while constructing the (uncompressed) SFNT
- * header. It is not contained in the WOFF file.
- */
- typedef struct WOFF_TableRec_
- {
- FT_ULong Tag; /* table ID */
- FT_ULong Offset; /* table file offset */
- FT_ULong CompLength; /* compressed table length */
- FT_ULong OrigLength; /* uncompressed table length */
- FT_ULong CheckSum; /* uncompressed checksum */
-
- FT_ULong OrigOffset; /* uncompressed table file offset */
- /* (not in the WOFF file) */
- } WOFF_TableRec, *WOFF_Table;
-
-
- /**************************************************************************
- *
- * @struct:
* TT_LongMetricsRec
*
* @description:
- * A structure modeling the long metrics of the `hmtx' and `vmtx'
+ * A structure modeling the long metrics of the 'hmtx' and 'vmtx'
* TrueType tables. The values are expressed in font units.
*
* @fields:
@@ -256,7 +180,7 @@
* TT_ShortMetrics
*
* @description:
- * A simple type to model the short metrics of the `hmtx' and `vmtx'
+ * A simple type to model the short metrics of the 'hmtx' and 'vmtx'
* tables.
*/
typedef FT_Short TT_ShortMetrics;
@@ -268,10 +192,9 @@
* TT_NameRec
*
* @description:
- * A structure modeling TrueType name records. Name records are used
- * to store important strings like family name, style name,
- * copyright, etc. in _localized_ versions (i.e., language, encoding,
- * etc).
+ * A structure modeling TrueType name records. Name records are used to
+ * store important strings like family name, style name, copyright,
+ * etc. in _localized_ versions (i.e., language, encoding, etc).
*
* @fields:
* platformID ::
@@ -290,11 +213,11 @@
* The length of the string in bytes.
*
* stringOffset ::
- * The offset to the string in the `name' table.
+ * The offset to the string in the 'name' table.
*
* string ::
- * A pointer to the string's bytes. Note that these
- * are usually UTF-16 encoded characters.
+ * A pointer to the string's bytes. Note that these are usually UTF-16
+ * encoded characters.
*/
typedef struct TT_NameRec_
{
@@ -319,7 +242,7 @@
* TT_LangTagRec
*
* @description:
- * A structure modeling language tag records in SFNT `name' tables,
+ * A structure modeling language tag records in SFNT 'name' tables,
* introduced in OpenType version 1.6.
*
* @fields:
@@ -327,11 +250,11 @@
* The length of the string in bytes.
*
* stringOffset ::
- * The offset to the string in the `name' table.
+ * The offset to the string in the 'name' table.
*
* string ::
- * A pointer to the string's bytes. Note that these
- * are UTF-16BE encoded characters.
+ * A pointer to the string's bytes. Note that these are UTF-16BE
+ * encoded characters.
*/
typedef struct TT_LangTagRec_
{
@@ -362,8 +285,7 @@
* The number of names in table.
*
* storageOffset ::
- * The offset of the name table in the `name'
- * TrueType table.
+ * The offset of the name table in the 'name' TrueType table.
*
* names ::
* An array of name records.
@@ -409,16 +331,16 @@
* TT_GaspRangeRec
*
* @description:
- * A tiny structure used to model a gasp range according to the
- * TrueType specification.
+ * A tiny structure used to model a gasp range according to the TrueType
+ * specification.
*
* @fields:
* maxPPEM ::
- * The maximum ppem value to which `gaspFlag' applies.
+ * The maximum ppem value to which `gaspFlag` applies.
*
* gaspFlag ::
- * A flag describing the grid-fitting and anti-aliasing
- * modes to be used.
+ * A flag describing the grid-fitting and anti-aliasing modes to be
+ * used.
*/
typedef struct TT_GaspRangeRec_
{
@@ -438,7 +360,7 @@
* TT_GaspRec
*
* @description:
- * A structure modeling the TrueType `gasp' table used to specify
+ * A structure modeling the TrueType 'gasp' table used to specify
* grid-fitting and anti-aliasing behaviour.
*
* @fields:
@@ -479,9 +401,9 @@
* TT_SBit_MetricsRec
*
* @description:
- * A structure used to hold the big metrics of a given glyph bitmap
- * in a TrueType or OpenType font. These are usually found in the
- * `EBDT' (Microsoft) or `bloc' (Apple) table.
+ * A structure used to hold the big metrics of a given glyph bitmap in a
+ * TrueType or OpenType font. These are usually found in the 'EBDT'
+ * (Microsoft) or 'bloc' (Apple) table.
*
* @fields:
* height ::
@@ -530,9 +452,9 @@
* TT_SBit_SmallMetricsRec
*
* @description:
- * A structure used to hold the small metrics of a given glyph bitmap
- * in a TrueType or OpenType font. These are usually found in the
- * `EBDT' (Microsoft) or the `bdat' (Apple) table.
+ * A structure used to hold the small metrics of a given glyph bitmap in
+ * a TrueType or OpenType font. These are usually found in the 'EBDT'
+ * (Microsoft) or the 'bdat' (Apple) table.
*
* @fields:
* height ::
@@ -568,8 +490,8 @@
* TT_SBit_LineMetricsRec
*
* @description:
- * A structure used to describe the text line metrics of a given
- * bitmap strike, for either a horizontal or vertical layout.
+ * A structure used to describe the text line metrics of a given bitmap
+ * strike, for either a horizontal or vertical layout.
*
* @fields:
* ascender ::
@@ -582,34 +504,27 @@
* The maximum glyph width in pixels.
*
* caret_slope_enumerator ::
- * Rise of the caret slope, typically set
- * to 1 for non-italic fonts.
+ * Rise of the caret slope, typically set to 1 for non-italic fonts.
*
* caret_slope_denominator ::
- * Rise of the caret slope, typically set
- * to 0 for non-italic fonts.
+ * Rise of the caret slope, typically set to 0 for non-italic fonts.
*
* caret_offset ::
- * Offset in pixels to move the caret for
- * proper positioning.
+ * Offset in pixels to move the caret for proper positioning.
*
* min_origin_SB ::
- * Minimum of horiBearingX (resp.
- * vertBearingY).
+ * Minimum of horiBearingX (resp. vertBearingY).
* min_advance_SB ::
* Minimum of
*
- * horizontal advance -
- * ( horiBearingX + width )
+ * horizontal advance - ( horiBearingX + width )
*
* resp.
*
- * vertical advance -
- * ( vertBearingY + height )
+ * vertical advance - ( vertBearingY + height )
*
* max_before_BL ::
- * Maximum of horiBearingY (resp.
- * vertBearingY).
+ * Maximum of horiBearingY (resp. vertBearingY).
*
* min_after_BL ::
* Minimum of
@@ -621,8 +536,7 @@
* vertBearingX - width
*
* pads ::
- * Unused (to make the size of the record
- * a multiple of 32 bits.
+ * Unused (to make the size of the record a multiple of 32 bits.
*/
typedef struct TT_SBit_LineMetricsRec_
{
@@ -647,8 +561,8 @@
* TT_SBit_RangeRec
*
* @description:
- * A TrueType/OpenType subIndexTable as defined in the `EBLC'
- * (Microsoft) or `bloc' (Apple) tables.
+ * A TrueType/OpenType subIndexTable as defined in the 'EBLC' (Microsoft)
+ * or 'bloc' (Apple) tables.
*
* @fields:
* first_glyph ::
@@ -658,26 +572,25 @@
* The last glyph index in the range.
*
* index_format ::
- * The format of index table. Valid values are 1
- * to 5.
+ * The format of index table. Valid values are 1 to 5.
*
* image_format ::
- * The format of `EBDT' image data.
+ * The format of 'EBDT' image data.
*
* image_offset ::
- * The offset to image data in `EBDT'.
+ * The offset to image data in 'EBDT'.
*
* image_size ::
- * For index formats 2 and 5. This is the size in
- * bytes of each glyph bitmap.
+ * For index formats 2 and 5. This is the size in bytes of each glyph
+ * bitmap.
*
* big_metrics ::
- * For index formats 2 and 5. This is the big
- * metrics for each glyph bitmap.
+ * For index formats 2 and 5. This is the big metrics for each glyph
+ * bitmap.
*
* num_glyphs ::
- * For index formats 4 and 5. This is the number of
- * glyphs in the code array.
+ * For index formats 4 and 5. This is the number of glyphs in the code
+ * array.
*
* glyph_offsets ::
* For index formats 1 and 3.
@@ -686,8 +599,8 @@
* For index formats 4 and 5.
*
* table_offset ::
- * The offset of the index table in the `EBLC'
- * table. Only used during strike loading.
+ * The offset of the index table in the 'EBLC' table. Only used during
+ * strike loading.
*/
typedef struct TT_SBit_RangeRec_
{
@@ -716,8 +629,8 @@
* TT_SBit_StrikeRec
*
* @description:
- * A structure used describe a given bitmap strike in the `EBLC'
- * (Microsoft) or `bloc' (Apple) tables.
+ * A structure used describe a given bitmap strike in the 'EBLC'
+ * (Microsoft) or 'bloc' (Apple) tables.
*
* @fields:
* num_index_ranges ::
@@ -727,10 +640,9 @@
* An array of glyph index ranges.
*
* color_ref ::
- * Unused. `color_ref' is put in for future
- * enhancements, but these fields are already
- * in use by other platforms (e.g. Newton).
- * For details, please see
+ * Unused. `color_ref` is put in for future enhancements, but these
+ * fields are already in use by other platforms (e.g. Newton). For
+ * details, please see
*
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
*
@@ -753,12 +665,10 @@
* The number of vertical pixels per EM.
*
* bit_depth ::
- * The bit depth. Valid values are 1, 2, 4,
- * and 8.
+ * The bit depth. Valid values are 1, 2, 4, and 8.
*
* flags ::
- * Is this a vertical or horizontal strike? For
- * details, please see
+ * Is this a vertical or horizontal strike? For details, please see
*
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
*/
@@ -818,8 +728,8 @@
* TT_SBit_ScaleRec
*
* @description:
- * A structure used describe a given bitmap scaling table, as defined
- * in the `EBSC' table.
+ * A structure used describe a given bitmap scaling table, as defined in
+ * the 'EBSC' table.
*
* @fields:
* hori ::
@@ -873,8 +783,8 @@
* TT_Post_20Rec
*
* @description:
- * Postscript names sub-table, format 2.0. Stores the PS name of
- * each glyph in the font face.
+ * Postscript names sub-table, format 2.0. Stores the PS name of each
+ * glyph in the font face.
*
* @fields:
* num_glyphs ::
@@ -905,16 +815,15 @@
* TT_Post_25Rec
*
* @description:
- * Postscript names sub-table, format 2.5. Stores the PS name of
- * each glyph in the font face.
+ * Postscript names sub-table, format 2.5. Stores the PS name of each
+ * glyph in the font face.
*
* @fields:
* num_glyphs ::
* The number of glyphs in the table.
*
* offsets ::
- * An array of signed offsets in a normal Mac
- * Postscript name encoding.
+ * An array of signed offsets in a normal Mac Postscript name encoding.
*/
typedef struct TT_Post_25_
{
@@ -987,25 +896,25 @@
/*
* These types are used to support a `BDF ' table that isn't part of the
- * official TrueType specification. It is mainly used in SFNT-based
- * bitmap fonts that were generated from a set of BDF fonts.
+ * official TrueType specification. It is mainly used in SFNT-based bitmap
+ * fonts that were generated from a set of BDF fonts.
*
* The format of the table is as follows.
*
- * USHORT version `BDF ' table version number, should be 0x0001.
- * USHORT strikeCount Number of strikes (bitmap sizes) in this table.
- * ULONG stringTable Offset (from start of BDF table) to string
+ * USHORT version `BDF ' table version number, should be 0x0001. USHORT
+ * strikeCount Number of strikes (bitmap sizes) in this table. ULONG
+ * stringTable Offset (from start of BDF table) to string
* table.
*
* This is followed by an array of `strikeCount' descriptors, having the
* following format.
*
- * USHORT ppem Vertical pixels per EM for this strike.
- * USHORT numItems Number of items for this strike (properties and
+ * USHORT ppem Vertical pixels per EM for this strike. USHORT numItems
+ * Number of items for this strike (properties and
* atoms). Maximum is 255.
*
- * This array in turn is followed by `strikeCount' value sets. Each
- * `value set' is an array of `numItems' items with the following format.
+ * This array in turn is followed by `strikeCount' value sets. Each `value
+ * set' is an array of `numItems' items with the following format.
*
* ULONG item_name Offset in string table to item name.
* USHORT item_type The item type. Possible values are
@@ -1058,8 +967,8 @@
* This structure/class is defined here because it is common to the
* following formats: TTF, OpenType-TT, and OpenType-CFF.
*
- * Note, however, that the classes TT_Size and TT_GlyphSlot are not
- * shared between font drivers, and are thus defined in `ttobjs.h'.
+ * Note, however, that the classes TT_Size and TT_GlyphSlot are not shared
+ * between font drivers, and are thus defined in `ttobjs.h`.
*
*/
@@ -1070,12 +979,11 @@
* TT_Face
*
* @description:
- * A handle to a TrueType face/font object. A TT_Face encapsulates
- * the resolution and scaling independent parts of a TrueType font
- * resource.
+ * A handle to a TrueType face/font object. A TT_Face encapsulates the
+ * resolution and scaling independent parts of a TrueType font resource.
*
* @note:
- * The TT_Face structure is also used as a `parent class' for the
+ * The TT_Face structure is also used as a 'parent class' for the
* OpenType-CFF class (T2_Face).
*/
typedef struct TT_FaceRec_* TT_Face;
@@ -1109,8 +1017,7 @@
*
* @output:
* length ::
- * The length of the table in bytes. Set to 0 if not
- * needed.
+ * The length of the table in bytes. Set to 0 if not needed.
*
* @return:
* FreeType error code. 0 means success.
@@ -1141,8 +1048,7 @@
* glyph index :: The index of the glyph to access.
*
* offset ::
- * The offset of the glyph according to the
- * `locations' table.
+ * The offset of the glyph according to the 'locations' table.
*
* byte_count ::
* The size of the frame in bytes.
@@ -1152,8 +1058,8 @@
*
* @note:
* This function is normally equivalent to FT_STREAM_SEEK(offset)
- * followed by FT_FRAME_ENTER(byte_count) with the loader's stream,
- * but alternative formats (e.g. compressed ones) might use something
+ * followed by FT_FRAME_ENTER(byte_count) with the loader's stream, but
+ * alternative formats (e.g. compressed ones) might use something
* different.
*/
typedef FT_Error
@@ -1169,8 +1075,8 @@
* TT_Loader_ReadGlyphFunc
*
* @description:
- * Reads one glyph element (its header, a simple glyph, or a
- * composite) from the loader's current stream frame.
+ * Reads one glyph element (its header, a simple glyph, or a composite)
+ * from the loader's current stream frame.
*
* @input:
* loader ::
@@ -1254,111 +1160,90 @@
*
* @fields:
* root ::
- * The base FT_Face structure, managed by the
- * base layer.
+ * The base FT_Face structure, managed by the base layer.
*
* ttc_header ::
- * The TrueType collection header, used when
- * the file is a `ttc' rather than a `ttf'.
- * For ordinary font files, the field
- * `ttc_header.count' is set to 0.
+ * The TrueType collection header, used when the file is a 'ttc' rather
+ * than a 'ttf'. For ordinary font files, the field `ttc_header.count`
+ * is set to 0.
*
* format_tag ::
* The font format tag.
*
* num_tables ::
- * The number of TrueType tables in this font
- * file.
+ * The number of TrueType tables in this font file.
*
* dir_tables ::
- * The directory of TrueType tables for this
- * font file.
+ * The directory of TrueType tables for this font file.
*
* header ::
- * The font's font header (`head' table).
- * Read on font opening.
+ * The font's font header ('head' table). Read on font opening.
*
* horizontal ::
- * The font's horizontal header (`hhea'
- * table). This field also contains the
- * associated horizontal metrics table
- * (`hmtx').
+ * The font's horizontal header ('hhea' table). This field also
+ * contains the associated horizontal metrics table ('hmtx').
*
* max_profile ::
- * The font's maximum profile table. Read on
- * font opening. Note that some maximum
- * values cannot be taken directly from this
- * table. We thus define additional fields
- * below to hold the computed maxima.
+ * The font's maximum profile table. Read on font opening. Note that
+ * some maximum values cannot be taken directly from this table. We
+ * thus define additional fields below to hold the computed maxima.
*
* vertical_info ::
- * A boolean which is set when the font file
- * contains vertical metrics. If not, the
- * value of the `vertical' field is
- * undefined.
+ * A boolean which is set when the font file contains vertical metrics.
+ * If not, the value of the 'vertical' field is undefined.
*
* vertical ::
- * The font's vertical header (`vhea' table).
- * This field also contains the associated
- * vertical metrics table (`vmtx'), if found.
- * IMPORTANT: The contents of this field is
- * undefined if the `vertical_info' field is
- * unset.
+ * The font's vertical header ('vhea' table). This field also contains
+ * the associated vertical metrics table ('vmtx'), if found.
+ * IMPORTANT: The contents of this field is undefined if the
+ * `vertical_info` field is unset.
*
* num_names ::
- * The number of name records within this
- * TrueType font.
+ * The number of name records within this TrueType font.
*
* name_table ::
- * The table of name records (`name').
+ * The table of name records ('name').
*
* os2 ::
- * The font's OS/2 table (`OS/2').
+ * The font's OS/2 table ('OS/2').
*
* postscript ::
- * The font's PostScript table (`post'
- * table). The PostScript glyph names are
- * not loaded by the driver on face opening.
- * See the `ttpost' module for more details.
+ * The font's PostScript table ('post' table). The PostScript glyph
+ * names are not loaded by the driver on face opening. See the
+ * 'ttpost' module for more details.
*
* cmap_table ::
- * Address of the face's `cmap' SFNT table
- * in memory (it's an extracted frame).
+ * Address of the face's 'cmap' SFNT table in memory (it's an extracted
+ * frame).
*
* cmap_size ::
- * The size in bytes of the `cmap_table'
- * described above.
+ * The size in bytes of the `cmap_table` described above.
*
* goto_table ::
- * A function called by each TrueType table
- * loader to position a stream's cursor to
- * the start of a given table according to
- * its tag. It defaults to TT_Goto_Face but
- * can be different for strange formats (e.g.
- * Type 42).
+ * A function called by each TrueType table loader to position a
+ * stream's cursor to the start of a given table according to its tag.
+ * It defaults to TT_Goto_Face but can be different for strange formats
+ * (e.g. Type 42).
*
* access_glyph_frame ::
- * A function used to access the frame of a
- * given glyph within the face's font file.
+ * A function used to access the frame of a given glyph within the
+ * face's font file.
*
* forget_glyph_frame ::
- * A function used to forget the frame of a
- * given glyph when all data has been loaded.
+ * A function used to forget the frame of a given glyph when all data
+ * has been loaded.
*
* read_glyph_header ::
- * A function used to read a glyph header.
- * It must be called between an `access' and
- * `forget'.
+ * A function used to read a glyph header. It must be called between
+ * an 'access' and 'forget'.
*
* read_simple_glyph ::
- * A function used to read a simple glyph.
- * It must be called after the header was
- * read, and before the `forget'.
+ * A function used to read a simple glyph. It must be called after the
+ * header was read, and before the 'forget'.
*
* read_composite_glyph ::
- * A function used to read a composite glyph.
- * It must be called after the header was
- * read, and before the `forget'.
+ * A function used to read a composite glyph. It must be called after
+ * the header was read, and before the 'forget'.
*
* sfnt ::
* A pointer to the SFNT service.
@@ -1370,38 +1255,33 @@
* A pointer to the Multiple Masters service.
*
* var ::
- * A pointer to the Metrics Variations
- * service.
+ * A pointer to the Metrics Variations service.
*
* hdmx ::
- * The face's horizontal device metrics
- * (`hdmx' table). This table is optional in
- * TrueType/OpenType fonts.
+ * The face's horizontal device metrics ('hdmx' table). This table is
+ * optional in TrueType/OpenType fonts.
*
* gasp ::
- * The grid-fitting and scaling properties
- * table (`gasp'). This table is optional in
- * TrueType/OpenType fonts.
+ * The grid-fitting and scaling properties table ('gasp'). This table
+ * is optional in TrueType/OpenType fonts.
*
* pclt ::
- * The `pclt' SFNT table.
+ * The 'pclt' SFNT table.
*
* num_sbit_scales ::
* The number of sbit scales for this font.
*
* sbit_scales ::
- * Array of sbit scales embedded in this
- * font. This table is optional in a
- * TrueType/OpenType font.
+ * Array of sbit scales embedded in this font. This table is optional
+ * in a TrueType/OpenType font.
*
* postscript_names ::
- * A table used to store the Postscript names
- * of the glyphs for this font. See the
- * file `ttconfig.h' for comments on the
+ * A table used to store the Postscript names of the glyphs for this
+ * font. See the file `ttconfig.h` for comments on the
* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option.
*
* palette_data ::
- * Some fields from the `CPAL' table that are directly indexed.
+ * Some fields from the 'CPAL' table that are directly indexed.
*
* palette_index ::
* The current palette index, as set by @FT_Palette_Select.
@@ -1413,109 +1293,97 @@
* There was a call to @FT_Palette_Set_Foreground_Color.
*
* foreground_color ::
- * The current foreground color corresponding to `CPAL' color index
- * 0xFFFF. Only valid if `have_foreground_color' is set.
+ * The current foreground color corresponding to 'CPAL' color index
+ * 0xFFFF. Only valid if `have_foreground_color` is set.
*
* font_program_size ::
- * Size in bytecodes of the face's font
- * program. 0 if none defined. Ignored for
- * Type 2 fonts.
- *
- * font_program ::
- * The face's font program (bytecode stream)
- * executed at load time, also used during
- * glyph rendering. Comes from the `fpgm'
- * table. Ignored for Type 2 font fonts.
- *
- * cvt_program_size ::
- * The size in bytecodes of the face's cvt
- * program. Ignored for Type 2 fonts.
- *
- * cvt_program ::
- * The face's cvt program (bytecode stream)
- * executed each time an instance/size is
- * changed/reset. Comes from the `prep'
- * table. Ignored for Type 2 fonts.
- *
- * cvt_size ::
- * Size of the control value table (in
- * entries). Ignored for Type 2 fonts.
- *
- * cvt ::
- * The face's original control value table.
- * Coordinates are expressed in unscaled font
- * units. Comes from the `cvt ' table.
+ * Size in bytecodes of the face's font program. 0 if none defined.
* Ignored for Type 2 fonts.
*
+ * font_program ::
+ * The face's font program (bytecode stream) executed at load time,
+ * also used during glyph rendering. Comes from the 'fpgm' table.
+ * Ignored for Type 2 font fonts.
+ *
+ * cvt_program_size ::
+ * The size in bytecodes of the face's cvt program. Ignored for Type 2
+ * fonts.
+ *
+ * cvt_program ::
+ * The face's cvt program (bytecode stream) executed each time an
+ * instance/size is changed/reset. Comes from the 'prep' table.
+ * Ignored for Type 2 fonts.
+ *
+ * cvt_size ::
+ * Size of the control value table (in entries). Ignored for Type 2
+ * fonts.
+ *
+ * cvt ::
+ * The face's original control value table. Coordinates are expressed
+ * in unscaled font units (in 26.6 format). Comes from the 'cvt~'
+ * table. Ignored for Type 2 fonts.
+ *
+ * If varied by the `CVAR' table, non-integer values are possible.
+ *
* interpreter ::
- * A pointer to the TrueType bytecode
- * interpreters field is also used to hook
- * the debugger in `ttdebug'.
+ * A pointer to the TrueType bytecode interpreters field is also used
+ * to hook the debugger in 'ttdebug'.
*
* extra ::
* Reserved for third-party font drivers.
*
* postscript_name ::
- * The PS name of the font. Used by the
- * postscript name service.
+ * The PS name of the font. Used by the postscript name service.
*
* glyf_len ::
- * The length of the `glyf' table. Needed
- * for malformed `loca' tables.
+ * The length of the 'glyf' table. Needed for malformed 'loca' tables.
*
* glyf_offset ::
- * The file offset of the `glyf' table.
+ * The file offset of the 'glyf' table.
*
* is_cff2 ::
* Set if the font format is CFF2.
*
* doblend ::
- * A boolean which is set if the font should
- * be blended (this is for GX var).
+ * A boolean which is set if the font should be blended (this is for GX
+ * var).
*
* blend ::
- * Contains the data needed to control GX
- * variation tables (rather like Multiple
- * Master data).
+ * Contains the data needed to control GX variation tables (rather like
+ * Multiple Master data).
*
* variation_support ::
- * Flags that indicate which OpenType
- * functionality related to font variation
- * support is present, valid, and usable.
- * For example, TT_FACE_FLAG_VAR_FVAR is only
- * set if we have at least one design axis.
+ * Flags that indicate which OpenType functionality related to font
+ * variation support is present, valid, and usable. For example,
+ * TT_FACE_FLAG_VAR_FVAR is only set if we have at least one design
+ * axis.
*
* var_postscript_prefix ::
- * The PostScript name prefix needed for
- * constructing a variation font instance's
- * PS name .
+ * The PostScript name prefix needed for constructing a variation font
+ * instance's PS name .
*
* var_postscript_prefix_len ::
- * The length of the `var_postscript_prefix'
- * string.
+ * The length of the `var_postscript_prefix` string.
*
* horz_metrics_size ::
- * The size of the `hmtx' table.
+ * The size of the 'hmtx' table.
*
* vert_metrics_size ::
- * The size of the `vmtx' table.
+ * The size of the 'vmtx' table.
*
* num_locations ::
- * The number of glyph locations in this
- * TrueType file. This should be
- * identical to the number of glyphs.
- * Ignored for Type 2 fonts.
+ * The number of glyph locations in this TrueType file. This should be
+ * identical to the number of glyphs. Ignored for Type 2 fonts.
*
* glyph_locations ::
- * An array of longs. These are offsets to
- * glyph data within the `glyf' table.
- * Ignored for Type 2 font faces.
+ * An array of longs. These are offsets to glyph data within the
+ * 'glyf' table. Ignored for Type 2 font faces.
*
* hdmx_table ::
- * A pointer to the `hdmx' table.
+ * A pointer to the 'hdmx' table.
*
* hdmx_table_size ::
- * The size of the `hdmx' table.
+ * The size of the 'hdmx' table.
*
* hdmx_record_count ::
* The number of hdmx records.
@@ -1524,79 +1392,70 @@
* The size of a single hdmx record.
*
* hdmx_record_sizes ::
- * An array holding the ppem sizes available
- * in the `hdmx' table.
+ * An array holding the ppem sizes available in the 'hdmx' table.
*
* sbit_table ::
- * A pointer to the font's embedded bitmap
- * location table.
+ * A pointer to the font's embedded bitmap location table.
*
* sbit_table_size ::
- * The size of `sbit_table'.
+ * The size of `sbit_table`.
*
* sbit_table_type ::
* The sbit table type (CBLC, sbix, etc.).
*
* sbit_num_strikes ::
- * The number of sbit strikes exposed by
- * FreeType's API, omitting invalid strikes.
+ * The number of sbit strikes exposed by FreeType's API, omitting
+ * invalid strikes.
*
* sbit_strike_map ::
- * A mapping between the strike indices
- * exposed by the API and the indices used in
- * the font's sbit table.
+ * A mapping between the strike indices exposed by the API and the
+ * indices used in the font's sbit table.
*
* cpal ::
- * A pointer to data related to the `CPAL' table. NULL if the table
+ * A pointer to data related to the 'CPAL' table. `NULL` if the table
* is not available.
*
* colr ::
- * A pointer to data related to the `COLR' table. NULL if the table
+ * A pointer to data related to the 'COLR' table. `NULL` if the table
* is not available.
*
* kern_table ::
- * A pointer to the `kern' table.
+ * A pointer to the 'kern' table.
*
* kern_table_size ::
- * The size of the `kern' table.
+ * The size of the 'kern' table.
*
* num_kern_tables ::
- * The number of supported kern subtables
- * (up to 32; FreeType recognizes only
- * horizontal ones with format 0).
+ * The number of supported kern subtables (up to 32; FreeType
+ * recognizes only horizontal ones with format 0).
*
* kern_avail_bits ::
- * The availability status of kern subtables;
- * if bit n is set, table n is available.
+ * The availability status of kern subtables; if bit n is set, table n
+ * is available.
*
* kern_order_bits ::
- * The sortedness status of kern subtables;
- * if bit n is set, table n is sorted.
+ * The sortedness status of kern subtables; if bit n is set, table n is
+ * sorted.
*
* bdf ::
- * Data related to an SFNT font's `bdf'
- * table; see `tttypes.h'.
+ * Data related to an SFNT font's 'bdf' table; see `tttypes.h`.
*
* horz_metrics_offset ::
- * The file offset of the `hmtx' table.
+ * The file offset of the 'hmtx' table.
*
* vert_metrics_offset ::
- * The file offset of the `vmtx' table.
+ * The file offset of the 'vmtx' table.
*
* sph_found_func_flags ::
- * Flags identifying special bytecode
- * functions (used by the v38 implementation
- * of the bytecode interpreter).
+ * Flags identifying special bytecode functions (used by the v38
+ * implementation of the bytecode interpreter).
*
* sph_compatibility_mode ::
- * This flag is set if we are in ClearType
- * backward compatibility mode (used by the
- * v38 implementation of the bytecode
- * interpreter).
+ * This flag is set if we are in ClearType backward compatibility mode
+ * (used by the v38 implementation of the bytecode interpreter).
*
* ebdt_start ::
- * The file offset of the sbit data table
- * (CBDT, bdat, etc.).
+ * The file offset of the sbit data table (CBDT, bdat, etc.).
*
* ebdt_size ::
* The size of the sbit data table.
@@ -1701,7 +1560,7 @@
/* the original, unscaled, control value table */
FT_ULong cvt_size;
- FT_Short* cvt;
+ FT_Int32* cvt;
/* A pointer to the bytecode interpreter to use. This is also */
/* used to hook the debugger for the `ttdebug' utility. */
@@ -1815,8 +1674,7 @@
* The current number of contours in the zone.
*
* org ::
- * The original glyph coordinates (font
- * units/scaled).
+ * The original glyph coordinates (font units/scaled).
*
* cur ::
* The current glyph coordinates (scaled/hinted).
diff --git a/include/freetype/internal/wofftypes.h b/include/freetype/internal/wofftypes.h
new file mode 100644
index 0000000..ba55bf8
--- /dev/null
+++ b/include/freetype/internal/wofftypes.h
@@ -0,0 +1,112 @@
+/****************************************************************************
+ *
+ * wofftypes.h
+ *
+ * Basic WOFF/WOFF2 type definitions and interface (specification
+ * only).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
+
+
+#ifndef WOFFTYPES_H_
+#define WOFFTYPES_H_
+
+
+#include <ft2build.h>
+#include FT_TRUETYPE_TABLES_H
+#include FT_INTERNAL_OBJECTS_H
+
+
+FT_BEGIN_HEADER
+
+
+ /**************************************************************************
+ *
+ * @struct:
+ * WOFF_HeaderRec
+ *
+ * @description:
+ * WOFF file format header.
+ *
+ * @fields:
+ * See
+ *
+ * https://www.w3.org/TR/WOFF/#WOFFHeader
+ */
+ typedef struct WOFF_HeaderRec_
+ {
+ FT_ULong signature;
+ FT_ULong flavor;
+ FT_ULong length;
+ FT_UShort num_tables;
+ FT_UShort reserved;
+ FT_ULong totalSfntSize;
+ FT_UShort majorVersion;
+ FT_UShort minorVersion;
+ FT_ULong metaOffset;
+ FT_ULong metaLength;
+ FT_ULong metaOrigLength;
+ FT_ULong privOffset;
+ FT_ULong privLength;
+
+ } WOFF_HeaderRec, *WOFF_Header;
+
+
+ /**************************************************************************
+ *
+ * @struct:
+ * WOFF_TableRec
+ *
+ * @description:
+ * This structure describes a given table of a WOFF font.
+ *
+ * @fields:
+ * Tag ::
+ * A four-bytes tag describing the table.
+ *
+ * Offset ::
+ * The offset of the table from the start of the WOFF font in its
+ * resource.
+ *
+ * CompLength ::
+ * Compressed table length (in bytes).
+ *
+ * OrigLength ::
+ * Uncompressed table length (in bytes).
+ *
+ * CheckSum ::
+ * The table checksum. This value can be ignored.
+ *
+ * OrigOffset ::
+ * The uncompressed table file offset. This value gets computed while
+ * constructing the (uncompressed) SFNT header. It is not contained in
+ * the WOFF file.
+ */
+ typedef struct WOFF_TableRec_
+ {
+ FT_ULong Tag; /* table ID */
+ FT_ULong Offset; /* table file offset */
+ FT_ULong CompLength; /* compressed table length */
+ FT_ULong OrigLength; /* uncompressed table length */
+ FT_ULong CheckSum; /* uncompressed checksum */
+
+ FT_ULong OrigOffset; /* uncompressed table file offset */
+ /* (not in the WOFF file) */
+ } WOFF_TableRec, *WOFF_Table;
+
+
+FT_END_HEADER
+
+#endif /* WOFFTYPES_H_ */
+
+
+/* END */
diff --git a/include/freetype/t1tables.h b/include/freetype/t1tables.h
index 784f1b9..645e645 100644
--- a/include/freetype/t1tables.h
+++ b/include/freetype/t1tables.h
@@ -5,7 +5,7 @@
* Basic Type 1/Type 2 tables definitions and interface (specification
* only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -118,9 +118,8 @@
* T1_FontInfo
*
* @description:
- * This type is equivalent to @PS_FontInfoRec. It is deprecated but
- * kept to maintain source compatibility between various versions of
- * FreeType.
+ * This type is equivalent to @PS_FontInfoRec. It is deprecated but kept
+ * to maintain source compatibility between various versions of FreeType.
*/
typedef PS_FontInfoRec T1_FontInfo;
@@ -131,9 +130,9 @@
* PS_PrivateRec
*
* @description:
- * A structure used to model a Type~1 or Type~2 private dictionary.
- * Note that for Multiple Master fonts, each instance has its own
- * Private dictionary.
+ * A structure used to model a Type~1 or Type~2 private dictionary. Note
+ * that for Multiple Master fonts, each instance has its own Private
+ * dictionary.
*/
typedef struct PS_PrivateRec_
{
@@ -193,9 +192,8 @@
* T1_Private
*
* @description:
- * This type is equivalent to @PS_PrivateRec. It is deprecated but
- * kept to maintain source compatibility between various versions of
- * FreeType.
+ * This type is equivalent to @PS_PrivateRec. It is deprecated but kept
+ * to maintain source compatibility between various versions of FreeType.
*/
typedef PS_PrivateRec T1_Private;
@@ -206,9 +204,9 @@
* T1_Blend_Flags
*
* @description:
- * A set of flags used to indicate which fields are present in a
- * given blend dictionary (font info or private). Used to support
- * Multiple Masters fonts.
+ * A set of flags used to indicate which fields are present in a given
+ * blend dictionary (font info or private). Used to support Multiple
+ * Masters fonts.
*
* @values:
* T1_BLEND_UNDERLINE_POSITION ::
@@ -252,7 +250,7 @@
/* these constants are deprecated; use the corresponding */
- /* `T1_Blend_Flags' values instead */
+ /* `T1_Blend_Flags` values instead */
#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION
#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS
#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE
@@ -337,14 +335,14 @@
*
* @description:
* A structure used to represent data in a CID top-level dictionary. In
- * most cases, they are part of the font's `/FDArray' array. Within a
+ * most cases, they are part of the font's '/FDArray' array. Within a
* CID font file, such (internal) subfont dictionaries are enclosed by
- * `%ADOBeginFontDict' and `%ADOEndFontDict' comments.
+ * '%ADOBeginFontDict' and '%ADOEndFontDict' comments.
*
- * Note that `CID_FaceDictRec' misses a field for the `/FontName'
+ * Note that `CID_FaceDictRec` misses a field for the '/FontName'
* keyword, specifying the subfont's name (the top-level font name is
- * given by the `/CIDFontName' keyword). This is an oversight, but it
- * doesn't limit the `cid' font module's functionality because FreeType
+ * given by the '/CIDFontName' keyword). This is an oversight, but it
+ * doesn't limit the 'cid' font module's functionality because FreeType
* neither needs this entry nor gives access to CID subfonts.
*/
typedef struct CID_FaceDictRec_
@@ -447,23 +445,21 @@
* CID_Info
*
* @description:
- * This type is equivalent to @CID_FaceInfoRec. It is deprecated but
- * kept to maintain source compatibility between various versions of
- * FreeType.
+ * This type is equivalent to @CID_FaceInfoRec. It is deprecated but kept
+ * to maintain source compatibility between various versions of FreeType.
*/
typedef CID_FaceInfoRec CID_Info;
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Has_PS_Glyph_Names
*
* @description:
- * Return true if a given face provides reliable PostScript glyph
- * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro,
- * except that certain fonts (mostly TrueType) contain incorrect
- * glyph name tables.
+ * Return true if a given face provides reliable PostScript glyph names.
+ * This is similar to using the @FT_HAS_GLYPH_NAMES macro, except that
+ * certain fonts (mostly TrueType) contain incorrect glyph name tables.
*
* When this function returns true, the caller is sure that the glyph
* names returned by @FT_Get_Glyph_Name are reliable.
@@ -480,7 +476,7 @@
FT_Has_PS_Glyph_Names( FT_Face face );
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PS_Font_Info
@@ -501,12 +497,12 @@
* FreeType error code. 0~means success.
*
* @note:
- * String pointers within the @PS_FontInfoRec structure are owned by
- * the face and don't need to be freed by the caller. Missing entries
- * in the font's FontInfo dictionary are represented by NULL pointers.
+ * String pointers within the @PS_FontInfoRec structure are owned by the
+ * face and don't need to be freed by the caller. Missing entries in
+ * the font's FontInfo dictionary are represented by `NULL` pointers.
*
* If the font's format is not PostScript-based, this function will
- * return the `FT_Err_Invalid_Argument' error code.
+ * return the `FT_Err_Invalid_Argument` error code.
*
*/
FT_EXPORT( FT_Error )
@@ -514,7 +510,7 @@
PS_FontInfo afont_info );
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PS_Font_Private
@@ -539,7 +535,7 @@
* the face and don't need to be freed by the caller.
*
* If the font's format is not PostScript-based, this function returns
- * the `FT_Err_Invalid_Argument' error code.
+ * the `FT_Err_Invalid_Argument` error code.
*
*/
FT_EXPORT( FT_Error )
@@ -553,8 +549,7 @@
* T1_EncodingType
*
* @description:
- * An enumeration describing the `Encoding' entry in a Type 1
- * dictionary.
+ * An enumeration describing the 'Encoding' entry in a Type 1 dictionary.
*
* @values:
* T1_ENCODING_TYPE_NONE ::
@@ -583,8 +578,8 @@
* PS_Dict_Keys
*
* @description:
- * An enumeration used in calls to @FT_Get_PS_Font_Value to identify
- * the Type~1 dictionary entry to retrieve.
+ * An enumeration used in calls to @FT_Get_PS_Font_Value to identify the
+ * Type~1 dictionary entry to retrieve.
*
* @values:
* PS_DICT_FONT_TYPE ::
@@ -696,7 +691,7 @@
} PS_Dict_Keys;
- /************************************************************************
+ /**************************************************************************
*
* @function:
* FT_Get_PS_Font_Value
@@ -725,38 +720,38 @@
* The value matching the above key, if it exists.
*
* @return:
- * The amount of memory (in bytes) required to hold the requested
- * value (if it exists, -1 otherwise).
+ * The amount of memory (in bytes) required to hold the requested value
+ * (if it exists, -1 otherwise).
*
* @note:
* The values returned are not pointers into the internal structures of
- * the face, but are `fresh' copies, so that the memory containing them
+ * the face, but are 'fresh' copies, so that the memory containing them
* belongs to the calling application. This also enforces the
- * `read-only' nature of these values, i.e., this function cannot be
+ * 'read-only' nature of these values, i.e., this function cannot be
* used to manipulate the face.
*
- * `value' is a void pointer because the values returned can be of
+ * `value` is a void pointer because the values returned can be of
* various types.
*
- * If either `value' is NULL or `value_len' is too small, just the
+ * If either `value` is `NULL` or `value_len` is too small, just the
* required memory size for the requested entry is returned.
*
- * The `idx' parameter is used, not only to retrieve elements of, for
+ * The `idx` parameter is used, not only to retrieve elements of, for
* example, the FontMatrix or FontBBox, but also to retrieve name keys
* from the CharStrings dictionary, and the charstrings themselves. It
* is ignored for atomic values.
*
- * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To
- * get the value as in the font stream, you need to divide by
- * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale).
+ * `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000. To
+ * get the value as in the font stream, you need to divide by 65536000.0
+ * (to remove the FT_Fixed scale, and the x1000 scale).
*
* IMPORTANT: Only key/value pairs read by the FreeType interpreter can
- * be retrieved. So, for example, PostScript procedures such as NP,
- * ND, and RD are not available. Arbitrary keys are, obviously, not be
+ * be retrieved. So, for example, PostScript procedures such as NP, ND,
+ * and RD are not available. Arbitrary keys are, obviously, not be
* available either.
*
* If the font's format is not PostScript-based, this function returns
- * the `FT_Err_Invalid_Argument' error code.
+ * the `FT_Err_Invalid_Argument` error code.
*
* @since:
* 2.4.8
diff --git a/include/freetype/ttnameid.h b/include/freetype/ttnameid.h
index f71516c..cc677de 100644
--- a/include/freetype/ttnameid.h
+++ b/include/freetype/ttnameid.h
@@ -4,7 +4,7 @@
*
* TrueType name ID definitions (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,44 +35,45 @@
/**************************************************************************
*
- * Possible values for the `platform' identifier code in the name
- * records of an SFNT `name' table.
+ * Possible values for the 'platform' identifier code in the name records
+ * of an SFNT 'name' table.
*
*/
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_PLATFORM_XXX
*
* @description:
- * A list of valid values for the `platform_id' identifier code in
+ * A list of valid values for the `platform_id` identifier code in
* @FT_CharMapRec and @FT_SfntName structures.
*
* @values:
* TT_PLATFORM_APPLE_UNICODE ::
* Used by Apple to indicate a Unicode character map and/or name entry.
- * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note
+ * See @TT_APPLE_ID_XXX for corresponding `encoding_id` values. Note
* that name entries in this format are coded as big-endian UCS-2
* character codes _only_.
*
* TT_PLATFORM_MACINTOSH ::
- * Used by Apple to indicate a MacOS-specific charmap and/or name entry.
- * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that
- * most TrueType fonts contain an Apple roman charmap to be usable on
- * MacOS systems (even if they contain a Microsoft charmap as well).
+ * Used by Apple to indicate a MacOS-specific charmap and/or name
+ * entry. See @TT_MAC_ID_XXX for corresponding `encoding_id` values.
+ * Note that most TrueType fonts contain an Apple roman charmap to be
+ * usable on MacOS systems (even if they contain a Microsoft charmap as
+ * well).
*
* TT_PLATFORM_ISO ::
- * This value was used to specify ISO/IEC 10646 charmaps. It is however
- * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding
- * `encoding_id' values.
+ * This value was used to specify ISO/IEC 10646 charmaps. It is
+ * however now deprecated. See @TT_ISO_ID_XXX for a list of
+ * corresponding `encoding_id` values.
*
* TT_PLATFORM_MICROSOFT ::
* Used by Microsoft to indicate Windows-specific charmaps. See
- * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values.
+ * @TT_MS_ID_XXX for a list of corresponding `encoding_id` values.
* Note that most fonts contain a Unicode charmap using
- * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS).
+ * (`TT_PLATFORM_MICROSOFT`, @TT_MS_ID_UNICODE_CS).
*
* TT_PLATFORM_CUSTOM ::
* Used to indicate application-specific charmaps.
@@ -91,13 +92,13 @@
#define TT_PLATFORM_ADOBE 7 /* artificial */
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_APPLE_ID_XXX
*
* @description:
- * A list of valid values for the `encoding_id' for
+ * A list of valid values for the `encoding_id` for
* @TT_PLATFORM_APPLE_UNICODE charmaps and name entries.
*
* @values:
@@ -117,8 +118,8 @@
* Unicode 3.1 and beyond, using UTF-32.
*
* TT_APPLE_ID_VARIANT_SELECTOR ::
- * From Adobe, not Apple. Not a normal cmap. Specifies variations
- * on a real cmap.
+ * From Adobe, not Apple. Not a normal cmap. Specifies variations on
+ * a real cmap.
*
* TT_APPLE_ID_FULL_UNICODE ::
* Used for fallback fonts that provide complete Unicode coverage with
@@ -134,13 +135,13 @@
#define TT_APPLE_ID_FULL_UNICODE 6 /* used with type 13 cmaps */
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_MAC_ID_XXX
*
* @description:
- * A list of valid values for the `encoding_id' for
+ * A list of valid values for the `encoding_id` for
* @TT_PLATFORM_MACINTOSH charmaps and name entries.
*/
@@ -180,14 +181,14 @@
#define TT_MAC_ID_UNINTERP 32
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_ISO_ID_XXX
*
* @description:
- * A list of valid values for the `encoding_id' for
- * @TT_PLATFORM_ISO charmaps and name entries.
+ * A list of valid values for the `encoding_id` for @TT_PLATFORM_ISO
+ * charmaps and name entries.
*
* Their use is now deprecated.
*
@@ -205,13 +206,13 @@
#define TT_ISO_ID_8859_1 2
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_MS_ID_XXX
*
* @description:
- * A list of valid values for the `encoding_id' for
+ * A list of valid values for the `encoding_id` for
* @TT_PLATFORM_MICROSOFT charmaps and name entries.
*
* @values:
@@ -219,16 +220,15 @@
* Microsoft symbol encoding. See @FT_ENCODING_MS_SYMBOL.
*
* TT_MS_ID_UNICODE_CS ::
- * Microsoft WGL4 charmap, matching Unicode. See
- * @FT_ENCODING_UNICODE.
+ * Microsoft WGL4 charmap, matching Unicode. See @FT_ENCODING_UNICODE.
*
* TT_MS_ID_SJIS ::
* Shift JIS Japanese encoding. See @FT_ENCODING_SJIS.
*
* TT_MS_ID_PRC ::
* Chinese encodings as used in the People's Republic of China (PRC).
- * This means the encodings GB~2312 and its supersets GBK and
- * GB~18030. See @FT_ENCODING_PRC.
+ * This means the encodings GB~2312 and its supersets GBK and GB~18030.
+ * See @FT_ENCODING_PRC.
*
* TT_MS_ID_BIG_5 ::
* Traditional Chinese as used in Taiwan and Hong Kong. See
@@ -258,14 +258,14 @@
#define TT_MS_ID_GB2312 TT_MS_ID_PRC
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_ADOBE_ID_XXX
*
* @description:
- * A list of valid values for the `encoding_id' for
- * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension!
+ * A list of valid values for the `encoding_id` for @TT_PLATFORM_ADOBE
+ * charmaps. This is a FreeType-specific extension!
*
* @values:
* TT_ADOBE_ID_STANDARD ::
@@ -284,14 +284,14 @@
#define TT_ADOBE_ID_LATIN_1 3
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_MAC_LANGID_XXX
*
* @description:
* Possible values of the language identifier field in the name records
- * of the SFNT `name' table if the `platform' identifier code is
+ * of the SFNT 'name' table if the 'platform' identifier code is
* @TT_PLATFORM_MACINTOSH. These values are also used as return values
* for function @FT_Get_CMap_Language_ID.
*
@@ -424,14 +424,14 @@
#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_MS_LANGID_XXX
*
* @description:
* Possible values of the language identifier field in the name records
- * of the SFNT `name' table if the `platform' identifier code is
+ * of the SFNT 'name' table if the 'platform' identifier code is
* @TT_PLATFORM_MICROSOFT. These values are also used as return values
* for function @FT_Get_CMap_Language_ID.
*
@@ -441,7 +441,7 @@
*
* however, we only provide macros for language identifiers present in
* the OpenType specification: Microsoft has abandoned the concept of
- * LCIDs (language code identifiers), and format~1 of the `name' table
+ * LCIDs (language code identifiers), and format~1 of the 'name' table
* provides a better mechanism for languages not covered here.
*
* More legacy values not listed in the reference can be found in the
@@ -780,14 +780,14 @@
TT_MS_LANGID_UIGHUR_PRC
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_NAME_ID_XXX
*
* @description:
- * Possible values of the `name' identifier field in the name records of
- * an SFNT `name' table. These values are platform independent.
+ * Possible values of the 'name' identifier field in the name records of
+ * an SFNT 'name' table. These values are platform independent.
*/
#define TT_NAME_ID_COPYRIGHT 0
@@ -834,14 +834,14 @@
#define TT_NAME_ID_PREFERRED_SUBFAMILY TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
- /***********************************************************************
+ /**************************************************************************
*
* @enum:
* TT_UCR_XXX
*
* @description:
- * Possible bit mask values for the `ulUnicodeRangeX' fields in an SFNT
- * `OS/2' table.
+ * Possible bit mask values for the `ulUnicodeRangeX` fields in an SFNT
+ * 'OS/2' table.
*/
/* ulUnicodeRange1 */
diff --git a/include/freetype/tttables.h b/include/freetype/tttables.h
index 8ecc8e2..d04f810 100644
--- a/include/freetype/tttables.h
+++ b/include/freetype/tttables.h
@@ -5,7 +5,7 @@
* Basic SFNT/TrueType tables definitions and interface
* (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -77,8 +77,10 @@
* TT_Header
*
* @description:
- * A structure to model a TrueType font header table. All fields
- * follow the OpenType specification.
+ * A structure to model a TrueType font header table. All fields follow
+ * the OpenType specification. The 64-bit timestamps are stored in
+ * two-element arrays `Created` and `Modified`, first the upper then
+ * the lower 32~bits.
*/
typedef struct TT_Header_
{
@@ -91,8 +93,8 @@
FT_UShort Flags;
FT_UShort Units_Per_EM;
- FT_Long Created [2];
- FT_Long Modified[2];
+ FT_ULong Created [2];
+ FT_ULong Modified[2];
FT_Short xMin;
FT_Short yMin;
@@ -115,76 +117,61 @@
* TT_HoriHeader
*
* @description:
- * A structure to model a TrueType horizontal header, the `hhea'
- * table, as well as the corresponding horizontal metrics table,
- * `hmtx'.
+ * A structure to model a TrueType horizontal header, the 'hhea' table,
+ * as well as the corresponding horizontal metrics table, 'hmtx'.
*
* @fields:
* Version ::
* The table version.
*
* Ascender ::
- * The font's ascender, i.e., the distance
- * from the baseline to the top-most of all
- * glyph points found in the font.
+ * The font's ascender, i.e., the distance from the baseline to the
+ * top-most of all glyph points found in the font.
*
- * This value is invalid in many fonts, as
- * it is usually set by the font designer,
- * and often reflects only a portion of the
- * glyphs found in the font (maybe ASCII).
+ * This value is invalid in many fonts, as it is usually set by the
+ * font designer, and often reflects only a portion of the glyphs found
+ * in the font (maybe ASCII).
*
- * You should use the `sTypoAscender' field
- * of the `OS/2' table instead if you want
- * the correct one.
+ * You should use the `sTypoAscender` field of the 'OS/2' table instead
+ * if you want the correct one.
*
* Descender ::
- * The font's descender, i.e., the distance
- * from the baseline to the bottom-most of
- * all glyph points found in the font. It
- * is negative.
+ * The font's descender, i.e., the distance from the baseline to the
+ * bottom-most of all glyph points found in the font. It is negative.
*
- * This value is invalid in many fonts, as
- * it is usually set by the font designer,
- * and often reflects only a portion of the
- * glyphs found in the font (maybe ASCII).
+ * This value is invalid in many fonts, as it is usually set by the
+ * font designer, and often reflects only a portion of the glyphs found
+ * in the font (maybe ASCII).
*
- * You should use the `sTypoDescender'
- * field of the `OS/2' table instead if you
- * want the correct one.
+ * You should use the `sTypoDescender` field of the 'OS/2' table
+ * instead if you want the correct one.
*
* Line_Gap ::
- * The font's line gap, i.e., the distance
- * to add to the ascender and descender to
- * get the BTB, i.e., the
- * baseline-to-baseline distance for the
- * font.
+ * The font's line gap, i.e., the distance to add to the ascender and
+ * descender to get the BTB, i.e., the baseline-to-baseline distance
+ * for the font.
*
* advance_Width_Max ::
- * This field is the maximum of all advance
- * widths found in the font. It can be
- * used to compute the maximum width of an
- * arbitrary string of text.
+ * This field is the maximum of all advance widths found in the font.
+ * It can be used to compute the maximum width of an arbitrary string
+ * of text.
*
* min_Left_Side_Bearing ::
- * The minimum left side bearing of all
- * glyphs within the font.
+ * The minimum left side bearing of all glyphs within the font.
*
* min_Right_Side_Bearing ::
- * The minimum right side bearing of all
- * glyphs within the font.
+ * The minimum right side bearing of all glyphs within the font.
*
* xMax_Extent ::
- * The maximum horizontal extent (i.e., the
- * `width' of a glyph's bounding box) for
- * all glyphs in the font.
+ * The maximum horizontal extent (i.e., the 'width' of a glyph's
+ * bounding box) for all glyphs in the font.
*
* caret_Slope_Rise ::
- * The rise coefficient of the cursor's
- * slope of the cursor (slope=rise/run).
+ * The rise coefficient of the cursor's slope of the cursor
+ * (slope=rise/run).
*
* caret_Slope_Run ::
- * The run coefficient of the cursor's
- * slope.
+ * The run coefficient of the cursor's slope.
*
* caret_Offset ::
* The cursor's offset for slanted fonts.
@@ -196,21 +183,20 @@
* Always~0.
*
* number_Of_HMetrics ::
- * Number of HMetrics entries in the `hmtx'
- * table -- this value can be smaller than
- * the total number of glyphs in the font.
+ * Number of HMetrics entries in the 'hmtx' table -- this value can be
+ * smaller than the total number of glyphs in the font.
*
* long_metrics ::
- * A pointer into the `hmtx' table.
+ * A pointer into the 'hmtx' table.
*
* short_metrics ::
- * A pointer into the `hmtx' table.
+ * A pointer into the 'hmtx' table.
*
* @note:
- * For an OpenType variation font, the values of the following fields
- * can change after a call to @FT_Set_Var_Design_Coordinates (and
- * friends) if the font contains an `MVAR' table: `caret_Slope_Rise',
- * `caret_Slope_Run', and `caret_Offset'.
+ * For an OpenType variation font, the values of the following fields can
+ * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+ * the font contains an 'MVAR' table: `caret_Slope_Rise`,
+ * `caret_Slope_Run`, and `caret_Offset`.
*/
typedef struct TT_HoriHeader_
{
@@ -235,7 +221,7 @@
/* The following fields are not defined by the OpenType specification */
/* but they are used to connect the metrics header to the relevant */
- /* `hmtx' table. */
+ /* 'hmtx' table. */
void* long_metrics;
void* short_metrics;
@@ -249,78 +235,61 @@
* TT_VertHeader
*
* @description:
- * A structure used to model a TrueType vertical header, the `vhea'
- * table, as well as the corresponding vertical metrics table,
- * `vmtx'.
+ * A structure used to model a TrueType vertical header, the 'vhea'
+ * table, as well as the corresponding vertical metrics table, 'vmtx'.
*
* @fields:
* Version ::
* The table version.
*
* Ascender ::
- * The font's ascender, i.e., the distance
- * from the baseline to the top-most of
- * all glyph points found in the font.
+ * The font's ascender, i.e., the distance from the baseline to the
+ * top-most of all glyph points found in the font.
*
- * This value is invalid in many fonts, as
- * it is usually set by the font designer,
- * and often reflects only a portion of
- * the glyphs found in the font (maybe
- * ASCII).
+ * This value is invalid in many fonts, as it is usually set by the
+ * font designer, and often reflects only a portion of the glyphs found
+ * in the font (maybe ASCII).
*
- * You should use the `sTypoAscender'
- * field of the `OS/2' table instead if
- * you want the correct one.
+ * You should use the `sTypoAscender` field of the 'OS/2' table instead
+ * if you want the correct one.
*
* Descender ::
- * The font's descender, i.e., the
- * distance from the baseline to the
- * bottom-most of all glyph points found
- * in the font. It is negative.
+ * The font's descender, i.e., the distance from the baseline to the
+ * bottom-most of all glyph points found in the font. It is negative.
*
- * This value is invalid in many fonts, as
- * it is usually set by the font designer,
- * and often reflects only a portion of
- * the glyphs found in the font (maybe
- * ASCII).
+ * This value is invalid in many fonts, as it is usually set by the
+ * font designer, and often reflects only a portion of the glyphs found
+ * in the font (maybe ASCII).
*
- * You should use the `sTypoDescender'
- * field of the `OS/2' table instead if
- * you want the correct one.
+ * You should use the `sTypoDescender` field of the 'OS/2' table
+ * instead if you want the correct one.
*
* Line_Gap ::
- * The font's line gap, i.e., the distance
- * to add to the ascender and descender to
- * get the BTB, i.e., the
- * baseline-to-baseline distance for the
- * font.
+ * The font's line gap, i.e., the distance to add to the ascender and
+ * descender to get the BTB, i.e., the baseline-to-baseline distance
+ * for the font.
*
* advance_Height_Max ::
- * This field is the maximum of all
- * advance heights found in the font. It
- * can be used to compute the maximum
- * height of an arbitrary string of text.
+ * This field is the maximum of all advance heights found in the font.
+ * It can be used to compute the maximum height of an arbitrary string
+ * of text.
*
* min_Top_Side_Bearing ::
- * The minimum top side bearing of all
- * glyphs within the font.
+ * The minimum top side bearing of all glyphs within the font.
*
* min_Bottom_Side_Bearing ::
- * The minimum bottom side bearing of all
- * glyphs within the font.
+ * The minimum bottom side bearing of all glyphs within the font.
*
* yMax_Extent ::
- * The maximum vertical extent (i.e., the
- * `height' of a glyph's bounding box) for
- * all glyphs in the font.
+ * The maximum vertical extent (i.e., the 'height' of a glyph's
+ * bounding box) for all glyphs in the font.
*
* caret_Slope_Rise ::
- * The rise coefficient of the cursor's
- * slope of the cursor (slope=rise/run).
+ * The rise coefficient of the cursor's slope of the cursor
+ * (slope=rise/run).
*
* caret_Slope_Run ::
- * The run coefficient of the cursor's
- * slope.
+ * The run coefficient of the cursor's slope.
*
* caret_Offset ::
* The cursor's offset for slanted fonts.
@@ -332,23 +301,20 @@
* Always~0.
*
* number_Of_VMetrics ::
- * Number of VMetrics entries in the
- * `vmtx' table -- this value can be
- * smaller than the total number of glyphs
- * in the font.
+ * Number of VMetrics entries in the 'vmtx' table -- this value can be
+ * smaller than the total number of glyphs in the font.
*
* long_metrics ::
- * A pointer into the `vmtx' table.
+ * A pointer into the 'vmtx' table.
*
* short_metrics ::
- * A pointer into the `vmtx' table.
+ * A pointer into the 'vmtx' table.
*
* @note:
- * For an OpenType variation font, the values of the following fields
- * can change after a call to @FT_Set_Var_Design_Coordinates (and
- * friends) if the font contains an `MVAR' table: `Ascender',
- * `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',
- * and `caret_Offset'.
+ * For an OpenType variation font, the values of the following fields can
+ * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+ * the font contains an 'MVAR' table: `Ascender`, `Descender`,
+ * `Line_Gap`, `caret_Slope_Rise`, `caret_Slope_Run`, and `caret_Offset`.
*/
typedef struct TT_VertHeader_
{
@@ -373,7 +339,7 @@
/* The following fields are not defined by the OpenType specification */
/* but they are used to connect the metrics header to the relevant */
- /* `vmtx' table. */
+ /* 'vmtx' table. */
void* long_metrics;
void* short_metrics;
@@ -387,26 +353,24 @@
* TT_OS2
*
* @description:
- * A structure to model a TrueType `OS/2' table. All fields comply
- * to the OpenType specification.
+ * A structure to model a TrueType 'OS/2' table. All fields comply to
+ * the OpenType specification.
*
- * Note that we now support old Mac fonts that do not include an
- * `OS/2' table. In this case, the `version' field is always set to
- * 0xFFFF.
+ * Note that we now support old Mac fonts that do not include an 'OS/2'
+ * table. In this case, the `version` field is always set to 0xFFFF.
*
* @note:
- * For an OpenType variation font, the values of the following fields
- * can change after a call to @FT_Set_Var_Design_Coordinates (and
- * friends) if the font contains an `MVAR' table: `sCapHeight',
- * `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',
- * `usWinAscent', `usWinDescent', `yStrikeoutPosition',
- * `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',
- * `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',
- * `ySuperscriptXSize', `ySuperscriptYOffset', and
- * `ySuperscriptYSize'.
+ * For an OpenType variation font, the values of the following fields can
+ * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+ * the font contains an 'MVAR' table: `sCapHeight`, `sTypoAscender`,
+ * `sTypoDescender`, `sTypoLineGap`, `sxHeight`, `usWinAscent`,
+ * `usWinDescent`, `yStrikeoutPosition`, `yStrikeoutSize`,
+ * `ySubscriptXOffset`, `ySubScriptXSize`, `ySubscriptYOffset`,
+ * `ySubscriptYSize`, `ySuperscriptXOffset`, `ySuperscriptXSize`,
+ * `ySuperscriptYOffset`, and `ySuperscriptYSize`.
*
- * Possible values for bits in the `ulUnicodeRangeX' fields are given
- * by the @TT_UCR_XXX macros.
+ * Possible values for bits in the `ulUnicodeRangeX` fields are given by
+ * the @TT_UCR_XXX macros.
*/
typedef struct TT_OS2_
@@ -473,16 +437,16 @@
* TT_Postscript
*
* @description:
- * A structure to model a TrueType `post' table. All fields comply
- * to the OpenType specification. This structure does not reference
- * a font's PostScript glyph names; use @FT_Get_Glyph_Name to
- * retrieve them.
+ * A structure to model a TrueType 'post' table. All fields comply to
+ * the OpenType specification. This structure does not reference a
+ * font's PostScript glyph names; use @FT_Get_Glyph_Name to retrieve
+ * them.
*
* @note:
- * For an OpenType variation font, the values of the following fields
- * can change after a call to @FT_Set_Var_Design_Coordinates (and
- * friends) if the font contains an `MVAR' table: `underlinePosition'
- * and `underlineThickness'.
+ * For an OpenType variation font, the values of the following fields can
+ * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+ * the font contains an 'MVAR' table: `underlinePosition` and
+ * `underlineThickness`.
*/
typedef struct TT_Postscript_
{
@@ -496,7 +460,7 @@
FT_ULong minMemType1;
FT_ULong maxMemType1;
- /* Glyph names follow in the `post' table, but we don't */
+ /* Glyph names follow in the 'post' table, but we don't */
/* load them by default. */
} TT_Postscript;
@@ -508,8 +472,8 @@
* TT_PCLT
*
* @description:
- * A structure to model a TrueType `PCLT' table. All fields comply
- * to the OpenType specification.
+ * A structure to model a TrueType 'PCLT' table. All fields comply to
+ * the OpenType specification.
*/
typedef struct TT_PCLT_
{
@@ -538,75 +502,65 @@
* TT_MaxProfile
*
* @description:
- * The maximum profile (`maxp') table contains many max values, which
- * can be used to pre-allocate arrays for speeding up glyph loading
- * and hinting.
+ * The maximum profile ('maxp') table contains many max values, which can
+ * be used to pre-allocate arrays for speeding up glyph loading and
+ * hinting.
*
* @fields:
* version ::
* The version number.
*
* numGlyphs ::
- * The number of glyphs in this TrueType
- * font.
+ * The number of glyphs in this TrueType font.
*
* maxPoints ::
- * The maximum number of points in a
- * non-composite TrueType glyph. See also
- * `maxCompositePoints'.
+ * The maximum number of points in a non-composite TrueType glyph. See
+ * also `maxCompositePoints`.
*
* maxContours ::
- * The maximum number of contours in a
- * non-composite TrueType glyph. See also
- * `maxCompositeContours'.
+ * The maximum number of contours in a non-composite TrueType glyph.
+ * See also `maxCompositeContours`.
*
* maxCompositePoints ::
- * The maximum number of points in a
- * composite TrueType glyph. See also
- * `maxPoints'.
+ * The maximum number of points in a composite TrueType glyph. See
+ * also `maxPoints`.
*
* maxCompositeContours ::
- * The maximum number of contours in a
- * composite TrueType glyph. See also
- * `maxContours'.
+ * The maximum number of contours in a composite TrueType glyph. See
+ * also `maxContours`.
*
* maxZones ::
- * The maximum number of zones used for
- * glyph hinting.
+ * The maximum number of zones used for glyph hinting.
*
* maxTwilightPoints ::
- * The maximum number of points in the
- * twilight zone used for glyph hinting.
+ * The maximum number of points in the twilight zone used for glyph
+ * hinting.
*
* maxStorage ::
- * The maximum number of elements in the
- * storage area used for glyph hinting.
+ * The maximum number of elements in the storage area used for glyph
+ * hinting.
*
* maxFunctionDefs ::
- * The maximum number of function
- * definitions in the TrueType bytecode for
- * this font.
+ * The maximum number of function definitions in the TrueType bytecode
+ * for this font.
*
* maxInstructionDefs ::
- * The maximum number of instruction
- * definitions in the TrueType bytecode for
- * this font.
+ * The maximum number of instruction definitions in the TrueType
+ * bytecode for this font.
*
* maxStackElements ::
- * The maximum number of stack elements used
- * during bytecode interpretation.
+ * The maximum number of stack elements used during bytecode
+ * interpretation.
*
* maxSizeOfInstructions ::
- * The maximum number of TrueType opcodes
- * used for glyph hinting.
+ * The maximum number of TrueType opcodes used for glyph hinting.
*
* maxComponentElements ::
- * The maximum number of simple (i.e.,
- * non-composite) glyphs in a composite glyph.
+ * The maximum number of simple (i.e., non-composite) glyphs in a
+ * composite glyph.
*
* maxComponentDepth ::
- * The maximum nesting depth of composite
- * glyphs.
+ * The maximum nesting depth of composite glyphs.
*
* @note:
* This structure is only used during font loading.
@@ -638,8 +592,8 @@
* FT_Sfnt_Tag
*
* @description:
- * An enumeration to specify indices of SFNT tables loaded and parsed
- * by FreeType during initialization of an SFNT font. Used in the
+ * An enumeration to specify indices of SFNT tables loaded and parsed by
+ * FreeType during initialization of an SFNT font. Used in the
* @FT_Get_Sfnt_Table API function.
*
* @values:
@@ -678,7 +632,7 @@
} FT_Sfnt_Tag;
- /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */
+ /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag` */
/* values instead */
#define ft_sfnt_head FT_SFNT_HEAD
#define ft_sfnt_maxp FT_SFNT_MAXP
@@ -705,30 +659,29 @@
* The index of the SFNT table.
*
* @return:
- * A type-less pointer to the table. This will be NULL in case of
- * error, or if the corresponding table was not found *OR* loaded
- * from the file.
+ * A type-less pointer to the table. This will be `NULL` in case of
+ * error, or if the corresponding table was not found **OR** loaded from
+ * the file.
*
- * Use a typecast according to `tag' to access the structure
- * elements.
+ * Use a typecast according to `tag` to access the structure elements.
*
* @note:
* The table is owned by the face object and disappears with it.
*
- * This function is only useful to access SFNT tables that are loaded
- * by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for
- * a list.
+ * This function is only useful to access SFNT tables that are loaded by
+ * the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for a
+ * list.
*
* @example:
- * Here an example how to access the `vhea' table.
+ * Here is an example demonstrating access to the 'vhea' table.
*
- * {
+ * ```
* TT_VertHeader* vert_header;
*
*
* vert_header =
* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );
- * }
+ * ```
*/
FT_EXPORT( void* )
FT_Get_Sfnt_Table( FT_Face face,
@@ -748,8 +701,8 @@
* A handle to the source face.
*
* tag ::
- * The four-byte tag of the table to load. Use value~0 if you want
- * to access the whole font file. Otherwise, you can use one of the
+ * The four-byte tag of the table to load. Use value~0 if you want to
+ * access the whole font file. Otherwise, you can use one of the
* definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
* one with @FT_MAKE_TAG.
*
@@ -763,10 +716,10 @@
*
* @inout:
* length ::
- * If the `length' parameter is NULL, try to load the whole table.
+ * If the `length` parameter is `NULL`, try to load the whole table.
* Return an error code if it fails.
*
- * Else, if `*length' is~0, exit immediately while returning the
+ * Else, if `*length` is~0, exit immediately while returning the
* table's (or file) full size in it.
*
* Else the number of bytes to read from the table or file, from the
@@ -777,9 +730,9 @@
*
* @note:
* If you need to determine the table's length you should first call this
- * function with `*length' set to~0, as in the following example:
+ * function with `*length` set to~0, as in the following example:
*
- * {
+ * ```
* FT_ULong length = 0;
*
*
@@ -791,7 +744,7 @@
*
* error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
* if ( error ) { ... could not load table ... }
- * }
+ * ```
*
* Note that structures like @TT_Header or @TT_OS2 can't be used with
* this function; they are limited to @FT_Get_Sfnt_Table. Reason is that
@@ -825,14 +778,14 @@
*
* @inout:
* tag ::
- * The name tag of the SFNT table. If the value is NULL, `table_index'
- * is ignored, and `length' returns the number of SFNT tables in the
- * font.
+ * The name tag of the SFNT table. If the value is `NULL`,
+ * `table_index` is ignored, and `length` returns the number of SFNT
+ * tables in the font.
*
* @output:
* length ::
- * The length of the SFNT table (or the number of SFNT tables, depending
- * on `tag').
+ * The length of the SFNT table (or the number of SFNT tables,
+ * depending on `tag`).
*
* @return:
* FreeType error code. 0~means success.
@@ -863,8 +816,8 @@
* The target charmap.
*
* @return:
- * The language ID of `charmap'. If `charmap' doesn't belong to an
- * SFNT face, just return~0 as the default value.
+ * The language ID of `charmap`. If `charmap` doesn't belong to an SFNT
+ * face, just return~0 as the default value.
*
* For a format~14 cmap (to access Unicode IVS), the return value is
* 0xFFFFFFFF.
@@ -879,15 +832,15 @@
* FT_Get_CMap_Format
*
* @description:
- * Return the format of an SFNT `cmap' table.
+ * Return the format of an SFNT 'cmap' table.
*
* @input:
* charmap ::
* The target charmap.
*
* @return:
- * The format of `charmap'. If `charmap' doesn't belong to an SFNT
- * face, return -1.
+ * The format of `charmap`. If `charmap` doesn't belong to an SFNT face,
+ * return -1.
*/
FT_EXPORT( FT_Long )
FT_Get_CMap_Format( FT_CharMap charmap );
diff --git a/include/freetype/tttags.h b/include/freetype/tttags.h
index 5e5d783..bd0986e 100644
--- a/include/freetype/tttags.h
+++ b/include/freetype/tttags.h
@@ -4,7 +4,7 @@
*
* Tags for TrueType and OpenType tables (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/ft2build.h b/include/ft2build.h
index 97dbd3c..e3f4887 100644
--- a/include/ft2build.h
+++ b/include/ft2build.h
@@ -4,7 +4,7 @@
*
* FreeType 2 build and setup macros.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,17 +18,17 @@
/**************************************************************************
*
- * This is the `entry point' for FreeType header file inclusions. It is
+ * This is the 'entry point' for FreeType header file inclusions. It is
* the only header file which should be included directly; all other
* FreeType header files should be accessed with macro names (after
- * including `ft2build.h').
+ * including `ft2build.h`).
*
* A typical example is
*
- * {
+ * ```
* #include <ft2build.h>
* #include FT_FREETYPE_H
- * }
+ * ```
*
*/
diff --git a/modules.cfg b/modules.cfg
index c46e619..dc6c8d4 100644
--- a/modules.cfg
+++ b/modules.cfg
@@ -1,6 +1,6 @@
# modules.cfg
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/Jamfile b/src/Jamfile
index 562480c..3ad2d5c 100644
--- a/src/Jamfile
+++ b/src/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/autofit/Jamfile b/src/autofit/Jamfile
index 01b866e..ea69dee 100644
--- a/src/autofit/Jamfile
+++ b/src/autofit/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/autofit Jamfile
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/autofit/afangles.c b/src/autofit/afangles.c
index f7b1c2c..9e1f7a2 100644
--- a/src/autofit/afangles.c
+++ b/src/autofit/afangles.c
@@ -5,7 +5,7 @@
* Routines used to compute vector angles with limited accuracy
* and very high speed. It also contains sorting routines (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c
index 9b0ac13..b99dbeb 100644
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -7,7 +7,7 @@
*
* Auto-fitter data for blue strings (body).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -296,6 +296,10 @@
'\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', '\xA0', '\xB3', ' ', '\xE1', '\xA0', '\xB4', ' ', '\xE1', '\xA0', '\xB6', ' ', '\xE1', '\xA0', '\xBD', ' ', '\xE1', '\xA1', '\x82', ' ', '\xE1', '\xA1', '\x8A', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xA1', '\xE2', '\x80', '\x8D', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xB3', '\xE2', '\x80', '\x8D', /* ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ᡡ ᡳ */
+ '\0',
+ '\xE1', '\xA1', '\x83', /* ᡃ */
+ '\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', /* င ဎ ဒ ပ ဗ ဝ ၊ ။ */
@@ -649,6 +653,9 @@
{ AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP },
{ AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 },
{ AF_BLUE_STRING_MAX, 0 },
+ { AF_BLUE_STRING_MONGOLIAN_TOP_BASE, AF_BLUE_PROPERTY_LATIN_TOP },
+ { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 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 },
diff --git a/src/autofit/afblue.cin b/src/autofit/afblue.cin
index b7437e3..6545d1f 100644
--- a/src/autofit/afblue.cin
+++ b/src/autofit/afblue.cin
@@ -4,7 +4,7 @@
*
* Auto-fitter data for blue strings (body).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat
index 1b8d5d7..46db43f 100644
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -2,7 +2,7 @@
//
// Auto-fitter data for blue strings.
//
-// Copyright 2013-2018 by
+// Copyright (C) 2013-2019 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used,
@@ -392,6 +392,11 @@
AF_BLUE_STRING_MALAYALAM_BOTTOM
"ട ഠ ധ ശ ഘ ച ഥ ല"
+ AF_BLUE_STRING_MONGOLIAN_TOP_BASE
+ "ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ᡡ ᡳ"
+ AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE
+ "ᡃ"
+
AF_BLUE_STRING_MYANMAR_TOP
"ခ ဂ င ဒ ဝ ၥ ၊ ။"
AF_BLUE_STRING_MYANMAR_BOTTOM
@@ -947,6 +952,11 @@
{ AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 }
{ AF_BLUE_STRING_MAX, 0 }
+ AF_BLUE_STRINGSET_MONG
+ { AF_BLUE_STRING_MONGOLIAN_TOP_BASE, AF_BLUE_PROPERTY_LATIN_TOP }
+ { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 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 }
diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h
index 1fbadbe..b69b1df 100644
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -7,7 +7,7 @@
*
* Auto-fitter data for blue strings (specification).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -212,56 +212,58 @@
AF_BLUE_STRING_LISU_BOTTOM = 3506,
AF_BLUE_STRING_MALAYALAM_TOP = 3538,
AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
- AF_BLUE_STRING_MYANMAR_TOP = 3614,
- AF_BLUE_STRING_MYANMAR_BOTTOM = 3646,
- AF_BLUE_STRING_MYANMAR_ASCENDER = 3678,
- AF_BLUE_STRING_MYANMAR_DESCENDER = 3706,
- AF_BLUE_STRING_NKO_TOP = 3738,
- AF_BLUE_STRING_NKO_BOTTOM = 3762,
- AF_BLUE_STRING_NKO_SMALL_TOP = 3777,
- AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3786,
- AF_BLUE_STRING_OL_CHIKI = 3798,
- AF_BLUE_STRING_OLD_TURKIC_TOP = 3822,
- AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3837,
- AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3857,
- AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3897,
- AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3927,
- AF_BLUE_STRING_OSAGE_SMALL_TOP = 3942,
- AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3982,
- AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4022,
- AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4047,
- AF_BLUE_STRING_OSMANYA_TOP = 4062,
- AF_BLUE_STRING_OSMANYA_BOTTOM = 4102,
- AF_BLUE_STRING_SAURASHTRA_TOP = 4142,
- AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4174,
- AF_BLUE_STRING_SHAVIAN_TOP = 4194,
- AF_BLUE_STRING_SHAVIAN_BOTTOM = 4204,
- AF_BLUE_STRING_SHAVIAN_DESCENDER = 4229,
- AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4239,
- AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4274,
- AF_BLUE_STRING_SINHALA_TOP = 4289,
- AF_BLUE_STRING_SINHALA_BOTTOM = 4321,
- AF_BLUE_STRING_SINHALA_DESCENDER = 4353,
- AF_BLUE_STRING_SUNDANESE_TOP = 4397,
- AF_BLUE_STRING_SUNDANESE_BOTTOM = 4421,
- AF_BLUE_STRING_SUNDANESE_DESCENDER = 4453,
- AF_BLUE_STRING_TAI_VIET_TOP = 4461,
- AF_BLUE_STRING_TAI_VIET_BOTTOM = 4481,
- AF_BLUE_STRING_TAMIL_TOP = 4493,
- AF_BLUE_STRING_TAMIL_BOTTOM = 4525,
- AF_BLUE_STRING_TELUGU_TOP = 4557,
- AF_BLUE_STRING_TELUGU_BOTTOM = 4585,
- AF_BLUE_STRING_THAI_TOP = 4613,
- AF_BLUE_STRING_THAI_BOTTOM = 4637,
- AF_BLUE_STRING_THAI_ASCENDER = 4665,
- AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4677,
- AF_BLUE_STRING_THAI_DESCENDER = 4689,
- AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4705,
- AF_BLUE_STRING_THAI_DIGIT_TOP = 4713,
- AF_BLUE_STRING_TIFINAGH = 4725,
- AF_BLUE_STRING_VAI_TOP = 4757,
- AF_BLUE_STRING_VAI_BOTTOM = 4789,
- af_blue_1_1 = 4820,
+ AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3614,
+ AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3658,
+ AF_BLUE_STRING_MYANMAR_TOP = 3662,
+ AF_BLUE_STRING_MYANMAR_BOTTOM = 3694,
+ AF_BLUE_STRING_MYANMAR_ASCENDER = 3726,
+ AF_BLUE_STRING_MYANMAR_DESCENDER = 3754,
+ AF_BLUE_STRING_NKO_TOP = 3786,
+ AF_BLUE_STRING_NKO_BOTTOM = 3810,
+ AF_BLUE_STRING_NKO_SMALL_TOP = 3825,
+ AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3834,
+ AF_BLUE_STRING_OL_CHIKI = 3846,
+ AF_BLUE_STRING_OLD_TURKIC_TOP = 3870,
+ AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3885,
+ AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3905,
+ AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3945,
+ AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3975,
+ AF_BLUE_STRING_OSAGE_SMALL_TOP = 3990,
+ AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4030,
+ AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4070,
+ AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4095,
+ AF_BLUE_STRING_OSMANYA_TOP = 4110,
+ AF_BLUE_STRING_OSMANYA_BOTTOM = 4150,
+ AF_BLUE_STRING_SAURASHTRA_TOP = 4190,
+ AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4222,
+ AF_BLUE_STRING_SHAVIAN_TOP = 4242,
+ AF_BLUE_STRING_SHAVIAN_BOTTOM = 4252,
+ AF_BLUE_STRING_SHAVIAN_DESCENDER = 4277,
+ AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4287,
+ AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4322,
+ AF_BLUE_STRING_SINHALA_TOP = 4337,
+ AF_BLUE_STRING_SINHALA_BOTTOM = 4369,
+ AF_BLUE_STRING_SINHALA_DESCENDER = 4401,
+ AF_BLUE_STRING_SUNDANESE_TOP = 4445,
+ AF_BLUE_STRING_SUNDANESE_BOTTOM = 4469,
+ AF_BLUE_STRING_SUNDANESE_DESCENDER = 4501,
+ AF_BLUE_STRING_TAI_VIET_TOP = 4509,
+ AF_BLUE_STRING_TAI_VIET_BOTTOM = 4529,
+ AF_BLUE_STRING_TAMIL_TOP = 4541,
+ AF_BLUE_STRING_TAMIL_BOTTOM = 4573,
+ AF_BLUE_STRING_TELUGU_TOP = 4605,
+ AF_BLUE_STRING_TELUGU_BOTTOM = 4633,
+ AF_BLUE_STRING_THAI_TOP = 4661,
+ AF_BLUE_STRING_THAI_BOTTOM = 4685,
+ AF_BLUE_STRING_THAI_ASCENDER = 4713,
+ AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4725,
+ AF_BLUE_STRING_THAI_DESCENDER = 4737,
+ AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4753,
+ AF_BLUE_STRING_THAI_DIGIT_TOP = 4761,
+ AF_BLUE_STRING_TIFINAGH = 4773,
+ AF_BLUE_STRING_VAI_TOP = 4805,
+ AF_BLUE_STRING_VAI_BOTTOM = 4837,
+ af_blue_1_1 = 4868,
#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,
@@ -355,24 +357,25 @@
AF_BLUE_STRINGSET_LATP = 166,
AF_BLUE_STRINGSET_LISU = 173,
AF_BLUE_STRINGSET_MLYM = 176,
- AF_BLUE_STRINGSET_MYMR = 179,
- AF_BLUE_STRINGSET_NKOO = 184,
- AF_BLUE_STRINGSET_NONE = 189,
- AF_BLUE_STRINGSET_OLCK = 190,
- AF_BLUE_STRINGSET_ORKH = 193,
- AF_BLUE_STRINGSET_OSGE = 196,
- AF_BLUE_STRINGSET_OSMA = 204,
- AF_BLUE_STRINGSET_SAUR = 207,
- AF_BLUE_STRINGSET_SHAW = 210,
- AF_BLUE_STRINGSET_SINH = 216,
- AF_BLUE_STRINGSET_SUND = 220,
- AF_BLUE_STRINGSET_TAML = 224,
- AF_BLUE_STRINGSET_TAVT = 227,
- AF_BLUE_STRINGSET_TELU = 230,
- AF_BLUE_STRINGSET_TFNG = 233,
- AF_BLUE_STRINGSET_THAI = 236,
- AF_BLUE_STRINGSET_VAII = 244,
- af_blue_2_1 = 247,
+ AF_BLUE_STRINGSET_MONG = 179,
+ AF_BLUE_STRINGSET_MYMR = 182,
+ AF_BLUE_STRINGSET_NKOO = 187,
+ AF_BLUE_STRINGSET_NONE = 192,
+ AF_BLUE_STRINGSET_OLCK = 193,
+ AF_BLUE_STRINGSET_ORKH = 196,
+ AF_BLUE_STRINGSET_OSGE = 199,
+ AF_BLUE_STRINGSET_OSMA = 207,
+ AF_BLUE_STRINGSET_SAUR = 210,
+ AF_BLUE_STRINGSET_SHAW = 213,
+ AF_BLUE_STRINGSET_SINH = 219,
+ AF_BLUE_STRINGSET_SUND = 223,
+ AF_BLUE_STRINGSET_TAML = 227,
+ AF_BLUE_STRINGSET_TAVT = 230,
+ AF_BLUE_STRINGSET_TELU = 233,
+ AF_BLUE_STRINGSET_TFNG = 236,
+ AF_BLUE_STRINGSET_THAI = 239,
+ AF_BLUE_STRINGSET_VAII = 247,
+ af_blue_2_1 = 250,
#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/src/autofit/afblue.hin b/src/autofit/afblue.hin
index 3f1d311..30a28da 100644
--- a/src/autofit/afblue.hin
+++ b/src/autofit/afblue.hin
@@ -4,7 +4,7 @@
*
* Auto-fitter data for blue strings (specification).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afcjk.c b/src/autofit/afcjk.c
index dc38153..a61689b 100644
--- a/src/autofit/afcjk.c
+++ b/src/autofit/afcjk.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for CJK writing system (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,7 +50,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afcjk
+#define FT_COMPONENT afcjk
/*************************************************************************/
@@ -1184,6 +1184,8 @@
seg = edge->first;
+ if ( !seg )
+ goto Skip_Loop;
do
{
@@ -1198,7 +1200,7 @@
/* check for links -- if seg->serif is set, then seg->link must */
/* be ignored */
- is_serif = (FT_Bool)( seg->serif && seg->serif->edge != edge );
+ is_serif = FT_BOOL( seg->serif && seg->serif->edge != edge );
if ( seg->link || is_serif )
{
@@ -1239,13 +1241,14 @@
edge2->flags |= AF_EDGE_SERIF;
}
else
- edge->link = edge2;
+ edge->link = edge2;
}
seg = seg->edge_next;
} while ( seg != edge->first );
+ Skip_Loop:
/* set the round/straight flags */
edge->flags = AF_EDGE_NORMAL;
diff --git a/src/autofit/afcjk.h b/src/autofit/afcjk.h
index 707271b..59acae5 100644
--- a/src/autofit/afcjk.h
+++ b/src/autofit/afcjk.h
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for CJK writing system (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afcover.h b/src/autofit/afcover.h
index 47f3e47..ff207a9 100644
--- a/src/autofit/afcover.h
+++ b/src/autofit/afcover.h
@@ -4,7 +4,7 @@
*
* Auto-fitter coverages (specification only).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afdummy.c b/src/autofit/afdummy.c
index abd9509..7e07a41 100644
--- a/src/autofit/afdummy.c
+++ b/src/autofit/afdummy.c
@@ -5,7 +5,7 @@
* Auto-fitter dummy routines to be used if no hinting should be
* performed (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,13 +38,15 @@
static FT_Error
- af_dummy_hints_apply( FT_UInt glyph_index,
- AF_GlyphHints hints,
- FT_Outline* outline )
+ af_dummy_hints_apply( FT_UInt glyph_index,
+ AF_GlyphHints hints,
+ FT_Outline* outline,
+ AF_StyleMetrics metrics )
{
FT_Error error;
FT_UNUSED( glyph_index );
+ FT_UNUSED( metrics );
error = af_glyph_hints_reload( hints, outline );
diff --git a/src/autofit/afdummy.h b/src/autofit/afdummy.h
index e01c49c..ab9227d 100644
--- a/src/autofit/afdummy.h
+++ b/src/autofit/afdummy.h
@@ -5,7 +5,7 @@
* Auto-fitter dummy routines to be used if no hinting should be
* performed (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aferrors.h b/src/autofit/aferrors.h
index 56e00cc..2ec336f 100644
--- a/src/autofit/aferrors.h
+++ b/src/autofit/aferrors.h
@@ -4,7 +4,7 @@
*
* Autofitter error codes (specification only).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afglobal.c b/src/autofit/afglobal.c
index 9e7764b..6a9a1e5 100644
--- a/src/autofit/afglobal.c
+++ b/src/autofit/afglobal.c
@@ -4,7 +4,7 @@
*
* Auto-fitter routines to compute global hinting values (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,7 +29,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afglobal
+#define FT_COMPONENT afglobal
/* get writing system specific header files */
@@ -443,6 +443,7 @@
style = (AF_Style)( globals->glyph_styles[gindex] &
AF_STYLE_UNASSIGNED );
+ Again:
style_class = af_style_classes[style];
writing_system_class = af_writing_system_classes
[style_class->writing_system];
@@ -470,6 +471,16 @@
writing_system_class->style_metrics_done( metrics );
FT_FREE( metrics );
+
+ /* internal error code -1 indicates */
+ /* that no blue zones have been found */
+ if ( error == -1 )
+ {
+ style = (AF_Style)( globals->glyph_styles[gindex] &
+ AF_STYLE_UNASSIGNED );
+ goto Again;
+ }
+
goto Exit;
}
}
@@ -489,9 +500,9 @@
FT_UInt gindex )
{
if ( gindex < (FT_ULong)globals->glyph_count )
- return (FT_Bool)( globals->glyph_styles[gindex] & AF_DIGIT );
+ return FT_BOOL( globals->glyph_styles[gindex] & AF_DIGIT );
- return (FT_Bool)0;
+ return FT_BOOL( 0 );
}
diff --git a/src/autofit/afglobal.h b/src/autofit/afglobal.h
index e26ea2f..52f3835 100644
--- a/src/autofit/afglobal.h
+++ b/src/autofit/afglobal.h
@@ -5,7 +5,7 @@
* Auto-fitter routines to compute global hinting values
* (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afhints.c b/src/autofit/afhints.c
index 65f0e85..ed111c4 100644
--- a/src/autofit/afhints.c
+++ b/src/autofit/afhints.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,7 +29,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afhints
+#define FT_COMPONENT afhints
/* Get new segment for given axis. */
@@ -297,6 +297,19 @@
}
+ static int
+ af_get_strong_edge_index( AF_GlyphHints hints,
+ AF_Edge* strong_edges,
+ int dimension )
+ {
+ AF_AxisHints axis = &hints->axis[dimension];
+ AF_Edge edges = axis->edges;
+
+
+ return AF_INDEX_NUM( strong_edges[dimension], edges );
+ }
+
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -317,8 +330,10 @@
{
AF_DUMP(( " index hedge hseg vedge vseg flags "
/* " XXXXX XXXXX XXXXX XXXXX XXXXX XXXXXX" */
- " xorg yorg xscale yscale xfit yfit" ));
+ " xorg yorg xscale yscale xfit yfit "
/* " XXXXX XXXXX XXXX.XX XXXX.XX XXXX.XX XXXX.XX" */
+ " hbef haft vbef vaft" ));
+ /* " XXXXX XXXXX XXXXX XXXXX" */
}
else
AF_DUMP(( " (none)\n" ));
@@ -330,6 +345,7 @@
int segment_idx_1 = af_get_segment_index( hints, point_idx, 1 );
char buf1[16], buf2[16], buf3[16], buf4[16];
+ char buf5[16], buf6[16], buf7[16], buf8[16];
/* insert extra newline at the beginning of a contour */
@@ -340,7 +356,8 @@
}
AF_DUMP(( " %5d %5s %5s %5s %5s %s"
- " %5d %5d %7.2f %7.2f %7.2f %7.2f\n",
+ " %5d %5d %7.2f %7.2f %7.2f %7.2f"
+ " %5s %5s %5s %5s\n",
point_idx,
af_print_idx( buf1,
af_get_edge_index( hints, segment_idx_1, 1 ) ),
@@ -359,7 +376,20 @@
point->ox / 64.0,
point->oy / 64.0,
point->x / 64.0,
- point->y / 64.0 ));
+ point->y / 64.0,
+
+ af_print_idx( buf5, af_get_strong_edge_index( hints,
+ point->before,
+ 1 ) ),
+ af_print_idx( buf6, af_get_strong_edge_index( hints,
+ point->after,
+ 1 ) ),
+ af_print_idx( buf7, af_get_strong_edge_index( hints,
+ point->before,
+ 0 ) ),
+ af_print_idx( buf8, af_get_strong_edge_index( hints,
+ point->after,
+ 0 ) ) ));
}
AF_DUMP(( "\n" ));
}
@@ -519,7 +549,7 @@
*offset = ( dim == AF_DIMENSION_HORZ ) ? seg->first->fx
: seg->first->fy;
if ( seg->edge )
- *is_blue = (FT_Bool)( seg->edge->blue_edge != 0 );
+ *is_blue = FT_BOOL( seg->edge->blue_edge );
else
*is_blue = FALSE;
@@ -898,6 +928,14 @@
prev = end;
}
}
+
+#ifdef FT_DEBUG_AUTOFIT
+ point->before[0] = NULL;
+ point->before[1] = NULL;
+ point->after[0] = NULL;
+ point->after[1] = NULL;
+#endif
+
}
}
@@ -1309,6 +1347,12 @@
if ( delta >= 0 )
{
u = edge->pos - ( edge->opos - ou );
+
+#ifdef FT_DEBUG_AUTOFIT
+ point->before[dim] = edge;
+ point->after[dim] = NULL;
+#endif
+
goto Store_Point;
}
@@ -1318,6 +1362,12 @@
if ( delta >= 0 )
{
u = edge->pos + ( ou - edge->opos );
+
+#ifdef FT_DEBUG_AUTOFIT
+ point->before[dim] = NULL;
+ point->after[dim] = edge;
+#endif
+
goto Store_Point;
}
@@ -1364,6 +1414,12 @@
{
/* we are on the edge */
u = edge->pos;
+
+#ifdef FT_DEBUG_AUTOFIT
+ point->before[dim] = NULL;
+ point->after[dim] = NULL;
+#endif
+
goto Store_Point;
}
}
@@ -1374,6 +1430,11 @@
AF_Edge after = edges + min + 0;
+#ifdef FT_DEBUG_AUTOFIT
+ point->before[dim] = before;
+ point->after[dim] = after;
+#endif
+
/* assert( before && after && before != after ) */
if ( before->scale == 0 )
before->scale = FT_DivFix( after->pos - before->pos,
diff --git a/src/autofit/afhints.h b/src/autofit/afhints.h
index aee9d46..e0cf612 100644
--- a/src/autofit/afhints.h
+++ b/src/autofit/afhints.h
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -252,6 +252,12 @@
AF_Point next; /* next point in contour */
AF_Point prev; /* previous point in contour */
+#ifdef FT_DEBUG_AUTOFIT
+ /* track `before' and `after' edges for strong points */
+ AF_Edge before[2];
+ AF_Edge after[2];
+#endif
+
} AF_PointRec;
diff --git a/src/autofit/afindic.c b/src/autofit/afindic.c
index 45c1a10..a17117c 100644
--- a/src/autofit/afindic.c
+++ b/src/autofit/afindic.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for Indic writing system (body).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afindic.h b/src/autofit/afindic.h
index 94ff764..bc5bc59 100644
--- a/src/autofit/afindic.h
+++ b/src/autofit/afindic.h
@@ -5,7 +5,7 @@
* Auto-fitter hinting routines for Indic writing system
* (specification).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index a90fc1c..27d4024 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for latin writing system (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -37,7 +37,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_aflatin
+#define FT_COMPONENT aflatin
/* needed for computation of round vs. flat segments */
@@ -149,7 +149,11 @@
af_shaper_buf_destroy( face, shaper_buf );
if ( !glyph_index )
+ {
+ FT_TRACE5(( "standard character missing;"
+ " using fallback stem widths\n" ));
goto Exit;
+ }
FT_TRACE5(( "standard character: U+%04lX (glyph index %d)\n",
ch, glyph_index ));
@@ -312,7 +316,7 @@
/* Find all blue zones. Flat segments give the reference points, */
/* round segments the overshoot positions. */
- static void
+ static int
af_latin_metrics_init_blues( AF_LatinMetrics metrics,
FT_Face face )
{
@@ -981,10 +985,11 @@
af_shaper_buf_destroy( face, shaper_buf );
- /* we finally check whether blue zones are ordered; */
- /* `ref' and `shoot' values of two blue zones must not overlap */
if ( axis->blue_count )
{
+ /* we finally check whether blue zones are ordered; */
+ /* `ref' and `shoot' values of two blue zones must not overlap */
+
FT_UInt i;
AF_LatinBlue blue_sorted[AF_BLUE_STRINGSET_MAX_LEN + 2];
@@ -1033,11 +1038,34 @@
*a ));
}
}
+
+ FT_TRACE5(( "\n" ));
+
+ return 0;
}
+ else
+ {
+ /* disable hinting for the current style if there are no blue zones */
- FT_TRACE5(( "\n" ));
+ AF_FaceGlobals globals = metrics->root.globals;
+ FT_UShort* gstyles = globals->glyph_styles;
- return;
+ FT_Long i;
+
+
+ FT_TRACE5(( "no blue zones found:"
+ " hinting disabled for this style\n" ));
+
+ for ( i = 0; i < globals->glyph_count; i++ )
+ {
+ if ( ( gstyles[i] & AF_STYLE_MASK ) == sc->style )
+ gstyles[i] = AF_STYLE_NONE_DFLT;
+ }
+
+ FT_TRACE5(( "\n" ));
+
+ return 1;
+ }
}
@@ -1116,6 +1144,8 @@
af_latin_metrics_init( AF_LatinMetrics metrics,
FT_Face face )
{
+ FT_Error error = FT_Err_Ok;
+
FT_CharMap oldmap = face->charmap;
@@ -1124,12 +1154,18 @@
if ( !FT_Select_Charmap( face, FT_ENCODING_UNICODE ) )
{
af_latin_metrics_init_widths( metrics, face );
- af_latin_metrics_init_blues( metrics, face );
+ if ( af_latin_metrics_init_blues( metrics, face ) )
+ {
+ /* use internal error code to indicate missing blue zones */
+ error = -1;
+ goto Exit;
+ }
af_latin_metrics_check_digits( metrics, face );
}
+ Exit:
FT_Set_Charmap( face, oldmap );
- return FT_Err_Ok;
+ return error;
}
@@ -1307,7 +1343,7 @@
/* an extra-light axis corresponds to a standard width that is */
/* smaller than 5/8 pixels */
axis->extra_light =
- (FT_Bool)( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
+ FT_BOOL( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
#ifdef FT_DEBUG_LEVEL_TRACE
if ( axis->extra_light )
@@ -1443,13 +1479,13 @@
nn,
blue->ref.org,
blue->ref.fit / 64.0,
- blue->flags & AF_LATIN_BLUE_ACTIVE ? ""
- : " (inactive)",
+ ( blue->flags & AF_LATIN_BLUE_ACTIVE ) ? ""
+ : " (inactive)",
nn,
blue->shoot.org,
blue->shoot.fit / 64.0,
- blue->flags & AF_LATIN_BLUE_ACTIVE ? ""
- : " (inactive)" ));
+ ( blue->flags & AF_LATIN_BLUE_ACTIVE ) ? ""
+ : " (inactive)" ));
}
#endif
}
@@ -2328,9 +2364,9 @@
/* check for links -- if seg->serif is set, then seg->link must */
/* be ignored */
- is_serif = (FT_Bool)( seg->serif &&
- seg->serif->edge &&
- seg->serif->edge != edge );
+ is_serif = FT_BOOL( seg->serif &&
+ seg->serif->edge &&
+ seg->serif->edge != edge );
if ( ( seg->link && seg->link->edge ) || is_serif )
{
diff --git a/src/autofit/aflatin.h b/src/autofit/aflatin.h
index 6b429bd..4047953 100644
--- a/src/autofit/aflatin.h
+++ b/src/autofit/aflatin.h
@@ -5,7 +5,7 @@
* Auto-fitter hinting routines for latin writing system
* (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aflatin2.c b/src/autofit/aflatin2.c
index c5ce043..c601ab8 100644
--- a/src/autofit/aflatin2.c
+++ b/src/autofit/aflatin2.c
@@ -9,7 +9,7 @@
*
* Auto-fitter hinting routines for latin writing system (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -44,7 +44,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_aflatin2
+#define FT_COMPONENT aflatin2
FT_LOCAL_DEF( FT_Error )
@@ -265,7 +265,7 @@
/* Avoid single-point contours since they are never rasterized. */
/* In some fonts, they correspond to mark attachment points */
/* which are way outside of the glyph's real outline. */
- if ( last == first )
+ if ( last <= first )
continue;
if ( AF_LATIN_IS_TOP_BLUE( bb ) )
@@ -299,6 +299,7 @@
/* now check whether the point belongs to a straight or round */
/* segment; we first need to find in which contour the extremum */
/* lies, then inspect its previous and next points */
+ if ( best_point >= 0 )
{
FT_Pos best_x = points[best_point].x;
FT_Int start, end, prev, next;
@@ -632,7 +633,7 @@
/* an extra-light axis corresponds to a standard width that is */
/* smaller than 5/8 pixels */
axis->extra_light =
- (FT_Bool)( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
+ FT_BOOL( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
if ( dim == AF_DIMENSION_VERT )
{
@@ -1302,9 +1303,9 @@
/* check for links -- if seg->serif is set, then seg->link must */
/* be ignored */
- is_serif = (FT_Bool)( seg->serif &&
- seg->serif->edge &&
- seg->serif->edge != edge );
+ is_serif = FT_BOOL( seg->serif &&
+ seg->serif->edge &&
+ seg->serif->edge != edge );
if ( ( seg->link && seg->link->edge ) || is_serif )
{
diff --git a/src/autofit/aflatin2.h b/src/autofit/aflatin2.h
index e8e7382..507cef3 100644
--- a/src/autofit/aflatin2.h
+++ b/src/autofit/aflatin2.h
@@ -10,7 +10,7 @@
* Auto-fitter hinting routines for latin writing system
* (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afloader.c b/src/autofit/afloader.c
index 301f377..83743b7 100644
--- a/src/autofit/afloader.c
+++ b/src/autofit/afloader.c
@@ -4,7 +4,7 @@
*
* Auto-fitter glyph loading routines (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -421,10 +421,15 @@
/* now load the slot image into the auto-outline */
/* and run the automatic hinting process */
if ( writing_system_class->style_hints_apply )
- writing_system_class->style_hints_apply( glyph_index,
- hints,
- &gloader->base.outline,
- style_metrics );
+ {
+ error = writing_system_class->style_hints_apply(
+ glyph_index,
+ hints,
+ &gloader->base.outline,
+ style_metrics );
+ if ( error )
+ goto Exit;
+ }
/* we now need to adjust the metrics according to the change in */
/* width/positioning that occurred during the hinting process */
diff --git a/src/autofit/afloader.h b/src/autofit/afloader.h
index 773ff60..d1e0f3c 100644
--- a/src/autofit/afloader.h
+++ b/src/autofit/afloader.h
@@ -4,7 +4,7 @@
*
* Auto-fitter glyph loading routines (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afmodule.c b/src/autofit/afmodule.c
index 7f9f043..3e46a36 100644
--- a/src/autofit/afmodule.c
+++ b/src/autofit/afmodule.c
@@ -4,7 +4,7 @@
*
* Auto-fitter module implementation (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -66,7 +66,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afmodule
+#define FT_COMPONENT afmodule
static FT_Error
@@ -507,7 +507,7 @@
glyph_index, load_flags );
#ifdef FT_DEBUG_LEVEL_TRACE
- if ( ft_trace_levels[FT_COMPONENT] )
+ if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] )
{
#endif
af_glyph_hints_dump_points( hints, 0 );
diff --git a/src/autofit/afmodule.h b/src/autofit/afmodule.h
index 0db6ef0..b410809 100644
--- a/src/autofit/afmodule.h
+++ b/src/autofit/afmodule.h
@@ -4,7 +4,7 @@
*
* Auto-fitter module implementation (specification).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afranges.c b/src/autofit/afranges.c
index b904d51..45c8bbf 100644
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -4,7 +4,7 @@
*
* Auto-fitter Unicode script ranges (body).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -664,6 +664,21 @@
};
+ const AF_Script_UniRangeRec af_mong_uniranges[] =
+ {
+ AF_UNIRANGE_REC( 0x1800, 0x18AF ), /* Mongolian */
+ AF_UNIRANGE_REC( 0x11660, 0x1167F ), /* Mongolian Supplement */
+ AF_UNIRANGE_REC( 0, 0 )
+ };
+
+ const AF_Script_UniRangeRec af_mong_nonbase_uniranges[] =
+ {
+ AF_UNIRANGE_REC( 0x1885, 0x1886 ),
+ AF_UNIRANGE_REC( 0x18A9, 0x18A9 ),
+ AF_UNIRANGE_REC( 0, 0 )
+ };
+
+
const AF_Script_UniRangeRec af_mymr_uniranges[] =
{
AF_UNIRANGE_REC( 0x1000, 0x109F ), /* Myanmar */
diff --git a/src/autofit/afranges.h b/src/autofit/afranges.h
index c137ae2..d5917ae 100644
--- a/src/autofit/afranges.h
+++ b/src/autofit/afranges.h
@@ -4,7 +4,7 @@
*
* Auto-fitter Unicode script ranges (specification).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h
index 7dd0983..2da8c70 100644
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -4,7 +4,7 @@
*
* Auto-fitter scripts (specification only).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -243,6 +243,12 @@
HINTING_BOTTOM_TO_TOP,
"\xE0\xB4\xA0 \xE0\xB4\xB1" ) /* ഠ റ */
+ SCRIPT( mong, MONG,
+ "Mongolian",
+ HB_SCRIPT_MONGOLIAN,
+ HINTING_TOP_TO_BOTTOM,
+ "\xE1\xA1\x82 \xE1\xA0\xAA" ) /* ᡂ ᠪ */
+
SCRIPT( mymr, MYMR,
"Myanmar",
HB_SCRIPT_MYANMAR,
diff --git a/src/autofit/afshaper.c b/src/autofit/afshaper.c
index b2f5d18..a5191c6 100644
--- a/src/autofit/afshaper.c
+++ b/src/autofit/afshaper.c
@@ -4,7 +4,7 @@
*
* HarfBuzz interface for accessing OpenType features (body).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afshaper
+#define FT_COMPONENT afshaper
/*
diff --git a/src/autofit/afshaper.h b/src/autofit/afshaper.h
index 2665fe2..06a1e06 100644
--- a/src/autofit/afshaper.h
+++ b/src/autofit/afshaper.h
@@ -4,7 +4,7 @@
*
* HarfBuzz interface for accessing OpenType features (specification).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h
index 55d8b23..8d1d708 100644
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -4,7 +4,7 @@
*
* Auto-fitter styles (specification only).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -322,6 +322,13 @@
AF_BLUE_STRINGSET_MLYM,
AF_COVERAGE_DEFAULT )
+ STYLE( mong_dflt, MONG_DFLT,
+ "Mongolian default style",
+ AF_WRITING_SYSTEM_LATIN,
+ AF_SCRIPT_MONG,
+ AF_BLUE_STRINGSET_MONG,
+ AF_COVERAGE_DEFAULT )
+
STYLE( mymr_dflt, MYMR_DFLT,
"Myanmar default style",
AF_WRITING_SYSTEM_LATIN,
diff --git a/src/autofit/aftypes.h b/src/autofit/aftypes.h
index affb81b..579003d 100644
--- a/src/autofit/aftypes.h
+++ b/src/autofit/aftypes.h
@@ -4,7 +4,7 @@
*
* Auto-fitter types (specification only).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afwarp.c b/src/autofit/afwarp.c
index 636f01f..84e9753 100644
--- a/src/autofit/afwarp.c
+++ b/src/autofit/afwarp.c
@@ -4,7 +4,7 @@
*
* Auto-fitter warping algorithm (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -34,7 +34,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_afwarp
+#define FT_COMPONENT afwarp
/* The weights cover the range 0/64 - 63/64 of a pixel. Obviously, */
diff --git a/src/autofit/afwarp.h b/src/autofit/afwarp.h
index d454dfb..9a2c9a4 100644
--- a/src/autofit/afwarp.h
+++ b/src/autofit/afwarp.h
@@ -4,7 +4,7 @@
*
* Auto-fitter warping algorithm (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,7 +53,7 @@
AF_GlyphHints hints,
AF_Dimension dim,
FT_Fixed *a_scale,
- FT_Fixed *a_delta );
+ FT_Pos *a_delta );
#endif
diff --git a/src/autofit/afwrtsys.h b/src/autofit/afwrtsys.h
index 20311da..5611cf4 100644
--- a/src/autofit/afwrtsys.h
+++ b/src/autofit/afwrtsys.h
@@ -4,7 +4,7 @@
*
* Auto-fitter writing systems (specification only).
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/autofit.c b/src/autofit/autofit.c
index 1fba44a..facfec1 100644
--- a/src/autofit/autofit.c
+++ b/src/autofit/autofit.c
@@ -4,7 +4,7 @@
*
* Auto-fitter module (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/module.mk b/src/autofit/module.mk
index ff05f83..cf77b16 100644
--- a/src/autofit/module.mk
+++ b/src/autofit/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/autofit/rules.mk b/src/autofit/rules.mk
index 7295dc0..c59da33 100644
--- a/src/autofit/rules.mk
+++ b/src/autofit/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2003-2018 by
+# Copyright (C) 2003-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/base/Jamfile b/src/base/Jamfile
index 5bee6e2..8e1ec42 100644
--- a/src/base/Jamfile
+++ b/src/base/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/base Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -22,6 +22,7 @@
ftcalc
ftcolor
ftdbgmem
+ fterrors
ftfntfmt
ftgloadr
fthash
@@ -48,8 +49,7 @@
# Add the optional/replaceable files.
#
{
- local _sources = ftapi
- ftbbox
+ local _sources = ftbbox
ftbdf
ftbitmap
ftcid
diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 22f4ec9..0dfba57 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -4,7 +4,7 @@
*
* Quick computation of advance widths (body).
*
- * Copyright 2008-2018 by
+ * Copyright (C) 2008-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftapi.c b/src/base/ftapi.c
deleted file mode 100644
index 2e6f942..0000000
--- a/src/base/ftapi.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
- *
- * ftapi.c
- *
- * The FreeType compatibility functions (body).
- *
- * Copyright 2002-2018 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 <ft2build.h>
-#include FT_LIST_H
-#include FT_OUTLINE_H
-#include FT_INTERNAL_OBJECTS_H
-#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_STREAM_H
-#include FT_TRUETYPE_TABLES_H
-#include FT_OUTLINE_H
-
-
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /**** ****/
- /**** ****/
- /**** C O M P A T I B I L I T Y ****/
- /**** ****/
- /**** ****/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
- /* backward compatibility API */
-
- FT_BASE_DEF( void )
- FT_New_Memory_Stream( FT_Library library,
- FT_Byte* base,
- FT_ULong size,
- FT_Stream stream )
- {
- FT_UNUSED( library );
-
- FT_Stream_OpenMemory( stream, base, size );
- }
-
-
- FT_BASE_DEF( FT_Error )
- FT_Seek_Stream( FT_Stream stream,
- FT_ULong pos )
- {
- return FT_Stream_Seek( stream, pos );
- }
-
-
- FT_BASE_DEF( FT_Error )
- FT_Skip_Stream( FT_Stream stream,
- FT_Long distance )
- {
- return FT_Stream_Skip( stream, distance );
- }
-
-
- FT_BASE_DEF( FT_Error )
- FT_Read_Stream( FT_Stream stream,
- FT_Byte* buffer,
- FT_ULong count )
- {
- return FT_Stream_Read( stream, buffer, count );
- }
-
-
- FT_BASE_DEF( FT_Error )
- FT_Read_Stream_At( FT_Stream stream,
- FT_ULong pos,
- FT_Byte* buffer,
- FT_ULong count )
- {
- return FT_Stream_ReadAt( stream, pos, buffer, count );
- }
-
-
- FT_BASE_DEF( FT_Error )
- FT_Extract_Frame( FT_Stream stream,
- FT_ULong count,
- FT_Byte** pbytes )
- {
- return FT_Stream_ExtractFrame( stream, count, pbytes );
- }
-
-
- FT_BASE_DEF( void )
- FT_Release_Frame( FT_Stream stream,
- FT_Byte** pbytes )
- {
- FT_Stream_ReleaseFrame( stream, pbytes );
- }
-
- FT_BASE_DEF( FT_Error )
- FT_Access_Frame( FT_Stream stream,
- FT_ULong count )
- {
- return FT_Stream_EnterFrame( stream, count );
- }
-
-
- FT_BASE_DEF( void )
- FT_Forget_Frame( FT_Stream stream )
- {
- FT_Stream_ExitFrame( stream );
- }
-
-
-/* END */
diff --git a/src/base/ftbase.c b/src/base/ftbase.c
index 5f7d818..fb8cbfc 100644
--- a/src/base/ftbase.c
+++ b/src/base/ftbase.c
@@ -4,7 +4,7 @@
*
* Single object library component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -23,6 +23,7 @@
#include "ftcalc.c"
#include "ftcolor.c"
#include "ftdbgmem.c"
+#include "fterrors.c"
#include "ftfntfmt.c"
#include "ftgloadr.c"
#include "fthash.c"
diff --git a/src/base/ftbase.h b/src/base/ftbase.h
index feb0f4e..35b1c47 100644
--- a/src/base/ftbase.h
+++ b/src/base/ftbase.h
@@ -4,7 +4,7 @@
*
* Private functions used in the `base' module (specification).
*
- * Copyright 2008-2018 by
+ * Copyright (C) 2008-2019 by
* David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftbbox.c b/src/base/ftbbox.c
index 86cefe4..a0b2c46 100644
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -4,7 +4,7 @@
*
* FreeType bbox computation (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -319,9 +319,9 @@
q2 = q2 + q1;
q4 = q4 + q3;
q3 = q3 + q2;
- q4 = ( q4 + q3 ) / 8;
- q3 = q3 / 4;
- q2 = q2 / 2;
+ q4 = ( q4 + q3 ) >> 3;
+ q3 = q3 >> 2;
+ q2 = q2 >> 1;
}
else /* second half */
{
@@ -330,9 +330,9 @@
q3 = q3 + q4;
q1 = q1 + q2;
q2 = q2 + q3;
- q1 = ( q1 + q2 ) / 8;
- q2 = q2 / 4;
- q3 = q3 / 2;
+ q1 = ( q1 + q2 ) >> 3;
+ q2 = q2 >> 2;
+ q3 = q3 >> 1;
}
/* check whether either end reached the maximum */
diff --git a/src/base/ftbdf.c b/src/base/ftbdf.c
index 8a27c84..c0fccd7 100644
--- a/src/base/ftbdf.c
+++ b/src/base/ftbdf.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing BDF-specific strings (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftbitmap.c b/src/base/ftbitmap.c
index dc28c40..0e0a76f 100644
--- a/src/base/ftbitmap.c
+++ b/src/base/ftbitmap.c
@@ -4,7 +4,7 @@
*
* FreeType utility functions for bitmaps (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -31,7 +31,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_bitmap
+#define FT_COMPONENT bitmap
static
@@ -811,7 +811,6 @@
FT_Vector source_offset;
FT_Vector target_offset;
- FT_Vector frac_offset;
FT_Bool free_source_bitmap = 0;
FT_Bool free_target_bitmap_on_error = 0;
@@ -845,16 +844,9 @@
if ( !( source_->width && source_->rows ) )
return FT_Err_Ok; /* nothing to do */
- /* we isolate a fractional shift of `source', */
- /* to be less than one pixel and always positive; */
- /* `source_offset' now holds full-pixel shift values */
+ /* assure integer pixel offsets */
source_offset.x = FT_PIX_FLOOR( source_offset_.x );
- frac_offset.x = source_offset_.x - source_offset.x;
-
source_offset.y = FT_PIX_FLOOR( source_offset_.y );
- frac_offset.y = source_offset_.y - source_offset.y;
-
- /* assure integer pixel offset for target bitmap */
target_offset.x = FT_PIX_FLOOR( atarget_offset->x );
target_offset.y = FT_PIX_FLOOR( atarget_offset->y );
@@ -906,13 +898,6 @@
target_ury = FT_LONG_MIN;
}
- /* move upper right corner up and to the right */
- /* if we have a fractional offset */
- if ( source_urx >= target_urx && frac_offset.x )
- source_urx += 64;
- if ( source_ury >= target_ury && frac_offset.y )
- source_ury += 64;
-
/* compute final bitmap dimensions */
final_llx = FT_MIN( source_llx, target_llx );
final_lly = FT_MIN( source_lly, target_lly );
@@ -929,10 +914,6 @@
source_urx / 64, source_ury / 64,
source_->width, source_->rows ));
- if ( frac_offset.x || frac_offset.y )
- FT_TRACE5(( " fractional offset: (%d/64, %d/64)\n",
- frac_offset.x, frac_offset.y ));
-
if ( target->width && target->rows )
FT_TRACE5(( " target bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
target_llx / 64, target_lly / 64,
@@ -941,12 +922,18 @@
else
FT_TRACE5(( " target bitmap: empty\n" ));
- FT_TRACE5(( " final bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
- final_llx / 64, final_lly / 64,
- final_urx / 64, final_ury / 64,
- final_width, final_rows ));
+ if ( final_width && final_rows )
+ FT_TRACE5(( " final bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+ final_llx / 64, final_lly / 64,
+ final_urx / 64, final_ury / 64,
+ final_width, final_rows ));
+ else
+ FT_TRACE5(( " final bitmap: empty\n" ));
#endif /* FT_DEBUG_LEVEL_TRACE */
+ if ( !( final_width && final_rows ) )
+ return FT_Err_Ok; /* nothing to do */
+
/* for blending, set offset vector of final bitmap */
/* temporarily to (0,0) */
source_llx -= final_llx;
@@ -990,6 +977,7 @@
pitch = target->pitch;
+
if ( pitch < 0 )
pitch = -pitch;
@@ -1070,8 +1058,6 @@
x = source_llx >> 6;
y = source_lly >> 6;
- /* XXX handle `frac_offset' */
-
/* the bitmap flow is from top to bottom, */
/* but y is measured from bottom to top */
if ( target->pitch < 0 )
diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c
index c96d5d2..315dc44 100644
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -4,7 +4,7 @@
*
* Arithmetic computations (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -65,7 +65,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_calc
+#define FT_COMPONENT calc
/* transfer sign, leaving a positive number; */
@@ -701,8 +701,8 @@
if ( !delta )
return FT_THROW( Invalid_Argument ); /* matrix can't be inverted */
- matrix->xy = - FT_DivFix( matrix->xy, delta );
- matrix->yx = - FT_DivFix( matrix->yx, delta );
+ matrix->xy = -FT_DivFix( matrix->xy, delta );
+ matrix->yx = -FT_DivFix( matrix->yx, delta );
xx = matrix->xx;
yy = matrix->yy;
@@ -784,6 +784,10 @@
nonzero_minval = val[i];
}
+ /* we only handle 32bit values */
+ if ( maxval > 0x7FFFFFFFL )
+ return 0;
+
if ( maxval > 23170 )
{
FT_Fixed scale = FT_DivFix( maxval, 23170 );
@@ -979,9 +983,13 @@
FT_Pos out_x,
FT_Pos out_y )
{
+ /* we silently ignore overflow errors since such large values */
+ /* lead to even more (harmless) rendering errors later on */
+
#ifdef FT_LONG64
- FT_Int64 delta = (FT_Int64)in_x * out_y - (FT_Int64)in_y * out_x;
+ FT_Int64 delta = SUB_INT64( MUL_INT64( in_x, out_y ),
+ MUL_INT64( in_y, out_x ) );
return ( delta > 0 ) - ( delta < 0 );
@@ -991,8 +999,6 @@
FT_Int result;
- /* we silently ignore overflow errors, since such large values */
- /* lead to even more (harmless) rendering errors later on */
if ( ADD_LONG( FT_ABS( in_x ), FT_ABS( out_y ) ) <= 131071L &&
ADD_LONG( FT_ABS( in_y ), FT_ABS( out_x ) ) <= 131071L )
{
diff --git a/src/base/ftcid.c b/src/base/ftcid.c
index 944e3e4..190b23f 100644
--- a/src/base/ftcid.c
+++ b/src/base/ftcid.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing CID font information.
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* Derek Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftcolor.c b/src/base/ftcolor.c
index 101e53e..8cb057a 100644
--- a/src/base/ftcolor.c
+++ b/src/base/ftcolor.c
@@ -4,7 +4,7 @@
*
* FreeType's glyph color management (body).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftdbgmem.c b/src/base/ftdbgmem.c
index 6e0a074..55cd269 100644
--- a/src/base/ftdbgmem.c
+++ b/src/base/ftdbgmem.c
@@ -4,7 +4,7 @@
*
* Memory debugger (body).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c
index 19b0058..ec72337 100644
--- a/src/base/ftdebug.c
+++ b/src/base/ftdebug.c
@@ -4,7 +4,7 @@
*
* Debugging and logging component (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -87,9 +87,19 @@
int line,
const char* file )
{
+#if 0
+ /* activating the code in this block makes FreeType very chatty */
+ fprintf( stderr,
+ "%s:%d: error 0x%02x: %s\n",
+ file,
+ line,
+ error,
+ FT_Error_String( error ) );
+#else
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
+#endif
return 0;
}
diff --git a/src/base/fterrors.c b/src/base/fterrors.c
new file mode 100644
index 0000000..84fe590
--- /dev/null
+++ b/src/base/fterrors.c
@@ -0,0 +1,46 @@
+/****************************************************************************
+ *
+ * fterrors.c
+ *
+ * FreeType API for error code handling.
+ *
+ * Copyright (C) 2018-2019 by
+ * Armin Hasitzka, 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 <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_ERRORS_H
+
+
+ /* documentation is in fterrors.h */
+
+ FT_EXPORT_DEF( const char* )
+ FT_Error_String( FT_Error error_code )
+ {
+ if ( error_code < 0 ||
+ error_code >= FT_ERR_CAT( FT_ERR_PREFIX, Max ) )
+ return NULL;
+
+#if defined( FT_CONFIG_OPTION_ERROR_STRINGS ) || \
+ defined( FT_DEBUG_LEVEL_ERROR )
+
+#undef FTERRORS_H_
+#define FT_ERROR_START_LIST switch ( FT_ERROR_BASE( error_code ) ) {
+#define FT_ERRORDEF( e, v, s ) case v: return s;
+#define FT_ERROR_END_LIST }
+
+#include FT_ERRORS_H
+
+#endif /* defined( FT_CONFIG_OPTION_ERROR_STRINGS ) || ... */
+
+ return NULL;
+ }
diff --git a/src/base/ftfntfmt.c b/src/base/ftfntfmt.c
index 610b6cf..54ba537 100644
--- a/src/base/ftfntfmt.c
+++ b/src/base/ftfntfmt.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for font formats (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftfstype.c b/src/base/ftfstype.c
index 74e9e56..45e2d80 100644
--- a/src/base/ftfstype.c
+++ b/src/base/ftfstype.c
@@ -4,7 +4,7 @@
*
* FreeType utility file to access FSType data (body).
*
- * Copyright 2008-2018 by
+ * Copyright (C) 2008-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftgasp.c b/src/base/ftgasp.c
index 15e0ef0..720fb11 100644
--- a/src/base/ftgasp.c
+++ b/src/base/ftgasp.c
@@ -4,7 +4,7 @@
*
* Access of TrueType's `gasp' table (body).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftgloadr.c b/src/base/ftgloadr.c
index 475d5cc..bfeed46 100644
--- a/src/base/ftgloadr.c
+++ b/src/base/ftgloadr.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph loader (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
@@ -23,7 +23,7 @@
#include FT_INTERNAL_OBJECTS_H
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gloader
+#define FT_COMPONENT gloader
/*************************************************************************/
@@ -361,46 +361,4 @@
}
- FT_BASE_DEF( FT_Error )
- FT_GlyphLoader_CopyPoints( FT_GlyphLoader target,
- FT_GlyphLoader source )
- {
- FT_Error error;
- FT_UInt num_points = (FT_UInt)source->base.outline.n_points;
- FT_UInt num_contours = (FT_UInt)source->base.outline.n_contours;
-
-
- error = FT_GlyphLoader_CheckPoints( target, num_points, num_contours );
- if ( !error )
- {
- FT_Outline* out = &target->base.outline;
- FT_Outline* in = &source->base.outline;
-
-
- FT_ARRAY_COPY( out->points, in->points,
- num_points );
- FT_ARRAY_COPY( out->tags, in->tags,
- num_points );
- FT_ARRAY_COPY( out->contours, in->contours,
- num_contours );
-
- /* do we need to copy the extra points? */
- if ( target->use_extra && source->use_extra )
- {
- FT_ARRAY_COPY( target->base.extra_points, source->base.extra_points,
- num_points );
- FT_ARRAY_COPY( target->base.extra_points2, source->base.extra_points2,
- num_points );
- }
-
- out->n_points = (short)num_points;
- out->n_contours = (short)num_contours;
-
- FT_GlyphLoader_Adjust_Points( target );
- }
-
- return error;
- }
-
-
/* END */
diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c
index 8bc86a5..e6b1327 100644
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -4,7 +4,7 @@
*
* FreeType convenience functions to handle glyphs (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -44,7 +44,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_glyph
+#define FT_COMPONENT glyph
/*************************************************************************/
@@ -76,7 +76,7 @@
/* do lazy copying whenever possible */
if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
{
- glyph->bitmap = slot->bitmap;
+ glyph->bitmap = slot->bitmap;
slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
}
else
@@ -400,8 +400,8 @@
FT_Get_Glyph( FT_GlyphSlot slot,
FT_Glyph *aglyph )
{
- FT_Error error;
- FT_Glyph glyph;
+ FT_Error error;
+ FT_Glyph glyph;
if ( !slot )
@@ -513,8 +513,8 @@
{
acbox->xMin = FT_PIX_FLOOR( acbox->xMin );
acbox->yMin = FT_PIX_FLOOR( acbox->yMin );
- acbox->xMax = FT_PIX_CEIL( acbox->xMax );
- acbox->yMax = FT_PIX_CEIL( acbox->yMax );
+ acbox->xMax = FT_PIX_CEIL_LONG( acbox->xMax );
+ acbox->yMax = FT_PIX_CEIL_LONG( acbox->yMax );
}
/* convert to integer pixels if needed */
diff --git a/src/base/ftgxval.c b/src/base/ftgxval.c
index f3961e2..0677d26 100644
--- a/src/base/ftgxval.c
+++ b/src/base/ftgxval.c
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO, Redhat K.K,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/base/ftinit.c b/src/base/ftinit.c
index e0f2ccd..c73cd78 100644
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -4,7 +4,7 @@
*
* FreeType initialization layer (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -51,7 +51,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_init
+#define FT_COMPONENT init
#undef FT_USE_MODULE
@@ -176,6 +176,9 @@
module_name,
property_name,
property_value );
+
+ if ( !*p )
+ break;
}
}
diff --git a/src/base/ftlcdfil.c b/src/base/ftlcdfil.c
index 65eff93..d9f4af4 100644
--- a/src/base/ftlcdfil.c
+++ b/src/base/ftlcdfil.c
@@ -4,7 +4,7 @@
*
* FreeType API for color filtering of subpixel bitmap glyphs (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -77,13 +77,13 @@
/* FIR filter used by the default and light filters */
FT_BASE_DEF( void )
ft_lcd_filter_fir( FT_Bitmap* bitmap,
- FT_Render_Mode mode,
FT_LcdFiveTapFilter weights )
{
FT_UInt width = (FT_UInt)bitmap->width;
FT_UInt height = (FT_UInt)bitmap->rows;
FT_Int pitch = bitmap->pitch;
FT_Byte* origin = bitmap->buffer;
+ FT_Byte mode = bitmap->pixel_mode;
/* take care of bitmap flow */
@@ -91,7 +91,7 @@
origin += pitch * (FT_Int)( height - 1 );
/* horizontal in-place FIR filter */
- if ( mode == FT_RENDER_MODE_LCD && width >= 2 )
+ if ( mode == FT_PIXEL_MODE_LCD && width >= 2 )
{
FT_Byte* line = origin;
@@ -134,7 +134,7 @@
}
/* vertical in-place FIR filter */
- else if ( mode == FT_RENDER_MODE_LCD_V && height >= 2 )
+ else if ( mode == FT_PIXEL_MODE_LCD_V && height >= 2 )
{
FT_Byte* column = origin;
@@ -183,13 +183,13 @@
/* intra-pixel filter used by the legacy filter */
static void
_ft_lcd_filter_legacy( FT_Bitmap* bitmap,
- FT_Render_Mode mode,
FT_Byte* weights )
{
FT_UInt width = (FT_UInt)bitmap->width;
FT_UInt height = (FT_UInt)bitmap->rows;
FT_Int pitch = bitmap->pitch;
FT_Byte* origin = bitmap->buffer;
+ FT_Byte mode = bitmap->pixel_mode;
static const unsigned int filters[3][3] =
{
@@ -206,7 +206,7 @@
origin += pitch * (FT_Int)( height - 1 );
/* horizontal in-place intra-pixel filter */
- if ( mode == FT_RENDER_MODE_LCD && width >= 3 )
+ if ( mode == FT_PIXEL_MODE_LCD && width >= 3 )
{
FT_Byte* line = origin;
@@ -243,7 +243,7 @@
}
}
}
- else if ( mode == FT_RENDER_MODE_LCD_V && height >= 3 )
+ else if ( mode == FT_PIXEL_MODE_LCD_V && height >= 3 )
{
FT_Byte* column = origin;
diff --git a/src/base/ftmac.c b/src/base/ftmac.c
index 79e3fe4..5f23cee 100644
--- a/src/base/ftmac.c
+++ b/src/base/ftmac.c
@@ -8,7 +8,7 @@
* This file is for Mac OS X only; see builds/mac/ftoldmac.c for
* classic platforms built by MPW.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftmm.c b/src/base/ftmm.c
index b0d9d4b..ba9e67f 100644
--- a/src/base/ftmm.c
+++ b/src/base/ftmm.c
@@ -4,7 +4,7 @@
*
* Multiple Master font support (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -32,7 +32,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_mm
+#define FT_COMPONENT mm
static FT_Error
@@ -202,6 +202,67 @@
/* documentation is in ftmm.h */
FT_EXPORT_DEF( FT_Error )
+ FT_Set_MM_WeightVector( FT_Face face,
+ FT_UInt len,
+ FT_Fixed* weightvector )
+ {
+ FT_Error error;
+ FT_Service_MultiMasters service;
+
+
+ /* check of `face' delayed to `ft_face_get_mm_service' */
+
+ if ( len && !weightvector )
+ return FT_THROW( Invalid_Argument );
+
+ error = ft_face_get_mm_service( face, &service );
+ if ( !error )
+ {
+ error = FT_ERR( Invalid_Argument );
+ if ( service->set_mm_weightvector )
+ error = service->set_mm_weightvector( face, len, weightvector );
+ }
+
+ /* enforce recomputation of auto-hinting data */
+ if ( !error && face->autohint.finalizer )
+ {
+ face->autohint.finalizer( face->autohint.data );
+ face->autohint.data = NULL;
+ }
+
+ return error;
+ }
+
+
+ FT_EXPORT_DEF( FT_Error )
+ FT_Get_MM_WeightVector( FT_Face face,
+ FT_UInt* len,
+ FT_Fixed* weightvector )
+ {
+ FT_Error error;
+ FT_Service_MultiMasters service;
+
+
+ /* check of `face' delayed to `ft_face_get_mm_service' */
+
+ if ( len && !weightvector )
+ return FT_THROW( Invalid_Argument );
+
+ error = ft_face_get_mm_service( face, &service );
+ if ( !error )
+ {
+ error = FT_ERR( Invalid_Argument );
+ if ( service->get_mm_weightvector )
+ error = service->get_mm_weightvector( face, len, weightvector );
+ }
+
+ return error;
+ }
+
+
+ /* documentation is in ftmm.h */
+
+ FT_EXPORT_DEF( FT_Error )
FT_Set_Var_Design_Coordinates( FT_Face face,
FT_UInt num_coords,
FT_Fixed* coords )
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 2b44405..e301f8f 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4,7 +4,7 @@
*
* The FreeType private base classes (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -278,7 +278,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_objs
+#define FT_COMPONENT objs
/*************************************************************************/
@@ -342,7 +342,9 @@
}
- FT_BASE_DEF( void )
+ /* overflow-resistant presetting of bitmap position and dimensions; */
+ /* also check whether the size is too large for rendering */
+ FT_BASE_DEF( FT_Bool )
ft_glyphslot_preset_bitmap( FT_GlyphSlot slot,
FT_Render_Mode mode,
const FT_Vector* origin )
@@ -352,15 +354,15 @@
FT_Pixel_Mode pixel_mode;
- FT_BBox cbox;
+ FT_BBox cbox, pbox;
FT_Pos x_shift = 0;
FT_Pos y_shift = 0;
FT_Pos x_left, y_top;
FT_Pos width, height, pitch;
- if ( slot->internal && ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
- return;
+ if ( slot->format != FT_GLYPH_FORMAT_OUTLINE )
+ return 1;
if ( origin )
{
@@ -372,70 +374,89 @@
/* taking into account the origin shift */
FT_Outline_Get_CBox( outline, &cbox );
- cbox.xMin += x_shift;
- cbox.yMin += y_shift;
- cbox.xMax += x_shift;
- cbox.yMax += y_shift;
+ /* rough estimate of pixel box */
+ pbox.xMin = ( cbox.xMin >> 6 ) + ( x_shift >> 6 );
+ pbox.yMin = ( cbox.yMin >> 6 ) + ( y_shift >> 6 );
+ pbox.xMax = ( cbox.xMax >> 6 ) + ( x_shift >> 6 );
+ pbox.yMax = ( cbox.yMax >> 6 ) + ( y_shift >> 6 );
+
+ /* tiny remainder box */
+ cbox.xMin = ( cbox.xMin & 63 ) + ( x_shift & 63 );
+ cbox.yMin = ( cbox.yMin & 63 ) + ( y_shift & 63 );
+ cbox.xMax = ( cbox.xMax & 63 ) + ( x_shift & 63 );
+ cbox.yMax = ( cbox.yMax & 63 ) + ( y_shift & 63 );
switch ( mode )
{
case FT_RENDER_MODE_MONO:
pixel_mode = FT_PIXEL_MODE_MONO;
#if 1
- /* undocumented but confirmed: bbox values get rounded */
- /* unless the rounded box can collapse for a narrow glyph */
- if ( cbox.xMax - cbox.xMin < 64 )
+ /* x */
+
+ /* undocumented but confirmed: bbox values get rounded; */
+ /* we do asymmetric rounding so that the center of a pixel */
+ /* gets always included */
+
+ pbox.xMin += ( cbox.xMin + 31 ) >> 6;
+ pbox.xMax += ( cbox.xMax + 32 ) >> 6;
+
+ /* if the bbox collapsed, we add a pixel based on the total */
+ /* rounding remainder to cover most of the original cbox */
+
+ if ( pbox.xMin == pbox.xMax )
{
- cbox.xMin = ( cbox.xMin + cbox.xMax ) / 2 - 32;
- cbox.xMax = cbox.xMin + 64;
+ if ( ( ( cbox.xMin + 31 ) & 63 ) - 31 +
+ ( ( cbox.xMax + 32 ) & 63 ) - 32 < 0 )
+ pbox.xMin -= 1;
+ else
+ pbox.xMax += 1;
}
- cbox.xMin = FT_PIX_ROUND_LONG( cbox.xMin );
- cbox.xMax = FT_PIX_ROUND_LONG( cbox.xMax );
+ /* y */
- if ( cbox.yMax - cbox.yMin < 64 )
+ pbox.yMin += ( cbox.yMin + 31 ) >> 6;
+ pbox.yMax += ( cbox.yMax + 32 ) >> 6;
+
+ if ( pbox.yMin == pbox.yMax )
{
- cbox.yMin = ( cbox.yMin + cbox.yMax ) / 2 - 32;
- cbox.yMax = cbox.yMin + 64;
+ if ( ( ( cbox.yMin + 31 ) & 63 ) - 31 +
+ ( ( cbox.yMax + 32 ) & 63 ) - 32 < 0 )
+ pbox.yMin -= 1;
+ else
+ pbox.yMax += 1;
}
- cbox.yMin = FT_PIX_ROUND_LONG( cbox.yMin );
- cbox.yMax = FT_PIX_ROUND_LONG( cbox.yMax );
-
break;
#else
- goto Round;
+ goto Adjust;
#endif
case FT_RENDER_MODE_LCD:
pixel_mode = FT_PIXEL_MODE_LCD;
ft_lcd_padding( &cbox, slot, mode );
- goto Round;
+ goto Adjust;
case FT_RENDER_MODE_LCD_V:
pixel_mode = FT_PIXEL_MODE_LCD_V;
ft_lcd_padding( &cbox, slot, mode );
- goto Round;
+ goto Adjust;
case FT_RENDER_MODE_NORMAL:
case FT_RENDER_MODE_LIGHT:
default:
pixel_mode = FT_PIXEL_MODE_GRAY;
- Round:
- cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
- cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
- cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
- cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
+ Adjust:
+ pbox.xMin += cbox.xMin >> 6;
+ pbox.yMin += cbox.yMin >> 6;
+ pbox.xMax += ( cbox.xMax + 63 ) >> 6;
+ pbox.yMax += ( cbox.yMax + 63 ) >> 6;
}
- x_shift = SUB_LONG( x_shift, cbox.xMin );
- y_shift = SUB_LONG( y_shift, cbox.yMin );
+ x_left = pbox.xMin;
+ y_top = pbox.yMax;
- x_left = cbox.xMin >> 6;
- y_top = cbox.yMax >> 6;
-
- width = ( (FT_ULong)cbox.xMax - (FT_ULong)cbox.xMin ) >> 6;
- height = ( (FT_ULong)cbox.yMax - (FT_ULong)cbox.yMin ) >> 6;
+ width = pbox.xMax - pbox.xMin;
+ height = pbox.yMax - pbox.yMin;
switch ( pixel_mode )
{
@@ -465,6 +486,16 @@
bitmap->width = (unsigned int)width;
bitmap->rows = (unsigned int)height;
bitmap->pitch = pitch;
+
+ if ( pbox.xMin < -0x8000 || pbox.xMax > 0x7FFF ||
+ pbox.yMin < -0x8000 || pbox.yMax > 0x7FFF )
+ {
+ FT_TRACE3(( "ft_glyphslot_preset_bitmap: [%ld %ld %ld %ld]\n",
+ pbox.xMin, pbox.yMin, pbox.xMax, pbox.yMax ));
+ return 1;
+ }
+
+ return 0;
}
@@ -813,7 +844,7 @@
* - Do only auto-hinting if we have
*
* - a hinter module,
- * - a scalable font format dealing with outlines,
+ * - a scalable font,
* - not a tricky font, and
* - no transforms except simple slants and/or rotations by
* integer multiples of 90 degrees.
@@ -831,8 +862,7 @@
if ( hinter &&
!( load_flags & FT_LOAD_NO_HINTING ) &&
!( load_flags & FT_LOAD_NO_AUTOHINT ) &&
- FT_DRIVER_IS_SCALABLE( driver ) &&
- FT_DRIVER_USES_OUTLINES( driver ) &&
+ FT_IS_SCALABLE( face ) &&
!FT_IS_TRICKY( face ) &&
( ( load_flags & FT_LOAD_IGNORE_TRANSFORM ) ||
( face->internal->transform_matrix.yx == 0 &&
@@ -852,7 +882,7 @@
/* only the new Adobe engine (for both CFF and Type 1) is `light'; */
/* we use `strstr' to catch both `Type 1' and `CID Type 1' */
is_light_type1 =
- ft_strstr( FT_Get_Font_Format( face ), "Type 1" ) != NULL &&
+ ft_strstr( FT_Get_Font_Format( face ), "Type 1" ) != NULL &&
((PS_Driver)driver)->hinting_engine == FT_HINTING_ADOBE;
/* the check for `num_locations' assures that we actually */
@@ -932,8 +962,9 @@
#ifdef GRID_FIT_METRICS
if ( !( load_flags & FT_LOAD_NO_HINTING ) )
- ft_glyphslot_grid_fit_metrics( slot,
- FT_BOOL( load_flags & FT_LOAD_VERTICAL_LAYOUT ) );
+ ft_glyphslot_grid_fit_metrics(
+ slot,
+ FT_BOOL( load_flags & FT_LOAD_VERTICAL_LAYOUT ) );
#endif
}
}
@@ -2189,7 +2220,7 @@
{
#undef FT_COMPONENT
-#define FT_COMPONENT trace_raccess
+#define FT_COMPONENT raccess
FT_Memory memory = library->memory;
FT_Error error = FT_ERR( Unknown_File_Format );
@@ -2267,7 +2298,7 @@
return error;
#undef FT_COMPONENT
-#define FT_COMPONENT trace_objs
+#define FT_COMPONENT objs
}
@@ -2295,7 +2326,7 @@
{
#undef FT_COMPONENT
-#define FT_COMPONENT trace_raccess
+#define FT_COMPONENT raccess
#ifdef FT_DEBUG_LEVEL_TRACE
FT_TRACE3(( "Try as dfont: " ));
@@ -2308,7 +2339,7 @@
FT_TRACE3(( "%s\n", error ? "failed" : "successful" ));
#undef FT_COMPONENT
-#define FT_COMPONENT trace_objs
+#define FT_COMPONENT objs
}
@@ -2706,8 +2737,8 @@
/* close the attached stream */
FT_Stream_Free( stream,
- (FT_Bool)( parameters->stream &&
- ( parameters->flags & FT_OPEN_STREAM ) ) );
+ FT_BOOL( parameters->stream &&
+ ( parameters->flags & FT_OPEN_STREAM ) ) );
Exit:
return error;
@@ -4028,8 +4059,8 @@
/* documentation is in freetype.h */
FT_EXPORT_DEF( FT_UInt )
- FT_Get_Name_Index( FT_Face face,
- FT_String* glyph_name )
+ FT_Get_Name_Index( FT_Face face,
+ const FT_String* glyph_name )
{
FT_UInt result = 0;
@@ -4617,7 +4648,7 @@
#ifdef FT_DEBUG_LEVEL_TRACE
#undef FT_COMPONENT
-#define FT_COMPONENT trace_checksum
+#define FT_COMPONENT checksum
/*
* Computing the MD5 checksum is expensive, unnecessarily distorting a
@@ -4731,7 +4762,7 @@
}
#undef FT_COMPONENT
-#define FT_COMPONENT trace_objs
+#define FT_COMPONENT objs
#endif /* FT_DEBUG_LEVEL_TRACE */
@@ -5124,9 +5155,9 @@
service = (FT_Service_Properties)interface;
if ( set )
- missing_func = (FT_Bool)( !service->set_property );
+ missing_func = FT_BOOL( !service->set_property );
else
- missing_func = (FT_Bool)( !service->get_property );
+ missing_func = FT_BOOL( !service->get_property );
if ( missing_func )
{
diff --git a/src/base/ftotval.c b/src/base/ftotval.c
index 50825bd..007576c 100644
--- a/src/base/ftotval.c
+++ b/src/base/ftotval.c
@@ -4,7 +4,7 @@
*
* FreeType API for validating OpenType tables (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c
index 611b4f6..0e2ba34 100644
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -4,7 +4,7 @@
*
* FreeType outline management (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -16,13 +16,6 @@
*/
- /**************************************************************************
- *
- * All functions are declared in freetype.h.
- *
- */
-
-
#include <ft2build.h>
#include FT_OUTLINE_H
#include FT_INTERNAL_OBJECTS_H
@@ -38,7 +31,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_outline
+#define FT_COMPONENT outline
static
@@ -53,8 +46,7 @@
void* user )
{
#undef SCALED
-#define SCALED( x ) ( ( (x) < 0 ? -( -(x) << shift ) \
- : ( (x) << shift ) ) - delta )
+#define SCALED( x ) ( (x) * ( 1L << shift ) - delta )
FT_Vector v_last;
FT_Vector v_control;
@@ -296,14 +288,22 @@
}
- FT_EXPORT_DEF( FT_Error )
- FT_Outline_New_Internal( FT_Memory memory,
- FT_UInt numPoints,
- FT_Int numContours,
- FT_Outline *anoutline )
- {
- FT_Error error;
+ /* documentation is in ftoutln.h */
+ FT_EXPORT_DEF( FT_Error )
+ FT_Outline_New( FT_Library library,
+ FT_UInt numPoints,
+ FT_Int numContours,
+ FT_Outline *anoutline )
+ {
+ FT_Error error;
+ FT_Memory memory;
+
+
+ if ( !library )
+ return FT_THROW( Invalid_Library_Handle );
+
+ memory = library->memory;
if ( !anoutline || !memory )
return FT_THROW( Invalid_Argument );
@@ -330,7 +330,7 @@
Fail:
anoutline->flags |= FT_OUTLINE_OWNER;
- FT_Outline_Done_Internal( memory, anoutline );
+ FT_Outline_Done( library, anoutline );
return error;
}
@@ -339,22 +339,6 @@
/* documentation is in ftoutln.h */
FT_EXPORT_DEF( FT_Error )
- FT_Outline_New( FT_Library library,
- FT_UInt numPoints,
- FT_Int numContours,
- FT_Outline *anoutline )
- {
- if ( !library )
- return FT_THROW( Invalid_Library_Handle );
-
- return FT_Outline_New_Internal( library->memory, numPoints,
- numContours, anoutline );
- }
-
-
- /* documentation is in ftoutln.h */
-
- FT_EXPORT_DEF( FT_Error )
FT_Outline_Check( FT_Outline* outline )
{
if ( outline )
@@ -436,13 +420,23 @@
}
+ /* documentation is in ftoutln.h */
+
FT_EXPORT_DEF( FT_Error )
- FT_Outline_Done_Internal( FT_Memory memory,
- FT_Outline* outline )
+ FT_Outline_Done( FT_Library library,
+ FT_Outline* outline )
{
+ FT_Memory memory;
+
+
+ if ( !library )
+ return FT_THROW( Invalid_Library_Handle );
+
if ( !outline )
return FT_THROW( Invalid_Outline );
+ memory = library->memory;
+
if ( !memory )
return FT_THROW( Invalid_Argument );
@@ -460,21 +454,6 @@
/* documentation is in ftoutln.h */
- FT_EXPORT_DEF( FT_Error )
- FT_Outline_Done( FT_Library library,
- FT_Outline* outline )
- {
- /* check for valid `outline' in FT_Outline_Done_Internal() */
-
- if ( !library )
- return FT_THROW( Invalid_Library_Handle );
-
- return FT_Outline_Done_Internal( library->memory, outline );
- }
-
-
- /* documentation is in ftoutln.h */
-
FT_EXPORT_DEF( void )
FT_Outline_Get_CBox( const FT_Outline* outline,
FT_BBox *acbox )
@@ -641,6 +620,16 @@
params->source = (void*)outline;
+ /* preset clip_box for direct mode */
+ if ( params->flags & FT_RASTER_FLAG_DIRECT &&
+ !( params->flags & FT_RASTER_FLAG_CLIP ) )
+ {
+ params->clip_box.xMin = cbox.xMin >> 6;
+ params->clip_box.yMin = cbox.yMin >> 6;
+ params->clip_box.xMax = ( cbox.xMax + 63 ) >> 6;
+ params->clip_box.yMax = ( cbox.yMax + 63 ) >> 6;
+ }
+
error = FT_ERR( Cannot_Render_Glyph );
while ( renderer )
{
@@ -1096,7 +1085,8 @@
v_cur.y = points[n].y >> yshift;
area = ADD_LONG( area,
- ( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x ) );
+ MUL_LONG( v_cur.y - v_prev.y,
+ v_cur.x + v_prev.x ) );
v_prev = v_cur;
}
diff --git a/src/base/ftpatent.c b/src/base/ftpatent.c
index 24331c1..020f464 100644
--- a/src/base/ftpatent.c
+++ b/src/base/ftpatent.c
@@ -5,7 +5,7 @@
* FreeType API for checking patented TrueType bytecode instructions
* (body). Obsolete, retained for backward compatibility.
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftpfr.c b/src/base/ftpfr.c
index 2761ad0..aeff1db 100644
--- a/src/base/ftpfr.c
+++ b/src/base/ftpfr.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing PFR-specific data (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftpsprop.c b/src/base/ftpsprop.c
index 9c5344a..52b9d45 100644
--- a/src/base/ftpsprop.c
+++ b/src/base/ftpsprop.c
@@ -5,7 +5,7 @@
* Get and set properties of PostScript drivers (body).
* See `ftdriver.h' for available properties.
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -32,7 +32,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_psprops
+#define FT_COMPONENT psprops
FT_BASE_CALLBACK_DEF( FT_Error )
diff --git a/src/base/ftrfork.c b/src/base/ftrfork.c
index c61765b..73b7eb0 100644
--- a/src/base/ftrfork.c
+++ b/src/base/ftrfork.c
@@ -4,7 +4,7 @@
*
* Embedded resource forks accessor (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO and Redhat K.K.
*
* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are
@@ -32,7 +32,7 @@
#include "ftbase.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_raccess
+#define FT_COMPONENT raccess
/*************************************************************************/
diff --git a/src/base/ftsnames.c b/src/base/ftsnames.c
index 9135e48..7ab3fe3 100644
--- a/src/base/ftsnames.c
+++ b/src/base/ftsnames.c
@@ -7,7 +7,7 @@
*
* This is _not_ used to retrieve glyph names!
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftstream.c b/src/base/ftstream.c
index 9c8cab3..4b0890d 100644
--- a/src/base/ftstream.c
+++ b/src/base/ftstream.c
@@ -4,7 +4,7 @@
*
* I/O stream support (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_stream
+#define FT_COMPONENT stream
FT_BASE_DEF( void )
@@ -222,11 +222,11 @@
#ifdef FT_DEBUG_MEMORY
ft_mem_free( memory, *pbytes );
- *pbytes = NULL;
#else
FT_FREE( *pbytes );
#endif
}
+
*pbytes = NULL;
}
@@ -239,6 +239,8 @@
FT_ULong read_bytes;
+ FT_TRACE7(( "FT_Stream_EnterFrame: %ld bytes\n", count ));
+
/* check for nested frame access */
FT_ASSERT( stream && stream->cursor == 0 );
@@ -282,6 +284,7 @@
FT_FREE( stream->base );
error = FT_THROW( Invalid_Stream_Operation );
}
+
stream->cursor = stream->base;
stream->limit = stream->cursor + count;
stream->pos += read_bytes;
@@ -322,13 +325,16 @@
/* In this case, the loader code handles the 0-length table */
/* gracefully; however, stream.cursor is really set to 0 by the */
/* FT_Stream_EnterFrame() call, and this is not an error. */
- /* */
+
+ FT_TRACE7(( "FT_Stream_ExitFrame\n" ));
+
FT_ASSERT( stream );
if ( stream->read )
{
FT_Memory memory = stream->memory;
+
#ifdef FT_DEBUG_MEMORY
ft_mem_free( memory, stream->base );
stream->base = NULL;
@@ -336,6 +342,7 @@
FT_FREE( stream->base );
#endif
}
+
stream->cursor = NULL;
stream->limit = NULL;
}
diff --git a/src/base/ftstroke.c b/src/base/ftstroke.c
index 4455e7c..1b2c0f6 100644
--- a/src/base/ftstroke.c
+++ b/src/base/ftstroke.c
@@ -4,7 +4,7 @@
*
* FreeType path stroker (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -86,16 +86,18 @@
base[4].x = base[2].x;
- b = base[1].x;
- a = base[3].x = ( base[2].x + b ) / 2;
- b = base[1].x = ( base[0].x + b ) / 2;
- base[2].x = ( a + b ) / 2;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ base[3].x = b >> 1;
+ base[2].x = ( a + b ) >> 2;
+ base[1].x = a >> 1;
base[4].y = base[2].y;
- b = base[1].y;
- a = base[3].y = ( base[2].y + b ) / 2;
- b = base[1].y = ( base[0].y + b ) / 2;
- base[2].y = ( a + b ) / 2;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ base[3].y = b >> 1;
+ base[2].y = ( a + b ) >> 2;
+ base[1].y = a >> 1;
}
@@ -153,28 +155,32 @@
static void
ft_cubic_split( FT_Vector* base )
{
- FT_Pos a, b, c, d;
+ FT_Pos a, b, c;
base[6].x = base[3].x;
- c = base[1].x;
- d = base[2].x;
- base[1].x = a = ( base[0].x + c ) / 2;
- base[5].x = b = ( base[3].x + d ) / 2;
- c = ( c + d ) / 2;
- base[2].x = a = ( a + c ) / 2;
- base[4].x = b = ( b + c ) / 2;
- base[3].x = ( a + b ) / 2;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ c = base[2].x + base[3].x;
+ base[5].x = c >> 1;
+ c += b;
+ base[4].x = c >> 2;
+ base[1].x = a >> 1;
+ a += b;
+ base[2].x = a >> 2;
+ base[3].x = ( a + c ) >> 3;
base[6].y = base[3].y;
- c = base[1].y;
- d = base[2].y;
- base[1].y = a = ( base[0].y + c ) / 2;
- base[5].y = b = ( base[3].y + d ) / 2;
- c = ( c + d ) / 2;
- base[2].y = a = ( a + c ) / 2;
- base[4].y = b = ( b + c ) / 2;
- base[3].y = ( a + b ) / 2;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ c = base[2].y + base[3].y;
+ base[5].y = c >> 1;
+ c += b;
+ base[4].y = c >> 2;
+ base[1].y = a >> 1;
+ a += b;
+ base[2].y = a >> 2;
+ base[3].y = ( a + c ) >> 3;
}
@@ -367,6 +373,7 @@
/* it contains the `adjusted' starting coordinates */
border->num_points = --count;
border->points[start] = border->points[count];
+ border->tags[start] = border->tags[count];
if ( reverse )
{
@@ -431,8 +438,8 @@
}
else
{
- /* don't add zero-length lineto */
- if ( border->num_points > 0 &&
+ /* don't add zero-length lineto, but always add moveto */
+ if ( border->num_points > (FT_UInt)border->start &&
FT_IS_SMALL( border->points[border->num_points - 1].x - to->x ) &&
FT_IS_SMALL( border->points[border->num_points - 1].y - to->y ) )
return error;
diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c
index 5539105..f87ed65 100644
--- a/src/base/ftsynth.c
+++ b/src/base/ftsynth.c
@@ -4,7 +4,7 @@
*
* FreeType synthesizing code for emboldening and slanting (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -31,7 +31,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_synth
+#define FT_COMPONENT synth
/*************************************************************************/
diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c
index d761ad9..f92b3a0 100644
--- a/src/base/ftsystem.c
+++ b/src/base/ftsystem.c
@@ -4,7 +4,7 @@
*
* ANSI-specific FreeType low-level system interface (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -154,7 +154,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_io
+#define FT_COMPONENT io
/* We use the macro STREAM_FILE for convenience to extract the */
/* system-specific stream handle from a given FreeType stream object */
diff --git a/src/base/fttrigon.c b/src/base/fttrigon.c
index d375bd7..3872197 100644
--- a/src/base/fttrigon.c
+++ b/src/base/fttrigon.c
@@ -4,7 +4,7 @@
*
* FreeType trigonometric functions (body).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/fttype1.c b/src/base/fttype1.c
index 229b0ac..26d4f1c 100644
--- a/src/base/fttype1.c
+++ b/src/base/fttype1.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for PS names support (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftutil.c b/src/base/ftutil.c
index eced7bb..92bd857 100644
--- a/src/base/ftutil.c
+++ b/src/base/ftutil.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for memory and list management (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -30,7 +30,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_memory
+#define FT_COMPONENT memory
/*************************************************************************/
@@ -236,7 +236,7 @@
/*************************************************************************/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_list
+#define FT_COMPONENT list
/* documentation is in ftlist.h */
diff --git a/src/base/ftver.rc b/src/base/ftver.rc
index b0b6e00..1354497 100644
--- a/src/base/ftver.rc
+++ b/src/base/ftver.rc
@@ -4,7 +4,7 @@
/* */
/* FreeType VERSIONINFO resource for Windows DLLs. */
/* */
-/* Copyright 2018 by */
+/* Copyright (C) 2018-2019 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -18,8 +18,8 @@
#include<windows.h>
-#define FT_VERSION 2,9,1,0
-#define FT_VERSION_STR "2.9.1"
+#define FT_VERSION 2,10,1,0
+#define FT_VERSION_STR "2.10.1"
VS_VERSION_INFO VERSIONINFO
FILEVERSION FT_VERSION
@@ -45,7 +45,7 @@
VALUE "FileVersion", FT_VERSION_STR
VALUE "ProductName", "FreeType"
VALUE "ProductVersion", FT_VERSION_STR
- VALUE "LegalCopyright", "\251 2018 The FreeType Project www.freetype.org. All rights reserved."
+ VALUE "LegalCopyright", "\251 2018-2019 The FreeType Project www.freetype.org. All rights reserved."
VALUE "InternalName", "freetype"
VALUE "OriginalFilename", FT_FILENAME
END
diff --git a/src/base/ftwinfnt.c b/src/base/ftwinfnt.c
index bd6548f..59daa77 100644
--- a/src/base/ftwinfnt.c
+++ b/src/base/ftwinfnt.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing Windows FNT specific info (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/rules.mk b/src/base/rules.mk
index 214fd77..4b24c6d 100644
--- a/src/base/rules.mk
+++ b/src/base/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -40,6 +40,7 @@
$(BASE_DIR)/ftcalc.c \
$(BASE_DIR)/ftcolor.c \
$(BASE_DIR)/ftdbgmem.c \
+ $(BASE_DIR)/fterrors.c \
$(BASE_DIR)/ftfntfmt.c \
$(BASE_DIR)/ftgloadr.c \
$(BASE_DIR)/fthash.c \
diff --git a/src/bdf/Jamfile b/src/bdf/Jamfile
index d9e441c..a49c7f5 100644
--- a/src/bdf/Jamfile
+++ b/src/bdf/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/bdf Jamfile
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/bdf/bdf.h b/src/bdf/bdf.h
index a6ba82e..d9abd23 100644
--- a/src/bdf/bdf.h
+++ b/src/bdf/bdf.h
@@ -109,9 +109,9 @@
/* There are a set of defaults and each font has their own. */
typedef struct bdf_property_t_
{
- char* name; /* Name of the property. */
- int format; /* Format of the property. */
- int builtin; /* A builtin property. */
+ const char* name; /* Name of the property. */
+ int format; /* Format of the property. */
+ int builtin; /* A builtin property. */
union
{
char* atom;
@@ -147,7 +147,7 @@
typedef struct bdf_glyph_t_
{
char* name; /* Glyph name. */
- long encoding; /* Glyph encoding. */
+ unsigned long encoding; /* Glyph encoding. */
unsigned short swidth; /* Scalable width. */
unsigned short dwidth; /* Device width. */
bdf_bbx_t bbx; /* Glyph bounding box. */
@@ -158,20 +158,6 @@
} bdf_glyph_t;
- typedef struct bdf_glyphlist_t_
- {
- unsigned short pad; /* Pad to 4-byte boundary. */
- unsigned short bpp; /* Bits per pixel. */
- long start; /* Beginning encoding value of glyphs. */
- long end; /* Ending encoding value of glyphs. */
- bdf_glyph_t* glyphs; /* Glyphs themselves. */
- unsigned long glyphs_size; /* Glyph structures allocated. */
- unsigned long glyphs_used; /* Glyph structures used. */
- bdf_bbx_t bbx; /* Overall bounding box of glyphs. */
-
- } bdf_glyphlist_t;
-
-
typedef struct bdf_font_t_
{
char* name; /* Name of the font. */
@@ -185,7 +171,7 @@
unsigned short monowidth; /* Logical width for monowidth font. */
- long default_char; /* Encoding of the default glyph. */
+ unsigned long default_char; /* Encoding of the default glyph. */
long font_ascent; /* Font ascent. */
long font_descent; /* Font descent. */
@@ -205,16 +191,8 @@
char* comments; /* Font comments. */
unsigned long comments_len; /* Length of comment string. */
- bdf_glyphlist_t overflow; /* Storage used for glyph insertion. */
-
void* internal; /* Internal data for the font. */
- /* The size of the next two arrays must be in sync with the */
- /* size of the `have' array in the `bdf_parse_t' structure. */
- unsigned long nmod[34816]; /* Bitmap indicating modified glyphs. */
- unsigned long umod[34816]; /* Bitmap indicating modified */
- /* unencoded glyphs. */
- unsigned short modified; /* Boolean indicating font modified. */
unsigned short bpp; /* Bits per pixel. */
FT_Memory memory;
diff --git a/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c
index 1e272b0..60eb933 100644
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -48,7 +48,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_bdfdriver
+#define FT_COMPONENT bdfdriver
typedef struct BDF_CMapRec_
@@ -99,14 +99,17 @@
min = 0;
max = cmap->num_encodings;
+ mid = ( min + max ) >> 1;
while ( min < max )
{
FT_ULong code;
- mid = ( min + max ) >> 1;
- code = (FT_ULong)encodings[mid].enc;
+ if ( mid >= max || mid < min )
+ mid = ( min + max ) >> 1;
+
+ code = encodings[mid].enc;
if ( charcode == code )
{
@@ -120,6 +123,9 @@
max = mid;
else
min = mid + 1;
+
+ /* prediction in a continuous block */
+ mid += charcode - code;
}
return result;
@@ -139,14 +145,17 @@
min = 0;
max = cmap->num_encodings;
+ mid = ( min + max ) >> 1;
while ( min < max )
{
FT_ULong code; /* same as BDF_encoding_el.enc */
- mid = ( min + max ) >> 1;
- code = (FT_ULong)encodings[mid].enc;
+ if ( mid >= max || mid < min )
+ mid = ( min + max ) >> 1;
+
+ code = encodings[mid].enc;
if ( charcode == code )
{
@@ -160,12 +169,15 @@
max = mid;
else
min = mid + 1;
+
+ /* prediction in a continuous block */
+ mid += charcode - code;
}
charcode = 0;
if ( min < cmap->num_encodings )
{
- charcode = (FT_ULong)encodings[min].enc;
+ charcode = encodings[min].enc;
result = encodings[min].glyph + 1;
}
@@ -204,13 +216,13 @@
bdf_font_t* font = bdf->bdffont;
bdf_property_t* prop;
- char* strings[4] = { NULL, NULL, NULL, NULL };
- size_t nn, len, lengths[4];
+ const char* strings[4] = { NULL, NULL, NULL, NULL };
+ size_t lengths[4], nn, len;
face->style_flags = 0;
- prop = bdf_get_font_property( font, (char *)"SLANT" );
+ prop = bdf_get_font_property( font, "SLANT" );
if ( prop && prop->format == BDF_ATOM &&
prop->value.atom &&
( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' ||
@@ -218,30 +230,30 @@
{
face->style_flags |= FT_STYLE_FLAG_ITALIC;
strings[2] = ( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' )
- ? (char *)"Oblique"
- : (char *)"Italic";
+ ? "Oblique"
+ : "Italic";
}
- prop = bdf_get_font_property( font, (char *)"WEIGHT_NAME" );
+ prop = bdf_get_font_property( font, "WEIGHT_NAME" );
if ( prop && prop->format == BDF_ATOM &&
prop->value.atom &&
( *(prop->value.atom) == 'B' || *(prop->value.atom) == 'b' ) )
{
face->style_flags |= FT_STYLE_FLAG_BOLD;
- strings[1] = (char *)"Bold";
+ strings[1] = "Bold";
}
- prop = bdf_get_font_property( font, (char *)"SETWIDTH_NAME" );
+ prop = bdf_get_font_property( font, "SETWIDTH_NAME" );
if ( prop && prop->format == BDF_ATOM &&
prop->value.atom && *(prop->value.atom) &&
!( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) )
- strings[3] = (char *)(prop->value.atom);
+ strings[3] = (const char *)(prop->value.atom);
- prop = bdf_get_font_property( font, (char *)"ADD_STYLE_NAME" );
+ prop = bdf_get_font_property( font, "ADD_STYLE_NAME" );
if ( prop && prop->format == BDF_ATOM &&
prop->value.atom && *(prop->value.atom) &&
!( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) )
- strings[0] = (char *)(prop->value.atom);
+ strings[0] = (const char *)(prop->value.atom);
for ( len = 0, nn = 0; nn < 4; nn++ )
{
@@ -255,7 +267,7 @@
if ( len == 0 )
{
- strings[0] = (char *)"Regular";
+ strings[0] = "Regular";
lengths[0] = ft_strlen( strings[0] );
len = lengths[0] + 1;
}
@@ -271,7 +283,7 @@
for ( nn = 0; nn < 4; nn++ )
{
- char* src = strings[nn];
+ const char* src = strings[nn];
len = lengths[nn];
diff --git a/src/bdf/bdfdrivr.h b/src/bdf/bdfdrivr.h
index 4857316..b37b84e 100644
--- a/src/bdf/bdfdrivr.h
+++ b/src/bdf/bdfdrivr.h
@@ -39,7 +39,7 @@
typedef struct BDF_encoding_el_
{
- FT_Long enc;
+ FT_ULong enc;
FT_UShort glyph;
} BDF_encoding_el;
@@ -56,9 +56,6 @@
BDF_encoding_el* en_table;
- FT_CharMap charmap_handle;
- FT_CharMapRec charmap; /* a single charmap per face */
-
FT_UInt default_glyph;
} BDF_FaceRec, *BDF_Face;
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 5c09591..63813f7 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -49,7 +49,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_bdflib
+#define FT_COMPONENT bdflib
/**************************************************************************
@@ -79,89 +79,89 @@
static const bdf_property_t _bdf_properties[] =
{
- { (char *)"ADD_STYLE_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"CAP_HEIGHT", BDF_INTEGER, 1, { 0 } },
- { (char *)"CHARSET_COLLECTIONS", BDF_ATOM, 1, { 0 } },
- { (char *)"CHARSET_ENCODING", BDF_ATOM, 1, { 0 } },
- { (char *)"CHARSET_REGISTRY", BDF_ATOM, 1, { 0 } },
- { (char *)"COMMENT", BDF_ATOM, 1, { 0 } },
- { (char *)"COPYRIGHT", BDF_ATOM, 1, { 0 } },
- { (char *)"DEFAULT_CHAR", BDF_CARDINAL, 1, { 0 } },
- { (char *)"DESTINATION", BDF_CARDINAL, 1, { 0 } },
- { (char *)"DEVICE_FONT_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"END_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"FACE_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"FAMILY_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"FONT", BDF_ATOM, 1, { 0 } },
- { (char *)"FONTNAME_REGISTRY", BDF_ATOM, 1, { 0 } },
- { (char *)"FONT_ASCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"FONT_DESCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"FOUNDRY", BDF_ATOM, 1, { 0 } },
- { (char *)"FULL_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"ITALIC_ANGLE", BDF_INTEGER, 1, { 0 } },
- { (char *)"MAX_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"MIN_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"NORM_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"NOTICE", BDF_ATOM, 1, { 0 } },
- { (char *)"PIXEL_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"POINT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"QUAD_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_ASCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_CAP_HEIGHT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_DESCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_END_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_MAX_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_MIN_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_NORM_SPACE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_PIXEL_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_POINT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_PIXELSIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_POINTSIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_QUAD_WIDTH", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } },
- { (char *)"RAW_X_HEIGHT", BDF_INTEGER, 1, { 0 } },
- { (char *)"RELATIVE_SETWIDTH", BDF_CARDINAL, 1, { 0 } },
- { (char *)"RELATIVE_WEIGHT", BDF_CARDINAL, 1, { 0 } },
- { (char *)"RESOLUTION", BDF_INTEGER, 1, { 0 } },
- { (char *)"RESOLUTION_X", BDF_CARDINAL, 1, { 0 } },
- { (char *)"RESOLUTION_Y", BDF_CARDINAL, 1, { 0 } },
- { (char *)"SETWIDTH_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"SLANT", BDF_ATOM, 1, { 0 } },
- { (char *)"SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"SPACING", BDF_ATOM, 1, { 0 } },
- { (char *)"STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } },
- { (char *)"SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
- { (char *)"UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } },
- { (char *)"UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } },
- { (char *)"WEIGHT", BDF_CARDINAL, 1, { 0 } },
- { (char *)"WEIGHT_NAME", BDF_ATOM, 1, { 0 } },
- { (char *)"X_HEIGHT", BDF_INTEGER, 1, { 0 } },
- { (char *)"_MULE_BASELINE_OFFSET", BDF_INTEGER, 1, { 0 } },
- { (char *)"_MULE_RELATIVE_COMPOSE", BDF_INTEGER, 1, { 0 } },
+ { "ADD_STYLE_NAME", BDF_ATOM, 1, { 0 } },
+ { "AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "CAP_HEIGHT", BDF_INTEGER, 1, { 0 } },
+ { "CHARSET_COLLECTIONS", BDF_ATOM, 1, { 0 } },
+ { "CHARSET_ENCODING", BDF_ATOM, 1, { 0 } },
+ { "CHARSET_REGISTRY", BDF_ATOM, 1, { 0 } },
+ { "COMMENT", BDF_ATOM, 1, { 0 } },
+ { "COPYRIGHT", BDF_ATOM, 1, { 0 } },
+ { "DEFAULT_CHAR", BDF_CARDINAL, 1, { 0 } },
+ { "DESTINATION", BDF_CARDINAL, 1, { 0 } },
+ { "DEVICE_FONT_NAME", BDF_ATOM, 1, { 0 } },
+ { "END_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "FACE_NAME", BDF_ATOM, 1, { 0 } },
+ { "FAMILY_NAME", BDF_ATOM, 1, { 0 } },
+ { "FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "FONT", BDF_ATOM, 1, { 0 } },
+ { "FONTNAME_REGISTRY", BDF_ATOM, 1, { 0 } },
+ { "FONT_ASCENT", BDF_INTEGER, 1, { 0 } },
+ { "FONT_DESCENT", BDF_INTEGER, 1, { 0 } },
+ { "FOUNDRY", BDF_ATOM, 1, { 0 } },
+ { "FULL_NAME", BDF_ATOM, 1, { 0 } },
+ { "ITALIC_ANGLE", BDF_INTEGER, 1, { 0 } },
+ { "MAX_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "MIN_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "NORM_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "NOTICE", BDF_ATOM, 1, { 0 } },
+ { "PIXEL_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "POINT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "QUAD_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_ASCENT", BDF_INTEGER, 1, { 0 } },
+ { "RAW_AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_CAP_HEIGHT", BDF_INTEGER, 1, { 0 } },
+ { "RAW_DESCENT", BDF_INTEGER, 1, { 0 } },
+ { "RAW_END_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_MAX_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_MIN_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_NORM_SPACE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_PIXEL_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_POINT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_PIXELSIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_POINTSIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_QUAD_WIDTH", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } },
+ { "RAW_STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } },
+ { "RAW_SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
+ { "RAW_UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } },
+ { "RAW_UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } },
+ { "RAW_X_HEIGHT", BDF_INTEGER, 1, { 0 } },
+ { "RELATIVE_SETWIDTH", BDF_CARDINAL, 1, { 0 } },
+ { "RELATIVE_WEIGHT", BDF_CARDINAL, 1, { 0 } },
+ { "RESOLUTION", BDF_INTEGER, 1, { 0 } },
+ { "RESOLUTION_X", BDF_CARDINAL, 1, { 0 } },
+ { "RESOLUTION_Y", BDF_CARDINAL, 1, { 0 } },
+ { "SETWIDTH_NAME", BDF_ATOM, 1, { 0 } },
+ { "SLANT", BDF_ATOM, 1, { 0 } },
+ { "SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "SPACING", BDF_ATOM, 1, { 0 } },
+ { "STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } },
+ { "STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } },
+ { "SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } },
+ { "SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
+ { "SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } },
+ { "SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } },
+ { "SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } },
+ { "UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } },
+ { "UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } },
+ { "WEIGHT", BDF_CARDINAL, 1, { 0 } },
+ { "WEIGHT_NAME", BDF_ATOM, 1, { 0 } },
+ { "X_HEIGHT", BDF_INTEGER, 1, { 0 } },
+ { "_MULE_BASELINE_OFFSET", BDF_INTEGER, 1, { 0 } },
+ { "_MULE_RELATIVE_COMPOSE", BDF_INTEGER, 1, { 0 } },
};
static const unsigned long
@@ -196,11 +196,10 @@
#define ACMSG9 "SWIDTH field missing at line %ld. Set automatically.\n"
#define ACMSG10 "DWIDTH field missing at line %ld. Set to glyph width.\n"
#define ACMSG11 "SIZE bits per pixel field adjusted to %hd.\n"
-#define ACMSG12 "Duplicate encoding %ld (%s) changed to unencoded.\n"
-#define ACMSG13 "Glyph %ld extra rows removed.\n"
-#define ACMSG14 "Glyph %ld extra columns removed.\n"
+#define ACMSG13 "Glyph %lu extra rows removed.\n"
+#define ACMSG14 "Glyph %lu extra columns removed.\n"
#define ACMSG15 "Incorrect glyph count: %ld indicated but %ld found.\n"
-#define ACMSG16 "Glyph %ld missing columns padded with zero bits.\n"
+#define ACMSG16 "Glyph %lu missing columns padded with zero bits.\n"
#define ACMSG17 "Adjusting number of glyphs to %ld.\n"
/* Error messages. */
@@ -270,8 +269,6 @@
bdf_font_t* font;
bdf_options_t* opts;
- unsigned long have[34816]; /* must be in sync with `nmod' and `umod' */
- /* arrays from `bdf_font_t' structure */
_bdf_list_t list;
FT_Memory memory;
@@ -367,7 +364,7 @@
/* An empty string for empty fields. */
- static const char empty[1] = { 0 }; /* XXX eliminate this */
+ static const char empty[] = ""; /* XXX eliminate this */
static char *
@@ -410,13 +407,14 @@
static FT_Error
_bdf_list_split( _bdf_list_t* list,
- char* separators,
+ const char* separators,
char* line,
unsigned long linelen )
{
unsigned long final_empty;
int mult;
- char *sp, *ep, *end;
+ const char *sp, *end;
+ char *ep;
char seps[32];
FT_Error error = FT_Err_Ok;
@@ -476,7 +474,7 @@
}
/* Assign the field appropriately. */
- list->field[list->used++] = ( ep > sp ) ? sp : (char*)empty;
+ list->field[list->used++] = ( ep > sp ) ? (char*)sp : (char*)empty;
sp = ep;
@@ -695,7 +693,7 @@
/* Routine to convert a decimal ASCII string to an unsigned long integer. */
static unsigned long
- _bdf_atoul( char* s )
+ _bdf_atoul( const char* s )
{
unsigned long v;
@@ -720,7 +718,7 @@
/* Routine to convert a decimal ASCII string to a signed long integer. */
static long
- _bdf_atol( char* s )
+ _bdf_atol( const char* s )
{
long v, neg;
@@ -753,7 +751,7 @@
/* Routine to convert a decimal ASCII string to an unsigned short integer. */
static unsigned short
- _bdf_atous( char* s )
+ _bdf_atous( const char* s )
{
unsigned short v;
@@ -778,7 +776,7 @@
/* Routine to convert a decimal ASCII string to a signed short integer. */
static short
- _bdf_atos( char* s )
+ _bdf_atos( const char* s )
{
short v, neg;
@@ -831,7 +829,7 @@
static FT_Error
- bdf_create_property( char* name,
+ bdf_create_property( const char* name,
int format,
bdf_font_t* font )
{
@@ -1001,7 +999,7 @@
FT_MEM_COPY( name, font->name, len );
- error = _bdf_list_split( &list, (char *)"-", name, (unsigned long)len );
+ error = _bdf_list_split( &list, "-", name, (unsigned long)len );
if ( error )
goto Fail;
@@ -1100,7 +1098,7 @@
static FT_Error
_bdf_add_property( bdf_font_t* font,
- char* name,
+ const char* name,
char* value,
unsigned long lineno )
{
@@ -1232,7 +1230,7 @@
/* present, and the SPACING property should override the default */
/* spacing. */
if ( _bdf_strncmp( name, "DEFAULT_CHAR", 12 ) == 0 )
- font->default_char = fp->value.l;
+ font->default_char = fp->value.ul;
else if ( _bdf_strncmp( name, "FONT_ASCENT", 11 ) == 0 )
font->font_ascent = fp->value.l;
else if ( _bdf_strncmp( name, "FONT_DESCENT", 12 ) == 0 )
@@ -1265,6 +1263,25 @@
};
+ static FT_Error
+ _bdf_parse_end( char* line,
+ unsigned long linelen,
+ unsigned long lineno,
+ void* call_data,
+ void* client_data )
+ {
+ /* a no-op; we ignore everything after `ENDFONT' */
+
+ FT_UNUSED( line );
+ FT_UNUSED( linelen );
+ FT_UNUSED( lineno );
+ FT_UNUSED( call_data );
+ FT_UNUSED( client_data );
+
+ return FT_Err_Ok;
+ }
+
+
/* Actually parse the glyph info and bitmaps. */
static FT_Error
_bdf_parse_glyphs( char* line,
@@ -1278,6 +1295,7 @@
unsigned char* bp;
unsigned long i, slen, nibbles;
+ _bdf_line_func_t* next;
_bdf_parse_t* p;
bdf_glyph_t* glyph;
bdf_font_t* font;
@@ -1285,11 +1303,11 @@
FT_Memory memory;
FT_Error error = FT_Err_Ok;
- FT_UNUSED( call_data );
FT_UNUSED( lineno ); /* only used in debug mode */
- p = (_bdf_parse_t *)client_data;
+ next = (_bdf_line_func_t *)call_data;
+ p = (_bdf_parse_t *) client_data;
font = p->font;
memory = font->memory;
@@ -1319,7 +1337,7 @@
goto Exit;
}
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
p->cnt = font->glyphs_size = _bdf_atoul( p->list.field[1] );
@@ -1370,6 +1388,7 @@
by_encoding );
p->flags &= ~BDF_START_;
+ *next = _bdf_parse_end;
goto Exit;
}
@@ -1405,7 +1424,7 @@
/* encoding can be checked for an unencoded character. */
FT_FREE( p->glyph_name );
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -1443,7 +1462,7 @@
goto Exit;
}
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -1458,40 +1477,11 @@
if ( p->glyph_enc == -1 && p->list.used > 2 )
p->glyph_enc = _bdf_atol( p->list.field[2] );
- if ( p->glyph_enc < -1 )
+ if ( p->glyph_enc < -1 || p->glyph_enc >= 0x110000L )
p->glyph_enc = -1;
FT_TRACE4(( DBGMSG2, p->glyph_enc ));
- /* Check that the encoding is in the Unicode range because */
- /* otherwise p->have (a bitmap with static size) overflows. */
- if ( p->glyph_enc > 0 &&
- (size_t)p->glyph_enc >= sizeof ( p->have ) /
- sizeof ( unsigned long ) * 32 )
- {
- FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG5, lineno, "ENCODING" ));
- error = FT_THROW( Invalid_File_Format );
- goto Exit;
- }
-
- /* Check whether this encoding has already been encountered. */
- /* If it has then change it to unencoded so it gets added if */
- /* indicated. */
- if ( p->glyph_enc >= 0 )
- {
- if ( _bdf_glyph_modified( p->have, p->glyph_enc ) )
- {
- /* Emit a message saying a glyph has been moved to the */
- /* unencoded area. */
- FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG12,
- p->glyph_enc, p->glyph_name ));
- p->glyph_enc = -1;
- font->modified = 1;
- }
- else
- _bdf_set_glyph_modified( p->have, p->glyph_enc );
- }
-
if ( p->glyph_enc >= 0 )
{
/* Make sure there are enough glyphs allocated in case the */
@@ -1508,7 +1498,7 @@
glyph = font->glyphs + font->glyphs_used++;
glyph->name = p->glyph_name;
- glyph->encoding = p->glyph_enc;
+ glyph->encoding = (unsigned long)p->glyph_enc;
/* Reset the initial glyph info. */
p->glyph_name = NULL;
@@ -1532,7 +1522,7 @@
glyph = font->unencoded + font->unencoded_used;
glyph->name = p->glyph_name;
- glyph->encoding = (long)font->unencoded_used++;
+ glyph->encoding = font->unencoded_used++;
/* Reset the initial glyph info. */
p->glyph_name = NULL;
@@ -1576,7 +1566,6 @@
{
FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG13, glyph->encoding ));
p->flags |= BDF_GLYPH_HEIGHT_CHECK_;
- font->modified = 1;
}
goto Exit;
@@ -1604,7 +1593,6 @@
{
FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG16, glyph->encoding ));
p->flags |= BDF_GLYPH_WIDTH_CHECK_;
- font->modified = 1;
}
/* Remove possible garbage at the right. */
@@ -1619,7 +1607,6 @@
{
FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG14, glyph->encoding ));
p->flags |= BDF_GLYPH_WIDTH_CHECK_;
- font->modified = 1;
}
p->row++;
@@ -1629,7 +1616,7 @@
/* Expect the SWIDTH (scalable width) field next. */
if ( _bdf_strncmp( line, "SWIDTH", 6 ) == 0 )
{
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -1642,7 +1629,7 @@
/* Expect the DWIDTH (scalable width) field next. */
if ( _bdf_strncmp( line, "DWIDTH", 6 ) == 0 )
{
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -1667,7 +1654,7 @@
/* Expect the BBX field next. */
if ( _bdf_strncmp( line, "BBX", 3 ) == 0 )
{
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -1714,14 +1701,7 @@
{
glyph->swidth = sw;
- if ( p->glyph_enc == -1 )
- _bdf_set_glyph_modified( font->umod,
- font->unencoded_used - 1 );
- else
- _bdf_set_glyph_modified( font->nmod, glyph->encoding );
-
p->flags |= BDF_SWIDTH_ADJ_;
- font->modified = 1;
}
}
@@ -1817,26 +1797,24 @@
{
p->font->font_ascent = p->font->bbx.ascent;
ft_sprintf( nbuf, "%hd", p->font->bbx.ascent );
- error = _bdf_add_property( p->font, (char *)"FONT_ASCENT",
+ error = _bdf_add_property( p->font, "FONT_ASCENT",
nbuf, lineno );
if ( error )
goto Exit;
FT_TRACE2(( "_bdf_parse_properties: " ACMSG1, p->font->bbx.ascent ));
- p->font->modified = 1;
}
if ( bdf_get_font_property( p->font, "FONT_DESCENT" ) == 0 )
{
p->font->font_descent = p->font->bbx.descent;
ft_sprintf( nbuf, "%hd", p->font->bbx.descent );
- error = _bdf_add_property( p->font, (char *)"FONT_DESCENT",
+ error = _bdf_add_property( p->font, "FONT_DESCENT",
nbuf, lineno );
if ( error )
goto Exit;
FT_TRACE2(( "_bdf_parse_properties: " ACMSG2, p->font->bbx.descent ));
- p->font->modified = 1;
}
p->flags &= ~BDF_PROPS_;
@@ -1869,7 +1847,7 @@
}
else
{
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
name = p->list.field[0];
@@ -1983,7 +1961,7 @@
if ( error )
goto Exit;
p->font->spacing = p->opts->font_spacing;
- p->font->default_char = -1;
+ p->font->default_char = ~0UL;
goto Exit;
}
@@ -1999,7 +1977,7 @@
goto Exit;
}
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -2038,7 +2016,7 @@
goto Exit;
}
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -2061,7 +2039,7 @@
/* The next thing to check for is the FONT field. */
if ( _bdf_strncmp( line, "FONT", 4 ) == 0 )
{
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
_bdf_list_shift( &p->list, 1 );
@@ -2104,7 +2082,7 @@
goto Exit;
}
- error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
+ error = _bdf_list_split( &p->list, " +", line, linelen );
if ( error )
goto Exit;
@@ -2159,7 +2137,7 @@
/* for compiling fonts. */
p->font->font_ascent = p->font->bbx.ascent;
ft_sprintf( nbuf, "%hd", p->font->bbx.ascent );
- error = _bdf_add_property( p->font, (char *)"FONT_ASCENT",
+ error = _bdf_add_property( p->font, "FONT_ASCENT",
nbuf, lineno );
if ( error )
goto Exit;
@@ -2167,14 +2145,12 @@
p->font->font_descent = p->font->bbx.descent;
ft_sprintf( nbuf, "%hd", p->font->bbx.descent );
- error = _bdf_add_property( p->font, (char *)"FONT_DESCENT",
+ error = _bdf_add_property( p->font, "FONT_DESCENT",
nbuf, lineno );
if ( error )
goto Exit;
FT_TRACE2(( "_bdf_parse_properties: " ACMSG2, p->font->bbx.descent ));
- p->font->modified = 1;
-
*next = _bdf_parse_glyphs;
/* A special return value. */
@@ -2240,7 +2216,6 @@
{
FT_TRACE2(( "bdf_load_font: " ACMSG15, p->cnt,
p->font->glyphs_used + p->font->unencoded_used ));
- p->font->modified = 1;
}
/* Once the font has been loaded, adjust the overall font metrics if */
@@ -2253,7 +2228,6 @@
FT_TRACE2(( "bdf_load_font: " ACMSG3,
p->font->bbx.width, p->maxrb - p->minlb ));
p->font->bbx.width = (unsigned short)( p->maxrb - p->minlb );
- p->font->modified = 1;
}
if ( p->font->bbx.x_offset != p->minlb )
@@ -2261,7 +2235,6 @@
FT_TRACE2(( "bdf_load_font: " ACMSG4,
p->font->bbx.x_offset, p->minlb ));
p->font->bbx.x_offset = p->minlb;
- p->font->modified = 1;
}
if ( p->font->bbx.ascent != p->maxas )
@@ -2269,7 +2242,6 @@
FT_TRACE2(( "bdf_load_font: " ACMSG5,
p->font->bbx.ascent, p->maxas ));
p->font->bbx.ascent = p->maxas;
- p->font->modified = 1;
}
if ( p->font->bbx.descent != p->maxds )
@@ -2278,7 +2250,6 @@
p->font->bbx.descent, p->maxds ));
p->font->bbx.descent = p->maxds;
p->font->bbx.y_offset = (short)( -p->maxds );
- p->font->modified = 1;
}
if ( p->maxas + p->maxds != p->font->bbx.height )
@@ -2409,16 +2380,6 @@
FT_FREE( font->glyphs );
FT_FREE( font->unencoded );
- /* Free up the overflow storage if it was used. */
- for ( i = 0, glyphs = font->overflow.glyphs;
- i < font->overflow.glyphs_used; i++, glyphs++ )
- {
- FT_FREE( glyphs->name );
- FT_FREE( glyphs->bitmap );
- }
-
- FT_FREE( font->overflow.glyphs );
-
/* bdf_cleanup */
ft_hash_str_free( &(font->proptbl), memory );
diff --git a/src/bzip2/Jamfile b/src/bzip2/Jamfile
index 3548eab..4b77916 100644
--- a/src/bzip2/Jamfile
+++ b/src/bzip2/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/bzip2 Jamfile
#
-# Copyright 2010-2018 by
+# Copyright (C) 2010-2019 by
# Joel Klinghed
#
# based on `src/lzw/Jamfile'
diff --git a/src/bzip2/ftbzip2.c b/src/bzip2/ftbzip2.c
index 0f6ab15..1fda59b 100644
--- a/src/bzip2/ftbzip2.c
+++ b/src/bzip2/ftbzip2.c
@@ -8,7 +8,7 @@
* parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright 2010-2018 by
+ * Copyright (C) 2010-2019 by
* Joel Klinghed.
*
* based on `src/gzip/ftgzip.c'
diff --git a/src/bzip2/rules.mk b/src/bzip2/rules.mk
index 95954d7..f365c1f 100644
--- a/src/bzip2/rules.mk
+++ b/src/bzip2/rules.mk
@@ -2,7 +2,7 @@
# FreeType 2 BZIP2 support configuration rules
#
-# Copyright 2010-2018 by
+# Copyright (C) 2010-2019 by
# Joel Klinghed.
#
# based on `src/lzw/rules.mk'
diff --git a/src/cache/Jamfile b/src/cache/Jamfile
index 53f4c7b..51f7196 100644
--- a/src/cache/Jamfile
+++ b/src/cache/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/cache Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cache/ftcache.c b/src/cache/ftcache.c
index fb78b81..a6a3e63 100644
--- a/src/cache/ftcache.c
+++ b/src/cache/ftcache.c
@@ -4,7 +4,7 @@
*
* The FreeType Caching sub-system (body only).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcbasic.c b/src/cache/ftcbasic.c
index f2b75ee..a473585 100644
--- a/src/cache/ftcbasic.c
+++ b/src/cache/ftcbasic.c
@@ -4,7 +4,7 @@
*
* The FreeType basic cache interface (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
#include "ftccback.h"
#include "ftcerror.h"
-#define FT_COMPONENT trace_cache
+#define FT_COMPONENT cache
/*
diff --git a/src/cache/ftccache.c b/src/cache/ftccache.c
index a9aa5d4..f38ca44 100644
--- a/src/cache/ftccache.c
+++ b/src/cache/ftccache.c
@@ -4,7 +4,7 @@
*
* The FreeType internal cache interface (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -25,7 +25,7 @@
#include "ftcerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cache
+#define FT_COMPONENT cache
#define FTC_HASH_MAX_LOAD 2
diff --git a/src/cache/ftccache.h b/src/cache/ftccache.h
index c1f8c29..140cead 100644
--- a/src/cache/ftccache.h
+++ b/src/cache/ftccache.h
@@ -4,7 +4,7 @@
*
* FreeType internal cache interface (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftccback.h b/src/cache/ftccback.h
index 1e414aa..9321bc3 100644
--- a/src/cache/ftccback.h
+++ b/src/cache/ftccback.h
@@ -4,7 +4,7 @@
*
* Callback functions of the caching sub-system (specification only).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftccmap.c b/src/cache/ftccmap.c
index 47b8b76..76ba10e 100644
--- a/src/cache/ftccmap.c
+++ b/src/cache/ftccmap.c
@@ -4,7 +4,7 @@
*
* FreeType CharMap cache (body)
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
#include "ftcerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cache
+#define FT_COMPONENT cache
/**************************************************************************
diff --git a/src/cache/ftcerror.h b/src/cache/ftcerror.h
index 6ed9e9e..e2d6417 100644
--- a/src/cache/ftcerror.h
+++ b/src/cache/ftcerror.h
@@ -4,7 +4,7 @@
*
* Caching sub-system error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcglyph.c b/src/cache/ftcglyph.c
index 1b86429..2a0e97d 100644
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -4,7 +4,7 @@
*
* FreeType Glyph Image (FT_Glyph) cache (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcglyph.h b/src/cache/ftcglyph.h
index 234ec89..5a1f0e2 100644
--- a/src/cache/ftcglyph.h
+++ b/src/cache/ftcglyph.h
@@ -4,7 +4,7 @@
*
* FreeType abstract glyph cache (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcimage.c b/src/cache/ftcimage.c
index 597e341..9e64d51 100644
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -4,7 +4,7 @@
*
* FreeType Image cache (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcimage.h b/src/cache/ftcimage.h
index ad47f8d..dcb101f 100644
--- a/src/cache/ftcimage.h
+++ b/src/cache/ftcimage.h
@@ -4,7 +4,7 @@
*
* FreeType Generic Image cache (specification)
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcmanag.c b/src/cache/ftcmanag.c
index 9be1773..bd58596 100644
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -4,7 +4,7 @@
*
* FreeType Cache Manager (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cache
+#define FT_COMPONENT cache
static FT_Error
diff --git a/src/cache/ftcmanag.h b/src/cache/ftcmanag.h
index 8d0a1e1..60c66c8 100644
--- a/src/cache/ftcmanag.h
+++ b/src/cache/ftcmanag.h
@@ -4,7 +4,7 @@
*
* FreeType Cache Manager (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcmru.c b/src/cache/ftcmru.c
index c704f4e..18a7b80 100644
--- a/src/cache/ftcmru.c
+++ b/src/cache/ftcmru.c
@@ -4,7 +4,7 @@
*
* FreeType MRU support (body).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcmru.h b/src/cache/ftcmru.h
index 936c66e..58721ed 100644
--- a/src/cache/ftcmru.h
+++ b/src/cache/ftcmru.h
@@ -4,7 +4,7 @@
*
* Simple MRU list-cache (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index c802bf0..06b46c8 100644
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -4,7 +4,7 @@
*
* FreeType sbits manager (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
#include "ftcerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cache
+#define FT_COMPONENT cache
/*************************************************************************/
diff --git a/src/cache/ftcsbits.h b/src/cache/ftcsbits.h
index e698e35..f1b71c2 100644
--- a/src/cache/ftcsbits.h
+++ b/src/cache/ftcsbits.h
@@ -4,7 +4,7 @@
*
* A small-bitmap cache (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/rules.mk b/src/cache/rules.mk
index 5589359..1618d98 100644
--- a/src/cache/rules.mk
+++ b/src/cache/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2000-2018 by
+# Copyright (C) 2000-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,7 @@
# Cache driver directory
#
-CACHE_DIR := $(SRC_DIR)/cache
+CACHE_DIR := $(SRC_DIR)/cache
# compilation flags for the driver
diff --git a/src/cff/Jamfile b/src/cff/Jamfile
index 53c904f..10f49ce 100644
--- a/src/cff/Jamfile
+++ b/src/cff/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/cff Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cff/cff.c b/src/cff/cff.c
index 6c7e2c9..a34ba9b 100644
--- a/src/cff/cff.c
+++ b/src/cff/cff.c
@@ -4,7 +4,7 @@
*
* FreeType OpenType driver component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffcmap.c b/src/cff/cffcmap.c
index f7316e1..15cc94c 100644
--- a/src/cff/cffcmap.c
+++ b/src/cff/cffcmap.c
@@ -4,7 +4,7 @@
*
* CFF character mapping table (cmap) support (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -161,6 +161,9 @@
if ( !charset->sids )
return FT_THROW( No_Unicode_Glyph_Name );
+ if ( !psnames->unicodes_init )
+ return FT_THROW( Unimplemented_Feature );
+
return psnames->unicodes_init( memory,
unicodes,
cff->num_glyphs,
diff --git a/src/cff/cffcmap.h b/src/cff/cffcmap.h
index 5cf86ac..07366bc 100644
--- a/src/cff/cffcmap.h
+++ b/src/cff/cffcmap.h
@@ -4,7 +4,7 @@
*
* CFF character mapping table (cmap) support (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index 997a734..2324989 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -4,7 +4,7 @@
*
* OpenType font driver implementation (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -56,7 +56,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffdriver
+#define FT_COMPONENT cffdriver
/*************************************************************************/
@@ -348,7 +348,7 @@
FT_ERROR(( "cff_get_glyph_name:"
" cannot get glyph name from a CFF2 font\n"
" "
- " without the `PSNames' module\n" ));
+ " without the `psnames' module\n" ));
error = FT_THROW( Missing_Module );
goto Exit;
}
@@ -359,7 +359,7 @@
FT_ERROR(( "cff_get_glyph_name:"
" cannot get glyph name from CFF & CEF fonts\n"
" "
- " without the `PSNames' module\n" ));
+ " without the `psnames' module\n" ));
error = FT_THROW( Missing_Module );
goto Exit;
}
@@ -381,8 +381,8 @@
static FT_UInt
- cff_get_name_index( CFF_Face face,
- FT_String* glyph_name )
+ cff_get_name_index( CFF_Face face,
+ const FT_String* glyph_name )
{
CFF_Font cff;
CFF_Charset charset;
@@ -415,7 +415,7 @@
FT_ERROR(( "cff_get_name_index:"
" cannot get glyph index from a CFF2 font\n"
" "
- " without the `PSNames' module\n" ));
+ " without the `psnames' module\n" ));
return 0;
}
}
@@ -868,6 +868,30 @@
static FT_Error
+ cff_set_mm_weightvector( CFF_Face face,
+ FT_UInt len,
+ FT_Fixed* weightvector )
+ {
+ FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
+
+
+ return mm->set_mm_weightvector( FT_FACE( face ), len, weightvector );
+ }
+
+
+ static FT_Error
+ cff_get_mm_weightvector( CFF_Face face,
+ FT_UInt* len,
+ FT_Fixed* weightvector )
+ {
+ FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
+
+
+ return mm->get_mm_weightvector( FT_FACE( face ), len, weightvector );
+ }
+
+
+ static FT_Error
cff_get_mm_var( CFF_Face face,
FT_MM_Var* *master )
{
@@ -916,17 +940,19 @@
FT_DEFINE_SERVICE_MULTIMASTERSREC(
cff_service_multi_masters,
- (FT_Get_MM_Func) NULL, /* get_mm */
- (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
- (FT_Set_MM_Blend_Func) cff_set_mm_blend, /* set_mm_blend */
- (FT_Get_MM_Blend_Func) cff_get_mm_blend, /* get_mm_blend */
- (FT_Get_MM_Var_Func) cff_get_mm_var, /* get_mm_var */
- (FT_Set_Var_Design_Func)cff_set_var_design, /* set_var_design */
- (FT_Get_Var_Design_Func)cff_get_var_design, /* get_var_design */
- (FT_Set_Instance_Func) cff_set_instance, /* set_instance */
+ (FT_Get_MM_Func) NULL, /* get_mm */
+ (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
+ (FT_Set_MM_Blend_Func) cff_set_mm_blend, /* set_mm_blend */
+ (FT_Get_MM_Blend_Func) cff_get_mm_blend, /* get_mm_blend */
+ (FT_Get_MM_Var_Func) cff_get_mm_var, /* get_mm_var */
+ (FT_Set_Var_Design_Func) cff_set_var_design, /* set_var_design */
+ (FT_Get_Var_Design_Func) cff_get_var_design, /* get_var_design */
+ (FT_Set_Instance_Func) cff_set_instance, /* set_instance */
+ (FT_Set_MM_WeightVector_Func)cff_set_mm_weightvector, /* set_mm_weightvector */
+ (FT_Get_MM_WeightVector_Func)cff_get_mm_weightvector, /* get_mm_weightvector */
- (FT_Get_Var_Blend_Func) cff_get_var_blend, /* get_var_blend */
- (FT_Done_Blend_Func) cff_done_blend /* done_blend */
+ (FT_Get_Var_Blend_Func) cff_get_var_blend, /* get_var_blend */
+ (FT_Done_Blend_Func) cff_done_blend /* done_blend */
)
diff --git a/src/cff/cffdrivr.h b/src/cff/cffdrivr.h
index 30d3e13..f2bbcfe 100644
--- a/src/cff/cffdrivr.h
+++ b/src/cff/cffdrivr.h
@@ -4,7 +4,7 @@
*
* High-level OpenType driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cfferrs.h b/src/cff/cfferrs.h
index b5ccc67..78d47a1 100644
--- a/src/cff/cfferrs.h
+++ b/src/cff/cfferrs.h
@@ -4,7 +4,7 @@
*
* CFF error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index 88f5689..36aa7d1 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffgload
+#define FT_COMPONENT cffgload
FT_LOCAL_DEF( FT_Error )
@@ -414,7 +414,7 @@
decoder.width_only = TRUE;
decoder.builder.no_recurse =
- (FT_Bool)( load_flags & FT_LOAD_NO_RECURSE );
+ FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
/* now load the unscaled outline */
error = cff_get_glyph_data( face, glyph_index,
diff --git a/src/cff/cffgload.h b/src/cff/cffgload.h
index 5a486cd..754c55a 100644
--- a/src/cff/cffgload.h
+++ b/src/cff/cffgload.h
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index 015b2c8..12efd18 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -4,7 +4,7 @@
*
* OpenType and CFF data/program tables loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -203,7 +203,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffload
+#define FT_COMPONENT cffload
/* read an offset from the index's stream current position */
diff --git a/src/cff/cffload.h b/src/cff/cffload.h
index 7ba9e45..42d2696 100644
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -4,7 +4,7 @@
*
* OpenType & CFF data/program tables loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
index b3f0f99..f76245f 100644
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -4,7 +4,7 @@
*
* OpenType objects manager (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -51,7 +51,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffobjs
+#define FT_COMPONENT cffobjs
/**************************************************************************
@@ -644,14 +644,14 @@
dict = &cff->top_font.font_dict;
- /* we need the `PSNames' module for CFF and CEF formats */
+ /* we need the `psnames' module for CFF and CEF formats */
/* which aren't CID-keyed */
if ( dict->cid_registry == 0xFFFFU && !psnames )
{
FT_ERROR(( "cff_face_init:"
" cannot open CFF & CEF fonts\n"
" "
- " without the `PSNames' module\n" ));
+ " without the `psnames' module\n" ));
error = FT_THROW( Missing_Module );
goto Exit;
}
@@ -962,7 +962,7 @@
cffface->style_name = style_name;
else
/* assume "Regular" style if we don't know better */
- cffface->style_name = cff_strcpy( memory, (char *)"Regular" );
+ cffface->style_name = cff_strcpy( memory, "Regular" );
/********************************************************************
*
@@ -1072,7 +1072,8 @@
error = FT_CMap_New( &cff_cmap_unicode_class_rec, NULL,
&cmaprec, NULL );
if ( error &&
- FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+ FT_ERR_NEQ( error, Unimplemented_Feature ) )
goto Exit;
error = FT_Err_Ok;
diff --git a/src/cff/cffobjs.h b/src/cff/cffobjs.h
index 2beb11b..03bc78a 100644
--- a/src/cff/cffobjs.h
+++ b/src/cff/cffobjs.h
@@ -4,7 +4,7 @@
*
* OpenType objects manager (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffparse.c b/src/cff/cffparse.c
index b6f5dae..008752c 100644
--- a/src/cff/cffparse.c
+++ b/src/cff/cffparse.c
@@ -4,7 +4,7 @@
*
* CFF token stream parser (body)
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -22,6 +22,7 @@
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_POSTSCRIPT_AUX_H
+#include FT_LIST_H
#include "cfferrs.h"
#include "cffload.h"
@@ -34,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffparse
+#define FT_COMPONENT cffparse
FT_LOCAL_DEF( FT_Error )
@@ -76,6 +77,23 @@
}
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+ static void
+ finalize_t2_strings( FT_Memory memory,
+ void* data,
+ void* user )
+ {
+ CFF_T2_String t2 = (CFF_T2_String)data;
+
+
+ FT_UNUSED( user );
+
+ memory->free( memory, t2->start );
+ memory->free( memory, data );
+ }
+#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
+
+
FT_LOCAL_DEF( void )
cff_parser_done( CFF_Parser parser )
{
@@ -83,13 +101,65 @@
FT_FREE( parser->stack );
+
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+ FT_List_Finalize( &parser->t2_strings,
+ finalize_t2_strings,
+ memory,
+ NULL );
+#endif
+ }
+
+
+ /* Assuming `first >= last'. */
+
+ static FT_Error
+ cff_parser_within_limits( CFF_Parser parser,
+ FT_Byte* first,
+ FT_Byte* last )
+ {
+#ifndef CFF_CONFIG_OPTION_OLD_ENGINE
+
+ /* Fast path for regular FreeType builds with the "new" engine; */
+ /* `first >= parser->start' can be assumed. */
+
+ FT_UNUSED( first );
+
+ return last < parser->limit ? FT_Err_Ok : FT_THROW( Invalid_Argument );
+
+#else /* CFF_CONFIG_OPTION_OLD_ENGINE */
+
+ FT_ListNode node;
+
+
+ if ( first >= parser->start &&
+ last < parser->limit )
+ return FT_Err_Ok;
+
+ node = parser->t2_strings.head;
+
+ while ( node )
+ {
+ CFF_T2_String t2 = (CFF_T2_String)node->data;
+
+
+ if ( first >= t2->start &&
+ last < t2->limit )
+ return FT_Err_Ok;
+
+ node = node->next;
+ }
+
+ return FT_THROW( Invalid_Argument );
+
+#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
}
/* read an integer */
static FT_Long
- cff_parse_integer( FT_Byte* start,
- FT_Byte* limit )
+ cff_parse_integer( CFF_Parser parser,
+ FT_Byte* start )
{
FT_Byte* p = start;
FT_Int v = *p++;
@@ -98,14 +168,14 @@
if ( v == 28 )
{
- if ( p + 2 > limit )
+ if ( cff_parser_within_limits( parser, p, p + 1 ) )
goto Bad;
val = (FT_Short)( ( (FT_UShort)p[0] << 8 ) | p[1] );
}
else if ( v == 29 )
{
- if ( p + 4 > limit )
+ if ( cff_parser_within_limits( parser, p, p + 3 ) )
goto Bad;
val = (FT_Long)( ( (FT_ULong)p[0] << 24 ) |
@@ -119,14 +189,14 @@
}
else if ( v < 251 )
{
- if ( p + 1 > limit )
+ if ( cff_parser_within_limits( parser, p, p ) )
goto Bad;
val = ( v - 247 ) * 256 + p[0] + 108;
}
else
{
- if ( p + 1 > limit )
+ if ( cff_parser_within_limits( parser, p, p ) )
goto Bad;
val = -( v - 251 ) * 256 - p[0] - 108;
@@ -175,10 +245,10 @@
/* read a real */
static FT_Fixed
- cff_parse_real( FT_Byte* start,
- FT_Byte* limit,
- FT_Long power_ten,
- FT_Long* scaling )
+ cff_parse_real( CFF_Parser parser,
+ FT_Byte* start,
+ FT_Long power_ten,
+ FT_Long* scaling )
{
FT_Byte* p = start;
FT_Int nib;
@@ -213,7 +283,7 @@
p++;
/* Make sure we don't read past the end. */
- if ( p >= limit )
+ if ( cff_parser_within_limits( parser, p, p ) )
goto Bad;
}
@@ -250,7 +320,7 @@
p++;
/* Make sure we don't read past the end. */
- if ( p >= limit )
+ if ( cff_parser_within_limits( parser, p, p ) )
goto Bad;
}
@@ -289,7 +359,7 @@
p++;
/* Make sure we don't read past the end. */
- if ( p >= limit )
+ if ( cff_parser_within_limits( parser, p, p ) )
goto Bad;
}
@@ -456,7 +526,7 @@
if ( **d == 30 )
{
/* binary-coded decimal is truncated to integer */
- return cff_parse_real( *d, parser->limit, 0, NULL ) >> 16;
+ return cff_parse_real( parser, *d, 0, NULL ) >> 16;
}
else if ( **d == 255 )
@@ -482,7 +552,7 @@
}
else
- return cff_parse_integer( *d, parser->limit );
+ return cff_parse_integer( parser, *d );
}
@@ -493,10 +563,10 @@
FT_Long scaling )
{
if ( **d == 30 )
- return cff_parse_real( *d, parser->limit, scaling, NULL );
+ return cff_parse_real( parser, *d, scaling, NULL );
else
{
- FT_Long val = cff_parse_integer( *d, parser->limit );
+ FT_Long val = cff_parse_integer( parser, *d );
if ( scaling )
@@ -561,14 +631,14 @@
FT_ASSERT( scaling );
if ( **d == 30 )
- return cff_parse_real( *d, parser->limit, 0, scaling );
+ return cff_parse_real( parser, *d, 0, scaling );
else
{
FT_Long number;
FT_Int integer_length;
- number = cff_parse_integer( d[0], d[1] );
+ number = cff_parse_integer( parser, d[0] );
if ( number > 0x7FFFL )
{
@@ -808,7 +878,7 @@
#ifdef FT_DEBUG_LEVEL_TRACE
/* beautify tracing message */
- if ( ft_trace_levels[FT_COMPONENT] < 4 )
+ if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] < 4 )
FT_TRACE1(( "Multiple Master CFFs not supported yet,"
" handling first master design only\n" ));
else
@@ -1126,16 +1196,15 @@
FT_Byte* start,
FT_Byte* limit )
{
+ FT_Byte* p = start;
+ FT_Error error = FT_Err_Ok;
+
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
PSAux_Service psaux;
-#endif
- FT_Byte* p = start;
- FT_Error error = FT_Err_Ok;
FT_Library library = parser->library;
-
- FT_UNUSED( library );
-
+ FT_Memory memory = library->memory;
+#endif
parser->top = parser->stack;
parser->start = start;
@@ -1195,8 +1264,11 @@
FT_Byte* charstring_base;
FT_ULong charstring_len;
- FT_Fixed* stack;
- FT_Byte* q;
+ FT_Fixed* stack;
+ FT_ListNode node;
+ CFF_T2_String t2;
+ size_t t2_size;
+ FT_Byte* q;
charstring_base = ++p;
@@ -1231,17 +1303,39 @@
error = psaux->cff_decoder_funcs->parse_charstrings_old(
&decoder, charstring_base, charstring_len, 1 );
+ if ( error )
+ goto Exit;
/* 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;
+ node = (FT_ListNode)memory->alloc( memory,
+ sizeof ( FT_ListNodeRec ) );
+ if ( !node )
+ goto Out_Of_Memory_Error;
+
+ FT_List_Add( &parser->t2_strings, node );
+
+ t2 = (CFF_T2_String)memory->alloc( memory,
+ sizeof ( CFF_T2_StringRec ) );
+ if ( !t2 )
+ goto Out_Of_Memory_Error;
+
+ node->data = t2;
+
+ /* `5' is the conservative upper bound of required bytes per stack */
+ /* element. */
+
+ t2_size = 5 * ( decoder.top - decoder.stack );
+
+ q = (FT_Byte*)memory->alloc( memory, t2_size );
+ if ( !q )
+ goto Out_Of_Memory_Error;
+
+ t2->start = q;
+ t2->limit = q + t2_size;
+
stack = decoder.stack;
while ( stack < decoder.top )
@@ -1257,7 +1351,7 @@
if ( *stack < 0 )
{
- num = (FT_ULong)-*stack;
+ num = (FT_ULong)NEG_LONG( *stack );
neg = 1;
}
else
@@ -1498,11 +1592,17 @@
parser->top = parser->stack;
}
p++;
- }
+ } /* while ( p < limit ) */
Exit:
return error;
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+ Out_Of_Memory_Error:
+ error = FT_THROW( Out_Of_Memory );
+ goto Exit;
+#endif
+
Stack_Overflow:
error = FT_THROW( Invalid_Argument );
goto Exit;
diff --git a/src/cff/cffparse.h b/src/cff/cffparse.h
index 9cefab7..4e74709 100644
--- a/src/cff/cffparse.h
+++ b/src/cff/cffparse.h
@@ -4,7 +4,7 @@
*
* CFF token stream parser (specification)
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -60,6 +60,10 @@
FT_Byte** top;
FT_UInt stackSize; /* allocated size */
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+ FT_ListRec t2_strings;
+#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
+
FT_UInt object_code;
void* object;
@@ -130,6 +134,15 @@
FT_END_HEADER
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+ typedef struct CFF_T2_String_
+ {
+ FT_Byte* start;
+ FT_Byte* limit;
+
+ } CFF_T2_StringRec, *CFF_T2_String;
+#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
+
#endif /* CFFPARSE_H_ */
diff --git a/src/cff/cfftoken.h b/src/cff/cfftoken.h
index a7ccea8..063a7b3 100644
--- a/src/cff/cfftoken.h
+++ b/src/cff/cfftoken.h
@@ -4,7 +4,7 @@
*
* CFF token definitions (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/module.mk b/src/cff/module.mk
index 8013d5d..8c61095 100644
--- a/src/cff/module.mk
+++ b/src/cff/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cff/rules.mk b/src/cff/rules.mk
index 0157a99..6e2dc47 100644
--- a/src/cff/rules.mk
+++ b/src/cff/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cid/Jamfile b/src/cid/Jamfile
index 1c232fd..1cfb702 100644
--- a/src/cid/Jamfile
+++ b/src/cid/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/cid Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cid/ciderrs.h b/src/cid/ciderrs.h
index 673b099..be80bed 100644
--- a/src/cid/ciderrs.h
+++ b/src/cid/ciderrs.h
@@ -4,7 +4,7 @@
*
* CID error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c
index e47cd99..f59f288 100644
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 Glyph Loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cidgload
+#define FT_COMPONENT cidgload
FT_CALLBACK_DEF( FT_Error )
@@ -393,8 +393,7 @@
must_finish_decoder = TRUE;
/* set up the decoder */
- decoder.builder.no_recurse = FT_BOOL(
- ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ) );
+ decoder.builder.no_recurse = FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
error = cid_load_glyph( &decoder, glyph_index );
if ( error )
diff --git a/src/cid/cidgload.h b/src/cid/cidgload.h
index 21c5e16..37eba7c 100644
--- a/src/cid/cidgload.h
+++ b/src/cid/cidgload.h
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidload.c b/src/cid/cidload.c
index 1546926..fce3e37 100644
--- a/src/cid/cidload.c
+++ b/src/cid/cidload.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 font loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cidload
+#define FT_COMPONENT cidload
/* read a single offset */
@@ -154,7 +154,7 @@
}
- FT_CALLBACK_DEF( FT_Error )
+ FT_CALLBACK_DEF( void )
cid_parse_font_matrix( CID_Face face,
CID_Parser* parser )
{
@@ -179,7 +179,10 @@
result = cid_parser_to_fixed_array( parser, 6, temp, 3 );
if ( result < 6 )
- return FT_THROW( Invalid_File_Format );
+ {
+ FT_ERROR(( "cid_parse_font_matrix: not enough matrix elements\n" ));
+ goto Exit;
+ }
FT_TRACE4(( " [%f %f %f %f %f %f]\n",
(double)temp[0] / 65536 / 1000,
@@ -194,7 +197,7 @@
if ( temp_scale == 0 )
{
FT_ERROR(( "cid_parse_font_matrix: invalid font matrix\n" ));
- return FT_THROW( Invalid_File_Format );
+ goto Exit;
}
/* atypical case */
@@ -220,7 +223,7 @@
{
FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
parser->root.error = FT_THROW( Invalid_File_Format );
- return FT_THROW( Invalid_File_Format );
+ goto Exit;
}
/* note that the font offsets are expressed in integer font units */
@@ -228,11 +231,12 @@
offset->y = temp[5] >> 16;
}
- return FT_Err_Ok;
+ Exit:
+ return;
}
- FT_CALLBACK_DEF( FT_Error )
+ FT_CALLBACK_DEF( void )
parse_fd_array( CID_Face face,
CID_Parser* parser )
{
@@ -247,7 +251,6 @@
if ( num_dicts < 0 )
{
FT_ERROR(( "parse_fd_array: invalid number of dictionaries\n" ));
- error = FT_THROW( Invalid_File_Format );
goto Exit;
}
@@ -304,7 +307,7 @@
}
Exit:
- return error;
+ return;
}
@@ -312,7 +315,7 @@
/* and CID_FaceDictRec (both are public header files and can't */
/* changed). We simply copy the value. */
- FT_CALLBACK_DEF( FT_Error )
+ FT_CALLBACK_DEF( void )
parse_expansion_factor( CID_Face face,
CID_Parser* parser )
{
@@ -329,7 +332,7 @@
FT_TRACE4(( "%d\n", dict->expansion_factor ));
}
- return FT_Err_Ok;
+ return;
}
@@ -337,7 +340,7 @@
/* `FontName' keyword. FreeType doesn't need it, but it is nice */
/* to catch it for producing better trace output. */
- FT_CALLBACK_DEF( FT_Error )
+ FT_CALLBACK_DEF( void )
parse_font_name( CID_Face face,
CID_Parser* parser )
{
@@ -361,7 +364,7 @@
FT_UNUSED( parser );
#endif
- return FT_Err_Ok;
+ return;
}
diff --git a/src/cid/cidload.h b/src/cid/cidload.h
index a3e6e28..fb9d462 100644
--- a/src/cid/cidload.h
+++ b/src/cid/cidload.h
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 font loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c
index 91c4ed9..4e97287 100644
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -4,7 +4,7 @@
*
* CID objects manager (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cidobjs
+#define FT_COMPONENT cidobjs
/**************************************************************************
diff --git a/src/cid/cidobjs.h b/src/cid/cidobjs.h
index 33a2e7a..89c9aa7 100644
--- a/src/cid/cidobjs.h
+++ b/src/cid/cidobjs.h
@@ -4,7 +4,7 @@
*
* CID objects manager (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidparse.c b/src/cid/cidparse.c
index 861c157..1be46ec 100644
--- a/src/cid/cidparse.c
+++ b/src/cid/cidparse.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 parser (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cidparse
+#define FT_COMPONENT cidparse
/*************************************************************************/
diff --git a/src/cid/cidparse.h b/src/cid/cidparse.h
index 029c6ae..ec1f6a3 100644
--- a/src/cid/cidparse.h
+++ b/src/cid/cidparse.h
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 parser (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c
index 935c112..4d91e87 100644
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -4,7 +4,7 @@
*
* CID driver interface (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -41,7 +41,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ciddriver
+#define FT_COMPONENT ciddriver
/*
diff --git a/src/cid/cidriver.h b/src/cid/cidriver.h
index 2933808..3402fd7 100644
--- a/src/cid/cidriver.h
+++ b/src/cid/cidriver.h
@@ -4,7 +4,7 @@
*
* High-level CID driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidtoken.h b/src/cid/cidtoken.h
index d957e5a..f505c9e 100644
--- a/src/cid/cidtoken.h
+++ b/src/cid/cidtoken.h
@@ -4,7 +4,7 @@
*
* CID token definitions (specification only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/module.mk b/src/cid/module.mk
index 9010e33..875c683 100644
--- a/src/cid/module.mk
+++ b/src/cid/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cid/rules.mk b/src/cid/rules.mk
index 94333bd..2b68dd4 100644
--- a/src/cid/rules.mk
+++ b/src/cid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/cid/type1cid.c b/src/cid/type1cid.c
index 02d9400..d21801c 100644
--- a/src/cid/type1cid.c
+++ b/src/cid/type1cid.c
@@ -4,7 +4,7 @@
*
* FreeType OpenType driver component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/gxvalid/Jamfile b/src/gxvalid/Jamfile
index 74f3c51..a08e7a9 100644
--- a/src/gxvalid/Jamfile
+++ b/src/gxvalid/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/gxvalid Jamfile
#
-# Copyright 2005-2018 by
+# Copyright (C) 2005-2019 by
# suzuki toshiya, Masatake YAMATO and Red Hat K.K.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/gxvalid/README b/src/gxvalid/README
index af8128e..d493587 100644
--- a/src/gxvalid/README
+++ b/src/gxvalid/README
@@ -518,7 +518,7 @@
------------------------------------------------------------------------
-Copyright 2004-2018 by
+Copyright (C) 2004-2019 by
suzuki toshiya, Masatake YAMATO, Red hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
diff --git a/src/gxvalid/gxvalid.c b/src/gxvalid/gxvalid.c
index f49e8b7..462e461 100644
--- a/src/gxvalid/gxvalid.c
+++ b/src/gxvalid/gxvalid.c
@@ -4,7 +4,7 @@
*
* FreeType validator for TrueTypeGX/AAT tables (body only).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvalid.h b/src/gxvalid/gxvalid.h
index cf02fcb..969cd09 100644
--- a/src/gxvalid/gxvalid.h
+++ b/src/gxvalid/gxvalid.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT table validation (specification only).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvbsln.c b/src/gxvalid/gxvbsln.c
index 8b554fd..f22f254 100644
--- a/src/gxvalid/gxvbsln.c
+++ b/src/gxvalid/gxvbsln.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT bsln table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvbsln
+#define FT_COMPONENT gxvbsln
/*************************************************************************/
diff --git a/src/gxvalid/gxvcommn.c b/src/gxvalid/gxvcommn.c
index 4d8a4a2..c5cb8eb 100644
--- a/src/gxvalid/gxvcommn.c
+++ b/src/gxvalid/gxvcommn.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common tables validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -35,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvcommon
+#define FT_COMPONENT gxvcommon
/*************************************************************************/
diff --git a/src/gxvalid/gxvcommn.h b/src/gxvalid/gxvcommn.h
index 9834c57..334dc9d 100644
--- a/src/gxvalid/gxvcommn.h
+++ b/src/gxvalid/gxvcommn.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common tables validation (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxverror.h b/src/gxvalid/gxverror.h
index e36b076..da0edb3 100644
--- a/src/gxvalid/gxverror.h
+++ b/src/gxvalid/gxverror.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT validation module error codes (specification only).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvfeat.c b/src/gxvalid/gxvfeat.c
index 91500bd..e1a12a1 100644
--- a/src/gxvalid/gxvfeat.c
+++ b/src/gxvalid/gxvfeat.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT feat table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -37,7 +37,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvfeat
+#define FT_COMPONENT gxvfeat
/*************************************************************************/
diff --git a/src/gxvalid/gxvfeat.h b/src/gxvalid/gxvfeat.h
index 715791d..6c98929 100644
--- a/src/gxvalid/gxvfeat.h
+++ b/src/gxvalid/gxvfeat.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT feat table validation (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvfgen.c b/src/gxvalid/gxvfgen.c
index c95aebd..5ecb944 100644
--- a/src/gxvalid/gxvfgen.c
+++ b/src/gxvalid/gxvfgen.c
@@ -5,7 +5,7 @@
* Generate feature registry data for gxv `feat' validator.
* This program is derived from gxfeatreg.c in gxlayout.
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Masatake YAMATO and Redhat K.K.
*
* This file may only be used,
diff --git a/src/gxvalid/gxvjust.c b/src/gxvalid/gxvjust.c
index c8a9ab6..a582377 100644
--- a/src/gxvalid/gxvjust.c
+++ b/src/gxvalid/gxvjust.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT just table validation (body).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvjust
+#define FT_COMPONENT gxvjust
/*
* referred `just' table format specification:
@@ -72,6 +72,8 @@
const FT_String* msg_tag,
GXV_Validator gxvalid )
{
+ FT_UNUSED( msg_tag );
+
if ( gid < gxvalid->face->num_glyphs )
return;
diff --git a/src/gxvalid/gxvkern.c b/src/gxvalid/gxvkern.c
index df9f10e..a753233 100644
--- a/src/gxvalid/gxvkern.c
+++ b/src/gxvalid/gxvkern.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT kern table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -39,7 +39,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvkern
+#define FT_COMPONENT gxvkern
/*************************************************************************/
diff --git a/src/gxvalid/gxvlcar.c b/src/gxvalid/gxvlcar.c
index fd167f6..13b3de3 100644
--- a/src/gxvalid/gxvlcar.c
+++ b/src/gxvalid/gxvlcar.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT lcar table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvlcar
+#define FT_COMPONENT gxvlcar
/*************************************************************************/
diff --git a/src/gxvalid/gxvmod.c b/src/gxvalid/gxvmod.c
index 847e0f1..eeadeb3 100644
--- a/src/gxvalid/gxvmod.c
+++ b/src/gxvalid/gxvmod.c
@@ -4,7 +4,7 @@
*
* FreeType's TrueTypeGX/AAT validation module implementation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -44,7 +44,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmodule
+#define FT_COMPONENT gxvmodule
static FT_Error
diff --git a/src/gxvalid/gxvmod.h b/src/gxvalid/gxvmod.h
index f6a2502..6ecd731 100644
--- a/src/gxvalid/gxvmod.h
+++ b/src/gxvalid/gxvmod.h
@@ -5,7 +5,7 @@
* FreeType's TrueTypeGX/AAT validation module implementation
* (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort.c b/src/gxvalid/gxvmort.c
index 1dfa5a3..288ef69 100644
--- a/src/gxvalid/gxvmort.c
+++ b/src/gxvalid/gxvmort.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT mort table validation (body).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
static void
@@ -123,6 +123,7 @@
GXV_Validator gxvalid )
{
FT_UNUSED( gxvalid );
+ FT_UNUSED( coverage );
#ifdef FT_DEBUG_LEVEL_TRACE
if ( coverage & 0x8000U )
diff --git a/src/gxvalid/gxvmort.h b/src/gxvalid/gxvmort.h
index c2dc657..0619e24 100644
--- a/src/gxvalid/gxvmort.h
+++ b/src/gxvalid/gxvmort.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common definition for mort table (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort0.c b/src/gxvalid/gxvmort0.c
index c7901cb..2c01bf9 100644
--- a/src/gxvalid/gxvmort0.c
+++ b/src/gxvalid/gxvmort0.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type0 (Indic Script Rearrangement) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
static const char* GXV_Mort_IndicScript_Msg[] =
diff --git a/src/gxvalid/gxvmort1.c b/src/gxvalid/gxvmort1.c
index f2f4f57..c71ba13 100644
--- a/src/gxvalid/gxvmort1.c
+++ b/src/gxvalid/gxvmort1.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type1 (Contextual Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
typedef struct GXV_mort_subtable_type1_StateOptRec_
diff --git a/src/gxvalid/gxvmort2.c b/src/gxvalid/gxvmort2.c
index 33fea0f..889d3bd 100644
--- a/src/gxvalid/gxvmort2.c
+++ b/src/gxvalid/gxvmort2.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type2 (Ligature Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
typedef struct GXV_mort_subtable_type2_StateOptRec_
diff --git a/src/gxvalid/gxvmort4.c b/src/gxvalid/gxvmort4.c
index 6cf1e80..f8ce6cf 100644
--- a/src/gxvalid/gxvmort4.c
+++ b/src/gxvalid/gxvmort4.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type4 (Non-Contextual Glyph Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
static void
diff --git a/src/gxvalid/gxvmort5.c b/src/gxvalid/gxvmort5.c
index ae94e22..1ba1e5d 100644
--- a/src/gxvalid/gxvmort5.c
+++ b/src/gxvalid/gxvmort5.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type5 (Contextual Glyph Insertion) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmort
+#define FT_COMPONENT gxvmort
/*
diff --git a/src/gxvalid/gxvmorx.c b/src/gxvalid/gxvmorx.c
index f02ff54..8bd45c2 100644
--- a/src/gxvalid/gxvmorx.c
+++ b/src/gxvalid/gxvmorx.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT morx table validation (body).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -35,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
static void
diff --git a/src/gxvalid/gxvmorx.h b/src/gxvalid/gxvmorx.h
index 1ded623..e257270 100644
--- a/src/gxvalid/gxvmorx.h
+++ b/src/gxvalid/gxvmorx.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common definition for morx table (specification).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx0.c b/src/gxvalid/gxvmorx0.c
index d65ced5..d7764a0 100644
--- a/src/gxvalid/gxvmorx0.c
+++ b/src/gxvalid/gxvmorx0.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type0 (Indic Script Rearrangement) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
static void
diff --git a/src/gxvalid/gxvmorx1.c b/src/gxvalid/gxvmorx1.c
index 1c8da1b..5b41b36 100644
--- a/src/gxvalid/gxvmorx1.c
+++ b/src/gxvalid/gxvmorx1.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type1 (Contextual Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
typedef struct GXV_morx_subtable_type1_StateOptRec_
diff --git a/src/gxvalid/gxvmorx2.c b/src/gxvalid/gxvmorx2.c
index d20fc57..ec4c812 100644
--- a/src/gxvalid/gxvmorx2.c
+++ b/src/gxvalid/gxvmorx2.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type2 (Ligature Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
typedef struct GXV_morx_subtable_type2_StateOptRec_
diff --git a/src/gxvalid/gxvmorx4.c b/src/gxvalid/gxvmorx4.c
index fce219c..7b04153 100644
--- a/src/gxvalid/gxvmorx4.c
+++ b/src/gxvalid/gxvmorx4.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for "morx" type4 (Non-Contextual Glyph Substitution) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
FT_LOCAL_DEF( void )
diff --git a/src/gxvalid/gxvmorx5.c b/src/gxvalid/gxvmorx5.c
index 8826954..70a4623 100644
--- a/src/gxvalid/gxvmorx5.c
+++ b/src/gxvalid/gxvmorx5.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type5 (Contextual Glyph Insertion) subtable.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvmorx
+#define FT_COMPONENT gxvmorx
/*
diff --git a/src/gxvalid/gxvopbd.c b/src/gxvalid/gxvopbd.c
index 76b6961..f055a22 100644
--- a/src/gxvalid/gxvopbd.c
+++ b/src/gxvalid/gxvopbd.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT opbd table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvopbd
+#define FT_COMPONENT gxvopbd
/*************************************************************************/
diff --git a/src/gxvalid/gxvprop.c b/src/gxvalid/gxvprop.c
index 856dd10..e1911ed 100644
--- a/src/gxvalid/gxvprop.c
+++ b/src/gxvalid/gxvprop.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT prop table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvprop
+#define FT_COMPONENT gxvprop
/*************************************************************************/
diff --git a/src/gxvalid/gxvtrak.c b/src/gxvalid/gxvtrak.c
index d2ceb66..b7794b7 100644
--- a/src/gxvalid/gxvtrak.c
+++ b/src/gxvalid/gxvtrak.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT trak table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_gxvtrak
+#define FT_COMPONENT gxvtrak
/*************************************************************************/
diff --git a/src/gxvalid/module.mk b/src/gxvalid/module.mk
index b64879d..04067ce 100644
--- a/src/gxvalid/module.mk
+++ b/src/gxvalid/module.mk
@@ -2,7 +2,7 @@
# FreeType 2 gxvalid module definition
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
diff --git a/src/gxvalid/rules.mk b/src/gxvalid/rules.mk
index 3a17c03..4ef463b 100644
--- a/src/gxvalid/rules.mk
+++ b/src/gxvalid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
diff --git a/src/gzip/Jamfile b/src/gzip/Jamfile
index a7b4c8c..2c808b7 100644
--- a/src/gzip/Jamfile
+++ b/src/gzip/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/gzip Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c
index 91b343b..5e78bc6 100644
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -8,7 +8,7 @@
* parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -731,7 +731,7 @@
/* check for `input' delayed to `inflate' */
- if ( !memory || ! output_len || !output )
+ if ( !memory || !output_len || !output )
return FT_THROW( Invalid_Argument );
/* this function is modeled after zlib's `uncompress' function */
@@ -746,7 +746,7 @@
stream.zfree = (free_func) ft_gzip_free;
stream.opaque = memory;
- err = inflateInit2( &stream, MAX_WBITS );
+ err = inflateInit2( &stream, MAX_WBITS|32 );
if ( err != Z_OK )
return FT_THROW( Invalid_Argument );
diff --git a/src/gzip/infblock.c b/src/gzip/infblock.c
index d6e2dc2..2b4f0c2 100644
--- a/src/gzip/infblock.c
+++ b/src/gzip/infblock.c
@@ -235,6 +235,7 @@
s->sub.trees.index = 0;
Tracev((stderr, "inflate: table sizes ok\n"));
s->mode = BTREE;
+ /* fall through */
case BTREE:
while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
{
@@ -260,6 +261,7 @@
s->sub.trees.index = 0;
Tracev((stderr, "inflate: bits tree ok\n"));
s->mode = DTREE;
+ /* fall through */
case DTREE:
while (t = s->sub.trees.table,
s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
@@ -335,6 +337,7 @@
}
ZFREE(z, s->sub.trees.blens);
s->mode = CODES;
+ /* fall through */
case CODES:
UPDATE
if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
@@ -351,11 +354,13 @@
break;
}
s->mode = DRY;
+ /* fall through */
case DRY:
FLUSH
if (s->read != s->write)
LEAVE
s->mode = DONE;
+ /* fall through */
case DONE:
r = Z_STREAM_END;
LEAVE
diff --git a/src/gzip/infcodes.c b/src/gzip/infcodes.c
index f7bfd58..ba30654 100644
--- a/src/gzip/infcodes.c
+++ b/src/gzip/infcodes.c
@@ -117,6 +117,7 @@
c->sub.code.need = c->lbits;
c->sub.code.tree = c->ltree;
c->mode = LEN;
+ /* fall through */
case LEN: /* i: get length/literal/eob next */
j = c->sub.code.need;
NEEDBITS(j)
@@ -164,6 +165,7 @@
c->sub.code.tree = c->dtree;
Tracevv((stderr, "inflate: length %u\n", c->len));
c->mode = DIST;
+ /* fall through */
case DIST: /* i: get distance next */
j = c->sub.code.need;
NEEDBITS(j)
@@ -194,6 +196,7 @@
DUMPBITS(j)
Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
c->mode = COPY;
+ /* fall through */
case COPY: /* o: copying bytes in window, waiting for space */
f = q - c->sub.copy.dist;
while (f < s->window) /* modulo window size-"while" instead */
@@ -225,6 +228,7 @@
if (s->read != s->write)
LEAVE
c->mode = END;
+ /* fall through */
case END:
r = Z_STREAM_END;
LEAVE
diff --git a/src/gzip/inflate.c b/src/gzip/inflate.c
index 8877fa3..95e2653 100644
--- a/src/gzip/inflate.c
+++ b/src/gzip/inflate.c
@@ -174,6 +174,7 @@
break;
}
z->state->mode = FLAG;
+ /* fall through */
case FLAG:
NEEDBYTE
b = NEXTBYTE;
@@ -191,18 +192,22 @@
break;
}
z->state->mode = DICT4;
+ /* fall through */
case DICT4:
NEEDBYTE
z->state->sub.check.need = (uLong)NEXTBYTE << 24;
z->state->mode = DICT3;
+ /* fall through */
case DICT3:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 16;
z->state->mode = DICT2;
+ /* fall through */
case DICT2:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 8;
z->state->mode = DICT1;
+ /* fall through */
case DICT1:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE;
@@ -234,18 +239,22 @@
break;
}
z->state->mode = CHECK4;
+ /* fall through */
case CHECK4:
NEEDBYTE
z->state->sub.check.need = (uLong)NEXTBYTE << 24;
z->state->mode = CHECK3;
+ /* fall through */
case CHECK3:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 16;
z->state->mode = CHECK2;
+ /* fall through */
case CHECK2:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 8;
z->state->mode = CHECK1;
+ /* fall through */
case CHECK1:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE;
@@ -259,6 +268,7 @@
}
Tracev((stderr, "inflate: zlib check ok\n"));
z->state->mode = DONE;
+ /* fall through */
case DONE:
return Z_STREAM_END;
case BAD:
diff --git a/src/gzip/rules.mk b/src/gzip/rules.mk
index 1a2e48b..44206a1 100644
--- a/src/gzip/rules.mk
+++ b/src/gzip/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/lzw/Jamfile b/src/lzw/Jamfile
index cb83aa4..ba2d6eb 100644
--- a/src/lzw/Jamfile
+++ b/src/lzw/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/lzw Jamfile
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/lzw/ftlzw.c b/src/lzw/ftlzw.c
index 4a3d70b..9805a1e 100644
--- a/src/lzw/ftlzw.c
+++ b/src/lzw/ftlzw.c
@@ -8,7 +8,7 @@
* be used to parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* Albert Chin-A-Young.
*
* based on code in `src/gzip/ftgzip.c'
diff --git a/src/lzw/ftzopen.c b/src/lzw/ftzopen.c
index b699b2e..67e6760 100644
--- a/src/lzw/ftzopen.c
+++ b/src/lzw/ftzopen.c
@@ -8,7 +8,7 @@
* be used to parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/lzw/ftzopen.h b/src/lzw/ftzopen.h
index 4fbe257..44fe36d 100644
--- a/src/lzw/ftzopen.h
+++ b/src/lzw/ftzopen.h
@@ -8,7 +8,7 @@
* be used to parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/lzw/rules.mk b/src/lzw/rules.mk
index 18933c4..930b32e 100644
--- a/src/lzw/rules.mk
+++ b/src/lzw/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# Albert Chin-A-Young.
#
# based on `src/lzw/rules.mk'
diff --git a/src/otvalid/Jamfile b/src/otvalid/Jamfile
index 21b8e0c..36db0e1 100644
--- a/src/otvalid/Jamfile
+++ b/src/otvalid/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/otvalid Jamfile
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/otvalid/module.mk b/src/otvalid/module.mk
index 34f3dab..5ea5b7b 100644
--- a/src/otvalid/module.mk
+++ b/src/otvalid/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/otvalid/otvalid.c b/src/otvalid/otvalid.c
index 144be58..e3964b9 100644
--- a/src/otvalid/otvalid.c
+++ b/src/otvalid/otvalid.c
@@ -4,7 +4,7 @@
*
* FreeType validator for OpenType tables (body only).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvalid.h b/src/otvalid/otvalid.h
index 1ccdbbf..5ca819f 100644
--- a/src/otvalid/otvalid.h
+++ b/src/otvalid/otvalid.h
@@ -4,7 +4,7 @@
*
* OpenType table validation (specification only).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvbase.c b/src/otvalid/otvbase.c
index 918e383..be69d7c 100644
--- a/src/otvalid/otvbase.c
+++ b/src/otvalid/otvbase.c
@@ -4,7 +4,7 @@
*
* OpenType BASE table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvbase
+#define FT_COMPONENT otvbase
static void
diff --git a/src/otvalid/otvcommn.c b/src/otvalid/otvcommn.c
index 4a2c95e..5ed1723 100644
--- a/src/otvalid/otvcommn.c
+++ b/src/otvalid/otvcommn.c
@@ -4,7 +4,7 @@
*
* OpenType common tables validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -26,7 +26,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvcommon
+#define FT_COMPONENT otvcommon
/*************************************************************************/
diff --git a/src/otvalid/otvcommn.h b/src/otvalid/otvcommn.h
index 3cd6d86..bfcc5b9 100644
--- a/src/otvalid/otvcommn.h
+++ b/src/otvalid/otvcommn.h
@@ -4,7 +4,7 @@
*
* OpenType common tables validation (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otverror.h b/src/otvalid/otverror.h
index 24e8d1d..a7d35ac 100644
--- a/src/otvalid/otverror.h
+++ b/src/otvalid/otverror.h
@@ -4,7 +4,7 @@
*
* OpenType validation module error codes (specification only).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgdef.c b/src/otvalid/otvgdef.c
index 68c00a5..2529b54 100644
--- a/src/otvalid/otvgdef.c
+++ b/src/otvalid/otvgdef.c
@@ -4,7 +4,7 @@
*
* OpenType GDEF table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvgdef
+#define FT_COMPONENT otvgdef
/*************************************************************************/
diff --git a/src/otvalid/otvgpos.c b/src/otvalid/otvgpos.c
index 17f2437..f3bddea 100644
--- a/src/otvalid/otvgpos.c
+++ b/src/otvalid/otvgpos.c
@@ -4,7 +4,7 @@
*
* OpenType GPOS table validation (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvgpos
+#define FT_COMPONENT otvgpos
static void
diff --git a/src/otvalid/otvgpos.h b/src/otvalid/otvgpos.h
index c216609..b315431 100644
--- a/src/otvalid/otvgpos.h
+++ b/src/otvalid/otvgpos.h
@@ -4,7 +4,7 @@
*
* OpenType GPOS table validator (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgsub.c b/src/otvalid/otvgsub.c
index 0180b1a..97da997 100644
--- a/src/otvalid/otvgsub.c
+++ b/src/otvalid/otvgsub.c
@@ -4,7 +4,7 @@
*
* OpenType GSUB table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -27,7 +27,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvgsub
+#define FT_COMPONENT otvgsub
/*************************************************************************/
diff --git a/src/otvalid/otvjstf.c b/src/otvalid/otvjstf.c
index 7a5769a..d4e6d87 100644
--- a/src/otvalid/otvjstf.c
+++ b/src/otvalid/otvjstf.c
@@ -4,7 +4,7 @@
*
* OpenType JSTF table validation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvjstf
+#define FT_COMPONENT otvjstf
#define JstfPriorityFunc otv_JstfPriority_validate
diff --git a/src/otvalid/otvmath.c b/src/otvalid/otvmath.c
index 4a9f3b0..3aaf0ec 100644
--- a/src/otvalid/otvmath.c
+++ b/src/otvalid/otvmath.c
@@ -4,7 +4,7 @@
*
* OpenType MATH table validation (body).
*
- * Copyright 2007-2018 by
+ * Copyright (C) 2007-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by George Williams.
@@ -30,7 +30,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvmath
+#define FT_COMPONENT otvmath
diff --git a/src/otvalid/otvmod.c b/src/otvalid/otvmod.c
index 5dd543b..f417bd2 100644
--- a/src/otvalid/otvmod.c
+++ b/src/otvalid/otvmod.c
@@ -4,7 +4,7 @@
*
* FreeType's OpenType validation module implementation (body).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_otvmodule
+#define FT_COMPONENT otvmodule
static FT_Error
diff --git a/src/otvalid/otvmod.h b/src/otvalid/otvmod.h
index a08512f..5539de7 100644
--- a/src/otvalid/otvmod.h
+++ b/src/otvalid/otvmod.h
@@ -5,7 +5,7 @@
* FreeType's OpenType validation module implementation
* (specification).
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/rules.mk b/src/otvalid/rules.mk
index d4fc723..3c6ece1 100644
--- a/src/otvalid/rules.mk
+++ b/src/otvalid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2004-2018 by
+# Copyright (C) 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pcf/Jamfile b/src/pcf/Jamfile
index 7b92b12..fd17d53 100644
--- a/src/pcf/Jamfile
+++ b/src/pcf/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/pcf Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pcf/pcf.h b/src/pcf/pcf.h
index 3c4eb6a..33be4bc 100644
--- a/src/pcf/pcf.h
+++ b/src/pcf/pcf.h
@@ -99,11 +99,25 @@
FT_Short ascent;
FT_Short descent;
FT_Short attributes;
- FT_ULong bits;
+
+ FT_ULong bits; /* offset into the PCF_BITMAPS table */
} PCF_MetricRec, *PCF_Metric;
+ typedef struct PCF_EncRec_
+ {
+ FT_UShort firstCol;
+ FT_UShort lastCol;
+ FT_UShort firstRow;
+ FT_UShort lastRow;
+ FT_UShort defaultChar;
+
+ FT_UShort* offset;
+
+ } PCF_EncRec, *PCF_Enc;
+
+
typedef struct PCF_AccelRec_
{
FT_Byte noOverlap;
@@ -128,41 +142,28 @@
* This file uses X11 terminology for PCF data; an `encoding' in X11 speak
* is the same as a `character code' in FreeType speak.
*/
- typedef struct PCF_EncodingRec_
- {
- FT_ULong enc;
- FT_UShort glyph; /* an index into PCF_Face's `metrics' array */
-
- } PCF_EncodingRec, *PCF_Encoding;
-
-
typedef struct PCF_FaceRec_
{
- FT_FaceRec root;
+ FT_FaceRec root;
- FT_StreamRec comp_stream;
- FT_Stream comp_source;
+ FT_StreamRec comp_stream;
+ FT_Stream comp_source;
- char* charset_encoding;
- char* charset_registry;
+ char* charset_encoding;
+ char* charset_registry;
- PCF_TocRec toc;
- PCF_AccelRec accel;
+ PCF_TocRec toc;
+ PCF_AccelRec accel;
- int nprops;
- PCF_Property properties;
+ int nprops;
+ PCF_Property properties;
- FT_ULong nmetrics;
- PCF_Metric metrics;
- FT_ULong nencodings;
- PCF_Encoding encodings;
+ FT_ULong nmetrics;
+ PCF_Metric metrics;
- FT_UShort defaultChar;
+ PCF_EncRec enc;
- FT_ULong bitmapsFormat;
-
- FT_CharMap charmap_handle;
- FT_CharMapRec charmap; /* a single charmap per face */
+ FT_ULong bitmapsFormat;
} PCF_FaceRec, *PCF_Face;
diff --git a/src/pcf/pcfdrivr.c b/src/pcf/pcfdrivr.c
index e2f7e7c..b39592c 100644
--- a/src/pcf/pcfdrivr.c
+++ b/src/pcf/pcfdrivr.c
@@ -45,7 +45,7 @@
#include "pcfutil.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pcfread
+#define FT_COMPONENT pcfread
#include FT_SERVICE_BDF_H
#include FT_SERVICE_FONT_FORMAT_H
@@ -60,7 +60,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pcfdriver
+#define FT_COMPONENT pcfdriver
/*
@@ -69,9 +69,8 @@
*/
typedef struct PCF_CMapRec_
{
- FT_CMapRec root;
- FT_ULong num_encodings;
- PCF_Encoding encodings;
+ FT_CMapRec root;
+ PCF_Enc enc;
} PCF_CMapRec, *PCF_CMap;
@@ -86,8 +85,7 @@
FT_UNUSED( init_data );
- cmap->num_encodings = face->nencodings;
- cmap->encodings = face->encodings;
+ cmap->enc = &face->enc;
return FT_Err_Ok;
}
@@ -99,8 +97,7 @@
PCF_CMap cmap = (PCF_CMap)pcfcmap;
- cmap->encodings = NULL;
- cmap->num_encodings = 0;
+ cmap->enc = NULL;
}
@@ -108,36 +105,26 @@
pcf_cmap_char_index( FT_CMap pcfcmap, /* PCF_CMap */
FT_UInt32 charcode )
{
- PCF_CMap cmap = (PCF_CMap)pcfcmap;
- PCF_Encoding encodings = cmap->encodings;
- FT_ULong min, max, mid;
- FT_UInt result = 0;
+ PCF_CMap cmap = (PCF_CMap)pcfcmap;
+ PCF_Enc enc = cmap->enc;
+ FT_UShort charcodeRow;
+ FT_UShort charcodeCol;
- min = 0;
- max = cmap->num_encodings;
+ if ( charcode > (FT_UInt32)( enc->lastRow * 256 + enc->lastCol ) ||
+ charcode < (FT_UInt32)( enc->firstRow * 256 + enc->firstCol ) )
+ return 0;
- while ( min < max )
- {
- FT_ULong code;
+ charcodeRow = (FT_UShort)( charcode >> 8 );
+ charcodeCol = (FT_UShort)( charcode & 0xFF );
+ if ( charcodeCol < enc->firstCol ||
+ charcodeCol > enc->lastCol )
+ return 0;
- mid = ( min + max ) >> 1;
- code = encodings[mid].enc;
-
- if ( charcode == code )
- {
- result = encodings[mid].glyph;
- break;
- }
-
- if ( charcode < code )
- max = mid;
- else
- min = mid + 1;
- }
-
- return result;
+ return (FT_UInt)enc->offset[( charcodeRow - enc->firstRow ) *
+ ( enc->lastCol - enc->firstCol + 1 ) +
+ charcodeCol - enc->firstCol];
}
@@ -145,52 +132,42 @@
pcf_cmap_char_next( FT_CMap pcfcmap, /* PCF_CMap */
FT_UInt32 *acharcode )
{
- PCF_CMap cmap = (PCF_CMap)pcfcmap;
- PCF_Encoding encodings = cmap->encodings;
- FT_ULong min, max, mid;
- FT_ULong charcode = *acharcode + 1;
- FT_UInt result = 0;
+ PCF_CMap cmap = (PCF_CMap)pcfcmap;
+ PCF_Enc enc = cmap->enc;
+ FT_UInt32 charcode = *acharcode;
+ FT_UShort charcodeRow;
+ FT_UShort charcodeCol;
+ FT_Int result = 0;
- min = 0;
- max = cmap->num_encodings;
-
- while ( min < max )
+ while ( charcode < (FT_UInt32)( enc->lastRow * 256 + enc->lastCol ) )
{
- FT_ULong code;
+ charcode++;
+ if ( charcode < (FT_UInt32)( enc->firstRow * 256 + enc->firstCol ) )
+ charcode = (FT_UInt32)( enc->firstRow * 256 + enc->firstCol );
- mid = ( min + max ) >> 1;
- code = encodings[mid].enc;
+ charcodeRow = (FT_UShort)( charcode >> 8 );
+ charcodeCol = (FT_UShort)( charcode & 0xFF );
- if ( charcode == code )
+ if ( charcodeCol < enc->firstCol )
+ charcodeCol = enc->firstCol;
+ else if ( charcodeCol > enc->lastCol )
{
- result = encodings[mid].glyph;
- goto Exit;
+ charcodeRow++;
+ charcodeCol = enc->firstCol;
}
- if ( charcode < code )
- max = mid;
- else
- min = mid + 1;
+ charcode = (FT_UInt32)( charcodeRow * 256 + charcodeCol );
+
+ result = (FT_UInt)enc->offset[( charcodeRow - enc->firstRow ) *
+ ( enc->lastCol - enc->firstCol + 1 ) +
+ charcodeCol - enc->firstCol];
+ if ( result != 0xFFFFU )
+ break;
}
- charcode = 0;
- if ( min < cmap->num_encodings )
- {
- charcode = encodings[min].enc;
- result = encodings[min].glyph;
- }
-
- Exit:
- if ( charcode > 0xFFFFFFFFUL )
- {
- FT_TRACE1(( "pcf_cmap_char_next: charcode 0x%x > 32bit API" ));
- *acharcode = 0;
- /* XXX: result should be changed to indicate an overflow error */
- }
- else
- *acharcode = (FT_UInt32)charcode;
+ *acharcode = charcode;
return result;
}
@@ -221,8 +198,8 @@
memory = FT_FACE_MEMORY( face );
- FT_FREE( face->encodings );
FT_FREE( face->metrics );
+ FT_FREE( face->enc.offset );
/* free properties */
if ( face->properties )
diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c
index 14cce67..2ffe22d 100644
--- a/src/pcf/pcfread.c
+++ b/src/pcf/pcfread.c
@@ -44,7 +44,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pcfread
+#define FT_COMPONENT pcfread
#ifdef FT_DEBUG_LEVEL_TRACE
@@ -743,33 +743,39 @@
if ( !orig_nmetrics )
return FT_THROW( Invalid_Table );
- /* PCF is a format from ancient times; Unicode was in its */
- /* infancy, and widely used two-byte character sets for CJK */
- /* scripts (Big 5, GB 2312, JIS X 0208, etc.) did have at most */
- /* 15000 characters. Even the more exotic CNS 11643 and CCCII */
- /* standards, which were essentially three-byte character sets, */
- /* provided less then 65536 assigned characters. */
- /* */
- /* While technically possible to have a larger number of glyphs */
- /* in PCF files, we thus limit the number to 65536. */
- if ( orig_nmetrics > 65536 )
+ /*
+ * PCF is a format from ancient times; Unicode was in its infancy, and
+ * widely used two-byte character sets for CJK scripts (Big 5, GB 2312,
+ * JIS X 0208, etc.) did have at most 15000 characters. Even the more
+ * exotic CNS 11643 and CCCII standards, which were essentially
+ * three-byte character sets, provided less then 65536 assigned
+ * characters.
+ *
+ * While technically possible to have a larger number of glyphs in PCF
+ * files, we thus limit the number to 65535, taking into account that we
+ * synthesize the metrics of glyph 0 to be a copy of the `default
+ * character', and that 0xFFFF in the encodings array indicates a
+ * missing glyph.
+ */
+ if ( orig_nmetrics > 65534 )
{
FT_TRACE0(( "pcf_get_metrics:"
- " only loading first 65536 metrics\n" ));
- nmetrics = 65536;
+ " only loading first 65534 metrics\n" ));
+ nmetrics = 65534;
}
else
nmetrics = orig_nmetrics;
- face->nmetrics = nmetrics;
+ face->nmetrics = nmetrics + 1;
- if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )
+ if ( FT_NEW_ARRAY( face->metrics, face->nmetrics ) )
return error;
- metrics = face->metrics;
+ /* we handle glyph index 0 later on */
+ metrics = face->metrics + 1;
FT_TRACE4(( "\n" ));
- for ( i = 0; i < nmetrics; i++, metrics++ )
+ for ( i = 1; i < face->nmetrics; i++, metrics++ )
{
FT_TRACE5(( " idx %ld:", i ));
error = pcf_get_metric( stream, format, metrics );
@@ -808,12 +814,10 @@
pcf_get_bitmaps( FT_Stream stream,
PCF_Face face )
{
- FT_Error error;
- FT_Memory memory = FT_FACE( face )->memory;
- FT_ULong* offsets = NULL;
- FT_ULong bitmapSizes[GLYPHPADOPTIONS];
- FT_ULong format, size;
- FT_ULong nbitmaps, orig_nbitmaps, i, sizebitmaps = 0;
+ FT_Error error;
+ FT_ULong bitmapSizes[GLYPHPADOPTIONS];
+ FT_ULong format, size, pos;
+ FT_ULong nbitmaps, orig_nbitmaps, i, sizebitmaps = 0;
error = pcf_seek_to_table_type( stream,
@@ -859,31 +863,46 @@
FT_TRACE4(( " number of bitmaps: %ld\n", orig_nbitmaps ));
/* see comment in `pcf_get_metrics' */
- if ( orig_nbitmaps > 65536 )
+ if ( orig_nbitmaps > 65534 )
{
FT_TRACE0(( "pcf_get_bitmaps:"
- " only loading first 65536 bitmaps\n" ));
- nbitmaps = 65536;
+ " only loading first 65534 bitmaps\n" ));
+ nbitmaps = 65534;
}
else
nbitmaps = orig_nbitmaps;
- if ( nbitmaps != face->nmetrics )
+ /* no extra bitmap for glyph 0 */
+ if ( nbitmaps != face->nmetrics - 1 )
return FT_THROW( Invalid_File_Format );
- if ( FT_NEW_ARRAY( offsets, nbitmaps ) )
- return error;
+ /* start position of bitmap data */
+ pos = stream->pos + nbitmaps * 4 + 4 * 4;
FT_TRACE5(( "\n" ));
- for ( i = 0; i < nbitmaps; i++ )
+ for ( i = 1; i <= nbitmaps; i++ )
{
+ FT_ULong offset;
+
+
if ( PCF_BYTE_ORDER( format ) == MSBFirst )
- (void)FT_READ_ULONG( offsets[i] );
+ (void)FT_READ_ULONG( offset );
else
- (void)FT_READ_ULONG_LE( offsets[i] );
+ (void)FT_READ_ULONG_LE( offset );
FT_TRACE5(( " bitmap %lu: offset %lu (0x%lX)\n",
- i, offsets[i], offsets[i] ));
+ i, offset, offset ));
+
+ /* right now, we only check the offset with a rough estimate; */
+ /* actual bitmaps are only loaded on demand */
+ if ( offset > size )
+ {
+ FT_TRACE0(( "pcf_get_bitmaps:"
+ " invalid offset to bitmap data of glyph %lu\n", i ));
+ face->metrics[i].bits = pos;
+ }
+ else
+ face->metrics[i].bits = pos + offset;
}
if ( error )
goto Bail;
@@ -910,24 +929,9 @@
FT_UNUSED( sizebitmaps ); /* only used for debugging */
- /* right now, we only check the bitmap offsets; */
- /* actual bitmaps are only loaded on demand */
- for ( i = 0; i < nbitmaps; i++ )
- {
- /* rough estimate */
- if ( offsets[i] > size )
- {
- FT_TRACE0(( "pcf_get_bitmaps:"
- " invalid offset to bitmap data of glyph %lu\n", i ));
- }
- else
- face->metrics[i].bits = stream->pos + offsets[i];
- }
-
face->bitmapsFormat = format;
Bail:
- FT_FREE( offsets );
return error;
}
@@ -936,22 +940,54 @@
* This file uses X11 terminology for PCF data; an `encoding' in X11 speak
* is the same as a character code in FreeType speak.
*/
+#define PCF_ENC_SIZE 10
+
+ static
+ const FT_Frame_Field pcf_enc_header[] =
+ {
+#undef FT_STRUCTURE
+#define FT_STRUCTURE PCF_EncRec
+
+ FT_FRAME_START( PCF_ENC_SIZE ),
+ FT_FRAME_USHORT_LE( firstCol ),
+ FT_FRAME_USHORT_LE( lastCol ),
+ FT_FRAME_USHORT_LE( firstRow ),
+ FT_FRAME_USHORT_LE( lastRow ),
+ FT_FRAME_USHORT_LE( defaultChar ),
+ FT_FRAME_END
+ };
+
+
+ static
+ const FT_Frame_Field pcf_enc_msb_header[] =
+ {
+#undef FT_STRUCTURE
+#define FT_STRUCTURE PCF_EncRec
+
+ FT_FRAME_START( PCF_ENC_SIZE ),
+ FT_FRAME_USHORT( firstCol ),
+ FT_FRAME_USHORT( lastCol ),
+ FT_FRAME_USHORT( firstRow ),
+ FT_FRAME_USHORT( lastRow ),
+ FT_FRAME_USHORT( defaultChar ),
+ FT_FRAME_END
+ };
+
+
static FT_Error
pcf_get_encodings( FT_Stream stream,
PCF_Face face )
{
- FT_Error error;
- FT_Memory memory = FT_FACE( face )->memory;
- FT_ULong format, size;
- FT_UShort firstCol, lastCol;
- FT_UShort firstRow, lastRow;
- FT_ULong nencoding;
- FT_UShort defaultCharRow, defaultCharCol;
- FT_UShort encodingOffset, defaultCharEncodingOffset;
- FT_UShort i, j;
- FT_Byte* pos;
- FT_ULong k;
- PCF_Encoding encoding = NULL;
+ FT_Error error;
+ FT_Memory memory = FT_FACE( face )->memory;
+ FT_ULong format, size;
+ PCF_Enc enc = &face->enc;
+ FT_ULong nencoding;
+ FT_UShort* offset;
+ FT_UShort defaultCharRow, defaultCharCol;
+ FT_UShort encodingOffset, defaultCharEncodingOffset;
+ FT_UShort i, j;
+ FT_Byte* pos;
error = pcf_seek_to_table_type( stream,
@@ -961,126 +997,125 @@
&format,
&size );
if ( error )
- return error;
+ goto Bail;
- error = FT_Stream_EnterFrame( stream, 14 );
- if ( error )
- return error;
-
- format = FT_GET_ULONG_LE();
-
- /* X11's reference implementation uses the equivalent to */
- /* `FT_GET_SHORT' for `defaultChar', however this doesn't */
- /* make sense for most encodings. */
- if ( PCF_BYTE_ORDER( format ) == MSBFirst )
- {
- firstCol = FT_GET_USHORT();
- lastCol = FT_GET_USHORT();
- firstRow = FT_GET_USHORT();
- lastRow = FT_GET_USHORT();
- face->defaultChar = FT_GET_USHORT();
- }
- else
- {
- firstCol = FT_GET_USHORT_LE();
- lastCol = FT_GET_USHORT_LE();
- firstRow = FT_GET_USHORT_LE();
- lastRow = FT_GET_USHORT_LE();
- face->defaultChar = FT_GET_USHORT_LE();
- }
-
- FT_Stream_ExitFrame( stream );
+ if ( FT_READ_ULONG_LE( format ) )
+ goto Bail;
FT_TRACE4(( "pcf_get_encodings:\n"
" format: 0x%lX (%s)\n",
format,
PCF_BYTE_ORDER( format ) == MSBFirst ? "MSB" : "LSB" ));
- if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )
+ if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) &&
+ !PCF_FORMAT_MATCH( format, PCF_BDF_ENCODINGS ) )
return FT_THROW( Invalid_File_Format );
+ if ( PCF_BYTE_ORDER( format ) == MSBFirst )
+ {
+ if ( FT_STREAM_READ_FIELDS( pcf_enc_msb_header, enc ) )
+ goto Bail;
+ }
+ else
+ {
+ if ( FT_STREAM_READ_FIELDS( pcf_enc_header, enc ) )
+ goto Bail;
+ }
+
FT_TRACE4(( " firstCol 0x%X, lastCol 0x%X\n"
" firstRow 0x%X, lastRow 0x%X\n"
" defaultChar 0x%X\n",
- firstCol, lastCol,
- firstRow, lastRow,
- face->defaultChar ));
+ enc->firstCol, enc->lastCol,
+ enc->firstRow, enc->lastRow,
+ enc->defaultChar ));
/* sanity checks; we limit numbers of rows and columns to 256 */
- if ( firstCol > lastCol ||
- lastCol > 0xFF ||
- firstRow > lastRow ||
- lastRow > 0xFF )
+ if ( enc->firstCol > enc->lastCol ||
+ enc->lastCol > 0xFF ||
+ enc->firstRow > enc->lastRow ||
+ enc->lastRow > 0xFF )
return FT_THROW( Invalid_Table );
- nencoding = (FT_ULong)( lastCol - firstCol + 1 ) *
- (FT_ULong)( lastRow - firstRow + 1 );
+ nencoding = (FT_ULong)( enc->lastCol - enc->firstCol + 1 ) *
+ (FT_ULong)( enc->lastRow - enc->firstRow + 1 );
- if ( FT_NEW_ARRAY( encoding, nencoding ) )
- return error;
+ if ( FT_NEW_ARRAY( enc->offset, nencoding ) )
+ goto Bail;
error = FT_Stream_EnterFrame( stream, 2 * nencoding );
if ( error )
- goto Bail;
+ goto Exit;
FT_TRACE5(( "\n" ));
- defaultCharRow = face->defaultChar >> 8;
- defaultCharCol = face->defaultChar & 0xFF;
+ defaultCharRow = enc->defaultChar >> 8;
+ defaultCharCol = enc->defaultChar & 0xFF;
/* validate default character */
- if ( defaultCharRow < firstRow ||
- defaultCharRow > lastRow ||
- defaultCharCol < firstCol ||
- defaultCharCol > lastCol )
+ if ( defaultCharRow < enc->firstRow ||
+ defaultCharRow > enc->lastRow ||
+ defaultCharCol < enc->firstCol ||
+ defaultCharCol > enc->lastCol )
{
- face->defaultChar = firstRow * 256U + firstCol;
+ enc->defaultChar = enc->firstRow * 256U + enc->firstCol;
FT_TRACE0(( "pcf_get_encodings:"
" Invalid default character set to %u\n",
- face->defaultChar ));
+ enc->defaultChar ));
- defaultCharRow = face->defaultChar >> 8;
- defaultCharCol = face->defaultChar & 0xFF;
+ defaultCharRow = enc->firstRow;
+ defaultCharCol = enc->firstCol;
}
- /* FreeType mandates that glyph index 0 is the `undefined glyph', */
- /* which PCF calls the `default character'. For this reason, we */
- /* swap the positions of glyph index 0 and the index corresponding */
- /* to `defaultChar' in case they are different. */
-
- /* `stream->cursor' still points at the beginning of the frame; */
- /* we can thus easily get the offset to the default character */
+ /*
+ * FreeType mandates that glyph index 0 is the `undefined glyph', which
+ * PCF calls the `default character'. However, FreeType needs glyph
+ * index 0 to be used for the undefined glyph only, which is is not the
+ * case for PCF. For this reason, we add one slot for glyph index 0 and
+ * simply copy the default character to it.
+ *
+ * `stream->cursor' still points to the beginning of the frame; we can
+ * thus easily get the offset to the default character.
+ */
pos = stream->cursor +
- 2 * ( ( defaultCharRow - firstRow ) * ( lastCol - firstCol + 1 ) +
- defaultCharCol - firstCol );
+ 2 * ( ( defaultCharRow - enc->firstRow ) *
+ ( enc->lastCol - enc->firstCol + 1 ) +
+ defaultCharCol - enc->firstCol );
if ( PCF_BYTE_ORDER( format ) == MSBFirst )
defaultCharEncodingOffset = FT_PEEK_USHORT( pos );
else
defaultCharEncodingOffset = FT_PEEK_USHORT_LE( pos );
- if ( defaultCharEncodingOffset >= face->nmetrics )
+ if ( defaultCharEncodingOffset == 0xFFFF )
{
FT_TRACE0(( "pcf_get_encodings:"
- " Invalid glyph index for default character,"
- " setting to zero\n" ));
- defaultCharEncodingOffset = 0;
+ " No glyph for default character,\n"
+ " "
+ " setting it to the first glyph of the font\n" ));
+ defaultCharEncodingOffset = 1;
+ }
+ else
+ {
+ defaultCharEncodingOffset++;
+
+ if ( defaultCharEncodingOffset >= face->nmetrics )
+ {
+ FT_TRACE0(( "pcf_get_encodings:"
+ " Invalid glyph index for default character,\n"
+ " "
+ " setting it to the first glyph of the font\n" ));
+ defaultCharEncodingOffset = 1;
+ }
}
- if ( defaultCharEncodingOffset )
+ /* copy metrics of default character to index 0 */
+ face->metrics[0] = face->metrics[defaultCharEncodingOffset];
+
+ /* now loop over all values */
+ offset = enc->offset;
+ for ( i = enc->firstRow; i <= enc->lastRow; i++ )
{
- /* do the swapping */
- PCF_MetricRec tmp = face->metrics[defaultCharEncodingOffset];
-
-
- face->metrics[defaultCharEncodingOffset] = face->metrics[0];
- face->metrics[0] = tmp;
- }
-
- k = 0;
- for ( i = firstRow; i <= lastRow; i++ )
- {
- for ( j = firstCol; j <= lastCol; j++ )
+ for ( j = enc->firstCol; j <= enc->lastCol; j++ )
{
/* X11's reference implementation uses the equivalent to */
/* `FT_GET_SHORT', however PCF fonts with more than 32768 */
@@ -1091,35 +1126,19 @@
else
encodingOffset = FT_GET_USHORT_LE();
- if ( encodingOffset != 0xFFFFU )
- {
- if ( encodingOffset == defaultCharEncodingOffset )
- encodingOffset = 0;
- else if ( encodingOffset == 0 )
- encodingOffset = defaultCharEncodingOffset;
-
- encoding[k].enc = i * 256U + j;
- encoding[k].glyph = encodingOffset;
-
- FT_TRACE5(( " code %u (0x%04X): idx %u\n",
- encoding[k].enc, encoding[k].enc, encoding[k].glyph ));
-
- k++;
- }
+ /* everything is off by 1 due to the artificial glyph 0 */
+ *offset++ = encodingOffset == 0xFFFF ? 0xFFFF
+ : encodingOffset + 1;
}
}
FT_Stream_ExitFrame( stream );
- if ( FT_RENEW_ARRAY( encoding, nencoding, k ) )
- goto Bail;
-
- face->nencodings = k;
- face->encodings = encoding;
-
return error;
+ Exit:
+ FT_FREE( enc->offset );
+
Bail:
- FT_FREE( encoding );
return error;
}
@@ -1293,9 +1312,8 @@
PCF_Property prop;
- size_t nn, len;
- char* strings[4] = { NULL, NULL, NULL, NULL };
- size_t lengths[4];
+ const char* strings[4] = { NULL, NULL, NULL, NULL };
+ size_t lengths[4], nn, len;
face->style_flags = 0;
@@ -1307,8 +1325,8 @@
{
face->style_flags |= FT_STYLE_FLAG_ITALIC;
strings[2] = ( *(prop->value.atom) == 'O' ||
- *(prop->value.atom) == 'o' ) ? (char *)"Oblique"
- : (char *)"Italic";
+ *(prop->value.atom) == 'o' ) ? "Oblique"
+ : "Italic";
}
prop = pcf_find_property( pcf, "WEIGHT_NAME" );
@@ -1316,20 +1334,20 @@
( *(prop->value.atom) == 'B' || *(prop->value.atom) == 'b' ) )
{
face->style_flags |= FT_STYLE_FLAG_BOLD;
- strings[1] = (char*)"Bold";
+ strings[1] = "Bold";
}
prop = pcf_find_property( pcf, "SETWIDTH_NAME" );
if ( prop && prop->isString &&
*(prop->value.atom) &&
!( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) )
- strings[3] = (char*)( prop->value.atom );
+ strings[3] = (const char*)( prop->value.atom );
prop = pcf_find_property( pcf, "ADD_STYLE_NAME" );
if ( prop && prop->isString &&
*(prop->value.atom) &&
!( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) )
- strings[0] = (char*)( prop->value.atom );
+ strings[0] = (const char*)( prop->value.atom );
for ( len = 0, nn = 0; nn < 4; nn++ )
{
@@ -1343,7 +1361,7 @@
if ( len == 0 )
{
- strings[0] = (char*)"Regular";
+ strings[0] = "Regular";
lengths[0] = ft_strlen( strings[0] );
len = lengths[0] + 1;
}
@@ -1359,7 +1377,7 @@
for ( nn = 0; nn < 4; nn++ )
{
- char* src = strings[nn];
+ const char* src = strings[nn];
len = lengths[nn];
diff --git a/src/pfr/Jamfile b/src/pfr/Jamfile
index cb55a7e..fbca806 100644
--- a/src/pfr/Jamfile
+++ b/src/pfr/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/pfr Jamfile
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pfr/module.mk b/src/pfr/module.mk
index 27fec8e..30d876d 100644
--- a/src/pfr/module.mk
+++ b/src/pfr/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pfr/pfr.c b/src/pfr/pfr.c
index 2d34615..6d885ea 100644
--- a/src/pfr/pfr.c
+++ b/src/pfr/pfr.c
@@ -4,7 +4,7 @@
*
* FreeType PFR driver component.
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrcmap.c b/src/pfr/pfrcmap.c
index d83dc58..bfa1b9e 100644
--- a/src/pfr/pfrcmap.c
+++ b/src/pfr/pfrcmap.c
@@ -4,7 +4,7 @@
*
* FreeType PFR cmap handling (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrcmap.h b/src/pfr/pfrcmap.h
index 6a43bdb..1e203a0 100644
--- a/src/pfr/pfrcmap.h
+++ b/src/pfr/pfrcmap.h
@@ -4,7 +4,7 @@
*
* FreeType PFR cmap handling (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrdrivr.c b/src/pfr/pfrdrivr.c
index 4b8707f..f67eebf 100644
--- a/src/pfr/pfrdrivr.c
+++ b/src/pfr/pfrdrivr.c
@@ -4,7 +4,7 @@
*
* FreeType PFR driver interface (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrdrivr.h b/src/pfr/pfrdrivr.h
index 6adb2fd..33b7b94 100644
--- a/src/pfr/pfrdrivr.h
+++ b/src/pfr/pfrdrivr.h
@@ -4,7 +4,7 @@
*
* High-level Type PFR driver interface (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrerror.h b/src/pfr/pfrerror.h
index f9fde3a..4829cfc 100644
--- a/src/pfr/pfrerror.h
+++ b/src/pfr/pfrerror.h
@@ -4,7 +4,7 @@
*
* PFR error codes (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrgload.c b/src/pfr/pfrgload.c
index 06723ff..6ef5856 100644
--- a/src/pfr/pfrgload.c
+++ b/src/pfr/pfrgload.c
@@ -4,7 +4,7 @@
*
* FreeType PFR glyph loader (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -24,7 +24,7 @@
#include "pfrerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pfr
+#define FT_COMPONENT pfr
/*************************************************************************/
diff --git a/src/pfr/pfrgload.h b/src/pfr/pfrgload.h
index 6a5de29..d0e1420 100644
--- a/src/pfr/pfrgload.h
+++ b/src/pfr/pfrgload.h
@@ -4,7 +4,7 @@
*
* FreeType PFR glyph loader (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrload.c b/src/pfr/pfrload.c
index e9c0099..ccf0b7e 100644
--- a/src/pfr/pfrload.c
+++ b/src/pfr/pfrload.c
@@ -4,7 +4,7 @@
*
* FreeType PFR loader (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -23,7 +23,7 @@
#include "pfrerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pfr
+#define FT_COMPONENT pfr
/*
diff --git a/src/pfr/pfrload.h b/src/pfr/pfrload.h
index ef29973..2e7ffd0 100644
--- a/src/pfr/pfrload.h
+++ b/src/pfr/pfrload.h
@@ -4,7 +4,7 @@
*
* FreeType PFR loader (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c
index e51a842..9765f95 100644
--- a/src/pfr/pfrobjs.c
+++ b/src/pfr/pfrobjs.c
@@ -4,7 +4,7 @@
*
* FreeType PFR object methods (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,7 +29,7 @@
#include "pfrerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pfr
+#define FT_COMPONENT pfr
/*************************************************************************/
@@ -122,7 +122,7 @@
stream,
(FT_UInt)( face_index & 0xFFFF ),
face->header.log_dir_offset,
- FT_BOOL( face->header.phy_font_max_size_high != 0 ) );
+ FT_BOOL( face->header.phy_font_max_size_high ) );
if ( error )
goto Exit;
@@ -370,7 +370,7 @@
FT_Bool scaling;
- scaling = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 );
+ scaling = FT_BOOL( !( load_flags & FT_LOAD_NO_SCALE ) );
/* copy outline data */
*outline = slot->glyph.loader->base.outline;
@@ -378,7 +378,7 @@
outline->flags &= ~FT_OUTLINE_OWNER;
outline->flags |= FT_OUTLINE_REVERSE_FILL;
- if ( size && pfrsize->metrics.y_ppem < 24 )
+ if ( pfrsize->metrics.y_ppem < 24 )
outline->flags |= FT_OUTLINE_HIGH_PRECISION;
/* compute the advance vector */
diff --git a/src/pfr/pfrobjs.h b/src/pfr/pfrobjs.h
index e03573f..39cffd0 100644
--- a/src/pfr/pfrobjs.h
+++ b/src/pfr/pfrobjs.h
@@ -4,7 +4,7 @@
*
* FreeType PFR object methods (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c
index f5d3077..00a9616 100644
--- a/src/pfr/pfrsbit.c
+++ b/src/pfr/pfrsbit.c
@@ -4,7 +4,7 @@
*
* FreeType PFR bitmap loader (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -24,7 +24,7 @@
#include "pfrerror.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pfr
+#define FT_COMPONENT pfr
/*************************************************************************/
diff --git a/src/pfr/pfrsbit.h b/src/pfr/pfrsbit.h
index 7002df4..6568b90 100644
--- a/src/pfr/pfrsbit.h
+++ b/src/pfr/pfrsbit.h
@@ -4,7 +4,7 @@
*
* FreeType PFR bitmap loader (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrtypes.h b/src/pfr/pfrtypes.h
index 794706b..6a5f9d5 100644
--- a/src/pfr/pfrtypes.h
+++ b/src/pfr/pfrtypes.h
@@ -4,7 +4,7 @@
*
* FreeType PFR data structures (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/rules.mk b/src/pfr/rules.mk
index 3acb795..f14ca69 100644
--- a/src/pfr/rules.mk
+++ b/src/pfr/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psaux/Jamfile b/src/psaux/Jamfile
index a231d59..30bcc1c 100644
--- a/src/psaux/Jamfile
+++ b/src/psaux/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/psaux Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psaux/afmparse.c b/src/psaux/afmparse.c
index 04c191f..f78adbb 100644
--- a/src/psaux/afmparse.c
+++ b/src/psaux/afmparse.c
@@ -4,7 +4,7 @@
*
* AFM parser (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -953,7 +953,8 @@
error = afm_parse_kern_data( parser );
if ( error )
goto Fail;
- /* fall through since we only support kern data */
+ /* we only support kern data, so ... */
+ /* fall through */
case AFM_TOKEN_ENDFONTMETRICS:
return FT_Err_Ok;
diff --git a/src/psaux/afmparse.h b/src/psaux/afmparse.h
index 2fcc80e..2ceb775 100644
--- a/src/psaux/afmparse.h
+++ b/src/psaux/afmparse.h
@@ -4,7 +4,7 @@
*
* AFM parser (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/cffdecode.c b/src/psaux/cffdecode.c
index 024eb9c..17cccf8 100644
--- a/src/psaux/cffdecode.c
+++ b/src/psaux/cffdecode.c
@@ -4,7 +4,7 @@
*
* PostScript CFF (Type 2) decoding routines (body).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -35,7 +35,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cffdecode
+#define FT_COMPONENT cffdecode
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
@@ -235,8 +235,8 @@
return FT_THROW( Syntax_Error );
}
- adx += decoder->builder.left_bearing.x;
- ady += decoder->builder.left_bearing.y;
+ adx = ADD_LONG( adx, decoder->builder.left_bearing.x );
+ ady = ADD_LONG( ady, decoder->builder.left_bearing.y );
#ifdef FT_CONFIG_OPTION_INCREMENTAL
/* Incremental fonts don't necessarily have valid charsets. */
@@ -860,6 +860,15 @@
case cff_op_flex1:
case cff_op_callsubr:
case cff_op_callgsubr:
+ /* deprecated opcodes */
+ case cff_op_dotsection:
+ /* invalid Type 1 opcodes */
+ case cff_op_hsbw:
+ case cff_op_closepath:
+ case cff_op_callothersubr:
+ case cff_op_seac:
+ case cff_op_sbw:
+ case cff_op_setcurrentpoint:
goto MM_Error;
default:
@@ -955,10 +964,10 @@
case cff_op_hstemhm:
case cff_op_vstemhm:
/* the number of arguments is always even here */
- FT_TRACE4((
- op == cff_op_hstem ? " hstem\n" :
- ( op == cff_op_vstem ? " vstem\n" :
- ( op == cff_op_hstemhm ? " hstemhm\n" : " vstemhm\n" ) ) ));
+ FT_TRACE4(( "%s\n",
+ op == cff_op_hstem ? " hstem" :
+ ( op == cff_op_vstem ? " vstem" :
+ ( op == cff_op_hstemhm ? " hstemhm" : " vstemhm" ) ) ));
if ( hinter )
hinter->stems( hinter->hints,
@@ -972,7 +981,8 @@
case cff_op_hintmask:
case cff_op_cntrmask:
- FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" ));
+ FT_TRACE4(( "%s", op == cff_op_hintmask ? " hintmask"
+ : " cntrmask" ));
/* implement vstem when needed -- */
/* the specification doesn't say it, but this also works */
@@ -1085,8 +1095,8 @@
FT_Int phase = ( op == cff_op_hlineto );
- FT_TRACE4(( op == cff_op_hlineto ? " hlineto\n"
- : " vlineto\n" ));
+ FT_TRACE4(( "%s\n", op == cff_op_hlineto ? " hlineto"
+ : " vlineto" ));
if ( num_args < 0 )
goto Stack_Underflow;
@@ -1257,8 +1267,8 @@
FT_Int nargs;
- FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto\n"
- : " hvcurveto\n" ));
+ FT_TRACE4(( "%s\n", op == cff_op_vhcurveto ? " vhcurveto"
+ : " hvcurveto" ));
if ( cff_builder_start_point( builder, x, y ) )
goto Fail;
@@ -1546,9 +1556,9 @@
}
if ( dx < 0 )
- dx = -dx;
+ dx = NEG_LONG( dx );
if ( dy < 0 )
- dy = -dy;
+ dy = NEG_LONG( dy );
/* strange test, but here it is... */
horizontal = ( dx > dy );
@@ -1558,7 +1568,7 @@
x = ADD_LONG( x, args[0] );
y = ADD_LONG( y, args[1] );
cff_builder_add_point( builder, x, y,
- (FT_Bool)( count == 3 ) );
+ FT_BOOL( count == 3 ) );
args += 2;
}
@@ -1596,7 +1606,7 @@
x = ADD_LONG( x, args[0] );
y = ADD_LONG( y, args[1] );
cff_builder_add_point( builder, x, y,
- (FT_Bool)( count == 4 || count == 1 ) );
+ FT_BOOL( count == 4 || count == 1 ) );
args += 2;
}
@@ -1712,16 +1722,20 @@
break;
case cff_op_random:
- FT_TRACE4(( " random\n" ));
+ {
+ FT_UInt32* randval = in_dict ? &decoder->cff->top_font.random
+ : &decoder->current_subfont->random;
- /* only use the lower 16 bits of `random' */
- /* to generate a number in the range (0;1] */
- args[0] = (FT_Fixed)
- ( ( decoder->current_subfont->random & 0xFFFF ) + 1 );
- args++;
- decoder->current_subfont->random =
- cff_random( decoder->current_subfont->random );
+ FT_TRACE4(( " random\n" ));
+
+ /* only use the lower 16 bits of `random' */
+ /* to generate a number in the range (0;1] */
+ args[0] = (FT_Fixed)( ( *randval & 0xFFFF ) + 1 );
+ args++;
+
+ *randval = cff_random( *randval );
+ }
break;
case cff_op_mul:
@@ -1734,7 +1748,10 @@
case cff_op_sqrt:
FT_TRACE4(( " sqrt\n" ));
- if ( args[0] > 0 )
+ /* without upper limit the loop below might not finish */
+ if ( args[0] > 0x7FFFFFFFL )
+ args[0] = 46341;
+ else if ( args[0] > 0 )
{
FT_Fixed root = args[0];
FT_Fixed new_root;
@@ -1807,6 +1824,7 @@
if ( idx >= 0 )
{
+ idx = idx % count;
while ( idx > 0 )
{
FT_Fixed tmp = args[count - 1];
@@ -1821,6 +1839,10 @@
}
else
{
+ /* before C99 it is implementation-defined whether */
+ /* the result of `%' is negative if the first operand */
+ /* is negative */
+ idx = -( NEG_INT( idx ) % count );
while ( idx < 0 )
{
FT_Fixed tmp = args[0];
@@ -1921,6 +1943,7 @@
case cff_op_blend:
/* this operator was removed from the Type2 specification */
/* in version 16-March-2000 */
+ if ( num_designs )
{
FT_Int num_results = (FT_Int)( args[0] >> 16 );
@@ -1930,7 +1953,8 @@
if ( num_results < 0 )
goto Syntax_Error;
- if ( num_results * (FT_Int)num_designs > num_args )
+ if ( num_results > num_args ||
+ num_results * (FT_Int)num_designs > num_args )
goto Stack_Underflow;
/* since we currently don't handle interpolation of multiple */
@@ -1939,6 +1963,8 @@
args -= num_results * ( num_designs - 1 );
num_args -= num_results * ( num_designs - 1 );
}
+ else
+ goto Syntax_Error;
break;
case cff_op_dotsection:
@@ -2005,20 +2031,31 @@
break;
case cff_op_callothersubr:
- /* this is an invalid Type 2 operator; however, there */
- /* exist fonts which are incorrectly converted from probably */
- /* Type 1 to CFF, and some parsers seem to accept it */
+ {
+ FT_Fixed arg;
- FT_TRACE4(( " callothersubr (invalid op)\n" ));
- /* subsequent `pop' operands should add the arguments, */
- /* this is the implementation described for `unknown' other */
- /* subroutines in the Type1 spec. */
- /* */
- /* XXX Fix return arguments (see discussion below). */
- args -= 2 + ( args[-2] >> 16 );
- if ( args < stack )
- goto Stack_Underflow;
+ /* this is an invalid Type 2 operator; however, there */
+ /* exist fonts which are incorrectly converted from */
+ /* probably Type 1 to CFF, and some parsers seem to accept */
+ /* it */
+
+ FT_TRACE4(( " callothersubr (invalid op)\n" ));
+
+ /* subsequent `pop' operands should add the arguments, */
+ /* this is the implementation described for `unknown' */
+ /* other subroutines in the Type1 spec. */
+ /* */
+ /* XXX Fix return arguments (see discussion below). */
+
+ arg = 2 + ( args[-2] >> 16 );
+ if ( arg >= CFF_MAX_OPERANDS )
+ goto Stack_Underflow;
+
+ args -= arg;
+ if ( args < stack )
+ goto Stack_Underflow;
+ }
break;
case cff_op_pop:
diff --git a/src/psaux/cffdecode.h b/src/psaux/cffdecode.h
index b4003bc..a669197 100644
--- a/src/psaux/cffdecode.h
+++ b/src/psaux/cffdecode.h
@@ -4,7 +4,7 @@
*
* PostScript CFF (Type 2) decoding routines (specification).
*
- * Copyright 2017-2018 by
+ * Copyright (C) 2017-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/module.mk b/src/psaux/module.mk
index 6584d07..bb0886a 100644
--- a/src/psaux/module.mk
+++ b/src/psaux/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psaux/psaux.c b/src/psaux/psaux.c
index 3718876..1db0462 100644
--- a/src/psaux/psaux.c
+++ b/src/psaux/psaux.c
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript driver component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxerr.h b/src/psaux/psauxerr.h
index 3062ae5..523e188 100644
--- a/src/psaux/psauxerr.h
+++ b/src/psaux/psauxerr.h
@@ -4,7 +4,7 @@
*
* PS auxiliary module error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c
index 41ce294..5df8e69 100644
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript module implementation (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxmod.h b/src/psaux/psauxmod.h
index 9d894f7..a0eda0b 100644
--- a/src/psaux/psauxmod.h
+++ b/src/psaux/psauxmod.h
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript module implementation (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psblues.c b/src/psaux/psblues.c
index e44f3c7..89738ce 100644
--- a/src/psaux/psblues.c
+++ b/src/psaux/psblues.c
@@ -51,7 +51,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cf2blues
+#define FT_COMPONENT cf2blues
/*
diff --git a/src/psaux/psconv.c b/src/psaux/psconv.c
index 74273f7..c887616 100644
--- a/src/psaux/psconv.c
+++ b/src/psaux/psconv.c
@@ -4,7 +4,7 @@
*
* Some convenience conversions (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -31,7 +31,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_psconv
+#define FT_COMPONENT psconv
/* The following array is used by various functions to quickly convert */
diff --git a/src/psaux/psconv.h b/src/psaux/psconv.h
index 2472942..6b24bf6 100644
--- a/src/psaux/psconv.h
+++ b/src/psaux/psconv.h
@@ -4,7 +4,7 @@
*
* Some convenience conversions (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psfixed.h b/src/psaux/psfixed.h
index fd3460f..7dff9ef 100644
--- a/src/psaux/psfixed.h
+++ b/src/psaux/psfixed.h
@@ -72,8 +72,7 @@
#define cf2_fixedFraction( x ) \
( (x) - cf2_fixedFloor( x ) )
#define cf2_fracToFixed( x ) \
- ( (x) < 0 ? -( ( -(x) + 0x2000 ) >> 14 ) \
- : ( ( (x) + 0x2000 ) >> 14 ) )
+ ( ( (x) + 0x2000 - ( (x) < 0 ) ) >> 14 )
/* signed numeric types */
diff --git a/src/psaux/psfont.c b/src/psaux/psfont.c
index a7e743d..00e4210 100644
--- a/src/psaux/psfont.c
+++ b/src/psaux/psfont.c
@@ -274,9 +274,6 @@
if ( !font->isT1 )
{
- FT_Service_CFFLoad cffload = (FT_Service_CFFLoad)font->cffload;
-
-
/* check for variation vectors */
vstore = cf2_getVStore( decoder );
hasVariations = ( vstore->dataCount != 0 );
@@ -284,6 +281,9 @@
if ( hasVariations )
{
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ FT_Service_CFFLoad cffload = (FT_Service_CFFLoad)font->cffload;
+
+
/* check whether Private DICT in this subfont needs to be reparsed */
font->error = cf2_getNormalizedVector( decoder,
&lenNormalizedV,
@@ -331,7 +331,7 @@
}
/* copy hinted flag on each call */
- font->hinted = (FT_Bool)( font->renderingFlags & CF2_FlagsHinted );
+ font->hinted = FT_BOOL( font->renderingFlags & CF2_FlagsHinted );
/* determine if transform has changed; */
/* include Fontmatrix but ignore translation */
@@ -366,7 +366,7 @@
if ( font->stemDarkened != ( font->renderingFlags & CF2_FlagsDarkened ) )
{
font->stemDarkened =
- (FT_Bool)( font->renderingFlags & CF2_FlagsDarkened );
+ FT_BOOL( font->renderingFlags & CF2_FlagsDarkened );
/* blue zones depend on darkened flag */
needExtraSetup = TRUE;
diff --git a/src/psaux/pshints.c b/src/psaux/pshints.c
index 4560fb8..1cbecd2 100644
--- a/src/psaux/pshints.c
+++ b/src/psaux/pshints.c
@@ -52,7 +52,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cf2hints
+#define FT_COMPONENT cf2hints
typedef struct CF2_HintMoveRec_
@@ -217,52 +217,49 @@
FT_LOCAL_DEF( FT_Bool )
cf2_hint_isValid( const CF2_Hint hint )
{
- return (FT_Bool)( hint->flags != 0 );
+ return FT_BOOL( hint->flags );
}
static FT_Bool
cf2_hint_isPair( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags &
- ( CF2_PairBottom | CF2_PairTop ) ) != 0 );
+ return FT_BOOL( hint->flags & ( CF2_PairBottom | CF2_PairTop ) );
}
static FT_Bool
cf2_hint_isPairTop( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags & CF2_PairTop ) != 0 );
+ return FT_BOOL( hint->flags & CF2_PairTop );
}
FT_LOCAL_DEF( FT_Bool )
cf2_hint_isTop( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags &
- ( CF2_PairTop | CF2_GhostTop ) ) != 0 );
+ return FT_BOOL( hint->flags & ( CF2_PairTop | CF2_GhostTop ) );
}
FT_LOCAL_DEF( FT_Bool )
cf2_hint_isBottom( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags &
- ( CF2_PairBottom | CF2_GhostBottom ) ) != 0 );
+ return FT_BOOL( hint->flags & ( CF2_PairBottom | CF2_GhostBottom ) );
}
static FT_Bool
cf2_hint_isLocked( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags & CF2_Locked ) != 0 );
+ return FT_BOOL( hint->flags & CF2_Locked );
}
static FT_Bool
cf2_hint_isSynthetic( const CF2_Hint hint )
{
- return (FT_Bool)( ( hint->flags & CF2_Synthetic ) != 0 );
+ return FT_BOOL( hint->flags & CF2_Synthetic );
}
@@ -334,7 +331,7 @@
cf2_hintmap_map( CF2_HintMap hintmap,
CF2_Fixed csCoord )
{
- if ( hintmap->count == 0 || ! hintmap->hinted )
+ if ( hintmap->count == 0 || !hintmap->hinted )
{
/* there are no hints; use uniform scale and zero offset */
return FT_MulFix( csCoord, hintmap->scale );
@@ -497,7 +494,7 @@
{
move = moveDown;
/* true if non-optimum move */
- saveEdge = (FT_Bool)( moveUp < -moveDown );
+ saveEdge = FT_BOOL( moveUp < -moveDown );
}
else
{
@@ -1025,10 +1022,10 @@
}
}
- FT_TRACE6(( initialMap ? "flags: [p]air [g]host [t]op "
- "[b]ottom [L]ocked [S]ynthetic\n"
- "Initial hintmap\n"
- : "Hints:\n" ));
+ FT_TRACE6(( "%s\n", initialMap ? "flags: [p]air [g]host [t]op"
+ " [b]ottom [L]ocked [S]ynthetic\n"
+ "Initial hintmap"
+ : "Hints:" ));
cf2_hintmap_dump( hintmap );
/*
@@ -1215,7 +1212,7 @@
* (`u').
*
* See notation in
- * http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm.
+ * http://geomalgorithms.com/a05-_intersect-1.html.
* Calculations are done in 16.16, but must handle the squaring of
* line lengths in character space. We scale all vectors by 1/32 to
* avoid overflow. This allows values up to 4095 to be squared. The
diff --git a/src/psaux/psintrp.c b/src/psaux/psintrp.c
index 145b672..e2f3acc 100644
--- a/src/psaux/psintrp.c
+++ b/src/psaux/psintrp.c
@@ -59,7 +59,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_cf2interp
+#define FT_COMPONENT cf2interp
FT_LOCAL_DEF( void )
@@ -287,7 +287,7 @@
{
CF2_UInt i;
CF2_UInt count = cf2_stack_count( opStack );
- FT_Bool hasWidthArg = (FT_Bool)( count & 1 );
+ FT_Bool hasWidthArg = FT_BOOL( count & 1 );
/* variable accumulates delta values from operand stack */
CF2_Fixed position = hintOffset;
@@ -364,7 +364,7 @@
if ( doConditionalLastRead )
{
- FT_Bool lastIsX = (FT_Bool)(
+ FT_Bool lastIsX = FT_BOOL(
cf2_fixedAbs( SUB_INT32( vals[10], *curX ) ) >
cf2_fixedAbs( SUB_INT32( vals[11], *curY ) ) );
CF2_Fixed lastVal = cf2_stack_getReal( opStack, idx );
@@ -612,14 +612,14 @@
cf2_arrstack_setCount( &subrStack, CF2_MAX_SUBR + 1 );
charstring = (CF2_Buffer)cf2_arrstack_getBuffer( &subrStack );
- *charstring = *buf; /* structure copy */
-
- charstringIndex = 0; /* entry is valid now */
/* catch errors so far */
if ( *error )
goto exit;
+ *charstring = *buf; /* structure copy */
+ charstringIndex = 0; /* entry is valid now */
+
/* main interpreter loop */
while ( 1 )
{
@@ -776,7 +776,8 @@
case cf2_cmdHSTEMHM:
case cf2_cmdHSTEM:
- FT_TRACE4(( op1 == cf2_cmdHSTEMHM ? " hstemhm\n" : " hstem\n" ));
+ FT_TRACE4(( "%s\n", op1 == cf2_cmdHSTEMHM ? " hstemhm"
+ : " hstem" ));
if ( !font->isT1 )
{
@@ -806,7 +807,8 @@
case cf2_cmdVSTEMHM:
case cf2_cmdVSTEM:
- FT_TRACE4(( op1 == cf2_cmdVSTEMHM ? " vstemhm\n" : " vstem\n" ));
+ FT_TRACE4(( "%s\n", op1 == cf2_cmdVSTEMHM ? " vstemhm"
+ : " vstem" ));
if ( !font->isT1 )
{
@@ -889,7 +891,7 @@
FT_Bool isX = FT_BOOL( op1 == cf2_cmdHLINETO );
- FT_TRACE4(( isX ? " hlineto\n" : " vlineto\n" ));
+ FT_TRACE4(( "%s\n", isX ? " hlineto" : " vlineto" ));
for ( idx = 0; idx < count; idx++ )
{
@@ -917,8 +919,8 @@
CF2_UInt idx = 0;
- FT_TRACE4(( op1 == cf2_cmdRCURVELINE ? " rcurveline\n"
- : " rrcurveto\n" ));
+ FT_TRACE4(( "%s\n", op1 == cf2_cmdRCURVELINE ? " rcurveline"
+ : " rrcurveto" ));
while ( idx + 6 <= count )
{
@@ -958,10 +960,10 @@
FT_TRACE4(( " unknown op (%d)\n", op1 ));
else
{
- FT_TRACE4(( " closepath" ));
+ FT_TRACE4(( " closepath\n" ));
/* if there is no path, `closepath' is a no-op */
- ps_builder_close_contour( &decoder->builder );
+ cf2_glyphpath_closeOpenPath( &glyphPath );
haveWidth = TRUE;
}
@@ -973,8 +975,8 @@
CF2_Int subrNum;
- FT_TRACE4(( op1 == cf2_cmdCALLGSUBR ? " callgsubr"
- : " callsubr" ));
+ FT_TRACE4(( "%s", op1 == cf2_cmdCALLGSUBR ? " callgsubr"
+ : " callsubr" ));
if ( ( !font->isT1 && charstringIndex > CF2_MAX_SUBR ) ||
( font->isT1 && charstringIndex > T1_MAX_SUBRS_CALLS ) )
@@ -1213,8 +1215,8 @@
FT_Bool isV = FT_BOOL( op2 == cf2_escVSTEM3 );
- FT_TRACE4(( isV ? " vstem3\n"
- : " hstem3\n" ));
+ FT_TRACE4(( "%s\n", isV ? " vstem3"
+ : " hstem3" ));
FT_ASSERT( cf2_stack_count( opStack ) == 6 );
@@ -2418,7 +2420,7 @@
PS_Builder* builder;
- FT_TRACE4(( " hsbw" ));
+ FT_TRACE4(( " hsbw\n" ));
builder = &decoder->builder;
@@ -2564,7 +2566,7 @@
case cf2_cmdHINTMASK:
/* the final \n in the tracing message gets added in */
/* `cf2_hintmask_read' (which also traces the mask bytes) */
- FT_TRACE4(( op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" ));
+ FT_TRACE4(( "%s", op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" ));
/* never add hints after the mask is computed */
if ( cf2_stack_count( opStack ) > 1 &&
@@ -2830,7 +2832,7 @@
count = count1 & ~2U;
idx += count1 - count;
- FT_TRACE4(( alternate ? " hvcurveto\n" : " vhcurveto\n" ));
+ FT_TRACE4(( "%s\n", alternate ? " hvcurveto" : " vhcurveto" ));
while ( idx < count )
{
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index 36ee663..8bfdb92 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -4,7 +4,7 @@
*
* Auxiliary functions for PostScript fonts (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_psobjs
+#define FT_COMPONENT psobjs
/*************************************************************************/
@@ -174,10 +174,10 @@
* reallocation fails.
*/
FT_LOCAL_DEF( FT_Error )
- ps_table_add( PS_Table table,
- FT_Int idx,
- void* object,
- FT_UInt length )
+ ps_table_add( PS_Table table,
+ FT_Int idx,
+ const void* object,
+ FT_UInt length )
{
if ( idx < 0 || idx >= table->max_elems )
{
@@ -1447,6 +1447,8 @@
bytes,
max_bytes );
+ parser->cursor = cur;
+
if ( delimiters )
{
if ( cur < parser->limit && *cur != '>' )
@@ -1456,11 +1458,9 @@
goto Exit;
}
- cur++;
+ parser->cursor++;
}
- parser->cursor = cur;
-
Exit:
return error;
}
@@ -2042,6 +2042,14 @@
first = outline->n_contours <= 1
? 0 : outline->contours[outline->n_contours - 2] + 1;
+ /* in malformed fonts it can happen that a contour was started */
+ /* but no points were added */
+ if ( outline->n_contours && first == outline->n_points )
+ {
+ outline->n_contours--;
+ return;
+ }
+
/* We must not include the last point in the path if it */
/* is located on the first point. */
if ( outline->n_points > 1 )
diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h
index 6184193..c44dc45 100644
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -4,7 +4,7 @@
*
* Auxiliary functions for PostScript fonts (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,10 +53,10 @@
FT_Memory memory );
FT_LOCAL( FT_Error )
- ps_table_add( PS_Table table,
- FT_Int idx,
- void* object,
- FT_UInt length );
+ ps_table_add( PS_Table table,
+ FT_Int idx,
+ const void* object,
+ FT_UInt length );
FT_LOCAL( void )
ps_table_done( PS_Table table );
diff --git a/src/psaux/psread.c b/src/psaux/psread.c
index 6f3a361..86bfc03 100644
--- a/src/psaux/psread.c
+++ b/src/psaux/psread.c
@@ -105,7 +105,7 @@
FT_LOCAL_DEF( FT_Bool )
cf2_buf_isEnd( CF2_Buffer buf )
{
- return (FT_Bool)( buf->ptr >= buf->end );
+ return FT_BOOL( buf->ptr >= buf->end );
}
diff --git a/src/psaux/psstack.c b/src/psaux/psstack.c
index d49cf25..6659068 100644
--- a/src/psaux/psstack.c
+++ b/src/psaux/psstack.c
@@ -258,6 +258,9 @@
return;
}
+ /* before C99 it is implementation-defined whether */
+ /* the result of `%' is negative if the first operand */
+ /* is negative */
if ( shift < 0 )
shift = -( ( -shift ) % count );
else
diff --git a/src/psaux/rules.mk b/src/psaux/rules.mk
index a87bfe9..2de734d 100644
--- a/src/psaux/rules.mk
+++ b/src/psaux/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psaux/t1cmap.c b/src/psaux/t1cmap.c
index 0c9f916..d62d2d5 100644
--- a/src/psaux/t1cmap.c
+++ b/src/psaux/t1cmap.c
@@ -4,7 +4,7 @@
*
* Type 1 character map support (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -305,6 +305,9 @@
FT_UNUSED( pointer );
+ if ( !psnames->unicodes_init )
+ return FT_THROW( Unimplemented_Feature );
+
return psnames->unicodes_init( memory,
unicodes,
(FT_UInt)face->type1.num_glyphs,
diff --git a/src/psaux/t1cmap.h b/src/psaux/t1cmap.h
index 277419f..d325e7b 100644
--- a/src/psaux/t1cmap.h
+++ b/src/psaux/t1cmap.h
@@ -4,7 +4,7 @@
*
* Type 1 character map support (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
index 6745603..c2b3729 100644
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -4,7 +4,7 @@
*
* PostScript Type 1 decoding routines (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1decode
+#define FT_COMPONENT t1decode
typedef enum T1_Operator_
@@ -1957,7 +1957,7 @@
{
FT_ZERO( decoder );
- /* retrieve PSNames interface from list of current modules */
+ /* retrieve `psnames' interface from list of current modules */
{
FT_Service_PsCMaps psnames;
diff --git a/src/psaux/t1decode.h b/src/psaux/t1decode.h
index 62956ac..1b5d626 100644
--- a/src/psaux/t1decode.h
+++ b/src/psaux/t1decode.h
@@ -4,7 +4,7 @@
*
* PostScript Type 1 decoding routines (specification).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/Jamfile b/src/pshinter/Jamfile
index 3f5f0ae..0e44c19 100644
--- a/src/pshinter/Jamfile
+++ b/src/pshinter/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/pshinter Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pshinter/module.mk b/src/pshinter/module.mk
index 06707be..0a12a26 100644
--- a/src/pshinter/module.mk
+++ b/src/pshinter/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/pshinter/pshalgo.c b/src/pshinter/pshalgo.c
index 925b3d6..0c5ae62 100644
--- a/src/pshinter/pshalgo.c
+++ b/src/pshinter/pshalgo.c
@@ -4,7 +4,7 @@
*
* PostScript hinting algorithm (body).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -26,7 +26,7 @@
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pshalgo
+#define FT_COMPONENT pshalgo
#ifdef DEBUG_HINTER
@@ -53,8 +53,8 @@
psh_hint_overlap( PSH_Hint hint1,
PSH_Hint hint2 )
{
- return hint1->org_pos + hint1->org_len >= hint2->org_pos &&
- hint2->org_pos + hint2->org_len >= hint1->org_pos;
+ return ADD_INT( hint1->org_pos, hint1->org_len ) >= hint2->org_pos &&
+ ADD_INT( hint2->org_pos, hint2->org_len ) >= hint1->org_pos;
}
@@ -479,7 +479,7 @@
if ( dimension == 1 )
psh_blues_snap_stem( &globals->blues,
- hint->org_pos + hint->org_len,
+ ADD_INT( hint->org_pos, hint->org_len ),
hint->org_pos,
&align );
@@ -703,7 +703,7 @@
if ( dimension == 1 )
psh_blues_snap_stem( &globals->blues,
- hint->org_pos + hint->org_len,
+ ADD_INT( hint->org_pos, hint->org_len ),
hint->org_pos,
&align );
@@ -1538,8 +1538,8 @@
PSH_Hint hint = sort[nn];
- if ( org_u >= hint->org_pos &&
- org_u <= hint->org_pos + hint->org_len )
+ if ( org_u >= hint->org_pos &&
+ org_u <= ADD_INT( hint->org_pos, hint->org_len ) )
{
point->hint = hint;
break;
diff --git a/src/pshinter/pshalgo.h b/src/pshinter/pshalgo.h
index f27e668..6859e95 100644
--- a/src/pshinter/pshalgo.h
+++ b/src/pshinter/pshalgo.h
@@ -4,7 +4,7 @@
*
* PostScript hinting algorithm (specification).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshglob.c b/src/pshinter/pshglob.c
index f6859cd..b021e6e 100644
--- a/src/pshinter/pshglob.c
+++ b/src/pshinter/pshglob.c
@@ -5,7 +5,7 @@
* PostScript hinter global hinting management (body).
* Inspired by the new auto-hinter module.
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -20,6 +20,7 @@
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_INTERNAL_OBJECTS_H
+#include FT_INTERNAL_CALC_H
#include "pshglob.h"
#ifdef DEBUG_HINTER
@@ -568,7 +569,7 @@
for ( ; count > 0; count--, zone++ )
{
- delta = stem_top - zone->org_bottom;
+ delta = SUB_LONG( stem_top, zone->org_bottom );
if ( delta < -blues->blue_fuzz )
break;
@@ -590,7 +591,7 @@
for ( ; count > 0; count--, zone-- )
{
- delta = zone->org_top - stem_bot;
+ delta = SUB_LONG( zone->org_top, stem_bot );
if ( delta < -blues->blue_fuzz )
break;
diff --git a/src/pshinter/pshglob.h b/src/pshinter/pshglob.h
index c3aa0ae..0049d4c 100644
--- a/src/pshinter/pshglob.h
+++ b/src/pshinter/pshglob.h
@@ -4,7 +4,7 @@
*
* PostScript hinter global hinting management.
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshinter.c b/src/pshinter/pshinter.c
index fd703d6..16c3a0a 100644
--- a/src/pshinter/pshinter.c
+++ b/src/pshinter/pshinter.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript Hinting module
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshmod.c b/src/pshinter/pshmod.c
index e040d60..2d36ea2 100644
--- a/src/pshinter/pshmod.c
+++ b/src/pshinter/pshmod.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript hinter module implementation (body).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshmod.h b/src/pshinter/pshmod.h
index 368740c..ea87713 100644
--- a/src/pshinter/pshmod.h
+++ b/src/pshinter/pshmod.h
@@ -4,7 +4,7 @@
*
* PostScript hinter module interface (specification).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshnterr.h b/src/pshinter/pshnterr.h
index 60814e1..fb9dbca 100644
--- a/src/pshinter/pshnterr.h
+++ b/src/pshinter/pshnterr.h
@@ -4,7 +4,7 @@
*
* PS Hinter error codes (specification only).
*
- * Copyright 2003-2018 by
+ * Copyright (C) 2003-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index 50d66ca..9dd09ef 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript hints recorder (body).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -28,7 +28,7 @@
#include "pshnterr.h"
#undef FT_COMPONENT
-#define FT_COMPONENT trace_pshrec
+#define FT_COMPONENT pshrec
#ifdef DEBUG_HINTER
PS_Hints ps_debug_hints = NULL;
@@ -666,7 +666,7 @@
if ( len == -21 )
{
flags |= PS_HINT_FLAG_BOTTOM;
- pos += len;
+ pos = ADD_INT( pos, len );
}
len = 0;
}
@@ -1187,7 +1187,7 @@
/* compute integer stem positions in font units */
for ( n = 0; n < count * 2; n++ )
{
- y += coords[n];
+ y = ADD_LONG( y, coords[n] );
stems[n] = FIXED_TO_INT( y );
}
diff --git a/src/pshinter/pshrec.h b/src/pshinter/pshrec.h
index 56c0f99..02cc210 100644
--- a/src/pshinter/pshrec.h
+++ b/src/pshinter/pshrec.h
@@ -4,7 +4,7 @@
*
* Postscript (Type1/Type2) hints recorder (specification).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/rules.mk b/src/pshinter/rules.mk
index 0e2fb8d..58227d1 100644
--- a/src/pshinter/rules.mk
+++ b/src/pshinter/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psnames/Jamfile b/src/psnames/Jamfile
index a0fd373..75978a8 100644
--- a/src/psnames/Jamfile
+++ b/src/psnames/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/psnames Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psnames/module.mk b/src/psnames/module.mk
index 410f48a..0806a31 100644
--- a/src/psnames/module.mk
+++ b/src/psnames/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/psnames/psmodule.c b/src/psnames/psmodule.c
index 719e94d..0ec440e 100644
--- a/src/psnames/psmodule.c
+++ b/src/psnames/psmodule.c
@@ -2,9 +2,9 @@
*
* psmodule.c
*
- * PSNames module implementation (body).
+ * psnames module implementation (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psmodule.h b/src/psnames/psmodule.h
index 8b026ee..0df9a7d 100644
--- a/src/psnames/psmodule.h
+++ b/src/psnames/psmodule.h
@@ -2,9 +2,9 @@
*
* psmodule.h
*
- * High-level PSNames module interface (specification).
+ * High-level psnames module interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psnamerr.h b/src/psnames/psnamerr.h
index af89157..67ab176 100644
--- a/src/psnames/psnamerr.h
+++ b/src/psnames/psnamerr.h
@@ -4,7 +4,7 @@
*
* PS names module error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psnames.c b/src/psnames/psnames.c
index bfa5b85..4722f98 100644
--- a/src/psnames/psnames.c
+++ b/src/psnames/psnames.c
@@ -2,9 +2,9 @@
*
* psnames.c
*
- * FreeType PSNames module component (body only).
+ * FreeType psnames module component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/pstables.h b/src/psnames/pstables.h
index e574122..c0139bb 100644
--- a/src/psnames/pstables.h
+++ b/src/psnames/pstables.h
@@ -4,7 +4,7 @@
*
* PostScript glyph names.
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk
index 46ec5df..dcc203e 100644
--- a/src/psnames/rules.mk
+++ b/src/psnames/rules.mk
@@ -1,9 +1,9 @@
#
-# FreeType 2 PSNames driver configuration rules
+# FreeType 2 psnames driver configuration rules
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -13,7 +13,7 @@
# fully.
-# PSNames driver directory
+# psnames driver directory
#
PSNAMES_DIR := $(SRC_DIR)/psnames
@@ -26,19 +26,19 @@
$(FT_CFLAGS)
-# PSNames driver sources (i.e., C files)
+# psnames driver sources (i.e., C files)
#
PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c
-# PSNames driver headers
+# psnames driver headers
#
PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \
$(PSNAMES_DIR)/psnamerr.h \
$(PSNAMES_DIR)/pstables.h
-# PSNames driver object(s)
+# psnames driver object(s)
#
# PSNAMES_DRV_OBJ_M is used during `multi' builds
# PSNAMES_DRV_OBJ_S is used during `single' builds
@@ -46,19 +46,19 @@
PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR)/%.c=$(OBJ_DIR)/%.$O)
PSNAMES_DRV_OBJ_S := $(OBJ_DIR)/psnames.$O
-# PSNames driver source file for single build
+# psnames driver source file for single build
#
PSNAMES_DRV_SRC_S := $(PSNAMES_DIR)/psnames.c
-# PSNames driver - single object
+# psnames driver - single object
#
$(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \
$(FREETYPE_H) $(PSNAMES_DRV_H)
$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSNAMES_DRV_SRC_S))
-# PSNames driver - multiple objects
+# psnames driver - multiple objects
#
$(OBJ_DIR)/%.$O: $(PSNAMES_DIR)/%.c $(FREETYPE_H) $(PSNAMES_DRV_H)
$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
diff --git a/src/raster/Jamfile b/src/raster/Jamfile
index 838e7ef..3990c05 100644
--- a/src/raster/Jamfile
+++ b/src/raster/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/raster Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/raster/ftmisc.h b/src/raster/ftmisc.h
index 97db371..a246569 100644
--- a/src/raster/ftmisc.h
+++ b/src/raster/ftmisc.h
@@ -5,7 +5,7 @@
* Miscellaneous macros for stand-alone rasterizer (specification
* only).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index 8a583ea..023b6c1 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -99,7 +99,7 @@
* built from the bottom of the render pool, used as a stack. The
* following graphics shows the profile list under construction:
*
- * __________________________________________________________ _ _
+ * __________________________________________________________ _ _
* | | | | |
* | profile | coordinates for | profile | coordinates for |-->
* | 1 | profile 1 | 2 | profile 2 |-->
@@ -125,8 +125,8 @@
*
* _ _ _______________________________________
* | |
- * <--| sorted list of |
- * <--| extrema scanlines |
+ * <--| sorted list of |
+ * <--| extrema scanlines |
* _ _ __________________|____________________|
*
* ^ ^
@@ -169,7 +169,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_raster
+#define FT_COMPONENT raster
#ifdef STANDALONE_
@@ -399,7 +399,7 @@
#define RAS_ARGS /* void */
-#define RAS_ARG /* void */
+#define RAS_ARG void
#define RAS_VARS /* void */
#define RAS_VAR /* void */
@@ -546,8 +546,7 @@
#ifdef FT_STATIC_RASTER
- static black_TWorker cur_ras;
-#define ras cur_ras
+ static black_TWorker ras;
#else /* !FT_STATIC_RASTER */
@@ -661,7 +660,6 @@
return FAILURE;
}
- ras.cProfile->flags = 0;
ras.cProfile->start = 0;
ras.cProfile->height = 0;
ras.cProfile->offset = ras.top;
@@ -914,16 +912,18 @@
base[4].x = base[2].x;
- b = base[1].x;
- a = base[3].x = ( base[2].x + b ) / 2;
- b = base[1].x = ( base[0].x + b ) / 2;
- base[2].x = ( a + b ) / 2;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ base[3].x = b >> 1;
+ base[2].x = ( a + b ) >> 2;
+ base[1].x = a >> 1;
base[4].y = base[2].y;
- b = base[1].y;
- a = base[3].y = ( base[2].y + b ) / 2;
- b = base[1].y = ( base[0].y + b ) / 2;
- base[2].y = ( a + b ) / 2;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ base[3].y = b >> 1;
+ base[2].y = ( a + b ) >> 2;
+ base[1].y = a >> 1;
/* hand optimized. gcc doesn't seem to be too good at common */
/* expression substitution and instruction scheduling ;-) */
@@ -947,28 +947,32 @@
static void
Split_Cubic( TPoint* base )
{
- Long a, b, c, d;
+ Long a, b, c;
base[6].x = base[3].x;
- c = base[1].x;
- d = base[2].x;
- base[1].x = a = ( base[0].x + c + 1 ) >> 1;
- base[5].x = b = ( base[3].x + d + 1 ) >> 1;
- c = ( c + d + 1 ) >> 1;
- base[2].x = a = ( a + c + 1 ) >> 1;
- base[4].x = b = ( b + c + 1 ) >> 1;
- base[3].x = ( a + b + 1 ) >> 1;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ c = base[2].x + base[3].x;
+ base[5].x = c >> 1;
+ c += b;
+ base[4].x = c >> 2;
+ base[1].x = a >> 1;
+ a += b;
+ base[2].x = a >> 2;
+ base[3].x = ( a + c ) >> 3;
base[6].y = base[3].y;
- c = base[1].y;
- d = base[2].y;
- base[1].y = a = ( base[0].y + c + 1 ) >> 1;
- base[5].y = b = ( base[3].y + d + 1 ) >> 1;
- c = ( c + d + 1 ) >> 1;
- base[2].y = a = ( a + c + 1 ) >> 1;
- base[4].y = b = ( b + c + 1 ) >> 1;
- base[3].y = ( a + b + 1 ) >> 1;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ c = base[2].y + base[3].y;
+ base[5].y = c >> 1;
+ c += b;
+ base[4].y = c >> 2;
+ base[1].y = a >> 1;
+ a += b;
+ base[2].y = a >> 2;
+ base[3].y = ( a + c ) >> 3;
}
@@ -2246,13 +2250,18 @@
/* Drop-out control */
- e1 = TRUNC( CEILING( x1 ) );
+ e1 = CEILING( x1 );
+ e2 = FLOOR( x2 );
+ /* take care of the special case where both the left */
+ /* and right contour lie exactly on pixel centers */
if ( dropOutControl != 2 &&
- x2 - x1 - ras.precision <= ras.precision_jitter )
+ x2 - x1 - ras.precision <= ras.precision_jitter &&
+ e1 != x1 && e2 != x2 )
e2 = e1;
- else
- e2 = TRUNC( FLOOR( x2 ) );
+
+ e1 = TRUNC( e1 );
+ e2 = TRUNC( e2 );
if ( e2 >= 0 && e1 < ras.bWidth )
{
@@ -2779,7 +2788,7 @@
P_Left = draw_left;
P_Right = draw_right;
- while ( P_Left )
+ while ( P_Left && P_Right )
{
x1 = P_Left ->X;
x2 = P_Right->X;
@@ -2880,7 +2889,7 @@
P_Left = draw_left;
P_Right = draw_right;
- while ( P_Left )
+ while ( P_Left && P_Right )
{
if ( P_Left->countL )
{
@@ -3252,7 +3261,9 @@
const FT_Outline* outline = (const FT_Outline*)params->source;
const FT_Bitmap* target_map = params->target;
+#ifndef FT_STATIC_RASTER
black_TWorker worker[1];
+#endif
Long buffer[FT_MAX_BLACK_POOL];
@@ -3294,8 +3305,8 @@
ras.outline = *outline;
ras.target = *target_map;
- worker->buff = buffer;
- worker->sizeBuff = (&buffer)[1]; /* Points to right after buffer. */
+ ras.buff = buffer;
+ ras.sizeBuff = (&buffer)[1]; /* Points to right after buffer. */
return Render_Glyph( RAS_VAR );
}
diff --git a/src/raster/ftraster.h b/src/raster/ftraster.h
index 3f13793..50d3420 100644
--- a/src/raster/ftraster.h
+++ b/src/raster/ftraster.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
diff --git a/src/raster/ftrend1.c b/src/raster/ftrend1.c
index e8ea9cb..62c7271 100644
--- a/src/raster/ftrend1.c
+++ b/src/raster/ftrend1.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer interface (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -127,12 +127,8 @@
slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
}
- ft_glyphslot_preset_bitmap( slot, mode, origin );
-
- if ( bitmap->width > 0x7FFF || bitmap->rows > 0x7FFF )
+ if ( ft_glyphslot_preset_bitmap( slot, mode, origin ) )
{
- FT_ERROR(( "ft_raster1_render: glyph is too large: %u x %u\n",
- bitmap->width, bitmap->rows ));
error = FT_THROW( Raster_Overflow );
goto Exit;
}
diff --git a/src/raster/ftrend1.h b/src/raster/ftrend1.h
index 05be54f..82ecac6 100644
--- a/src/raster/ftrend1.h
+++ b/src/raster/ftrend1.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/module.mk b/src/raster/module.mk
index b115f41..0a6d4b0 100644
--- a/src/raster/module.mk
+++ b/src/raster/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/raster/raster.c b/src/raster/raster.c
index ffd8994..e3ac9e5 100644
--- a/src/raster/raster.c
+++ b/src/raster/raster.c
@@ -4,7 +4,7 @@
*
* FreeType monochrome rasterer module component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/rasterrs.h b/src/raster/rasterrs.h
index ab242ac..7266407 100644
--- a/src/raster/rasterrs.h
+++ b/src/raster/rasterrs.h
@@ -4,7 +4,7 @@
*
* monochrome renderer error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/rules.mk b/src/raster/rules.mk
index 444d0ad..7664671 100644
--- a/src/raster/rules.mk
+++ b/src/raster/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/sfnt/Jamfile b/src/sfnt/Jamfile
index 635aa60..f646b35 100644
--- a/src/sfnt/Jamfile
+++ b/src/sfnt/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/sfnt Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/sfnt/module.mk b/src/sfnt/module.mk
index 51ca67e..8c3b44f 100644
--- a/src/sfnt/module.mk
+++ b/src/sfnt/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/sfnt/pngshim.c b/src/sfnt/pngshim.c
index 0674bda..ca85d97 100644
--- a/src/sfnt/pngshim.c
+++ b/src/sfnt/pngshim.c
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
diff --git a/src/sfnt/pngshim.h b/src/sfnt/pngshim.h
index 049a1ed..06c6f6b 100644
--- a/src/sfnt/pngshim.h
+++ b/src/sfnt/pngshim.h
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright 2013-2018 by
+ * Copyright (C) 2013-2019 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk
index ff7d7c7..ee3314e 100644
--- a/src/sfnt/rules.mk
+++ b/src/sfnt/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -31,6 +31,7 @@
SFNT_DRV_SRC := $(SFNT_DIR)/pngshim.c \
$(SFNT_DIR)/sfdriver.c \
$(SFNT_DIR)/sfobjs.c \
+ $(SFNT_DIR)/sfwoff.c \
$(SFNT_DIR)/ttbdf.c \
$(SFNT_DIR)/ttcmap.c \
$(SFNT_DIR)/ttcolr.c \
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index ae6d6cd..2611685 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -68,7 +68,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_sfdriver
+#define FT_COMPONENT sfdriver
/*
@@ -182,8 +182,8 @@
static FT_UInt
- sfnt_get_name_index( FT_Face face,
- FT_String* glyph_name )
+ sfnt_get_name_index( FT_Face face,
+ const FT_String* glyph_name )
{
TT_Face ttface = (TT_Face)face;
@@ -375,47 +375,61 @@
{
case 15:
k4 ^= (FT_UInt32)tail[14] << 16;
+ /* fall through */
case 14:
k4 ^= (FT_UInt32)tail[13] << 8;
+ /* fall through */
case 13:
k4 ^= (FT_UInt32)tail[12];
k4 *= c4;
k4 = ROTL32( k4, 18 );
k4 *= c1;
h4 ^= k4;
+ /* fall through */
case 12:
k3 ^= (FT_UInt32)tail[11] << 24;
+ /* fall through */
case 11:
k3 ^= (FT_UInt32)tail[10] << 16;
+ /* fall through */
case 10:
k3 ^= (FT_UInt32)tail[9] << 8;
+ /* fall through */
case 9:
k3 ^= (FT_UInt32)tail[8];
k3 *= c3;
k3 = ROTL32( k3, 17 );
k3 *= c4;
h3 ^= k3;
+ /* fall through */
case 8:
k2 ^= (FT_UInt32)tail[7] << 24;
+ /* fall through */
case 7:
k2 ^= (FT_UInt32)tail[6] << 16;
+ /* fall through */
case 6:
k2 ^= (FT_UInt32)tail[5] << 8;
+ /* fall through */
case 5:
k2 ^= (FT_UInt32)tail[4];
k2 *= c2;
k2 = ROTL32( k2, 16 );
k2 *= c3;
h2 ^= k2;
+ /* fall through */
case 4:
k1 ^= (FT_UInt32)tail[3] << 24;
+ /* fall through */
case 3:
k1 ^= (FT_UInt32)tail[2] << 16;
+ /* fall through */
case 2:
k1 ^= (FT_UInt32)tail[1] << 8;
+ /* fall through */
case 1:
k1 ^= (FT_UInt32)tail[0];
k1 *= c1;
@@ -464,14 +478,12 @@
typedef int (*char_type_func)( int c );
- /* handling of PID/EID 3/0 and 3/1 is the same */
+ /* Handling of PID/EID 3/0 and 3/1 is the same. */
#define IS_WIN( n ) ( (n)->platformID == 3 && \
- ( (n)->encodingID == 1 || (n)->encodingID == 0 ) && \
- (n)->languageID == 0x409 )
+ ( (n)->encodingID == 1 || (n)->encodingID == 0 ) )
#define IS_APPLE( n ) ( (n)->platformID == 1 && \
- (n)->encodingID == 0 && \
- (n)->languageID == 0 )
+ (n)->encodingID == 0 )
static char*
get_win_string( FT_Memory memory,
@@ -495,42 +507,40 @@
if ( FT_STREAM_SEEK( entry->stringOffset ) ||
FT_FRAME_ENTER( entry->stringLength ) )
- {
- FT_FREE( result );
- entry->stringLength = 0;
- entry->stringOffset = 0;
- FT_FREE( entry->string );
-
- return NULL;
- }
+ goto get_win_string_error;
r = (FT_String*)result;
p = (FT_Char*)stream->cursor;
for ( len = entry->stringLength / 2; len > 0; len--, p += 2 )
{
- if ( p[0] == 0 )
+ if ( p[0] == 0 && char_type( p[1] ) )
+ *r++ = p[1];
+ else
{
- if ( char_type( p[1] ) )
- *r++ = p[1];
- else
- {
- if ( report_invalid_characters )
- {
- FT_TRACE0(( "get_win_string:"
- " Character `%c' (0x%X) invalid in PS name string\n",
- p[1], p[1] ));
- /* it's not the job of FreeType to correct PS names... */
- *r++ = p[1];
- }
- }
+ if ( report_invalid_characters )
+ FT_TRACE0(( "get_win_string:"
+ " Character 0x%X invalid in PS name string\n",
+ ((unsigned)p[0])*256 + (unsigned)p[1] ));
+ break;
}
}
- *r = '\0';
+ if ( !len )
+ *r = '\0';
FT_FRAME_EXIT();
- return result;
+ if ( !len )
+ return result;
+
+ get_win_string_error:
+ FT_FREE( result );
+
+ entry->stringLength = 0;
+ entry->stringOffset = 0;
+ FT_FREE( entry->string );
+
+ return NULL;
}
@@ -556,14 +566,7 @@
if ( FT_STREAM_SEEK( entry->stringOffset ) ||
FT_FRAME_ENTER( entry->stringLength ) )
- {
- FT_FREE( result );
- entry->stringOffset = 0;
- entry->stringLength = 0;
- FT_FREE( entry->string );
-
- return NULL;
- }
+ goto get_apple_string_error;
r = (FT_String*)result;
p = (FT_Char*)stream->cursor;
@@ -575,20 +578,28 @@
else
{
if ( report_invalid_characters )
- {
FT_TRACE0(( "get_apple_string:"
" Character `%c' (0x%X) invalid in PS name string\n",
*p, *p ));
- /* it's not the job of FreeType to correct PS names... */
- *r++ = *p;
- }
+ break;
}
}
- *r = '\0';
+ if ( !len )
+ *r = '\0';
FT_FRAME_EXIT();
- return result;
+ if ( !len )
+ return result;
+
+ get_apple_string_error:
+ FT_FREE( result );
+
+ entry->stringOffset = 0;
+ entry->stringLength = 0;
+ FT_FREE( entry->string );
+
+ return NULL;
}
@@ -611,10 +622,10 @@
if ( name->nameID == id && name->stringLength > 0 )
{
- if ( IS_WIN( name ) )
+ if ( IS_WIN( name ) && ( name->languageID == 0x409 || *win == -1 ) )
*win = n;
- if ( IS_APPLE( name ) )
+ if ( IS_APPLE( name ) && ( name->languageID == 0 || *apple == -1 ) )
*apple = n;
}
}
@@ -832,13 +843,20 @@
face->name_table.names + win,
sfnt_is_alphanumeric,
0 );
- else
+ if ( !result && apple != -1 )
result = get_apple_string( face->root.memory,
face->name_table.stream,
face->name_table.names + apple,
sfnt_is_alphanumeric,
0 );
+ if ( !result )
+ {
+ FT_TRACE0(( "sfnt_get_var_ps_name:"
+ " No valid PS name prefix for font instances found\n" ));
+ return NULL;
+ }
+
len = ft_strlen( result );
/* sanitize if necessary; we reserve space for 36 bytes (a 128bit */
@@ -1056,7 +1074,7 @@
face->name_table.names + win,
sfnt_is_postscript,
1 );
- else
+ if ( !result && apple != -1 )
result = get_apple_string( face->root.memory,
face->name_table.stream,
face->name_table.names + apple,
diff --git a/src/sfnt/sfdriver.h b/src/sfnt/sfdriver.h
index 02d8d3d..8c17463 100644
--- a/src/sfnt/sfdriver.h
+++ b/src/sfnt/sfdriver.h
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sferrors.h b/src/sfnt/sferrors.h
index 6f78063..43e148d 100644
--- a/src/sfnt/sferrors.h
+++ b/src/sfnt/sferrors.h
@@ -4,7 +4,7 @@
*
* SFNT error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sfnt.c b/src/sfnt/sfnt.c
index 9b4e3c0..b4faf34 100644
--- a/src/sfnt/sfnt.c
+++ b/src/sfnt/sfnt.c
@@ -4,7 +4,7 @@
*
* Single object library component.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -22,6 +22,7 @@
#include "pngshim.c"
#include "sfdriver.c"
#include "sfobjs.c"
+#include "sfwoff.c"
#include "ttbdf.c"
#include "ttcmap.c"
#include "ttcolr.c"
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index 9dfc20e..6edf3ae 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -4,7 +4,7 @@
*
* SFNT object management (base).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -21,13 +21,13 @@
#include "ttload.h"
#include "ttcmap.h"
#include "ttkern.h"
+#include "sfwoff.h"
#include FT_INTERNAL_SFNT_H
#include FT_INTERNAL_DEBUG_H
#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
#include FT_SFNT_NAMES_H
-#include FT_GZIP_H
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
#include FT_SERVICE_MULTIPLE_MASTERS_H
@@ -48,7 +48,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_sfobjs
+#define FT_COMPONENT sfobjs
@@ -337,403 +337,6 @@
}
-#define WRITE_USHORT( p, v ) \
- do \
- { \
- *(p)++ = (FT_Byte)( (v) >> 8 ); \
- *(p)++ = (FT_Byte)( (v) >> 0 ); \
- \
- } while ( 0 )
-
-#define WRITE_ULONG( p, v ) \
- do \
- { \
- *(p)++ = (FT_Byte)( (v) >> 24 ); \
- *(p)++ = (FT_Byte)( (v) >> 16 ); \
- *(p)++ = (FT_Byte)( (v) >> 8 ); \
- *(p)++ = (FT_Byte)( (v) >> 0 ); \
- \
- } while ( 0 )
-
-
- static void
- sfnt_stream_close( FT_Stream stream )
- {
- FT_Memory memory = stream->memory;
-
-
- FT_FREE( stream->base );
-
- stream->size = 0;
- stream->base = NULL;
- stream->close = NULL;
- }
-
-
- FT_CALLBACK_DEF( int )
- compare_offsets( const void* a,
- const void* b )
- {
- WOFF_Table table1 = *(WOFF_Table*)a;
- WOFF_Table table2 = *(WOFF_Table*)b;
-
- FT_ULong offset1 = table1->Offset;
- FT_ULong offset2 = table2->Offset;
-
-
- if ( offset1 > offset2 )
- return 1;
- else if ( offset1 < offset2 )
- return -1;
- else
- return 0;
- }
-
-
- /* Replace `face->root.stream' with a stream containing the extracted */
- /* SFNT of a WOFF font. */
-
- static FT_Error
- woff_open_font( FT_Stream stream,
- TT_Face face )
- {
- FT_Memory memory = stream->memory;
- FT_Error error = FT_Err_Ok;
-
- WOFF_HeaderRec woff;
- WOFF_Table tables = NULL;
- WOFF_Table* indices = NULL;
-
- FT_ULong woff_offset;
-
- FT_Byte* sfnt = NULL;
- FT_Stream sfnt_stream = NULL;
-
- FT_Byte* sfnt_header;
- FT_ULong sfnt_offset;
-
- FT_Int nn;
- FT_ULong old_tag = 0;
-
- static const FT_Frame_Field woff_header_fields[] =
- {
-#undef FT_STRUCTURE
-#define FT_STRUCTURE WOFF_HeaderRec
-
- FT_FRAME_START( 44 ),
- FT_FRAME_ULONG ( signature ),
- FT_FRAME_ULONG ( flavor ),
- FT_FRAME_ULONG ( length ),
- FT_FRAME_USHORT( num_tables ),
- FT_FRAME_USHORT( reserved ),
- FT_FRAME_ULONG ( totalSfntSize ),
- FT_FRAME_USHORT( majorVersion ),
- FT_FRAME_USHORT( minorVersion ),
- FT_FRAME_ULONG ( metaOffset ),
- FT_FRAME_ULONG ( metaLength ),
- FT_FRAME_ULONG ( metaOrigLength ),
- FT_FRAME_ULONG ( privOffset ),
- FT_FRAME_ULONG ( privLength ),
- FT_FRAME_END
- };
-
-
- FT_ASSERT( stream == face->root.stream );
- FT_ASSERT( FT_STREAM_POS() == 0 );
-
- if ( FT_STREAM_READ_FIELDS( woff_header_fields, &woff ) )
- return error;
-
- /* Make sure we don't recurse back here or hit TTC code. */
- if ( woff.flavor == TTAG_wOFF || woff.flavor == TTAG_ttcf )
- return FT_THROW( Invalid_Table );
-
- /* Miscellaneous checks. */
- if ( woff.length != stream->size ||
- woff.num_tables == 0 ||
- 44 + woff.num_tables * 20UL >= woff.length ||
- 12 + woff.num_tables * 16UL >= woff.totalSfntSize ||
- ( woff.totalSfntSize & 3 ) != 0 ||
- ( woff.metaOffset == 0 && ( woff.metaLength != 0 ||
- woff.metaOrigLength != 0 ) ) ||
- ( woff.metaLength != 0 && woff.metaOrigLength == 0 ) ||
- ( woff.privOffset == 0 && woff.privLength != 0 ) )
- {
- FT_ERROR(( "woff_font_open: invalid WOFF header\n" ));
- return FT_THROW( Invalid_Table );
- }
-
- /* Don't trust `totalSfntSize' before thorough checks. */
- if ( FT_ALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
- FT_NEW( sfnt_stream ) )
- goto Exit;
-
- sfnt_header = sfnt;
-
- /* Write sfnt header. */
- {
- FT_UInt searchRange, entrySelector, rangeShift, x;
-
-
- x = woff.num_tables;
- entrySelector = 0;
- while ( x )
- {
- x >>= 1;
- entrySelector += 1;
- }
- entrySelector--;
-
- searchRange = ( 1 << entrySelector ) * 16;
- rangeShift = woff.num_tables * 16 - searchRange;
-
- WRITE_ULONG ( sfnt_header, woff.flavor );
- WRITE_USHORT( sfnt_header, woff.num_tables );
- WRITE_USHORT( sfnt_header, searchRange );
- WRITE_USHORT( sfnt_header, entrySelector );
- WRITE_USHORT( sfnt_header, rangeShift );
- }
-
- /* While the entries in the sfnt header must be sorted by the */
- /* tag value, the tables themselves are not. We thus have to */
- /* sort them by offset and check that they don't overlap. */
-
- if ( FT_NEW_ARRAY( tables, woff.num_tables ) ||
- FT_NEW_ARRAY( indices, woff.num_tables ) )
- goto Exit;
-
- FT_TRACE2(( "\n"
- " tag offset compLen origLen checksum\n"
- " -------------------------------------------\n" ));
-
- if ( FT_FRAME_ENTER( 20L * woff.num_tables ) )
- goto Exit;
-
- for ( nn = 0; nn < woff.num_tables; nn++ )
- {
- WOFF_Table table = tables + nn;
-
- table->Tag = FT_GET_TAG4();
- table->Offset = FT_GET_ULONG();
- table->CompLength = FT_GET_ULONG();
- table->OrigLength = FT_GET_ULONG();
- table->CheckSum = FT_GET_ULONG();
-
- FT_TRACE2(( " %c%c%c%c %08lx %08lx %08lx %08lx\n",
- (FT_Char)( table->Tag >> 24 ),
- (FT_Char)( table->Tag >> 16 ),
- (FT_Char)( table->Tag >> 8 ),
- (FT_Char)( table->Tag ),
- table->Offset,
- table->CompLength,
- table->OrigLength,
- table->CheckSum ));
-
- if ( table->Tag <= old_tag )
- {
- FT_FRAME_EXIT();
-
- FT_ERROR(( "woff_font_open: table tags are not sorted\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
- old_tag = table->Tag;
- indices[nn] = table;
- }
-
- FT_FRAME_EXIT();
-
- /* Sort by offset. */
-
- ft_qsort( indices,
- woff.num_tables,
- sizeof ( WOFF_Table ),
- compare_offsets );
-
- /* Check offsets and lengths. */
-
- woff_offset = 44 + woff.num_tables * 20L;
- sfnt_offset = 12 + woff.num_tables * 16L;
-
- for ( nn = 0; nn < woff.num_tables; nn++ )
- {
- WOFF_Table table = indices[nn];
-
-
- if ( table->Offset != woff_offset ||
- table->CompLength > woff.length ||
- table->Offset > woff.length - table->CompLength ||
- table->OrigLength > woff.totalSfntSize ||
- sfnt_offset > woff.totalSfntSize - table->OrigLength ||
- table->CompLength > table->OrigLength )
- {
- FT_ERROR(( "woff_font_open: invalid table offsets\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
- table->OrigOffset = sfnt_offset;
-
- /* The offsets must be multiples of 4. */
- woff_offset += ( table->CompLength + 3 ) & ~3U;
- sfnt_offset += ( table->OrigLength + 3 ) & ~3U;
- }
-
- /*
- * Final checks!
- *
- * We don't decode and check the metadata block.
- * We don't check table checksums either.
- * But other than those, I think we implement all
- * `MUST' checks from the spec.
- */
-
- if ( woff.metaOffset )
- {
- if ( woff.metaOffset != woff_offset ||
- woff.metaOffset + woff.metaLength > woff.length )
- {
- FT_ERROR(( "woff_font_open:"
- " invalid `metadata' offset or length\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
- /* We have padding only ... */
- woff_offset += woff.metaLength;
- }
-
- if ( woff.privOffset )
- {
- /* ... if it isn't the last block. */
- woff_offset = ( woff_offset + 3 ) & ~3U;
-
- if ( woff.privOffset != woff_offset ||
- woff.privOffset + woff.privLength > woff.length )
- {
- FT_ERROR(( "woff_font_open: invalid `private' offset or length\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
- /* No padding for the last block. */
- woff_offset += woff.privLength;
- }
-
- if ( sfnt_offset != woff.totalSfntSize ||
- woff_offset != woff.length )
- {
- FT_ERROR(( "woff_font_open: invalid `sfnt' table structure\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
- /* Now use `totalSfntSize'. */
- if ( FT_REALLOC( sfnt,
- 12 + woff.num_tables * 16UL,
- woff.totalSfntSize ) )
- goto Exit;
-
- sfnt_header = sfnt + 12;
-
- /* Write the tables. */
-
- for ( nn = 0; nn < woff.num_tables; nn++ )
- {
- WOFF_Table table = tables + nn;
-
-
- /* Write SFNT table entry. */
- WRITE_ULONG( sfnt_header, table->Tag );
- WRITE_ULONG( sfnt_header, table->CheckSum );
- WRITE_ULONG( sfnt_header, table->OrigOffset );
- WRITE_ULONG( sfnt_header, table->OrigLength );
-
- /* Write table data. */
- if ( FT_STREAM_SEEK( table->Offset ) ||
- FT_FRAME_ENTER( table->CompLength ) )
- goto Exit;
-
- if ( table->CompLength == table->OrigLength )
- {
- /* Uncompressed data; just copy. */
- ft_memcpy( sfnt + table->OrigOffset,
- stream->cursor,
- table->OrigLength );
- }
- else
- {
-#ifdef FT_CONFIG_OPTION_USE_ZLIB
-
- /* Uncompress with zlib. */
- FT_ULong output_len = table->OrigLength;
-
-
- error = FT_Gzip_Uncompress( memory,
- sfnt + table->OrigOffset, &output_len,
- stream->cursor, table->CompLength );
- if ( error )
- goto Exit;
- if ( output_len != table->OrigLength )
- {
- FT_ERROR(( "woff_font_open: compressed table length mismatch\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
-#else /* !FT_CONFIG_OPTION_USE_ZLIB */
-
- error = FT_THROW( Unimplemented_Feature );
- goto Exit;
-
-#endif /* !FT_CONFIG_OPTION_USE_ZLIB */
- }
-
- FT_FRAME_EXIT();
-
- /* We don't check whether the padding bytes in the WOFF file are */
- /* actually '\0'. For the output, however, we do set them properly. */
- sfnt_offset = table->OrigOffset + table->OrigLength;
- while ( sfnt_offset & 3 )
- {
- sfnt[sfnt_offset] = '\0';
- sfnt_offset++;
- }
- }
-
- /* Ok! Finally ready. Swap out stream and return. */
- FT_Stream_OpenMemory( sfnt_stream, sfnt, woff.totalSfntSize );
- sfnt_stream->memory = stream->memory;
- sfnt_stream->close = sfnt_stream_close;
-
- FT_Stream_Free(
- face->root.stream,
- ( face->root.face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 );
-
- face->root.stream = sfnt_stream;
-
- face->root.face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
-
- Exit:
- FT_FREE( tables );
- FT_FREE( indices );
-
- if ( error )
- {
- FT_FREE( sfnt );
- FT_Stream_Close( sfnt_stream );
- FT_FREE( sfnt_stream );
- }
-
- return error;
- }
-
-
-#undef WRITE_USHORT
-#undef WRITE_ULONG
-
-
/* Fill in face->ttc_header. If the font is not a TTC, it is */
/* synthesized into a TTC with one offset table. */
static FT_Error
@@ -1531,7 +1134,8 @@
error = FT_CMap_New( (FT_CMap_Class)&tt_cmap_unicode_class_rec,
NULL, &cmaprec, NULL );
if ( error &&
- FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+ FT_ERR_NEQ( error, Unimplemented_Feature ) )
goto Exit;
error = FT_Err_Ok;
@@ -1640,59 +1244,73 @@
root->units_per_EM = face->header.Units_Per_EM;
- /* XXX: Computing the ascender/descender/height is very different */
- /* from what the specification tells you. Apparently, we */
- /* must be careful because */
- /* */
- /* - not all fonts have an OS/2 table; in this case, we take */
- /* the values in the horizontal header. However, these */
- /* values very often are not reliable. */
- /* */
- /* - otherwise, the correct typographic values are in the */
- /* sTypoAscender, sTypoDescender & sTypoLineGap fields. */
- /* */
- /* However, certain fonts have these fields set to 0. */
- /* Rather, they have usWinAscent & usWinDescent correctly */
- /* set (but with different values). */
- /* */
- /* As an example, Arial Narrow is implemented through four */
- /* files ARIALN.TTF, ARIALNI.TTF, ARIALNB.TTF & ARIALNBI.TTF */
- /* */
- /* Strangely, all fonts have the same values in their */
- /* sTypoXXX fields, except ARIALNB which sets them to 0. */
- /* */
- /* On the other hand, they all have different */
- /* usWinAscent/Descent values -- as a conclusion, the OS/2 */
- /* table cannot be used to compute the text height reliably! */
- /* */
+ /*
+ * Computing the ascender/descender/height is tricky.
+ *
+ * The OpenType specification v1.8.3 says:
+ *
+ * [OS/2's] sTypoAscender, sTypoDescender and sTypoLineGap fields
+ * are intended to allow applications to lay out documents in a
+ * typographically-correct and portable fashion.
+ *
+ * This is somewhat at odds with the decades of backwards
+ * compatibility, operating systems and applications doing whatever
+ * they want, not to mention broken fonts.
+ *
+ * Not all fonts have an OS/2 table; in this case, we take the values
+ * in the horizontal header, although there is nothing stopping the
+ * values from being unreliable. Even with a OS/2 table, certain fonts
+ * set the sTypoAscender, sTypoDescender and sTypoLineGap fields to 0
+ * and instead correctly set usWinAscent and usWinDescent.
+ *
+ * As an example, Arial Narrow is shipped as four files ARIALN.TTF,
+ * ARIALNI.TTF, ARIALNB.TTF and ARIALNBI.TTF. Strangely, all fonts have
+ * the same values in their sTypo* fields, except ARIALNB.ttf which
+ * sets them to 0. All of them have different usWinAscent/Descent
+ * values. The OS/2 table therefore cannot be trusted for computing the
+ * text height reliably.
+ *
+ * As a compromise, do the following:
+ *
+ * 1. If the OS/2 table exists and the fsSelection bit 7 is set
+ * (USE_TYPO_METRICS), trust the font and use the sTypo* metrics.
+ * 2. Otherwise, use the `hhea' table's metrics.
+ * 3. If they are zero and the OS/2 table exists,
+ * 1. use the OS/2 table's sTypo* metrics if they are non-zero.
+ * 2. Otherwise, use the OS/2 table's usWin* metrics.
+ */
- /* The ascender and descender are taken from the `hhea' table. */
- /* If zero, they are taken from the `OS/2' table. */
-
- root->ascender = face->horizontal.Ascender;
- root->descender = face->horizontal.Descender;
-
- root->height = root->ascender - root->descender +
- face->horizontal.Line_Gap;
-
- if ( !( root->ascender || root->descender ) )
+ if ( face->os2.version != 0xFFFFU && face->os2.fsSelection & 128 )
{
- if ( face->os2.version != 0xFFFFU )
+ root->ascender = face->os2.sTypoAscender;
+ root->descender = face->os2.sTypoDescender;
+ root->height = root->ascender - root->descender +
+ face->os2.sTypoLineGap;
+ }
+ else
+ {
+ root->ascender = face->horizontal.Ascender;
+ root->descender = face->horizontal.Descender;
+ root->height = root->ascender - root->descender +
+ face->horizontal.Line_Gap;
+
+ if ( !( root->ascender || root->descender ) )
{
- if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
+ if ( face->os2.version != 0xFFFFU )
{
- root->ascender = face->os2.sTypoAscender;
- root->descender = face->os2.sTypoDescender;
-
- root->height = root->ascender - root->descender +
- face->os2.sTypoLineGap;
- }
- else
- {
- root->ascender = (FT_Short)face->os2.usWinAscent;
- root->descender = -(FT_Short)face->os2.usWinDescent;
-
- root->height = root->ascender - root->descender;
+ if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
+ {
+ root->ascender = face->os2.sTypoAscender;
+ root->descender = face->os2.sTypoDescender;
+ root->height = root->ascender - root->descender +
+ face->os2.sTypoLineGap;
+ }
+ else
+ {
+ root->ascender = (FT_Short)face->os2.usWinAscent;
+ root->descender = -(FT_Short)face->os2.usWinDescent;
+ root->height = root->ascender - root->descender;
+ }
}
}
}
diff --git a/src/sfnt/sfobjs.h b/src/sfnt/sfobjs.h
index d3bbaf1..3fbf2dd 100644
--- a/src/sfnt/sfobjs.h
+++ b/src/sfnt/sfobjs.h
@@ -4,7 +4,7 @@
*
* SFNT object management (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,7 +53,7 @@
FT_END_HEADER
-#endif /* SFDRIVER_H_ */
+#endif /* SFOBJS_H_ */
/* END */
diff --git a/src/sfnt/sfwoff.c b/src/sfnt/sfwoff.c
new file mode 100644
index 0000000..ca4821a
--- /dev/null
+++ b/src/sfnt/sfwoff.c
@@ -0,0 +1,434 @@
+/****************************************************************************
+ *
+ * sfwoff.c
+ *
+ * WOFF format management (base).
+ *
+ * Copyright (C) 1996-2019 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 <ft2build.h>
+#include "sfwoff.h"
+#include FT_TRUETYPE_TAGS_H
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_GZIP_H
+
+
+ /**************************************************************************
+ *
+ * The macro FT_COMPONENT is used in trace mode. It is an implicit
+ * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+ * messages during execution.
+ */
+#undef FT_COMPONENT
+#define FT_COMPONENT sfwoff
+
+
+#define WRITE_USHORT( p, v ) \
+ do \
+ { \
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
+ \
+ } while ( 0 )
+
+#define WRITE_ULONG( p, v ) \
+ do \
+ { \
+ *(p)++ = (FT_Byte)( (v) >> 24 ); \
+ *(p)++ = (FT_Byte)( (v) >> 16 ); \
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
+ \
+ } while ( 0 )
+
+
+ static void
+ sfnt_stream_close( FT_Stream stream )
+ {
+ FT_Memory memory = stream->memory;
+
+
+ FT_FREE( stream->base );
+
+ stream->size = 0;
+ stream->base = NULL;
+ stream->close = NULL;
+ }
+
+
+ FT_CALLBACK_DEF( int )
+ compare_offsets( const void* a,
+ const void* b )
+ {
+ WOFF_Table table1 = *(WOFF_Table*)a;
+ WOFF_Table table2 = *(WOFF_Table*)b;
+
+ FT_ULong offset1 = table1->Offset;
+ FT_ULong offset2 = table2->Offset;
+
+
+ if ( offset1 > offset2 )
+ return 1;
+ else if ( offset1 < offset2 )
+ return -1;
+ else
+ return 0;
+ }
+
+
+ /* Replace `face->root.stream' with a stream containing the extracted */
+ /* SFNT of a WOFF font. */
+
+ FT_LOCAL_DEF( FT_Error )
+ woff_open_font( FT_Stream stream,
+ TT_Face face )
+ {
+ FT_Memory memory = stream->memory;
+ FT_Error error = FT_Err_Ok;
+
+ WOFF_HeaderRec woff;
+ WOFF_Table tables = NULL;
+ WOFF_Table* indices = NULL;
+
+ FT_ULong woff_offset;
+
+ FT_Byte* sfnt = NULL;
+ FT_Stream sfnt_stream = NULL;
+
+ FT_Byte* sfnt_header;
+ FT_ULong sfnt_offset;
+
+ FT_Int nn;
+ FT_ULong old_tag = 0;
+
+ static const FT_Frame_Field woff_header_fields[] =
+ {
+#undef FT_STRUCTURE
+#define FT_STRUCTURE WOFF_HeaderRec
+
+ FT_FRAME_START( 44 ),
+ FT_FRAME_ULONG ( signature ),
+ FT_FRAME_ULONG ( flavor ),
+ FT_FRAME_ULONG ( length ),
+ FT_FRAME_USHORT( num_tables ),
+ FT_FRAME_USHORT( reserved ),
+ FT_FRAME_ULONG ( totalSfntSize ),
+ FT_FRAME_USHORT( majorVersion ),
+ FT_FRAME_USHORT( minorVersion ),
+ FT_FRAME_ULONG ( metaOffset ),
+ FT_FRAME_ULONG ( metaLength ),
+ FT_FRAME_ULONG ( metaOrigLength ),
+ FT_FRAME_ULONG ( privOffset ),
+ FT_FRAME_ULONG ( privLength ),
+ FT_FRAME_END
+ };
+
+
+ FT_ASSERT( stream == face->root.stream );
+ FT_ASSERT( FT_STREAM_POS() == 0 );
+
+ if ( FT_STREAM_READ_FIELDS( woff_header_fields, &woff ) )
+ return error;
+
+ /* Make sure we don't recurse back here or hit TTC code. */
+ if ( woff.flavor == TTAG_wOFF || woff.flavor == TTAG_ttcf )
+ return FT_THROW( Invalid_Table );
+
+ /* Miscellaneous checks. */
+ if ( woff.length != stream->size ||
+ woff.num_tables == 0 ||
+ 44 + woff.num_tables * 20UL >= woff.length ||
+ 12 + woff.num_tables * 16UL >= woff.totalSfntSize ||
+ ( woff.totalSfntSize & 3 ) != 0 ||
+ ( woff.metaOffset == 0 && ( woff.metaLength != 0 ||
+ woff.metaOrigLength != 0 ) ) ||
+ ( woff.metaLength != 0 && woff.metaOrigLength == 0 ) ||
+ ( woff.privOffset == 0 && woff.privLength != 0 ) )
+ {
+ FT_ERROR(( "woff_font_open: invalid WOFF header\n" ));
+ return FT_THROW( Invalid_Table );
+ }
+
+ /* Don't trust `totalSfntSize' before thorough checks. */
+ if ( FT_ALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
+ FT_NEW( sfnt_stream ) )
+ goto Exit;
+
+ sfnt_header = sfnt;
+
+ /* Write sfnt header. */
+ {
+ FT_UInt searchRange, entrySelector, rangeShift, x;
+
+
+ x = woff.num_tables;
+ entrySelector = 0;
+ while ( x )
+ {
+ x >>= 1;
+ entrySelector += 1;
+ }
+ entrySelector--;
+
+ searchRange = ( 1 << entrySelector ) * 16;
+ rangeShift = woff.num_tables * 16 - searchRange;
+
+ WRITE_ULONG ( sfnt_header, woff.flavor );
+ WRITE_USHORT( sfnt_header, woff.num_tables );
+ WRITE_USHORT( sfnt_header, searchRange );
+ WRITE_USHORT( sfnt_header, entrySelector );
+ WRITE_USHORT( sfnt_header, rangeShift );
+ }
+
+ /* While the entries in the sfnt header must be sorted by the */
+ /* tag value, the tables themselves are not. We thus have to */
+ /* sort them by offset and check that they don't overlap. */
+
+ if ( FT_NEW_ARRAY( tables, woff.num_tables ) ||
+ FT_NEW_ARRAY( indices, woff.num_tables ) )
+ goto Exit;
+
+ FT_TRACE2(( "\n"
+ " tag offset compLen origLen checksum\n"
+ " -------------------------------------------\n" ));
+
+ if ( FT_FRAME_ENTER( 20L * woff.num_tables ) )
+ goto Exit;
+
+ for ( nn = 0; nn < woff.num_tables; nn++ )
+ {
+ WOFF_Table table = tables + nn;
+
+ table->Tag = FT_GET_TAG4();
+ table->Offset = FT_GET_ULONG();
+ table->CompLength = FT_GET_ULONG();
+ table->OrigLength = FT_GET_ULONG();
+ table->CheckSum = FT_GET_ULONG();
+
+ FT_TRACE2(( " %c%c%c%c %08lx %08lx %08lx %08lx\n",
+ (FT_Char)( table->Tag >> 24 ),
+ (FT_Char)( table->Tag >> 16 ),
+ (FT_Char)( table->Tag >> 8 ),
+ (FT_Char)( table->Tag ),
+ table->Offset,
+ table->CompLength,
+ table->OrigLength,
+ table->CheckSum ));
+
+ if ( table->Tag <= old_tag )
+ {
+ FT_FRAME_EXIT();
+
+ FT_ERROR(( "woff_font_open: table tags are not sorted\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+ old_tag = table->Tag;
+ indices[nn] = table;
+ }
+
+ FT_FRAME_EXIT();
+
+ /* Sort by offset. */
+
+ ft_qsort( indices,
+ woff.num_tables,
+ sizeof ( WOFF_Table ),
+ compare_offsets );
+
+ /* Check offsets and lengths. */
+
+ woff_offset = 44 + woff.num_tables * 20L;
+ sfnt_offset = 12 + woff.num_tables * 16L;
+
+ for ( nn = 0; nn < woff.num_tables; nn++ )
+ {
+ WOFF_Table table = indices[nn];
+
+
+ if ( table->Offset != woff_offset ||
+ table->CompLength > woff.length ||
+ table->Offset > woff.length - table->CompLength ||
+ table->OrigLength > woff.totalSfntSize ||
+ sfnt_offset > woff.totalSfntSize - table->OrigLength ||
+ table->CompLength > table->OrigLength )
+ {
+ FT_ERROR(( "woff_font_open: invalid table offsets\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+ table->OrigOffset = sfnt_offset;
+
+ /* The offsets must be multiples of 4. */
+ woff_offset += ( table->CompLength + 3 ) & ~3U;
+ sfnt_offset += ( table->OrigLength + 3 ) & ~3U;
+ }
+
+ /*
+ * Final checks!
+ *
+ * We don't decode and check the metadata block.
+ * We don't check table checksums either.
+ * But other than those, I think we implement all
+ * `MUST' checks from the spec.
+ */
+
+ if ( woff.metaOffset )
+ {
+ if ( woff.metaOffset != woff_offset ||
+ woff.metaOffset + woff.metaLength > woff.length )
+ {
+ FT_ERROR(( "woff_font_open:"
+ " invalid `metadata' offset or length\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+ /* We have padding only ... */
+ woff_offset += woff.metaLength;
+ }
+
+ if ( woff.privOffset )
+ {
+ /* ... if it isn't the last block. */
+ woff_offset = ( woff_offset + 3 ) & ~3U;
+
+ if ( woff.privOffset != woff_offset ||
+ woff.privOffset + woff.privLength > woff.length )
+ {
+ FT_ERROR(( "woff_font_open: invalid `private' offset or length\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+ /* No padding for the last block. */
+ woff_offset += woff.privLength;
+ }
+
+ if ( sfnt_offset != woff.totalSfntSize ||
+ woff_offset != woff.length )
+ {
+ FT_ERROR(( "woff_font_open: invalid `sfnt' table structure\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+ /* Now use `totalSfntSize'. */
+ if ( FT_REALLOC( sfnt,
+ 12 + woff.num_tables * 16UL,
+ woff.totalSfntSize ) )
+ goto Exit;
+
+ sfnt_header = sfnt + 12;
+
+ /* Write the tables. */
+
+ for ( nn = 0; nn < woff.num_tables; nn++ )
+ {
+ WOFF_Table table = tables + nn;
+
+
+ /* Write SFNT table entry. */
+ WRITE_ULONG( sfnt_header, table->Tag );
+ WRITE_ULONG( sfnt_header, table->CheckSum );
+ WRITE_ULONG( sfnt_header, table->OrigOffset );
+ WRITE_ULONG( sfnt_header, table->OrigLength );
+
+ /* Write table data. */
+ if ( FT_STREAM_SEEK( table->Offset ) ||
+ FT_FRAME_ENTER( table->CompLength ) )
+ goto Exit;
+
+ if ( table->CompLength == table->OrigLength )
+ {
+ /* Uncompressed data; just copy. */
+ ft_memcpy( sfnt + table->OrigOffset,
+ stream->cursor,
+ table->OrigLength );
+ }
+ else
+ {
+#ifdef FT_CONFIG_OPTION_USE_ZLIB
+
+ /* Uncompress with zlib. */
+ FT_ULong output_len = table->OrigLength;
+
+
+ error = FT_Gzip_Uncompress( memory,
+ sfnt + table->OrigOffset, &output_len,
+ stream->cursor, table->CompLength );
+ if ( error )
+ goto Exit;
+ if ( output_len != table->OrigLength )
+ {
+ FT_ERROR(( "woff_font_open: compressed table length mismatch\n" ));
+ error = FT_THROW( Invalid_Table );
+ goto Exit;
+ }
+
+#else /* !FT_CONFIG_OPTION_USE_ZLIB */
+
+ error = FT_THROW( Unimplemented_Feature );
+ goto Exit;
+
+#endif /* !FT_CONFIG_OPTION_USE_ZLIB */
+ }
+
+ FT_FRAME_EXIT();
+
+ /* We don't check whether the padding bytes in the WOFF file are */
+ /* actually '\0'. For the output, however, we do set them properly. */
+ sfnt_offset = table->OrigOffset + table->OrigLength;
+ while ( sfnt_offset & 3 )
+ {
+ sfnt[sfnt_offset] = '\0';
+ sfnt_offset++;
+ }
+ }
+
+ /* Ok! Finally ready. Swap out stream and return. */
+ FT_Stream_OpenMemory( sfnt_stream, sfnt, woff.totalSfntSize );
+ sfnt_stream->memory = stream->memory;
+ sfnt_stream->close = sfnt_stream_close;
+
+ FT_Stream_Free(
+ face->root.stream,
+ ( face->root.face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 );
+
+ face->root.stream = sfnt_stream;
+
+ face->root.face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
+
+ Exit:
+ FT_FREE( tables );
+ FT_FREE( indices );
+
+ if ( error )
+ {
+ FT_FREE( sfnt );
+ FT_Stream_Close( sfnt_stream );
+ FT_FREE( sfnt_stream );
+ }
+
+ return error;
+ }
+
+
+#undef WRITE_USHORT
+#undef WRITE_ULONG
+
+
+/* END */
diff --git a/src/sfnt/sfwoff.h b/src/sfnt/sfwoff.h
new file mode 100644
index 0000000..15495c3
--- /dev/null
+++ b/src/sfnt/sfwoff.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ *
+ * sfwoff.h
+ *
+ * WOFFF format management (specification).
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
+
+
+#ifndef SFWOFF_H_
+#define SFWOFF_H_
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_SFNT_H
+#include FT_INTERNAL_OBJECTS_H
+
+
+FT_BEGIN_HEADER
+
+
+ FT_LOCAL( FT_Error )
+ woff_open_font( FT_Stream stream,
+ TT_Face face );
+
+
+FT_END_HEADER
+
+#endif /* SFWOFF_H_ */
+
+
+/* END */
diff --git a/src/sfnt/ttbdf.c b/src/sfnt/ttbdf.c
index a85a687..853599f 100644
--- a/src/sfnt/ttbdf.c
+++ b/src/sfnt/ttbdf.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (body).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -34,7 +34,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttbdf
+#define FT_COMPONENT ttbdf
FT_LOCAL_DEF( void )
diff --git a/src/sfnt/ttbdf.h b/src/sfnt/ttbdf.h
index 5cee599..e4164e6 100644
--- a/src/sfnt/ttbdf.h
+++ b/src/sfnt/ttbdf.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (specification).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index a3a8c52..683f3b1 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttcmap
+#define FT_COMPONENT ttcmap
#define TT_PEEK_SHORT FT_PEEK_SHORT
@@ -2368,10 +2368,7 @@
/* if `gindex' is invalid, the remaining values */
/* in this group are invalid, too */
if ( gindex >= (FT_UInt)face->num_glyphs )
- {
- gindex = 0;
continue;
- }
cmap->cur_charcode = char_code;
cmap->cur_gindex = gindex;
@@ -3661,7 +3658,7 @@
tt_get_glyph_name( TT_Face face,
FT_UInt idx )
{
- FT_String* PSname;
+ FT_String* PSname = NULL;
tt_face_get_ps_name( face, idx, &PSname );
@@ -3681,6 +3678,9 @@
FT_UNUSED( pointer );
+ if ( !psnames->unicodes_init )
+ return FT_THROW( Unimplemented_Feature );
+
return psnames->unicodes_init( memory,
unicodes,
face->root.num_glyphs,
diff --git a/src/sfnt/ttcmap.h b/src/sfnt/ttcmap.h
index 14a700d..36801c9 100644
--- a/src/sfnt/ttcmap.h
+++ b/src/sfnt/ttcmap.h
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcmapc.h b/src/sfnt/ttcmapc.h
index 11d3e98..ace9e69 100644
--- a/src/sfnt/ttcmapc.h
+++ b/src/sfnt/ttcmapc.h
@@ -4,7 +4,7 @@
*
* TT CMAP classes definitions (specification only).
*
- * Copyright 2009-2018 by
+ * Copyright (C) 2009-2019 by
* Oran Agra and Mickey Gabel.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c
index a8ff026..6b537d9 100644
--- a/src/sfnt/ttcolr.c
+++ b/src/sfnt/ttcolr.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType colored glyph layer support (body).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -77,7 +77,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttcolr
+#define FT_COMPONENT ttcolr
FT_LOCAL_DEF( FT_Error )
diff --git a/src/sfnt/ttcolr.h b/src/sfnt/ttcolr.h
index 46cc081..817489a 100644
--- a/src/sfnt/ttcolr.h
+++ b/src/sfnt/ttcolr.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType colored glyph layer support (specification).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/src/sfnt/ttcpal.c b/src/sfnt/ttcpal.c
index b4b60e2..3482169 100644
--- a/src/sfnt/ttcpal.c
+++ b/src/sfnt/ttcpal.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (body).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -68,7 +68,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttcpal
+#define FT_COMPONENT ttcpal
FT_LOCAL_DEF( FT_Error )
@@ -121,6 +121,9 @@
if ( cpal->num_colors * COLOR_SIZE > table_size - colors_offset )
goto InvalidTable;
+ if ( face->palette_data.num_palette_entries > cpal->num_colors )
+ goto InvalidTable;
+
cpal->color_indices = p;
cpal->colors = (FT_Byte*)( table + colors_offset );
@@ -217,7 +220,8 @@
face->palette_data.num_palette_entries ) )
goto NoCpal;
- tt_face_palette_set( face, 0 );
+ if ( tt_face_palette_set( face, 0 ) )
+ goto InvalidTable;
return FT_Err_Ok;
@@ -228,6 +232,8 @@
FT_FRAME_RELEASE( table );
FT_FREE( cpal );
+ face->cpal = NULL;
+
/* arrays in `face->palette_data' and `face->palette' */
/* are freed in `sfnt_done_face' */
@@ -264,20 +270,20 @@
FT_Color* q;
FT_Color* limit;
- FT_ULong record_offset;
+ FT_UShort color_index;
if ( !cpal || palette_index >= face->palette_data.num_palettes )
return FT_THROW( Invalid_Argument );
- offset = cpal->color_indices + 2 * palette_index;
- record_offset = COLOR_SIZE * FT_PEEK_USHORT( offset );
+ offset = cpal->color_indices + 2 * palette_index;
+ color_index = FT_PEEK_USHORT( offset );
- if ( record_offset + COLOR_SIZE * face->palette_data.num_palette_entries >
- cpal->table_size )
+ if ( color_index + face->palette_data.num_palette_entries >
+ cpal->num_colors )
return FT_THROW( Invalid_Table );
- p = cpal->colors + record_offset;
+ p = cpal->colors + COLOR_SIZE * color_index;
q = face->palette;
limit = q + face->palette_data.num_palette_entries;
diff --git a/src/sfnt/ttcpal.h b/src/sfnt/ttcpal.h
index 424ef35..d1b244f 100644
--- a/src/sfnt/ttcpal.h
+++ b/src/sfnt/ttcpal.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (specification).
*
- * Copyright 2018 by
+ * Copyright (C) 2018-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/src/sfnt/ttkern.c b/src/sfnt/ttkern.c
index 48ad417..8d1b781 100644
--- a/src/sfnt/ttkern.c
+++ b/src/sfnt/ttkern.c
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttkern
+#define FT_COMPONENT ttkern
#undef TT_KERN_INDEX
diff --git a/src/sfnt/ttkern.h b/src/sfnt/ttkern.h
index c26bb8d..5f283e5 100644
--- a/src/sfnt/ttkern.h
+++ b/src/sfnt/ttkern.h
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c
index f3fed8f..5443bf4 100644
--- a/src/sfnt/ttload.c
+++ b/src/sfnt/ttload.c
@@ -5,7 +5,7 @@
* Load the basic TrueType tables, i.e., tables that can be either in
* TTF or OTF fonts (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttload
+#define FT_COMPONENT ttload
/**************************************************************************
@@ -638,10 +638,10 @@
FT_FRAME_LONG ( Magic_Number ),
FT_FRAME_USHORT( Flags ),
FT_FRAME_USHORT( Units_Per_EM ),
- FT_FRAME_LONG ( Created[0] ),
- FT_FRAME_LONG ( Created[1] ),
- FT_FRAME_LONG ( Modified[0] ),
- FT_FRAME_LONG ( Modified[1] ),
+ FT_FRAME_ULONG ( Created[0] ),
+ FT_FRAME_ULONG ( Created[1] ),
+ FT_FRAME_ULONG ( Modified[0] ),
+ FT_FRAME_ULONG ( Modified[1] ),
FT_FRAME_SHORT ( xMin ),
FT_FRAME_SHORT ( yMin ),
FT_FRAME_SHORT ( xMax ),
diff --git a/src/sfnt/ttload.h b/src/sfnt/ttload.h
index 21d9cb6..cc18c18 100644
--- a/src/sfnt/ttload.h
+++ b/src/sfnt/ttload.h
@@ -5,7 +5,7 @@
* Load the basic TrueType tables, i.e., tables that can be either in
* TTF or OTF fonts (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttmtx.c b/src/sfnt/ttmtx.c
index 8edf4e6..b6725c9 100644
--- a/src/sfnt/ttmtx.c
+++ b/src/sfnt/ttmtx.c
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (body).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -45,7 +45,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttmtx
+#define FT_COMPONENT ttmtx
/**************************************************************************
@@ -280,7 +280,7 @@
else
{
table_pos += 4 * ( k - 1 );
- if ( table_pos + 4 > table_end )
+ if ( table_pos + 2 > table_end )
goto NoData;
if ( FT_STREAM_SEEK( table_pos ) ||
@@ -292,7 +292,9 @@
*abearing = 0;
else
{
- if ( !FT_STREAM_SEEK( table_pos ) )
+ if ( FT_STREAM_SEEK( table_pos ) )
+ *abearing = 0;
+ else
(void)FT_READ_SHORT( *abearing );
}
}
diff --git a/src/sfnt/ttmtx.h b/src/sfnt/ttmtx.h
index f360b45..5b0b60b 100644
--- a/src/sfnt/ttmtx.h
+++ b/src/sfnt/ttmtx.h
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (specification).
*
- * Copyright 2006-2018 by
+ * Copyright (C) 2006-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttpost.c b/src/sfnt/ttpost.c
index 7148301..636a0a0 100644
--- a/src/sfnt/ttpost.c
+++ b/src/sfnt/ttpost.c
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -45,10 +45,10 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttpost
+#define FT_COMPONENT ttpost
- /* If this configuration macro is defined, we rely on the `PSNames' */
+ /* If this configuration macro is defined, we rely on the `psnames' */
/* module to grab the glyph names. */
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -62,9 +62,9 @@
#else /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
- /* Otherwise, we ignore the `PSNames' module, and provide our own */
+ /* Otherwise, we ignore the `psnames' module, and provide our own */
/* table of Mac names. Thus, it is possible to build a version of */
- /* FreeType without the Type 1 driver & PSNames module. */
+ /* FreeType without the Type 1 driver & psnames module. */
#define MAC_NAME( x ) (FT_String*)tt_post_default_names[x]
diff --git a/src/sfnt/ttpost.h b/src/sfnt/ttpost.h
index a6f2cf2..812a0fc 100644
--- a/src/sfnt/ttpost.h
+++ b/src/sfnt/ttpost.h
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c
index 322c000..23bd9d7 100644
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (body).
*
- * Copyright 2005-2018 by
+ * Copyright (C) 2005-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Copyright 2013 by Google, Inc.
@@ -43,7 +43,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttsbit
+#define FT_COMPONENT ttsbit
FT_LOCAL_DEF( FT_Error )
@@ -1014,8 +1014,8 @@
for ( nn = 0; nn < num_components; nn++ )
{
FT_UInt gindex = FT_NEXT_USHORT( p );
- FT_Byte dx = FT_NEXT_BYTE( p );
- FT_Byte dy = FT_NEXT_BYTE( p );
+ FT_Char dx = FT_NEXT_CHAR( p );
+ FT_Char dy = FT_NEXT_CHAR( p );
/* NB: a recursive call */
diff --git a/src/sfnt/ttsbit.h b/src/sfnt/ttsbit.h
index 99bf560..5ab8ff5 100644
--- a/src/sfnt/ttsbit.h
+++ b/src/sfnt/ttsbit.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/Jamfile b/src/smooth/Jamfile
index 9957d5e..6ca1ced 100644
--- a/src/smooth/Jamfile
+++ b/src/smooth/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/smooth Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c
index 8f2a600..fd357a5 100644
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -4,7 +4,7 @@
*
* A new `perfect' anti-aliasing renderer (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -45,10 +45,10 @@
* This is a new anti-aliasing scan-converter for FreeType 2. The
* algorithm used here is _very_ different from the one in the standard
* `ftraster' module. Actually, `ftgrays' computes the _exact_
- * coverage of the outline on each pixel cell.
+ * coverage of the outline on each pixel cell by straight segments.
*
* It is based on ideas that I initially found in Raph Levien's
- * excellent LibArt graphics library (see http://www.levien.com/libart
+ * excellent LibArt graphics library (see https://www.levien.com/libart
* for more information, though the web pages do not tell anything
* about the renderer; you'll have to dive into the source code to
* understand how it works).
@@ -58,6 +58,14 @@
* different way, and I don't use sorted vector paths. Also, it doesn't
* use floating point values.
*
+ * Bézier segments are flattened by splitting them until their deviation
+ * from straight line becomes much smaller than a pixel. Therefore, the
+ * pixel coverage by a Bézier curve is calculated approximately. To
+ * estimate the deviation, we use the distance from the control point
+ * to the conic chord centre or the cubic chord trisection. These
+ * distances vanish fast after each split. In the conic case, they vanish
+ * predictably and the number of necessary splits can be calculated.
+ *
* This renderer has the following advantages:
*
* - It doesn't need an intermediate bitmap. Instead, one can supply a
@@ -67,7 +75,7 @@
* callback.
*
* - A perfect anti-aliaser, i.e., it computes the _exact_ coverage on
- * each pixel cell.
+ * each pixel cell by straight segments.
*
* - It performs a single pass on the outline (the `standard' FT2
* renderer makes two passes).
@@ -75,7 +83,7 @@
* - It can easily be modified to render to _any_ number of gray levels
* cheaply.
*
- * - For small (< 20) pixel sizes, it is faster than the standard
+ * - For small (< 80) pixel sizes, it is faster than the standard
* renderer.
*
*/
@@ -88,7 +96,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_smooth
+#define FT_COMPONENT smooth
#ifdef STANDALONE_
@@ -222,10 +230,10 @@
#endif
#define FT_THROW( e ) \
- ( FT_Throw( FT_ERR_CAT( ErrRaster, e ), \
+ ( FT_Throw( FT_ERR_CAT( ErrRaster_, e ), \
__LINE__, \
__FILE__ ) | \
- FT_ERR_CAT( ErrRaster, e ) )
+ FT_ERR_CAT( ErrRaster_, e ) )
#else /* !FT_DEBUG_LEVEL_TRACE */
@@ -327,17 +335,9 @@
/* must be at least 6 bits! */
#define PIXEL_BITS 8
-#undef FLOOR
-#undef CEILING
-#undef TRUNC
-#undef SCALED
-
#define ONE_PIXEL ( 1 << PIXEL_BITS )
-#define TRUNC( x ) ( (TCoord)( (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 )
+#define TRUNC( x ) (TCoord)( (x) >> PIXEL_BITS )
+#define FRACT( x ) (TCoord)( (x) & ( ONE_PIXEL - 1 ) )
#if PIXEL_BITS >= 6
#define UPSCALE( x ) ( (x) * ( ONE_PIXEL >> 6 ) )
@@ -388,9 +388,9 @@
#define FT_UDIVPREP( c, b ) \
long b ## _r = c ? (long)( FT_ULONG_MAX >> PIXEL_BITS ) / ( b ) \
: 0
-#define FT_UDIV( a, b ) \
- ( ( (unsigned long)( a ) * (unsigned long)( b ## _r ) ) >> \
- ( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
+#define FT_UDIV( a, b ) \
+ (TCoord)( ( (unsigned long)( a ) * (unsigned long)( b ## _r ) ) >> \
+ ( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
/**************************************************************************
@@ -432,6 +432,9 @@
#define FT_MAX_GRAY_POOL ( 2048 / sizeof ( TCell ) )
#endif
+ /* FT_Span buffer size for direct rendering only */
+#define FT_MAX_GRAY_SPANS 10
+
#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
/* We disable the warning `structure was padded due to */
@@ -465,6 +468,8 @@
FT_Raster_Span_Func render_span;
void* render_span_data;
+ FT_Span spans[FT_MAX_GRAY_SPANS];
+ int num_spans;
} gray_TWorker, *gray_PWorker;
@@ -516,7 +521,7 @@
/**************************************************************************
*
- * Record the current cell in the table.
+ * Record the current cell in the linked list.
*/
static void
gray_record_cell( RAS_ARG )
@@ -526,10 +531,9 @@
pcell = &ras.ycells[ras.ey - ras.min_ey];
- for (;;)
+ while ( ( cell = *pcell ) )
{
- cell = *pcell;
- if ( !cell || cell->x > x )
+ if ( cell->x > x )
break;
if ( cell->x == x )
@@ -577,16 +581,13 @@
/* Note that if a cell is to the left of the clipping region, it is */
/* actually set to the (min_ex-1) horizontal position. */
- if ( ex < ras.min_ex )
- ex = ras.min_ex - 1;
-
/* record the current one if it is valid and substantial */
if ( !ras.invalid && ( ras.area || ras.cover ) )
gray_record_cell( RAS_VAR );
ras.area = 0;
ras.cover = 0;
- ras.ex = ex;
+ ras.ex = FT_MAX( ex, ras.min_ex - 1 );
ras.ey = ey;
ras.invalid = ( ey >= ras.max_ey || ey < ras.min_ey ||
@@ -622,8 +623,8 @@
return;
}
- fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) );
- fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) );
+ fx1 = FRACT( x1 );
+ fx2 = FRACT( x2 );
/* everything is located in a single cell. That is easy! */
/* */
@@ -650,6 +651,9 @@
dx = -dx;
}
+ /* the fractional part of y-delta is mod/dx. It is essential to */
+ /* keep track of its accumulation for accurate rendering. */
+ /* XXX: y-delta and x-delta below should be related. */
FT_DIV_MOD( TCoord, p, dx, delta, mod );
ras.area += (TArea)( ( fx1 + first ) * delta );
@@ -715,8 +719,8 @@
( ey1 < ras.min_ey && ey2 < ras.min_ey ) )
goto End;
- fy1 = (TCoord)( ras.y - SUBPIXELS( ey1 ) );
- fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) );
+ fy1 = FRACT( ras.y );
+ fy2 = FRACT( to_y );
/* everything is on a single scanline */
if ( ey1 == ey2 )
@@ -732,7 +736,7 @@
if ( dx == 0 )
{
TCoord ex = TRUNC( ras.x );
- TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( ex ) ) << 1 );
+ TCoord two_fx = FRACT( ras.x ) << 1;
TArea area;
@@ -787,6 +791,8 @@
dy = -dy;
}
+ /* the fractional part of x-delta is mod/dy. It is essential to */
+ /* keep track of its accumulation for accurate rendering. */
FT_DIV_MOD( TCoord, p, dy, delta, mod );
x = ras.x + delta;
@@ -843,8 +849,9 @@
gray_render_line( RAS_ARG_ TPos to_x,
TPos to_y )
{
- TPos dx, dy, fx1, fy1, fx2, fy2;
- TCoord ex1, ex2, ey1, ey2;
+ TPos dx, dy;
+ TCoord fx1, fy1, fx2, fy2;
+ TCoord ex1, ey1, ex2, ey2;
ey1 = TRUNC( ras.y );
@@ -858,8 +865,8 @@
ex1 = TRUNC( ras.x );
ex2 = TRUNC( to_x );
- fx1 = ras.x - SUBPIXELS( ex1 );
- fy1 = ras.y - SUBPIXELS( ey1 );
+ fx1 = FRACT( ras.x );
+ fy1 = FRACT( ras.y );
dx = to_x - ras.x;
dy = to_y - ras.y;
@@ -868,8 +875,8 @@
;
else if ( dy == 0 ) /* ex1 != ex2 */ /* any horizontal line */
{
- ex1 = ex2;
- gray_set_cell( RAS_VAR_ ex1, ey1 );
+ gray_set_cell( RAS_VAR_ ex2, ey2 );
+ goto End;
}
else if ( dx == 0 )
{
@@ -896,7 +903,7 @@
}
else /* any other line */
{
- TPos prod = dx * fy1 - dy * fx1;
+ TPos prod = dx * (TPos)fy1 - dy * (TPos)fx1;
FT_UDIVPREP( ex1 != ex2, dx );
FT_UDIVPREP( ey1 != ey2, dy );
@@ -910,7 +917,7 @@
prod - dx * ONE_PIXEL > 0 ) /* left */
{
fx2 = 0;
- fy2 = (TPos)FT_UDIV( -prod, -dx );
+ fy2 = FT_UDIV( -prod, -dx );
prod -= dy * ONE_PIXEL;
ras.cover += ( fy2 - fy1 );
ras.area += ( fy2 - fy1 ) * ( fx1 + fx2 );
@@ -922,7 +929,7 @@
prod - dx * ONE_PIXEL + dy * ONE_PIXEL > 0 ) /* up */
{
prod -= dx * ONE_PIXEL;
- fx2 = (TPos)FT_UDIV( -prod, dy );
+ fx2 = FT_UDIV( -prod, dy );
fy2 = ONE_PIXEL;
ras.cover += ( fy2 - fy1 );
ras.area += ( fy2 - fy1 ) * ( fx1 + fx2 );
@@ -935,7 +942,7 @@
{
prod += dy * ONE_PIXEL;
fx2 = ONE_PIXEL;
- fy2 = (TPos)FT_UDIV( prod, dx );
+ fy2 = FT_UDIV( prod, dx );
ras.cover += ( fy2 - fy1 );
ras.area += ( fy2 - fy1 ) * ( fx1 + fx2 );
fx1 = 0;
@@ -945,7 +952,7 @@
else /* ( prod + dy * ONE_PIXEL < 0 &&
prod > 0 ) down */
{
- fx2 = (TPos)FT_UDIV( prod, -dy );
+ fx2 = FT_UDIV( prod, -dy );
fy2 = 0;
prod += dx * ONE_PIXEL;
ras.cover += ( fy2 - fy1 );
@@ -959,8 +966,8 @@
} while ( ex1 != ex2 || ey1 != ey2 );
}
- fx2 = to_x - SUBPIXELS( ex2 );
- fy2 = to_y - SUBPIXELS( ey2 );
+ fx2 = FRACT( to_x );
+ fy2 = FRACT( to_y );
ras.cover += ( fy2 - fy1 );
ras.area += ( fy2 - fy1 ) * ( fx1 + fx2 );
@@ -979,16 +986,18 @@
base[4].x = base[2].x;
- b = base[1].x;
- a = base[3].x = ( base[2].x + b ) / 2;
- b = base[1].x = ( base[0].x + b ) / 2;
- base[2].x = ( a + b ) / 2;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ base[3].x = b >> 1;
+ base[2].x = ( a + b ) >> 2;
+ base[1].x = a >> 1;
base[4].y = base[2].y;
- b = base[1].y;
- a = base[3].y = ( base[2].y + b ) / 2;
- b = base[1].y = ( base[0].y + b ) / 2;
- base[2].y = ( a + b ) / 2;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ base[3].y = b >> 1;
+ base[2].y = ( a + b ) >> 2;
+ base[1].y = a >> 1;
}
@@ -1042,12 +1051,11 @@
/* many times as there are trailing zeros in the counter. */
do
{
- split = 1;
- while ( ( draw & split ) == 0 )
+ split = draw & ( -draw ); /* isolate the rightmost 1-bit */
+ while ( ( split >>= 1 ) )
{
gray_split_conic( arc );
arc += 2;
- split <<= 1;
}
gray_render_line( RAS_VAR_ arc[0].x, arc[0].y );
@@ -1060,28 +1068,32 @@
static void
gray_split_cubic( FT_Vector* base )
{
- TPos a, b, c, d;
+ TPos a, b, c;
base[6].x = base[3].x;
- c = base[1].x;
- d = base[2].x;
- base[1].x = a = ( base[0].x + c ) / 2;
- base[5].x = b = ( base[3].x + d ) / 2;
- c = ( c + d ) / 2;
- base[2].x = a = ( a + c ) / 2;
- base[4].x = b = ( b + c ) / 2;
- base[3].x = ( a + b ) / 2;
+ a = base[0].x + base[1].x;
+ b = base[1].x + base[2].x;
+ c = base[2].x + base[3].x;
+ base[5].x = c >> 1;
+ c += b;
+ base[4].x = c >> 2;
+ base[1].x = a >> 1;
+ a += b;
+ base[2].x = a >> 2;
+ base[3].x = ( a + c ) >> 3;
base[6].y = base[3].y;
- c = base[1].y;
- d = base[2].y;
- base[1].y = a = ( base[0].y + c ) / 2;
- base[5].y = b = ( base[3].y + d ) / 2;
- c = ( c + d ) / 2;
- base[2].y = a = ( a + c ) / 2;
- base[4].y = b = ( b + c ) / 2;
- base[3].y = ( a + b ) / 2;
+ a = base[0].y + base[1].y;
+ b = base[1].y + base[2].y;
+ c = base[2].y + base[3].y;
+ base[5].y = c >> 1;
+ c += b;
+ base[4].y = c >> 2;
+ base[1].y = a >> 1;
+ a += b;
+ base[2].y = a >> 2;
+ base[3].y = ( a + c ) >> 3;
}
@@ -1092,9 +1104,6 @@
{
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[0].x = UPSCALE( to->x );
@@ -1123,45 +1132,13 @@
for (;;)
{
- /* Decide whether to split or draw. See `Rapid Termination */
- /* Evaluation for Recursive Subdivision of Bezier Curves' by Thomas */
- /* F. Hain, at */
- /* http://www.cis.southalabama.edu/~hain/general/Publications/Bezier/Camera-ready%20CISST02%202.pdf */
-
- /* 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_ );
-
- /* Avoid possible arithmetic overflow below by splitting. */
- if ( L > 32767 )
- goto Split;
-
- /* Max deviation may be as much as (s/L) * 3/4 (if Hain's v = 1). */
- s_limit = L * (TPos)( ONE_PIXEL / 6 );
-
- /* 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( SUB_LONG( MUL_LONG( dy, dx1 ), MUL_LONG( dx, dy1 ) ) );
-
- 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( SUB_LONG( MUL_LONG( dy, dx2 ), MUL_LONG( dx, dy2 ) ) );
-
- if ( s > s_limit )
- goto Split;
-
- /* 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 )
+ /* with each split, control points quickly converge towards */
+ /* chord trisection points and the vanishing distances below */
+ /* indicate when the segment is flat enough to draw */
+ if ( FT_ABS( 2 * arc[0].x - 3 * arc[1].x + arc[3].x ) > ONE_PIXEL / 2 ||
+ FT_ABS( 2 * arc[0].y - 3 * arc[1].y + arc[3].y ) > ONE_PIXEL / 2 ||
+ FT_ABS( arc[0].x - 3 * arc[2].x + 2 * arc[3].x ) > ONE_PIXEL / 2 ||
+ FT_ABS( arc[0].y - 3 * arc[2].y + 2 * arc[3].y ) > ONE_PIXEL / 2 )
goto Split;
gray_render_line( RAS_VAR_ arc[0].x, arc[0].y );
@@ -1236,8 +1213,6 @@
{
/* scale the coverage from 0..(ONE_PIXEL*ONE_PIXEL*2) to 0..256 */
coverage >>= PIXEL_BITS * 2 + 1 - 8;
- if ( coverage < 0 )
- coverage = -coverage - 1;
/* compute the line's coverage depending on the outline fill rule */
if ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL )
@@ -1247,23 +1222,30 @@
if ( coverage >= 256 )
coverage = 511 - coverage;
}
- else
+ else /* default non-zero winding rule */
{
- /* normal non-zero winding rule */
+ if ( coverage < 0 )
+ coverage = ~coverage; /* the same as -coverage - 1 */
+
if ( coverage >= 256 )
coverage = 255;
}
- if ( ras.render_span ) /* for FT_RASTER_FLAG_DIRECT only */
+ if ( ras.num_spans >= 0 ) /* for FT_RASTER_FLAG_DIRECT only */
{
- FT_Span span;
+ FT_Span* span = ras.spans + ras.num_spans++;
- span.x = (short)x;
- span.len = (unsigned short)acount;
- span.coverage = (unsigned char)coverage;
+ span->x = (short)x;
+ span->len = (unsigned short)acount;
+ span->coverage = (unsigned char)coverage;
- ras.render_span( y, 1, &span, ras.render_span_data );
+ if ( ras.num_spans == FT_MAX_GRAY_SPANS )
+ {
+ /* flush the span buffer and reset the count */
+ ras.render_span( y, ras.num_spans, ras.spans, ras.render_span_data );
+ ras.num_spans = 0;
+ }
}
else
{
@@ -1277,14 +1259,29 @@
*/
switch ( acount )
{
- case 7: *q++ = c;
- case 6: *q++ = c;
- case 5: *q++ = c;
- case 4: *q++ = c;
- case 3: *q++ = c;
- case 2: *q++ = c;
- case 1: *q = c;
- case 0: break;
+ case 7:
+ *q++ = c;
+ /* fall through */
+ case 6:
+ *q++ = c;
+ /* fall through */
+ case 5:
+ *q++ = c;
+ /* fall through */
+ case 4:
+ *q++ = c;
+ /* fall through */
+ case 3:
+ *q++ = c;
+ /* fall through */
+ case 2:
+ *q++ = c;
+ /* fall through */
+ case 1:
+ *q = c;
+ /* fall through */
+ case 0:
+ break;
default:
FT_MEM_SET( q, c, acount );
}
@@ -1322,6 +1319,13 @@
if ( cover != 0 )
gray_hline( RAS_VAR_ x, y, cover, ras.max_ex - x );
+
+ if ( ras.num_spans > 0 ) /* for FT_RASTER_FLAG_DIRECT only */
+ {
+ /* flush the span buffer and reset the count */
+ ras.render_span( y, ras.num_spans, ras.spans, ras.render_span_data );
+ ras.num_spans = 0;
+ }
}
}
@@ -1371,7 +1375,7 @@
void* user )
{
#undef SCALED
-#define SCALED( x ) ( ( (x) << shift ) - delta )
+#define SCALED( x ) ( (x) * ( 1L << shift ) - delta )
FT_Vector v_last;
FT_Vector v_control;
@@ -1631,7 +1635,7 @@
gray_convert_glyph_inner( RAS_ARG,
int continued )
{
- volatile int error = 0;
+ int error;
if ( ft_setjmp( ras.jump_buffer ) == 0 )
@@ -1755,7 +1759,6 @@
{
const FT_Outline* outline = (const FT_Outline*)params->source;
const FT_Bitmap* target_map = params->target;
- FT_BBox clip;
#ifndef FT_STATIC_RASTER
gray_TWorker worker[1];
@@ -1792,6 +1795,12 @@
ras.render_span = (FT_Raster_Span_Func)params->gray_spans;
ras.render_span_data = params->user;
+ ras.num_spans = 0;
+
+ ras.min_ex = params->clip_box.xMin;
+ ras.min_ey = params->clip_box.yMin;
+ ras.max_ex = params->clip_box.xMax;
+ ras.max_ey = params->clip_box.yMax;
}
else
{
@@ -1816,27 +1825,15 @@
ras.render_span = (FT_Raster_Span_Func)NULL;
ras.render_span_data = NULL;
+ ras.num_spans = -1; /* invalid */
+
+ ras.min_ex = 0;
+ ras.min_ey = 0;
+ ras.max_ex = (FT_Pos)target_map->width;
+ ras.max_ey = (FT_Pos)target_map->rows;
}
- /* compute clipping box */
- if ( params->flags & FT_RASTER_FLAG_DIRECT &&
- params->flags & FT_RASTER_FLAG_CLIP )
- clip = params->clip_box;
- else
- {
- /* compute clip box from target pixmap */
- clip.xMin = 0;
- clip.yMin = 0;
- clip.xMax = (FT_Pos)target_map->width;
- clip.yMax = (FT_Pos)target_map->rows;
- }
-
- /* clip to target bitmap, exit if nothing to do */
- ras.min_ex = clip.xMin;
- ras.min_ey = clip.yMin;
- ras.max_ex = clip.xMax;
- ras.max_ey = clip.yMax;
-
+ /* exit if nothing to do */
if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey )
return 0;
diff --git a/src/smooth/ftgrays.h b/src/smooth/ftgrays.h
index 6aa7f35..e9f9c7a 100644
--- a/src/smooth/ftgrays.h
+++ b/src/smooth/ftgrays.h
@@ -4,7 +4,7 @@
*
* FreeType smooth renderer declaration
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/ftsmerrs.h b/src/smooth/ftsmerrs.h
index 4c55e32..d52c0dd 100644
--- a/src/smooth/ftsmerrs.h
+++ b/src/smooth/ftsmerrs.h
@@ -4,7 +4,7 @@
*
* smooth renderer error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index c6b7e21..cd034d2 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -4,7 +4,7 @@
*
* Anti-aliasing renderer interface (body).
*
- * Copyright 2000-2018 by
+ * Copyright (C) 2000-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -44,6 +44,10 @@
sub[2].x = 21;
sub[2].y = 0;
+#elif 0 /* or else, once ClearType patents expire */
+
+ FT_Library_SetLcdFilter( render->root.library, FT_LCD_FILTER_DEFAULT );
+
#endif
render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
@@ -145,12 +149,8 @@
slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
}
- ft_glyphslot_preset_bitmap( slot, mode, origin );
-
- if ( bitmap->width > 0x7FFF || bitmap->rows > 0x7FFF )
+ if ( ft_glyphslot_preset_bitmap( slot, mode, origin ) )
{
- FT_ERROR(( "ft_smooth_render_generic: glyph is too large: %u x %u\n",
- bitmap->width, bitmap->rows ));
error = FT_THROW( Raster_Overflow );
goto Exit;
}
@@ -243,7 +243,7 @@
}
if ( lcd_filter_func )
- lcd_filter_func( bitmap, mode, lcd_weights );
+ lcd_filter_func( bitmap, lcd_weights );
}
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
@@ -264,27 +264,33 @@
/* Render 3 separate monochrome bitmaps, shifting the outline. */
width /= 3;
- FT_Outline_Translate( outline, -sub[0].x, -sub[0].y );
+ FT_Outline_Translate( outline,
+ -sub[0].x,
+ -sub[0].y );
error = render->raster_render( render->raster, ¶ms );
if ( error )
goto Exit;
bitmap->buffer += width;
- FT_Outline_Translate( outline, sub[0].x - sub[1].x, sub[0].y - sub[1].y );
+ FT_Outline_Translate( outline,
+ sub[0].x - sub[1].x,
+ sub[0].y - sub[1].y );
error = render->raster_render( render->raster, ¶ms );
bitmap->buffer -= width;
if ( error )
goto Exit;
bitmap->buffer += 2 * width;
- FT_Outline_Translate( outline, sub[1].x - sub[2].x, sub[1].y - sub[2].y );
+ FT_Outline_Translate( outline,
+ sub[1].x - sub[2].x,
+ sub[1].y - sub[2].y );
error = render->raster_render( render->raster, ¶ms );
bitmap->buffer -= 2 * width;
if ( error )
goto Exit;
- x_shift -= sub[2].x;
- y_shift -= sub[2].y;
+ x_shift -= sub[2].x;
+ y_shift -= sub[2].y;
/* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD. */
/* XXX: It is more efficient to render every third byte above. */
@@ -319,27 +325,33 @@
bitmap->pitch *= 3;
bitmap->rows /= 3;
- FT_Outline_Translate( outline, -sub[0].y, sub[0].x );
+ FT_Outline_Translate( outline,
+ -sub[0].y,
+ sub[0].x );
error = render->raster_render( render->raster, ¶ms );
if ( error )
goto Exit;
bitmap->buffer += pitch;
- FT_Outline_Translate( outline, sub[0].y - sub[1].y, sub[1].x - sub[0].x );
+ FT_Outline_Translate( outline,
+ sub[0].y - sub[1].y,
+ sub[1].x - sub[0].x );
error = render->raster_render( render->raster, ¶ms );
bitmap->buffer -= pitch;
if ( error )
goto Exit;
bitmap->buffer += 2 * pitch;
- FT_Outline_Translate( outline, sub[1].y - sub[2].y, sub[2].x - sub[1].x );
+ FT_Outline_Translate( outline,
+ sub[1].y - sub[2].y,
+ sub[2].x - sub[1].x );
error = render->raster_render( render->raster, ¶ms );
bitmap->buffer -= 2 * pitch;
if ( error )
goto Exit;
- x_shift -= sub[2].y;
- y_shift += sub[2].x;
+ x_shift -= sub[2].y;
+ y_shift += sub[2].x;
bitmap->pitch /= 3;
bitmap->rows *= 3;
diff --git a/src/smooth/ftsmooth.h b/src/smooth/ftsmooth.h
index 782f11a..fbb21a3 100644
--- a/src/smooth/ftsmooth.h
+++ b/src/smooth/ftsmooth.h
@@ -4,7 +4,7 @@
*
* Anti-aliasing renderer interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/module.mk b/src/smooth/module.mk
index 5b8bc3b..44b76df 100644
--- a/src/smooth/module.mk
+++ b/src/smooth/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/smooth/rules.mk b/src/smooth/rules.mk
index 8f808f8..0153ac2 100644
--- a/src/smooth/rules.mk
+++ b/src/smooth/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/smooth/smooth.c b/src/smooth/smooth.c
index ac414f3..9c543d3 100644
--- a/src/smooth/smooth.c
+++ b/src/smooth/smooth.c
@@ -4,7 +4,7 @@
*
* FreeType anti-aliasing rasterer module component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/tools/afblue.pl b/src/tools/afblue.pl
index 7c6f1a7..937d4ec 100644
--- a/src/tools/afblue.pl
+++ b/src/tools/afblue.pl
@@ -5,7 +5,7 @@
#
# Process a blue zone character data file.
#
-# Copyright 2013-2018 by
+# Copyright (C) 2013-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used,
diff --git a/src/tools/apinames.c b/src/tools/apinames.c
index 06c3260..aeecf88 100644
--- a/src/tools/apinames.c
+++ b/src/tools/apinames.c
@@ -10,7 +10,7 @@
* accepted if you are using GCC for compilation (and probably by
* other compilers too).
*
- * Author: David Turner, 2005, 2006, 2008-2013, 2015
+ * Author: FreeType team, 2005-2019
*
* This code is explicitly placed into the public domain.
*
@@ -26,6 +26,7 @@
#define LINEBUFF_SIZE 1024
+
typedef enum OutputFormat_
{
OUTPUT_LIST = 0, /* output the list of names, one per line */
@@ -53,10 +54,12 @@
} NameRec, *Name;
+
static Name the_names;
static int num_names;
static int max_names;
+
static void
names_add( const char* name,
const char* end )
@@ -65,14 +68,16 @@
int nn, len;
Name nm;
+
if ( end <= name )
return;
/* compute hash value */
- len = (int)(end - name);
+ len = (int)( end - name );
h = 0;
+
for ( nn = 0; nn < len; nn++ )
- h = h*33 + name[nn];
+ h = h * 33 + name[nn];
/* check for an pre-existing name */
for ( nn = 0; nn < num_names; nn++ )
@@ -88,7 +93,7 @@
/* add new name */
if ( num_names >= max_names )
{
- max_names += (max_names >> 1) + 4;
+ max_names += ( max_names >> 1 ) + 4;
the_names = (NameRec*)realloc( the_names,
sizeof ( the_names[0] ) * max_names );
if ( !the_names )
@@ -97,7 +102,7 @@
nm = &the_names[num_names++];
nm->hash = h;
- nm->name = (char*)malloc( len+1 );
+ nm->name = (char*)malloc( len + 1 );
if ( !nm->name )
panic( "not enough memory" );
@@ -116,6 +121,7 @@
return strcmp( n1->name, n2->name );
}
+
static void
names_sort( void )
{
@@ -134,89 +140,95 @@
switch ( format )
{
- case OUTPUT_WINDOWS_DEF:
- if ( dll_name )
- fprintf( out, "LIBRARY %s\n", dll_name );
+ case OUTPUT_WINDOWS_DEF:
+ if ( dll_name )
+ fprintf( out, "LIBRARY %s\n", dll_name );
- fprintf( out, "DESCRIPTION FreeType 2 DLL\n" );
- fprintf( out, "EXPORTS\n" );
- for ( nn = 0; nn < num_names; nn++ )
- fprintf( out, " %s\n", the_names[nn].name );
- break;
+ fprintf( out, "DESCRIPTION FreeType 2 DLL\n" );
+ fprintf( out, "EXPORTS\n" );
- case OUTPUT_BORLAND_DEF:
- if ( dll_name )
- fprintf( out, "LIBRARY %s\n", dll_name );
+ for ( nn = 0; nn < num_names; nn++ )
+ fprintf( out, " %s\n", the_names[nn].name );
- fprintf( out, "DESCRIPTION FreeType 2 DLL\n" );
- fprintf( out, "EXPORTS\n" );
- for ( nn = 0; nn < num_names; nn++ )
- fprintf( out, " _%s\n", the_names[nn].name );
- break;
+ break;
- case OUTPUT_WATCOM_LBC:
+ case OUTPUT_BORLAND_DEF:
+ if ( dll_name )
+ fprintf( out, "LIBRARY %s\n", dll_name );
+
+ fprintf( out, "DESCRIPTION FreeType 2 DLL\n" );
+ fprintf( out, "EXPORTS\n" );
+
+ for ( nn = 0; nn < num_names; nn++ )
+ fprintf( out, " _%s\n", the_names[nn].name );
+
+ break;
+
+ case OUTPUT_WATCOM_LBC:
+ {
+ const char* dot;
+ char temp[512];
+
+
+ if ( !dll_name )
{
- const char* dot;
- char temp[512];
-
-
- if ( !dll_name )
- {
- fprintf( stderr,
- "you must provide a DLL name with the -d option!\n" );
- exit( 4 );
- }
-
- /* we must omit the .dll suffix from the library name */
- dot = strchr( dll_name, '.' );
- if ( dot )
- {
- int len = dot - dll_name;
-
-
- if ( len > (int)( sizeof ( temp ) - 1 ) )
- len = sizeof ( temp ) - 1;
-
- memcpy( temp, dll_name, len );
- temp[len] = 0;
-
- dll_name = (const char*)temp;
- }
-
- for ( nn = 0; nn < num_names; nn++ )
- fprintf( out, "++_%s.%s.%s\n", the_names[nn].name, dll_name,
- the_names[nn].name );
+ fprintf( stderr,
+ "you must provide a DLL name with the -d option!\n" );
+ exit( 4 );
}
- break;
- case OUTPUT_NETWARE_IMP:
+ /* we must omit the `.dll' suffix from the library name */
+ dot = strchr( dll_name, '.' );
+ if ( dot )
{
- if ( dll_name )
- fprintf( out, " (%s)\n", dll_name );
- for ( nn = 0; nn < num_names - 1; nn++ )
- fprintf( out, " %s,\n", the_names[nn].name );
- fprintf( out, " %s\n", the_names[num_names - 1].name );
- }
- break;
+ int len = dot - dll_name;
- case OUTPUT_GNU_VERMAP:
- {
- fprintf( out, "{\n\tglobal:\n" );
- for ( nn = 0; nn < num_names; nn++ )
- fprintf( out, "\t\t%s;\n", the_names[nn].name );
- fprintf( out, "\tlocal:\n\t\t*;\n};\n" );
- }
- break;
- default: /* LIST */
+ if ( len > (int)( sizeof ( temp ) - 1 ) )
+ len = sizeof ( temp ) - 1;
+
+ memcpy( temp, dll_name, len );
+ temp[len] = 0;
+
+ dll_name = (const char*)temp;
+ }
+
for ( nn = 0; nn < num_names; nn++ )
- fprintf( out, "%s\n", the_names[nn].name );
+ fprintf( out, "++_%s.%s.%s\n",
+ the_names[nn].name, dll_name, the_names[nn].name );
+ }
+
+ break;
+
+ case OUTPUT_NETWARE_IMP:
+ if ( dll_name )
+ fprintf( out, " (%s)\n", dll_name );
+
+ for ( nn = 0; nn < num_names - 1; nn++ )
+ fprintf( out, " %s,\n", the_names[nn].name );
+ fprintf( out, " %s\n", the_names[num_names - 1].name );
+
+ break;
+
+ case OUTPUT_GNU_VERMAP:
+ fprintf( out, "{\n\tglobal:\n" );
+
+ for ( nn = 0; nn < num_names; nn++ )
+ fprintf( out, "\t\t%s;\n", the_names[nn].name );
+
+ fprintf( out, "\tlocal:\n\t\t*;\n};\n" );
+
+ break;
+
+ default: /* LIST */
+ for ( nn = 0; nn < num_names; nn++ )
+ fprintf( out, "%s\n", the_names[nn].name );
+
+ break;
}
}
-
-
/* states of the line parser */
typedef enum State_
@@ -226,89 +238,96 @@
} State;
+
static int
-read_header_file( FILE* file, int verbose )
+read_header_file( FILE* file,
+ int verbose )
{
static char buff[LINEBUFF_SIZE + 1];
State state = STATE_START;
+
while ( !feof( file ) )
{
char* p;
+
if ( !fgets( buff, LINEBUFF_SIZE, file ) )
break;
p = buff;
- while ( *p && (*p == ' ' || *p == '\\') ) /* skip leading whitespace */
+ /* skip leading whitespace */
+ while ( *p && ( *p == ' ' || *p == '\\' ) )
p++;
- if ( *p == '\n' || *p == '\r' ) /* skip empty lines */
+ /* skip empty lines */
+ if ( *p == '\n' || *p == '\r' )
continue;
switch ( state )
{
- case STATE_START:
- {
- if ( memcmp( p, "FT_EXPORT(", 10 ) != 0 )
- break;
-
- p += 10;
- for (;;)
- {
- if ( *p == 0 || *p == '\n' || *p == '\r' )
- goto NextLine;
-
- if ( *p == ')' )
- {
- p++;
- break;
- }
-
- p++;
- }
-
- state = STATE_TYPE;
-
- /* sometimes, the name is just after the FT_EXPORT(...), so
- * skip whitespace, and fall-through if we find an alphanumeric
- * character
- */
- while ( *p == ' ' || *p == '\t' )
- p++;
-
- if ( !isalpha(*p) )
- break;
- }
- /* fall-through */
-
- case STATE_TYPE:
- {
- char* name = p;
-
- while ( isalnum(*p) || *p == '_' )
- p++;
-
- if ( p > name )
- {
- if ( verbose )
- fprintf( stderr, ">>> %.*s\n", (int)(p - name), name );
-
- names_add( name, p );
- }
-
- state = STATE_START;
- }
+ case STATE_START:
+ if ( memcmp( p, "FT_EXPORT(", 10 ) != 0 )
break;
- default:
- ;
+ p += 10;
+ for (;;)
+ {
+ if ( *p == 0 || *p == '\n' || *p == '\r' )
+ goto NextLine;
+
+ if ( *p == ')' )
+ {
+ p++;
+ break;
+ }
+
+ p++;
+ }
+
+ state = STATE_TYPE;
+
+ /*
+ * Sometimes, the name is just after `FT_EXPORT(...)', so skip
+ * whitespace and fall-through if we find an alphanumeric character.
+ */
+ while ( *p == ' ' || *p == '\t' )
+ p++;
+
+ if ( !isalpha( *p ) )
+ break;
+
+ /* fall-through */
+
+ case STATE_TYPE:
+ {
+ char* name = p;
+
+
+ while ( isalnum( *p ) || *p == '_' )
+ p++;
+
+ if ( p > name )
+ {
+ if ( verbose )
+ fprintf( stderr, ">>> %.*s\n", (int)( p - name ), name );
+
+ names_add( name, p );
+ }
+
+ state = STATE_START;
+ }
+
+ break;
+
+ default:
+ ;
}
- NextLine:
+NextLine:
;
- }
+ } /* end of while loop */
return 0;
}
@@ -318,143 +337,154 @@
usage( void )
{
static const char* const format =
- "%s %s: extract FreeType API names from header files\n\n"
- "this program is used to extract the list of public FreeType API\n"
- "functions. It receives the list of header files as argument and\n"
- "generates a sorted list of unique identifiers\n\n"
-
- "usage: %s header1 [options] [header2 ...]\n\n"
-
- "options: - : parse the content of stdin, ignore arguments\n"
- " -v : verbose mode, output sent to standard error\n"
- " -oFILE : write output to FILE instead of standard output\n"
- " -dNAME : indicate DLL file name, 'freetype.dll' by default\n"
- " -w : output .DEF file for Visual C++ and Mingw\n"
- " -wB : output .DEF file for Borland C++\n"
- " -wW : output Watcom Linker Response File\n"
- " -wN : output NetWare Import File\n"
- " -wL : output version map for GNU or Solaris linker\n"
- "\n";
+ "%s %s: extract FreeType API names from header files\n"
+ "\n"
+ "This program extracts the list of public FreeType API functions.\n"
+ "It receives a list of header files as an argument and\n"
+ "generates a sorted list of unique identifiers in various formats.\n"
+ "\n"
+ "usage: %s header1 [options] [header2 ...]\n"
+ "\n"
+ "options: - parse the contents of stdin, ignore arguments\n"
+ " -v verbose mode, output sent to standard error\n"
+ " -oFILE write output to FILE instead of standard output\n"
+ " -dNAME indicate DLL file name, 'freetype.dll' by default\n"
+ " -w output .DEF file for Visual C++ and Mingw\n"
+ " -wB output .DEF file for Borland C++\n"
+ " -wW output Watcom Linker Response File\n"
+ " -wN output NetWare Import File\n"
+ " -wL output version map for GNU or Solaris linker\n"
+ "\n";
fprintf( stderr,
format,
PROGRAM_NAME,
PROGRAM_VERSION,
- PROGRAM_NAME
- );
- exit(1);
+ PROGRAM_NAME );
+
+ exit( 1 );
}
-int main( int argc, const char* const* argv )
+int
+main( int argc,
+ const char* const* argv )
{
- int from_stdin = 0;
- int verbose = 0;
- OutputFormat format = OUTPUT_LIST; /* the default */
- FILE* out = stdout;
+ int from_stdin = 0;
+ int verbose = 0;
+ OutputFormat format = OUTPUT_LIST; /* the default */
+ FILE* out = stdout;
const char* library_name = NULL;
+
if ( argc < 2 )
usage();
- /* '-' used as a single argument means read source file from stdin */
+ /* `-' used as a single argument means read source file from stdin */
while ( argc > 1 && argv[1][0] == '-' )
{
const char* arg = argv[1];
+
switch ( arg[1] )
{
- case 'v':
- verbose = 1;
+ case 'v':
+ verbose = 1;
+
+ break;
+
+ case 'o':
+ if ( arg[2] == 0 )
+ {
+ if ( argc < 2 )
+ usage();
+
+ arg = argv[2];
+ argv++;
+ argc--;
+ }
+ else
+ arg += 2;
+
+ out = fopen( arg, "wt" );
+ if ( !out )
+ {
+ fprintf( stderr, "could not open '%s' for writing\n", arg );
+ exit( 3 );
+ }
+
+ break;
+
+ case 'd':
+ if ( arg[2] == 0 )
+ {
+ if ( argc < 2 )
+ usage();
+
+ arg = argv[2];
+ argv++;
+ argc--;
+ }
+ else
+ arg += 2;
+
+ library_name = arg;
+
+ break;
+
+ case 'w':
+ format = OUTPUT_WINDOWS_DEF;
+
+ switch ( arg[2] )
+ {
+ case 'B':
+ format = OUTPUT_BORLAND_DEF;
break;
- case 'o':
- if ( arg[2] == 0 )
- {
- if ( argc < 2 )
- usage();
-
- arg = argv[2];
- argv++;
- argc--;
- }
- else
- arg += 2;
-
- out = fopen( arg, "wt" );
- if ( !out )
- {
- fprintf( stderr, "could not open '%s' for writing\n", argv[2] );
- exit(3);
- }
+ case 'W':
+ format = OUTPUT_WATCOM_LBC;
break;
- case 'd':
- if ( arg[2] == 0 )
- {
- if ( argc < 2 )
- usage();
-
- arg = argv[2];
- argv++;
- argc--;
- }
- else
- arg += 2;
-
- library_name = arg;
+ case 'N':
+ format = OUTPUT_NETWARE_IMP;
break;
- case 'w':
- format = OUTPUT_WINDOWS_DEF;
- switch ( arg[2] )
- {
- case 'B':
- format = OUTPUT_BORLAND_DEF;
- break;
-
- case 'W':
- format = OUTPUT_WATCOM_LBC;
- break;
-
- case 'N':
- format = OUTPUT_NETWARE_IMP;
- break;
-
- case 'L':
- format = OUTPUT_GNU_VERMAP;
- break;
-
- case 0:
- break;
-
- default:
- usage();
- }
+ case 'L':
+ format = OUTPUT_GNU_VERMAP;
break;
case 0:
- from_stdin = 1;
break;
default:
usage();
+ }
+
+ break;
+
+ case 0:
+ from_stdin = 1;
+
+ break;
+
+ default:
+ usage();
}
argc--;
argv++;
- }
+
+ } /* end of while loop */
if ( from_stdin )
- {
read_header_file( stdin, verbose );
- }
else
{
for ( --argc, argv++; argc > 0; argc--, argv++ )
{
FILE* file = fopen( argv[0], "rb" );
+
if ( !file )
fprintf( stderr, "unable to open '%s'\n", argv[0] );
else
@@ -469,7 +499,7 @@
}
if ( num_names == 0 )
- panic( "could not find exported functions !!\n" );
+ panic( "could not find exported functions\n" );
names_sort();
names_dump( out, format, library_name );
@@ -479,3 +509,6 @@
return 0;
}
+
+
+/* END */
diff --git a/src/tools/docmaker/.gitignore b/src/tools/docmaker/.gitignore
deleted file mode 100644
index 0d20b64..0000000
--- a/src/tools/docmaker/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/src/tools/docmaker/content.py b/src/tools/docmaker/content.py
deleted file mode 100644
index 198780a..0000000
--- a/src/tools/docmaker/content.py
+++ /dev/null
@@ -1,672 +0,0 @@
-#
-# content.py
-#
-# Parse comment blocks to build content blocks (library file).
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-#
-# This file contains routines to parse documentation comment blocks,
-# building more structured objects out of them.
-#
-
-
-from sources import *
-from utils import *
-
-import string, re
-
-
-#
-# Regular expressions to detect code sequences. `Code sequences' are simply
-# code fragments embedded in '{' and '}', as demonstrated in the following
-# example.
-#
-# {
-# x = y + z;
-# if ( zookoo == 2 )
-# {
-# foobar();
-# }
-# }
-#
-# Note that the indentation of the first opening brace and the last closing
-# brace must be exactly the same. The code sequence itself should have a
-# larger indentation than the surrounding braces.
-#
-re_code_start = re.compile( r"(\s*){\s*$" )
-re_code_end = re.compile( r"(\s*)}\s*$" )
-
-
-#
-# A regular expression to isolate identifiers from other text. Two syntax
-# forms are supported:
-#
-# <name>
-# <name>[<id>]
-#
-# where both `<name>' and `<id>' consist of alphanumeric characters, `_',
-# and `-'. Use `<id>' if there are multiple, valid `<name>' entries; in the
-# index, `<id>' will be appended in parentheses.
-#
-# For example,
-#
-# stem_darkening[autofit]
-#
-# becomes `stem_darkening (autofit)' in the index.
-#
-re_identifier = re.compile( r"""
- ((?:\w|-)+
- (?:\[(?:\w|-)+\])?)
- """, re.VERBOSE )
-
-
-#
-# We collect macro names ending in `_H' (group 1), as defined in
-# `freetype/config/ftheader.h'. While outputting the object data, we use
-# this info together with the object's file location (group 2) to emit the
-# appropriate header file macro and its associated file name before the
-# object itself.
-#
-# Example:
-#
-# #define FT_FREETYPE_H <freetype.h>
-#
-re_header_macro = re.compile( r'^#define\s{1,}(\w{1,}_H)\s{1,}<(.*)>' )
-
-
-################################################################
-##
-## DOC CODE CLASS
-##
-## The `DocCode' class is used to store source code lines.
-##
-## `self.lines' contains a set of source code lines that will be dumped as
-## HTML in a <PRE> tag.
-##
-## The object is filled line by line by the parser; it strips the leading
-## `margin' space from each input line before storing it in `self.lines'.
-##
-class DocCode:
-
- def __init__( self, margin, lines ):
- self.lines = []
- self.words = None
-
- # remove margin spaces
- for l in lines:
- if string.strip( l[:margin] ) == "":
- l = l[margin:]
- self.lines.append( l )
-
- def dump( self, prefix = "", width = 60 ):
- lines = self.dump_lines( 0, width )
- for l in lines:
- print( prefix + l )
-
- def dump_lines( self, margin = 0, width = 60 ):
- result = []
- for l in self.lines:
- result.append( " " * margin + l )
- return result
-
-
-
-################################################################
-##
-## DOC PARA CLASS
-##
-## `Normal' text paragraphs are stored in the `DocPara' class.
-##
-## `self.words' contains the list of words that make up the paragraph.
-##
-class DocPara:
-
- def __init__( self, lines ):
- self.lines = None
- self.words = []
- for l in lines:
- l = string.strip( l )
- self.words.extend( string.split( l ) )
-
- def dump( self, prefix = "", width = 60 ):
- lines = self.dump_lines( 0, width )
- for l in lines:
- print( prefix + l )
-
- def dump_lines( self, margin = 0, width = 60 ):
- cur = "" # current line
- col = 0 # current width
- result = []
-
- for word in self.words:
- ln = len( word )
- if col > 0:
- ln = ln + 1
-
- if col + ln > width:
- result.append( " " * margin + cur )
- cur = word
- col = len( word )
- else:
- if col > 0:
- cur = cur + " "
- cur = cur + word
- col = col + ln
-
- if col > 0:
- result.append( " " * margin + cur )
-
- return result
-
-
-################################################################
-##
-## DOC FIELD CLASS
-##
-## The `DocField' class stores a list containing either `DocPara' or
-## `DocCode' objects. Each DocField object also has an optional `name'
-## that is used when the object corresponds to a field or value definition.
-##
-class DocField:
-
- def __init__( self, name, lines ):
- self.name = name # can be `None' for normal paragraphs/sources
- self.items = [] # list of items
-
- mode_none = 0 # start parsing mode
- mode_code = 1 # parsing code sequences
- mode_para = 3 # parsing normal paragraph
-
- margin = -1 # current code sequence indentation
- cur_lines = []
-
- # analyze the markup lines to check whether they contain paragraphs,
- # code sequences, or fields definitions
- #
- start = 0
- mode = mode_none
-
- for l in lines:
- # are we parsing a code sequence?
- if mode == mode_code:
- m = re_code_end.match( l )
- if m and len( m.group( 1 ) ) <= margin:
- # that's it, we finished the code sequence
- code = DocCode( 0, cur_lines )
- self.items.append( code )
- margin = -1
- cur_lines = []
- mode = mode_none
- else:
- # otherwise continue the code sequence
- cur_lines.append( l[margin:] )
- else:
- # start of code sequence?
- m = re_code_start.match( l )
- if m:
- # save current lines
- if cur_lines:
- para = DocPara( cur_lines )
- self.items.append( para )
- cur_lines = []
-
- # switch to code extraction mode
- margin = len( m.group( 1 ) )
- mode = mode_code
- else:
- if not string.split( l ) and cur_lines:
- # if the line is empty, we end the current paragraph,
- # if any
- para = DocPara( cur_lines )
- self.items.append( para )
- cur_lines = []
- else:
- # otherwise, simply add the line to the current
- # paragraph
- cur_lines.append( l )
-
- if mode == mode_code:
- # unexpected end of code sequence
- code = DocCode( margin, cur_lines )
- self.items.append( code )
- elif cur_lines:
- para = DocPara( cur_lines )
- self.items.append( para )
-
- def dump( self, prefix = "" ):
- if self.field:
- print( prefix + self.field + " ::" )
- prefix = prefix + "----"
-
- first = 1
- for p in self.items:
- if not first:
- print( "" )
- p.dump( prefix )
- first = 0
-
- def dump_lines( self, margin = 0, width = 60 ):
- result = []
- nl = None
-
- for p in self.items:
- if nl:
- result.append( "" )
-
- result.extend( p.dump_lines( margin, width ) )
- nl = 1
-
- return result
-
-
-#
-# A regular expression to detect field definitions.
-#
-# Examples:
-#
-# foo ::
-# foo.bar ::
-#
-re_field = re.compile( r"""
- \s*
- (
- \w*
- |
- \w (\w | \.)* \w
- )
- \s* ::
- """, re.VERBOSE )
-
-
-################################################################
-##
-## DOC MARKUP CLASS
-##
-class DocMarkup:
-
- def __init__( self, tag, lines ):
- self.tag = string.lower( tag )
- self.fields = []
-
- cur_lines = []
- field = None
- mode = 0
-
- for l in lines:
- m = re_field.match( l )
- if m:
- # We detected the start of a new field definition.
-
- # first, save the current one
- if cur_lines:
- f = DocField( field, cur_lines )
- self.fields.append( f )
- cur_lines = []
- field = None
-
- field = m.group( 1 ) # record field name
- ln = len( m.group( 0 ) )
- l = " " * ln + l[ln:]
- cur_lines = [l]
- else:
- cur_lines.append( l )
-
- if field or cur_lines:
- f = DocField( field, cur_lines )
- self.fields.append( f )
-
- def get_name( self ):
- try:
- return self.fields[0].items[0].words[0]
- except:
- return None
-
- def dump( self, margin ):
- print( " " * margin + "<" + self.tag + ">" )
- for f in self.fields:
- f.dump( " " )
- print( " " * margin + "</" + self.tag + ">" )
-
-
-################################################################
-##
-## DOC CHAPTER CLASS
-##
-class DocChapter:
-
- def __init__( self, block ):
- self.block = block
- self.sections = []
- if block:
- self.name = block.name
- self.title = block.get_markup_words( "title" )
- self.order = block.get_markup_words( "sections" )
- else:
- self.name = "Other"
- self.title = string.split( "Miscellaneous" )
- self.order = []
-
-
-################################################################
-##
-## DOC SECTION CLASS
-##
-class DocSection:
-
- def __init__( self, name = "Other" ):
- self.name = name
- self.blocks = {}
- self.block_names = [] # ordered block names in section
- self.defs = []
- self.abstract = ""
- self.description = ""
- self.order = []
- self.title = "ERROR"
- self.chapter = None
-
- def add_def( self, block ):
- self.defs.append( block )
-
- def add_block( self, block ):
- self.block_names.append( block.name )
- self.blocks[block.name] = block
-
- def process( self ):
- # look up one block that contains a valid section description
- for block in self.defs:
- title = block.get_markup_text( "title" )
- if title:
- self.title = title
- self.abstract = block.get_markup_words( "abstract" )
- self.description = block.get_markup_items( "description" )
- self.order = block.get_markup_words_all( "order" )
- return
-
- def reorder( self ):
- self.block_names = sort_order_list( self.block_names, self.order )
-
-
-################################################################
-##
-## CONTENT PROCESSOR CLASS
-##
-class ContentProcessor:
-
- def __init__( self ):
- """Initialize a block content processor."""
- self.reset()
-
- self.sections = {} # dictionary of documentation sections
- self.section = None # current documentation section
-
- self.chapters = [] # list of chapters
-
- self.headers = {} # dictionary of header macros
-
- def set_section( self, section_name ):
- """Set current section during parsing."""
- if not section_name in self.sections:
- section = DocSection( section_name )
- self.sections[section_name] = section
- self.section = section
- else:
- self.section = self.sections[section_name]
-
- def add_chapter( self, block ):
- chapter = DocChapter( block )
- self.chapters.append( chapter )
-
- def reset( self ):
- """Reset the content processor for a new block."""
- self.markups = []
- self.markup = None
- self.markup_lines = []
-
- def add_markup( self ):
- """Add a new markup section."""
- if self.markup and self.markup_lines:
-
- # get rid of last line of markup if it's empty
- marks = self.markup_lines
- if len( marks ) > 0 and not string.strip( marks[-1] ):
- self.markup_lines = marks[:-1]
-
- m = DocMarkup( self.markup, self.markup_lines )
-
- self.markups.append( m )
-
- self.markup = None
- self.markup_lines = []
-
- def process_content( self, content ):
- """Process a block content and return a list of DocMarkup objects
- corresponding to it."""
- markup = None
- markup_lines = []
- first = 1
-
- margin = -1
- in_code = 0
-
- for line in content:
- if in_code:
- m = re_code_end.match( line )
- if m and len( m.group( 1 ) ) <= margin:
- in_code = 0
- margin = -1
- else:
- m = re_code_start.match( line )
- if m:
- in_code = 1
- margin = len( m.group( 1 ) )
-
- found = None
-
- if not in_code:
- for t in re_markup_tags:
- m = t.match( line )
- if m:
- found = string.lower( m.group( 1 ) )
- prefix = len( m.group( 0 ) )
- # remove markup from line
- line = " " * prefix + line[prefix:]
- break
-
- # is it the start of a new markup section ?
- if found:
- first = 0
- self.add_markup() # add current markup content
- self.markup = found
- if len( string.strip( line ) ) > 0:
- self.markup_lines.append( line )
- elif first == 0:
- self.markup_lines.append( line )
-
- self.add_markup()
-
- return self.markups
-
- def parse_sources( self, source_processor ):
- blocks = source_processor.blocks
- count = len( blocks )
-
- for n in range( count ):
- source = blocks[n]
- if source.content:
- # this is a documentation comment, we need to catch
- # all following normal blocks in the "follow" list
- #
- follow = []
- m = n + 1
- while m < count and not blocks[m].content:
- follow.append( blocks[m] )
- m = m + 1
-
- doc_block = DocBlock( source, follow, self )
-
- def finish( self ):
- # process all sections to extract their abstract, description
- # and ordered list of items
- #
- for sec in self.sections.values():
- sec.process()
-
- # process chapters to check that all sections are correctly
- # listed there
- for chap in self.chapters:
- for sec in chap.order:
- if sec in self.sections:
- section = self.sections[sec]
- section.chapter = chap
- section.reorder()
- chap.sections.append( section )
- else:
- sys.stderr.write( "WARNING: chapter '" + \
- chap.name + "' in " + chap.block.location() + \
- " lists unknown section '" + sec + "'\n" )
-
- # check that all sections are in a chapter
- #
- others = []
- for sec in self.sections.values():
- if not sec.chapter:
- sec.reorder()
- others.append( sec )
-
- # create a new special chapter for all remaining sections
- # when necessary
- #
- if others:
- chap = DocChapter( None )
- chap.sections = others
- self.chapters.append( chap )
-
-
-################################################################
-##
-## DOC BLOCK CLASS
-##
-class DocBlock:
-
- def __init__( self, source, follow, processor ):
- processor.reset()
-
- self.source = source
- self.code = []
- self.type = "ERRTYPE"
- self.name = "ERRNAME"
- self.section = processor.section
- self.markups = processor.process_content( source.content )
-
- # compute block type from first markup tag
- try:
- self.type = self.markups[0].tag
- except:
- pass
-
- # compute block name from first markup paragraph
- try:
- markup = self.markups[0]
- para = markup.fields[0].items[0]
- name = para.words[0]
- m = re_identifier.match( name )
- if m:
- name = m.group( 1 )
- self.name = name
- except:
- pass
-
- if self.type == "section":
- # detect new section starts
- processor.set_section( self.name )
- processor.section.add_def( self )
- elif self.type == "chapter":
- # detect new chapter
- processor.add_chapter( self )
- else:
- processor.section.add_block( self )
-
- # now, compute the source lines relevant to this documentation
- # block. We keep normal comments in for obvious reasons (??)
- source = []
- for b in follow:
- if b.format:
- break
- for l in b.lines:
- # collect header macro definitions
- m = re_header_macro.match( l )
- if m:
- processor.headers[m.group( 2 )] = m.group( 1 );
-
- # we use "/* */" as a separator
- if re_source_sep.match( l ):
- break
- source.append( l )
-
- # now strip the leading and trailing empty lines from the sources
- start = 0
- end = len( source ) - 1
-
- while start < end and not string.strip( source[start] ):
- start = start + 1
-
- while start < end and not string.strip( source[end] ):
- end = end - 1
-
- if start == end and not string.strip( source[start] ):
- self.code = []
- else:
- self.code = source[start:end + 1]
-
- def location( self ):
- return self.source.location()
-
- def get_markup( self, tag_name ):
- """Return the DocMarkup corresponding to a given tag in a block."""
- for m in self.markups:
- if m.tag == string.lower( tag_name ):
- return m
- return None
-
- def get_markup_words( self, tag_name ):
- try:
- m = self.get_markup( tag_name )
- return m.fields[0].items[0].words
- except:
- return []
-
- def get_markup_words_all( self, tag_name ):
- try:
- m = self.get_markup( tag_name )
- words = []
- for item in m.fields[0].items:
- # We honour empty lines in an `<Order>' section element by
- # adding the sentinel `/empty/'. The formatter should then
- # convert it to an appropriate representation in the
- # `section_enter' function.
- words += item.words
- words.append( "/empty/" )
- return words
- except:
- return []
-
- def get_markup_text( self, tag_name ):
- result = self.get_markup_words( tag_name )
- return string.join( result )
-
- def get_markup_items( self, tag_name ):
- try:
- m = self.get_markup( tag_name )
- return m.fields[0].items
- except:
- return None
-
-# eof
diff --git a/src/tools/docmaker/docbeauty.py b/src/tools/docmaker/docbeauty.py
deleted file mode 100644
index 0b021fa..0000000
--- a/src/tools/docmaker/docbeauty.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-#
-# DocBeauty (c) 2003, 2004, 2008 David Turner <david@freetype.org>
-#
-# This program is used to beautify the documentation comments used
-# in the FreeType 2 public headers.
-#
-
-from sources import *
-from content import *
-from utils import *
-
-import sys, os, string, getopt
-
-
-content_processor = ContentProcessor()
-
-
-def beautify_block( block ):
- if block.content:
- content_processor.reset()
-
- markups = content_processor.process_content( block.content )
- text = []
- first = 1
-
- for markup in markups:
- text.extend( markup.beautify( first ) )
- first = 0
-
- # now beautify the documentation "borders" themselves
- lines = [" /*************************************************************************"]
- for l in text:
- lines.append( " *" + l )
- lines.append( " */" )
-
- block.lines = lines
-
-
-def usage():
- print( "\nDocBeauty 0.1 Usage information\n" )
- print( " docbeauty [options] file1 [file2 ...]\n" )
- print( "using the following options:\n" )
- print( " -h : print this page" )
- print( " -b : backup original files with the 'orig' extension" )
- print( "" )
- print( " --backup : same as -b" )
-
-
-def main( argv ):
- """main program loop"""
-
- global output_dir
-
- try:
- opts, args = getopt.getopt( sys.argv[1:], \
- "hb", \
- ["help", "backup"] )
- except getopt.GetoptError:
- usage()
- sys.exit( 2 )
-
- if args == []:
- usage()
- sys.exit( 1 )
-
- # process options
- #
- output_dir = None
- do_backup = None
-
- for opt in opts:
- if opt[0] in ( "-h", "--help" ):
- usage()
- sys.exit( 0 )
-
- if opt[0] in ( "-b", "--backup" ):
- do_backup = 1
-
- # create context and processor
- source_processor = SourceProcessor()
-
- # retrieve the list of files to process
- file_list = make_file_list( args )
- for filename in file_list:
- source_processor.parse_file( filename )
-
- for block in source_processor.blocks:
- beautify_block( block )
-
- new_name = filename + ".new"
- ok = None
-
- try:
- file = open( new_name, "wt" )
- for block in source_processor.blocks:
- for line in block.lines:
- file.write( line )
- file.write( "\n" )
- file.close()
- except:
- ok = 0
-
-
-# if called from the command line
-#
-if __name__ == '__main__':
- main( sys.argv )
-
-
-# eof
diff --git a/src/tools/docmaker/docmaker.py b/src/tools/docmaker/docmaker.py
deleted file mode 100644
index eb49afb..0000000
--- a/src/tools/docmaker/docmaker.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env python
-#
-# docmaker.py
-#
-# Convert source code markup to HTML documentation.
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-#
-# This program is a re-write of the original DocMaker tool used to generate
-# the API Reference of the FreeType font rendering engine by converting
-# in-source comments into structured HTML.
-#
-# This new version is capable of outputting XML data as well as accepting
-# more liberal formatting options. It also uses regular expression matching
-# and substitution to speed up operation significantly.
-#
-
-from sources import *
-from content import *
-from utils import *
-from formatter import *
-from tohtml import *
-
-import utils
-
-import sys, glob, getopt
-
-
-def usage():
- print( "\nDocMaker Usage information\n" )
- print( " docmaker [options] file1 [file2 ...]\n" )
- print( "using the following options:\n" )
- print( " -h : print this page" )
- print( " -t : set project title, as in '-t \"My Project\"'" )
- print( " -o : set output directory, as in '-o mydir'" )
- print( " -p : set documentation prefix, as in '-p ft2'" )
- print( "" )
- print( " --title : same as -t, as in '--title=\"My Project\"'" )
- print( " --output : same as -o, as in '--output=mydir'" )
- print( " --prefix : same as -p, as in '--prefix=ft2'" )
-
-
-def main( argv ):
- """Main program loop."""
-
- global output_dir
-
- try:
- opts, args = getopt.getopt( sys.argv[1:],
- "ht:o:p:",
- ["help", "title=", "output=", "prefix="] )
- except getopt.GetoptError:
- usage()
- sys.exit( 2 )
-
- if args == []:
- usage()
- sys.exit( 1 )
-
- # process options
- project_title = "Project"
- project_prefix = None
- output_dir = None
-
- for opt in opts:
- if opt[0] in ( "-h", "--help" ):
- usage()
- sys.exit( 0 )
-
- if opt[0] in ( "-t", "--title" ):
- project_title = opt[1]
-
- if opt[0] in ( "-o", "--output" ):
- utils.output_dir = opt[1]
-
- if opt[0] in ( "-p", "--prefix" ):
- project_prefix = opt[1]
-
- check_output()
-
- # create context and processor
- source_processor = SourceProcessor()
- content_processor = ContentProcessor()
-
- # retrieve the list of files to process
- file_list = make_file_list( args )
- for filename in file_list:
- source_processor.parse_file( filename )
- content_processor.parse_sources( source_processor )
-
- # process sections
- content_processor.finish()
-
- formatter = HtmlFormatter( content_processor,
- project_title,
- project_prefix )
-
- formatter.toc_dump()
- formatter.index_dump()
- formatter.section_dump_all()
-
-
-# if called from the command line
-if __name__ == '__main__':
- main( sys.argv )
-
-# eof
diff --git a/src/tools/docmaker/formatter.py b/src/tools/docmaker/formatter.py
deleted file mode 100644
index 2708fd4..0000000
--- a/src/tools/docmaker/formatter.py
+++ /dev/null
@@ -1,228 +0,0 @@
-#
-# formatter.py
-#
-# Convert parsed content blocks to a structured document (library file).
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-#
-# This is the base Formatter class. Its purpose is to convert a content
-# processor's data into specific documents (i.e., table of contents, global
-# index, and individual API reference indices).
-#
-# You need to sub-class it to output anything sensible. For example, the
-# file `tohtml.py' contains the definition of the `HtmlFormatter' sub-class
-# to output HTML.
-#
-
-
-from sources import *
-from content import *
-from utils import *
-
-
-################################################################
-##
-## FORMATTER CLASS
-##
-class Formatter:
-
- def __init__( self, processor ):
- self.processor = processor
- self.identifiers = {}
- self.chapters = processor.chapters
- self.sections = processor.sections.values()
- self.block_index = []
-
- # store all blocks in a dictionary
- self.blocks = []
- for section in self.sections:
- for block in section.blocks.values():
- self.add_identifier( block.name, block )
-
- # add enumeration values to the index, since this is useful
- for markup in block.markups:
- if markup.tag == 'values':
- for field in markup.fields:
- self.add_identifier( field.name, block )
-
- self.block_index = self.identifiers.keys()
- self.block_index.sort( key = index_key )
-
- # also add section names to dictionary (without making them appear
- # in the index)
- for section in self.sections:
- self.add_identifier( section.name, section )
-
- def add_identifier( self, name, block ):
- if name in self.identifiers:
- # duplicate name!
- sys.stderr.write( "WARNING: duplicate definition for"
- + " '" + name + "' "
- + "in " + block.location() + ", "
- + "previous definition in "
- + self.identifiers[name].location()
- + "\n" )
- else:
- self.identifiers[name] = block
-
- #
- # formatting the table of contents
- #
- def toc_enter( self ):
- pass
-
- def toc_chapter_enter( self, chapter ):
- pass
-
- def toc_section_enter( self, section ):
- pass
-
- def toc_section_exit( self, section ):
- pass
-
- def toc_chapter_exit( self, chapter ):
- pass
-
- def toc_index( self, index_filename ):
- pass
-
- def toc_exit( self ):
- pass
-
- def toc_dump( self, toc_filename = None, index_filename = None ):
- output = None
- if toc_filename:
- output = open_output( toc_filename )
-
- self.toc_enter()
-
- for chap in self.processor.chapters:
-
- self.toc_chapter_enter( chap )
-
- for section in chap.sections:
- self.toc_section_enter( section )
- self.toc_section_exit( section )
-
- self.toc_chapter_exit( chap )
-
- self.toc_index( index_filename )
-
- self.toc_exit()
-
- if output:
- close_output( output )
-
- #
- # formatting the index
- #
- def index_enter( self ):
- pass
-
- def index_name_enter( self, name ):
- pass
-
- def index_name_exit( self, name ):
- pass
-
- def index_exit( self ):
- pass
-
- def index_dump( self, index_filename = None ):
- output = None
- if index_filename:
- output = open_output( index_filename )
-
- self.index_enter()
-
- for name in self.block_index:
- self.index_name_enter( name )
- self.index_name_exit( name )
-
- self.index_exit()
-
- if output:
- close_output( output )
-
- #
- # formatting a section
- #
- def section_enter( self, section ):
- pass
-
- def block_enter( self, block ):
- pass
-
- def markup_enter( self, markup, block = None ):
- pass
-
- def field_enter( self, field, markup = None, block = None ):
- pass
-
- def field_exit( self, field, markup = None, block = None ):
- pass
-
- def markup_exit( self, markup, block = None ):
- pass
-
- def block_exit( self, block ):
- pass
-
- def section_exit( self, section ):
- pass
-
- def section_dump( self, section, section_filename = None ):
- output = None
- if section_filename:
- output = open_output( section_filename )
-
- self.section_enter( section )
-
- for name in section.block_names:
- skip_entry = 0
- try:
- block = self.identifiers[name]
- # `block_names' can contain field names also,
- # which we filter out
- for markup in block.markups:
- if markup.tag == 'values':
- for field in markup.fields:
- if field.name == name:
- skip_entry = 1
- except:
- skip_entry = 1 # this happens e.g. for `/empty/' entries
-
- if skip_entry:
- continue
-
- self.block_enter( block )
-
- for markup in block.markups[1:]: # always ignore first markup!
- self.markup_enter( markup, block )
-
- for field in markup.fields:
- self.field_enter( field, markup, block )
- self.field_exit( field, markup, block )
-
- self.markup_exit( markup, block )
-
- self.block_exit( block )
-
- self.section_exit( section )
-
- if output:
- close_output( output )
-
- def section_dump_all( self ):
- for section in self.sections:
- self.section_dump( section )
-
-# eof
diff --git a/src/tools/docmaker/sources.py b/src/tools/docmaker/sources.py
deleted file mode 100644
index e3b95e0..0000000
--- a/src/tools/docmaker/sources.py
+++ /dev/null
@@ -1,410 +0,0 @@
-#
-# sources.py
-#
-# Convert source code comments to multi-line blocks (library file).
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-#
-# This library file contains definitions of classes needed to decompose C
-# source code files into a series of multi-line `blocks'. There are two
-# kinds of blocks.
-#
-# - Normal blocks, which contain source code or ordinary comments.
-#
-# - Documentation blocks, which have restricted formatting, and whose text
-# always start with a documentation markup tag like `<Function>',
-# `<Type>', etc.
-#
-# The routines to process the content of documentation blocks are contained
-# in file `content.py'; the classes and methods found here only deal with
-# text parsing and basic documentation block extraction.
-#
-
-
-import fileinput, re, string
-
-
-################################################################
-##
-## SOURCE BLOCK FORMAT CLASS
-##
-## A simple class containing compiled regular expressions to detect
-## potential documentation format block comments within C source code.
-##
-## The `column' pattern must contain a group to `unbox' the content of
-## documentation comment blocks.
-##
-## Later on, paragraphs are converted to long lines, which simplifies the
-## regular expressions that act upon the text.
-##
-class SourceBlockFormat:
-
- def __init__( self, id, start, column, end ):
- """Create a block pattern, used to recognize special documentation
- blocks."""
- self.id = id
- self.start = re.compile( start, re.VERBOSE )
- self.column = re.compile( column, re.VERBOSE )
- self.end = re.compile( end, re.VERBOSE )
-
-
-#
-# Format 1 documentation comment blocks.
-#
-# /************************************/ (at least 2 asterisks)
-# /* */
-# /* */
-# /* */
-# /************************************/ (at least 2 asterisks)
-#
-start = r'''
- \s* # any number of whitespace
- /\*{2,}/ # followed by '/' and at least two asterisks then '/'
- \s*$ # probably followed by whitespace
-'''
-
-column = r'''
- \s* # any number of whitespace
- /\*{1} # followed by '/' and precisely one asterisk
- ([^*].*) # followed by anything (group 1)
- \*{1}/ # followed by one asterisk and a '/'
- \s*$ # probably followed by whitespace
-'''
-
-re_source_block_format1 = SourceBlockFormat( 1, start, column, start )
-
-
-#
-# Format 2 documentation comment blocks.
-#
-# /************************************ (at least 2 asterisks)
-# *
-# * (1 asterisk)
-# *
-# */ (1 or more asterisks)
-#
-start = r'''
- \s* # any number of whitespace
- /\*{2,} # followed by '/' and at least two asterisks
- \s*$ # probably followed by whitespace
-'''
-
-column = r'''
- \s* # any number of whitespace
- \*{1}(?![*/]) # followed by precisely one asterisk not followed by `/'
- (.*) # then anything (group1)
-'''
-
-end = r'''
- \s* # any number of whitespace
- \*+/ # followed by at least one asterisk, then '/'
-'''
-
-re_source_block_format2 = SourceBlockFormat( 2, start, column, end )
-
-
-#
-# The list of supported documentation block formats. We could add new ones
-# quite easily.
-#
-re_source_block_formats = [re_source_block_format1, re_source_block_format2]
-
-
-#
-# The following regular expressions correspond to markup tags within the
-# documentation comment blocks. They are equivalent despite their different
-# syntax.
-#
-# A markup tag consists of letters or character `-', to be found in group 1.
-#
-# Notice that a markup tag _must_ begin a new paragraph.
-#
-re_markup_tag1 = re.compile( r'''\s*<((?:\w|-)*)>''' ) # <xxxx> format
-re_markup_tag2 = re.compile( r'''\s*@((?:\w|-)*):''' ) # @xxxx: format
-
-#
-# The list of supported markup tags. We could add new ones quite easily.
-#
-re_markup_tags = [re_markup_tag1, re_markup_tag2]
-
-
-#
-# A regular expression to detect a cross reference, after markup tags have
-# been stripped off.
-#
-# Two syntax forms are supported:
-#
-# @<name>
-# @<name>[<id>]
-#
-# where both `<name>' and `<id>' consist of alphanumeric characters, `_',
-# and `-'. Use `<id>' if there are multiple, valid `<name>' entries.
-#
-# Example: @foo[bar]
-#
-re_crossref = re.compile( r"""
- @
- (?P<name>(?:\w|-)+
- (?:\[(?:\w|-)+\])?)
- (?P<rest>.*)
- """, re.VERBOSE )
-
-#
-# Two regular expressions to detect italic and bold markup, respectively.
-# Group 1 is the markup, group 2 the rest of the line.
-#
-# Note that the markup is limited to words consisting of letters, digits,
-# the characters `_' and `-', or an apostrophe (but not as the first
-# character).
-#
-re_italic = re.compile( r"_((?:\w|-)(?:\w|'|-)*)_(.*)" ) # _italic_
-re_bold = re.compile( r"\*((?:\w|-)(?:\w|'|-)*)\*(.*)" ) # *bold*
-
-#
-# This regular expression code to identify an URL has been taken from
-#
-# https://mail.python.org/pipermail/tutor/2002-September/017228.html
-#
-# (with slight modifications).
-#
-urls = r'(?:https?|telnet|gopher|file|wais|ftp)'
-ltrs = r'\w'
-gunk = r'/#~:.?+=&%@!\-'
-punc = r'.:?\-'
-any = "%(ltrs)s%(gunk)s%(punc)s" % { 'ltrs' : ltrs,
- 'gunk' : gunk,
- 'punc' : punc }
-url = r"""
- (
- \b # start at word boundary
- %(urls)s : # need resource and a colon
- [%(any)s] +? # followed by one or more of any valid
- # character, but be conservative and
- # take only what you need to...
- (?= # [look-ahead non-consumptive assertion]
- [%(punc)s]* # either 0 or more punctuation
- (?: # [non-grouping parentheses]
- [^%(any)s] | $ # followed by a non-url char
- # or end of the string
- )
- )
- )
- """ % {'urls' : urls,
- 'any' : any,
- 'punc' : punc }
-
-re_url = re.compile( url, re.VERBOSE | re.MULTILINE )
-
-#
-# A regular expression that stops collection of comments for the current
-# block.
-#
-re_source_sep = re.compile( r'\s*/\*\s*\*/' ) # /* */
-
-#
-# A regular expression to find possible C identifiers while outputting
-# source code verbatim, covering things like `*foo' or `(bar'. Group 1 is
-# the prefix, group 2 the identifier -- since we scan lines from left to
-# right, sequentially splitting the source code into prefix and identifier
-# is fully sufficient for our purposes.
-#
-re_source_crossref = re.compile( r'(\W*)(\w*)' )
-
-#
-# A regular expression that matches a list of reserved C source keywords.
-#
-re_source_keywords = re.compile( '''\\b ( typedef |
- struct |
- enum |
- union |
- const |
- char |
- int |
- short |
- long |
- void |
- signed |
- unsigned |
- \#include |
- \#define |
- \#undef |
- \#if |
- \#ifdef |
- \#ifndef |
- \#else |
- \#endif ) \\b''', re.VERBOSE )
-
-
-################################################################
-##
-## SOURCE BLOCK CLASS
-##
-## There are two important fields in a `SourceBlock' object.
-##
-## self.lines
-## A list of text lines for the corresponding block.
-##
-## self.content
-## For documentation comment blocks only, this is the block content
-## that has been `unboxed' from its decoration. This is `None' for all
-## other blocks (i.e., sources or ordinary comments with no starting
-## markup tag)
-##
-class SourceBlock:
-
- def __init__( self, processor, filename, lineno, lines ):
- self.processor = processor
- self.filename = filename
- self.lineno = lineno
- self.lines = lines[:]
- self.format = processor.format
- self.content = []
-
- if self.format == None:
- return
-
- words = []
-
- # extract comment lines
- lines = []
-
- for line0 in self.lines:
- m = self.format.column.match( line0 )
- if m:
- lines.append( m.group( 1 ) )
-
- # now, look for a markup tag
- for l in lines:
- l = string.strip( l )
- if len( l ) > 0:
- for tag in re_markup_tags:
- if tag.match( l ):
- self.content = lines
- return
-
- def location( self ):
- return "(" + self.filename + ":" + repr( self.lineno ) + ")"
-
- # debugging only -- not used in normal operations
- def dump( self ):
- if self.content:
- print( "{{{content start---" )
- for l in self.content:
- print( l )
- print( "---content end}}}" )
- return
-
- fmt = ""
- if self.format:
- fmt = repr( self.format.id ) + " "
-
- for line in self.lines:
- print( line )
-
-
-################################################################
-##
-## SOURCE PROCESSOR CLASS
-##
-## The `SourceProcessor' is in charge of reading a C source file and
-## decomposing it into a series of different `SourceBlock' objects.
-##
-## A SourceBlock object consists of the following data.
-##
-## - A documentation comment block using one of the layouts above. Its
-## exact format will be discussed later.
-##
-## - Normal sources lines, including comments.
-##
-##
-class SourceProcessor:
-
- def __init__( self ):
- """Initialize a source processor."""
- self.blocks = []
- self.filename = None
- self.format = None
- self.lines = []
-
- def reset( self ):
- """Reset a block processor and clean up all its blocks."""
- self.blocks = []
- self.format = None
-
- def parse_file( self, filename ):
- """Parse a C source file and add its blocks to the processor's
- list."""
- self.reset()
-
- self.filename = filename
-
- fileinput.close()
- self.format = None
- self.lineno = 0
- self.lines = []
-
- for line in fileinput.input( filename ):
- # strip trailing newlines, important on Windows machines!
- if line[-1] == '\012':
- line = line[0:-1]
-
- if self.format == None:
- self.process_normal_line( line )
- else:
- if self.format.end.match( line ):
- # A normal block end. Add it to `lines' and create a
- # new block
- self.lines.append( line )
- self.add_block_lines()
- elif self.format.column.match( line ):
- # A normal column line. Add it to `lines'.
- self.lines.append( line )
- else:
- # An unexpected block end. Create a new block, but
- # don't process the line.
- self.add_block_lines()
-
- # we need to process the line again
- self.process_normal_line( line )
-
- # record the last lines
- self.add_block_lines()
-
- def process_normal_line( self, line ):
- """Process a normal line and check whether it is the start of a new
- block."""
- for f in re_source_block_formats:
- if f.start.match( line ):
- self.add_block_lines()
- self.format = f
- self.lineno = fileinput.filelineno()
-
- self.lines.append( line )
-
- def add_block_lines( self ):
- """Add the current accumulated lines and create a new block."""
- if self.lines != []:
- block = SourceBlock( self,
- self.filename,
- self.lineno,
- self.lines )
-
- self.blocks.append( block )
- self.format = None
- self.lines = []
-
- # debugging only, not used in normal operations
- def dump( self ):
- """Print all blocks in a processor."""
- for b in self.blocks:
- b.dump()
-
-# eof
diff --git a/src/tools/docmaker/tohtml.py b/src/tools/docmaker/tohtml.py
deleted file mode 100644
index 97a5459..0000000
--- a/src/tools/docmaker/tohtml.py
+++ /dev/null
@@ -1,726 +0,0 @@
-#
-# tohtml.py
-#
-# A sub-class container of the `Formatter' class to produce HTML.
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-# The parent class is contained in file `formatter.py'.
-
-
-from sources import *
-from content import *
-from formatter import *
-
-import time
-
-
-# The following strings define the HTML header used by all generated pages.
-html_header_1 = """\
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"https://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>\
-"""
-
-html_header_2 = """\
- API Reference</title>
-<style type="text/css">
- a:link { color: #0000EF; }
- a:visited { color: #51188E; }
- a:hover { color: #FF0000; }
-
- body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
- color: #000000;
- background: #FFFFFF;
- width: 87%;
- margin: auto; }
-
- div.section { width: 75%;
- margin: auto; }
- div.section hr { margin: 4ex 0 1ex 0; }
- div.section h4 { background-color: #EEEEFF;
- font-size: medium;
- font-style: oblique;
- font-weight: bold;
- margin: 3ex 0 1.5ex 9%;
- padding: 0.3ex 0 0.3ex 1%; }
- div.section p { margin: 1.5ex 0 1.5ex 10%; }
- div.section pre { margin: 3ex 0 3ex 9%;
- background-color: #D6E8FF;
- padding: 2ex 0 2ex 1%; }
- div.section table.fields { width: 90%;
- margin: 1.5ex 0 1.5ex 10%; }
- div.section table.toc { width: 95%;
- margin: 1.5ex 0 1.5ex 5%; }
- div.timestamp { text-align: center;
- font-size: 69%;
- margin: 1.5ex 0 1.5ex 0; }
-
- h1 { text-align: center; }
- h3 { font-size: medium;
- margin: 4ex 0 1.5ex 0; }
-
- p { text-align: justify; }
-
- pre.colored { color: blue; }
-
- span.keyword { font-family: monospace;
- text-align: left;
- white-space: pre;
- color: darkblue; }
-
- table.fields td.val { font-weight: bold;
- text-align: right;
- width: 30%;
- vertical-align: baseline;
- padding: 1ex 1em 1ex 0; }
- table.fields td.desc { vertical-align: baseline;
- padding: 1ex 0 1ex 1em; }
- table.fields td.desc p:first-child { margin: 0; }
- table.fields td.desc p { margin: 1.5ex 0 0 0; }
- table.index { margin: 6ex auto 6ex auto;
- border: 0;
- border-collapse: separate;
- border-spacing: 1em 0.3ex; }
- table.index tr { padding: 0; }
- table.index td { padding: 0; }
- table.index-toc-link { width: 100%;
- border: 0;
- border-spacing: 0;
- margin: 1ex 0 1ex 0; }
- table.index-toc-link td.left { padding: 0 0.5em 0 0.5em;
- font-size: 83%;
- text-align: left; }
- table.index-toc-link td.middle { padding: 0 0.5em 0 0.5em;
- font-size: 83%;
- text-align: center; }
- table.index-toc-link td.right { padding: 0 0.5em 0 0.5em;
- font-size: 83%;
- text-align: right; }
- table.synopsis { margin: 6ex auto 6ex auto;
- border: 0;
- border-collapse: separate;
- border-spacing: 2em 0.6ex; }
- table.synopsis tr { padding: 0; }
- table.synopsis td { padding: 0; }
- table.toc td.link { width: 30%;
- text-align: right;
- vertical-align: baseline;
- padding: 1ex 1em 1ex 0; }
- table.toc td.desc { vertical-align: baseline;
- padding: 1ex 0 1ex 1em;
- text-align: left; }
- table.toc td.desc p:first-child { margin: 0;
- text-align: left; }
- table.toc td.desc p { margin: 1.5ex 0 0 0;
- text-align: left; }
-
-</style>
-</head>
-<body>
-"""
-
-html_header_3l = """
-<table class="index-toc-link"><tr><td class="left">[<a href="\
-"""
-
-html_header_3r = """
-<table class="index-toc-link"><tr><td class="right">[<a href="\
-"""
-
-html_header_4 = """\
-">Index</a>]</td><td class="right">[<a href="\
-"""
-
-html_header_5t = """\
-">TOC</a>]</td></tr></table>
-<h1>\
-"""
-
-html_header_5i = """\
-">Index</a>]</td></tr></table>
-<h1>\
-"""
-
-html_header_6 = """\
- API Reference</h1>
-"""
-
-
-# The HTML footer used by all generated pages.
-html_footer = """\
-</body>
-</html>\
-"""
-
-# The header and footer used for each section.
-section_title_header1 = '<h1 id="'
-section_title_header2 = '">'
-section_title_footer = "</h1>"
-
-# The header and footer used for code segments.
-code_header = '<pre class="colored">'
-code_footer = '</pre>'
-
-# Paragraph header and footer.
-para_header = "<p>"
-para_footer = "</p>"
-
-# Block header and footer.
-block_header = '<div class="section">'
-block_footer_start = """\
-<hr>
-<table class="index-toc-link"><tr><td class="left">[<a href="\
-"""
-block_footer_middle = """\
-">Index</a>]</td>\
-<td class="middle">[<a href="#">Top</a>]</td>\
-<td class="right">[<a href="\
-"""
-block_footer_end = """\
-">TOC</a>]</td></tr></table></div>
-"""
-
-# Description header/footer.
-description_header = ""
-description_footer = ""
-
-# Marker header/inter/footer combination.
-marker_header = "<h4>"
-marker_inter = "</h4>"
-marker_footer = ""
-
-# Header location header/footer.
-header_location_header = "<p>"
-header_location_footer = "</p>"
-
-# Source code extracts header/footer.
-source_header = "<pre>"
-source_footer = "</pre>"
-
-# Chapter header/inter/footer.
-chapter_header = """\
-<div class="section">
-<h2>\
-"""
-chapter_inter = '</h2>'
-chapter_footer = '</div>'
-
-# Index footer.
-index_footer_start = """\
-<hr>
-<table class="index-toc-link"><tr><td class="right">[<a href="\
-"""
-index_footer_end = """\
-">TOC</a>]</td></tr></table>
-"""
-
-# TOC footer.
-toc_footer_start = """\
-<hr>
-<table class="index-toc-link"><tr><td class="left">[<a href="\
-"""
-toc_footer_end = """\
-">Index</a>]</td></tr></table>
-"""
-
-
-# Source language keyword coloration and styling.
-keyword_prefix = '<span class="keyword">'
-keyword_suffix = '</span>'
-
-section_synopsis_header = '<h2>Synopsis</h2>'
-section_synopsis_footer = ''
-
-
-# Translate a single line of source to HTML. This converts `<', `>', and
-# `&' into `<',`>', and `&'.
-#
-def html_quote( line ):
- result = string.replace( line, "&", "&" )
- result = string.replace( result, "<", "<" )
- result = string.replace( result, ">", ">" )
- return result
-
-
-################################################################
-##
-## HTML FORMATTER CLASS
-##
-class HtmlFormatter( Formatter ):
-
- def __init__( self, processor, project_title, file_prefix ):
- Formatter.__init__( self, processor )
-
- global html_header_1
- global html_header_2
- global html_header_3l, html_header_3r
- global html_header_4
- global html_header_5t, html_header_5i
- global html_header_6
- global html_footer
-
- if file_prefix:
- file_prefix = file_prefix + "-"
- else:
- file_prefix = ""
-
- self.headers = processor.headers
- self.project_title = project_title
- self.file_prefix = file_prefix
- self.html_header = (
- html_header_1 + project_title
- + html_header_2
- + html_header_3l + file_prefix + "index.html"
- + html_header_4 + file_prefix + "toc.html"
- + html_header_5t + project_title
- + html_header_6 )
- self.html_index_header = (
- html_header_1 + project_title
- + html_header_2
- + html_header_3r + file_prefix + "toc.html"
- + html_header_5t + project_title
- + html_header_6 )
- self.html_toc_header = (
- html_header_1 + project_title
- + html_header_2
- + html_header_3l + file_prefix + "index.html"
- + html_header_5i + project_title
- + html_header_6 )
- self.html_footer = (
- '<div class="timestamp">generated on '
- + time.asctime( time.localtime( time.time() ) )
- + "</div>" + html_footer )
-
- self.columns = 3
-
- def make_section_url( self, section ):
- return self.file_prefix + section.name + ".html"
-
- def make_block_url( self, block, name = None ):
- if name == None:
- name = block.name
-
- try:
- section_url = self.make_section_url( block.section )
- except:
- # we already have a section
- section_url = self.make_section_url( block )
-
- return section_url + "#" + name
-
- def make_html_word( self, word ):
- """Analyze a simple word to detect cross-references and markup."""
- # handle cross-references
- m = re_crossref.match( word )
- if m:
- try:
- name = m.group( 'name' )
- rest = m.group( 'rest' )
- block = self.identifiers[name]
- url = self.make_block_url( block )
- # display `foo[bar]' as `foo'
- name = re.sub( r'\[.*\]', '', name )
- # normalize url, following RFC 3986
- url = string.replace( url, "[", "(" )
- url = string.replace( url, "]", ")" )
-
- try:
- # for sections, display title
- url = ( '‘<a href="' + url + '">'
- + block.title + '</a>’'
- + rest )
- except:
- url = ( '<a href="' + url + '">'
- + name + '</a>'
- + rest )
-
- return url
- except:
- # we detected a cross-reference to an unknown item
- sys.stderr.write( "WARNING: undefined cross reference"
- + " '" + name + "'.\n" )
- return '?' + name + '?' + rest
-
- # handle markup for italic and bold
- m = re_italic.match( word )
- if m:
- name = m.group( 1 )
- rest = m.group( 2 )
- return '<i>' + name + '</i>' + rest
-
- m = re_bold.match( word )
- if m:
- name = m.group( 1 )
- rest = m.group( 2 )
- return '<b>' + name + '</b>' + rest
-
- return html_quote( word )
-
- def make_html_para( self, words ):
- """Convert words of a paragraph into tagged HTML text. Also handle
- cross references."""
- line = ""
- if words:
- line = self.make_html_word( words[0] )
- for word in words[1:]:
- line = line + " " + self.make_html_word( word )
- # handle hyperlinks
- line = re_url.sub( r'<a href="\1">\1</a>', line )
- # convert `...' quotations into real left and right single quotes
- line = re.sub( r"(^|\W)`(.*?)'(\W|$)",
- r'\1‘\2’\3',
- line )
- # convert tilde into non-breakable space
- line = string.replace( line, "~", " " )
-
- return para_header + line + para_footer
-
- def make_html_code( self, lines ):
- """Convert a code sequence to HTML."""
- line = code_header + '\n'
- for l in lines:
- line = line + html_quote( l ).rstrip() + '\n'
-
- return line + code_footer
-
- def make_html_items( self, items ):
- """Convert a field's content into HTML."""
- lines = []
- for item in items:
- if item.lines:
- lines.append( self.make_html_code( item.lines ) )
- else:
- lines.append( self.make_html_para( item.words ) )
-
- return string.join( lines, '\n' )
-
- def print_html_items( self, items ):
- print( self.make_html_items( items ) )
-
- def print_html_field( self, field ):
- if field.name:
- print( '<table><tr valign="top"><td><b>'
- + field.name
- + "</b></td><td>" )
-
- print( self.make_html_items( field.items ) )
-
- if field.name:
- print( "</td></tr></table>" )
-
- def html_source_quote( self, line, block_name = None ):
- result = ""
- while line:
- m = re_source_crossref.match( line )
- if m:
- name = m.group( 2 )
- prefix = html_quote( m.group( 1 ) )
- length = len( m.group( 0 ) )
-
- if name == block_name:
- # this is the current block name, if any
- result = result + prefix + '<b>' + name + '</b>'
- elif re_source_keywords.match( name ):
- # this is a C keyword
- result = ( result + prefix
- + keyword_prefix + name + keyword_suffix )
- elif name in self.identifiers:
- # this is a known identifier
- block = self.identifiers[name]
- id = block.name
-
- # link to a field ID if possible
- try:
- for markup in block.markups:
- if markup.tag == 'values':
- for field in markup.fields:
- if field.name:
- id = name
-
- result = ( result + prefix
- + '<a href="'
- + self.make_block_url( block, id )
- + '">' + name + '</a>' )
- except:
- # sections don't have `markups'; however, we don't
- # want references to sections here anyway
- result = result + html_quote( line[:length] )
-
- else:
- result = result + html_quote( line[:length] )
-
- line = line[length:]
- else:
- result = result + html_quote( line )
- line = []
-
- return result
-
- def print_html_field_list( self, fields ):
- print( '<table class="fields">' )
- for field in fields:
- print( '<tr><td class="val" id="' + field.name + '">'
- + field.name
- + '</td><td class="desc">' )
- self.print_html_items( field.items )
- print( "</td></tr>" )
- print( "</table>" )
-
- def print_html_markup( self, markup ):
- table_fields = []
- for field in markup.fields:
- if field.name:
- # We begin a new series of field or value definitions. We
- # record them in the `table_fields' list before outputting
- # all of them as a single table.
- table_fields.append( field )
- else:
- if table_fields:
- self.print_html_field_list( table_fields )
- table_fields = []
-
- self.print_html_items( field.items )
-
- if table_fields:
- self.print_html_field_list( table_fields )
-
- #
- # formatting the index
- #
- def index_enter( self ):
- print( self.html_index_header )
- self.index_items = {}
-
- def index_name_enter( self, name ):
- block = self.identifiers[name]
- url = self.make_block_url( block )
- self.index_items[name] = url
-
- def index_exit( self ):
- # `block_index' already contains the sorted list of index names
- count = len( self.block_index )
- rows = ( count + self.columns - 1 ) // self.columns
-
- print( '<table class="index">' )
- for r in range( rows ):
- line = "<tr>"
- for c in range( self.columns ):
- i = r + c * rows
- if i < count:
- bname = self.block_index[r + c * rows]
- url = self.index_items[bname]
- # display `foo[bar]' as `foo (bar)'
- bname = string.replace( bname, "[", " (" )
- bname = string.replace( bname, "]", ")" )
- # normalize url, following RFC 3986
- url = string.replace( url, "[", "(" )
- url = string.replace( url, "]", ")" )
- line = ( line + '<td><a href="' + url + '">'
- + bname + '</a></td>' )
- else:
- line = line + '<td></td>'
- line = line + "</tr>"
- print( line )
-
- print( "</table>" )
-
- print( index_footer_start
- + self.file_prefix + "toc.html"
- + index_footer_end )
-
- print( self.html_footer )
-
- self.index_items = {}
-
- def index_dump( self, index_filename = None ):
- if index_filename == None:
- index_filename = self.file_prefix + "index.html"
-
- Formatter.index_dump( self, index_filename )
-
- #
- # formatting the table of contents
- #
- def toc_enter( self ):
- print( self.html_toc_header )
- print( "<h1>Table of Contents</h1>" )
-
- def toc_chapter_enter( self, chapter ):
- print( chapter_header + string.join( chapter.title ) + chapter_inter )
- print( '<table class="toc">' )
-
- def toc_section_enter( self, section ):
- print( '<tr><td class="link">'
- + '<a href="' + self.make_section_url( section ) + '">'
- + section.title + '</a></td><td class="desc">' )
- print( self.make_html_para( section.abstract ) )
-
- def toc_section_exit( self, section ):
- print( "</td></tr>" )
-
- def toc_chapter_exit( self, chapter ):
- print( "</table>" )
- print( chapter_footer )
-
- def toc_index( self, index_filename ):
- print( chapter_header
- + '<a href="' + index_filename + '">Global Index</a>'
- + chapter_inter + chapter_footer )
-
- def toc_exit( self ):
- print( toc_footer_start
- + self.file_prefix + "index.html"
- + toc_footer_end )
-
- print( self.html_footer )
-
- def toc_dump( self, toc_filename = None, index_filename = None ):
- if toc_filename == None:
- toc_filename = self.file_prefix + "toc.html"
-
- if index_filename == None:
- index_filename = self.file_prefix + "index.html"
-
- Formatter.toc_dump( self, toc_filename, index_filename )
-
- #
- # formatting sections
- #
- def section_enter( self, section ):
- print( self.html_header )
-
- print( section_title_header1 + section.name + section_title_header2
- + section.title
- + section_title_footer )
-
- maxwidth = 0
- for b in section.blocks.values():
- if len( b.name ) > maxwidth:
- maxwidth = len( b.name )
-
- width = 70 # XXX magic number
- if maxwidth > 0:
- # print section synopsis
- print( section_synopsis_header )
- print( '<table class="synopsis">' )
-
- columns = width // maxwidth
- if columns < 1:
- columns = 1
-
- count = len( section.block_names )
- # don't handle last entry if it is empty
- if section.block_names[-1] == "/empty/":
- count -= 1
- rows = ( count + columns - 1 ) // columns
-
- for r in range( rows ):
- line = "<tr>"
- for c in range( columns ):
- i = r + c * rows
- line = line + '<td>'
- if i < count:
- name = section.block_names[i]
- if name == "/empty/":
- # it can happen that a complete row is empty, and
- # without a proper `filler' the browser might
- # collapse the row to a much smaller height (or
- # even omit it completely)
- line = line + " "
- else:
- url = name
- # display `foo[bar]' as `foo'
- name = re.sub( r'\[.*\]', '', name )
- # normalize url, following RFC 3986
- url = string.replace( url, "[", "(" )
- url = string.replace( url, "]", ")" )
- line = ( line + '<a href="#' + url + '">'
- + name + '</a>' )
-
- line = line + '</td>'
- line = line + "</tr>"
- print( line )
-
- print( "</table>" )
- print( section_synopsis_footer )
-
- print( description_header )
- print( self.make_html_items( section.description ) )
- print( description_footer )
-
- def block_enter( self, block ):
- print( block_header )
-
- # place html anchor if needed
- if block.name:
- url = block.name
- # display `foo[bar]' as `foo'
- name = re.sub( r'\[.*\]', '', block.name )
- # normalize url, following RFC 3986
- url = string.replace( url, "[", "(" )
- url = string.replace( url, "]", ")" )
- print( '<h3 id="' + url + '">' + name + '</h3>' )
-
- # dump the block C source lines now
- if block.code:
- header = ''
- for f in self.headers.keys():
- header_filename = os.path.normpath(block.source.filename)
- if header_filename.find( os.path.normpath( f ) ) >= 0:
- header = self.headers[f] + ' (' + f + ')'
- break
-
-# if not header:
-# sys.stderr.write(
-# "WARNING: No header macro for"
-# + " '" + block.source.filename + "'.\n" )
-
- if header:
- print( header_location_header
- + 'Defined in ' + header + '.'
- + header_location_footer )
-
- print( source_header )
- for l in block.code:
- print( self.html_source_quote( l, block.name ) )
- print( source_footer )
-
- def markup_enter( self, markup, block ):
- if markup.tag == "description":
- print( description_header )
- else:
- print( marker_header + markup.tag + marker_inter )
-
- self.print_html_markup( markup )
-
- def markup_exit( self, markup, block ):
- if markup.tag == "description":
- print( description_footer )
- else:
- print( marker_footer )
-
- def block_exit( self, block ):
- print( block_footer_start + self.file_prefix + "index.html"
- + block_footer_middle + self.file_prefix + "toc.html"
- + block_footer_end )
-
- def section_exit( self, section ):
- print( html_footer )
-
- def section_dump_all( self ):
- for section in self.sections:
- self.section_dump( section,
- self.file_prefix + section.name + '.html' )
-
-# eof
diff --git a/src/tools/docmaker/utils.py b/src/tools/docmaker/utils.py
deleted file mode 100644
index f40f167..0000000
--- a/src/tools/docmaker/utils.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# utils.py
-#
-# Auxiliary functions for the `docmaker' tool (library file).
-#
-# Copyright 2002-2018 by
-# David Turner.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# 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.
-
-
-import string, sys, os, glob, itertools
-
-
-# current output directory
-#
-output_dir = None
-
-
-# A function that generates a sorting key. We want lexicographical order
-# (primary key) except that capital letters are sorted before lowercase
-# ones (secondary key).
-#
-# The primary key is implemented by lowercasing the input. The secondary
-# key is simply the original data appended, character by character. For
-# example, the sort key for `FT_x' is `fFtT__xx', while the sort key for
-# `ft_X' is `fftt__xX'. Since ASCII codes of uppercase letters are
-# numerically smaller than the codes of lowercase letters, `fFtT__xx' gets
-# sorted before `fftt__xX'.
-#
-def index_key( s ):
- return string.join( itertools.chain( *zip( s.lower(), s ) ) )
-
-
-# Sort `input_list', placing the elements of `order_list' in front.
-#
-def sort_order_list( input_list, order_list ):
- new_list = order_list[:]
- for id in input_list:
- if not id in order_list:
- new_list.append( id )
- return new_list
-
-
-# Divert standard output to a given project documentation file. Use
-# `output_dir' to determine the filename location if necessary and save the
-# old stdout handle in a tuple that is returned by this function.
-#
-def open_output( filename ):
- global output_dir
-
- if output_dir and output_dir != "":
- filename = output_dir + os.sep + filename
-
- old_stdout = sys.stdout
- new_file = open( filename, "w" )
- sys.stdout = new_file
-
- return ( new_file, old_stdout )
-
-
-# Close the output that was returned by `open_output'.
-#
-def close_output( output ):
- output[0].close()
- sys.stdout = output[1]
-
-
-# Check output directory.
-#
-def check_output():
- global output_dir
- if output_dir:
- if output_dir != "":
- if not os.path.isdir( output_dir ):
- sys.stderr.write( "argument"
- + " '" + output_dir + "' "
- + "is not a valid directory\n" )
- sys.exit( 2 )
- else:
- output_dir = None
-
-
-def file_exists( pathname ):
- """Check that a given file exists."""
- result = 1
- try:
- file = open( pathname, "r" )
- file.close()
- except:
- result = None
- sys.stderr.write( pathname + " couldn't be accessed\n" )
-
- return result
-
-
-def make_file_list( args = None ):
- """Build a list of input files from command-line arguments."""
- file_list = []
- # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' )
-
- if not args:
- args = sys.argv[1:]
-
- for pathname in args:
- if string.find( pathname, '*' ) >= 0:
- newpath = glob.glob( pathname )
- newpath.sort() # sort files -- this is important because
- # of the order of files
- else:
- newpath = [pathname]
-
- file_list.extend( newpath )
-
- if len( file_list ) == 0:
- file_list = None
- else:
- # now filter the file list to remove non-existing ones
- file_list = filter( file_exists, file_list )
-
- return file_list
-
-# eof
diff --git a/src/tools/glnames.py b/src/tools/glnames.py
index e88f710..e1b613d 100644
--- a/src/tools/glnames.py
+++ b/src/tools/glnames.py
@@ -6,7 +6,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -5318,7 +5318,7 @@
write( " *\n" )
write( " * PostScript glyph names.\n" )
write( " *\n" )
- write( " * Copyright 2005-2018 by\n" )
+ write( " * Copyright 2005-2019 by\n" )
write( " * David Turner, Robert Wilhelm, and Werner Lemberg.\n" )
write( " *\n" )
write( " * This file is part of the FreeType project, and may only be used,\n" )
diff --git a/src/tools/update-copyright-year b/src/tools/update-copyright-year
index 934f11c..2ae50d6 100755
--- a/src/tools/update-copyright-year
+++ b/src/tools/update-copyright-year
@@ -2,7 +2,7 @@
& eval 'exec perl -wS -i "$0" $argv:q'
if 0;
-# Copyright 2015-2018 by
+# Copyright (C) 2015-2019 by
# Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -67,7 +67,8 @@
s {
(?<begin>.*)
Copyright
- (?<space1>\ +)
+ (?<space1>(\ +
+ | \ +\(C\)\ +))
(?<first>[12][0-9][0-9][0-9])
(?<middle>.+)
(?<last>[12][0-9][0-9][0-9])
@@ -78,14 +79,15 @@
}
{
# Fill line to the same length (if appropriate); we skip the middle
- # part but insert two spaces and `-'.
+ # part but insert `(C)', three spaces, and `-'.
my $space = length($+{space1}) - 1
+ length($+{middle}) - 1
+ length($+{space2}) - 1
- + length($+{space3});
+ + length($+{space3})
+ - (length("(C)") + 1);
print "$+{begin}";
- print "Copyright\ $+{first}-$year\ by";
+ print "Copyright\ (C)\ $+{first}-$year\ by";
print ' ' x $space if length($+{end});
print "$+{end}\n";
$replaced = 1;
@@ -95,7 +97,8 @@
s {
(?<begin>.*)
Copyright
- (?<space1>\ +)
+ (?<space1>(\ +
+ | \ +\(C\)\ +))
(?<first>[12][0-9][0-9][0-9])
(?<space2>\ +)
by
@@ -103,7 +106,7 @@
(?<end>.*)
}
{
- # Fill line to the same length (if appropriate); we insert two
+ # Fill line to the same length (if appropriate); we insert three
# spaces, a `-', and the current year.
my $space = length($+{space1}) - 1
+ length($+{space2}) - 1
@@ -111,7 +114,7 @@
- (length($year) + 1);
print "$+{begin}";
- print "Copyright $+{first}-$year by";
+ print "Copyright\ (C)\ $+{first}-$year\ by";
# If $space is negative this inserts nothing.
print ' ' x $space if length($+{end});
print "$+{end}\n";
diff --git a/src/truetype/Jamfile b/src/truetype/Jamfile
index e321fba..2de63a7 100644
--- a/src/truetype/Jamfile
+++ b/src/truetype/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/truetype Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/truetype/module.mk b/src/truetype/module.mk
index 16bc9c8..8a841cc 100644
--- a/src/truetype/module.mk
+++ b/src/truetype/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk
index e1547ed..df8dcd4 100644
--- a/src/truetype/rules.mk
+++ b/src/truetype/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/truetype/truetype.c b/src/truetype/truetype.c
index dd64db8..84928e7 100644
--- a/src/truetype/truetype.c
+++ b/src/truetype/truetype.c
@@ -4,7 +4,7 @@
*
* FreeType TrueType driver component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c
index eac736c..ff626d5 100644
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -4,7 +4,7 @@
*
* TrueType font driver implementation (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -51,7 +51,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttdriver
+#define FT_COMPONENT ttdriver
/*
@@ -498,17 +498,19 @@
FT_DEFINE_SERVICE_MULTIMASTERSREC(
tt_service_gx_multi_masters,
- (FT_Get_MM_Func) NULL, /* get_mm */
- (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
- (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */
- (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */
- (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */
- (FT_Set_Var_Design_Func)TT_Set_Var_Design, /* set_var_design */
- (FT_Get_Var_Design_Func)TT_Get_Var_Design, /* get_var_design */
- (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */
+ (FT_Get_MM_Func) NULL, /* get_mm */
+ (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
+ (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */
+ (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */
+ (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */
+ (FT_Set_Var_Design_Func) TT_Set_Var_Design, /* set_var_design */
+ (FT_Get_Var_Design_Func) TT_Get_Var_Design, /* get_var_design */
+ (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */
+ (FT_Set_MM_WeightVector_Func)NULL, /* set_mm_weightvector */
+ (FT_Get_MM_WeightVector_Func)NULL, /* get_mm_weightvector */
- (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */
- (FT_Done_Blend_Func) tt_done_blend /* done_blend */
+ (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */
+ (FT_Done_Blend_Func) tt_done_blend /* done_blend */
)
FT_DEFINE_SERVICE_METRICSVARIATIONSREC(
diff --git a/src/truetype/ttdriver.h b/src/truetype/ttdriver.h
index 45e25b6..3936c6a 100644
--- a/src/truetype/ttdriver.h
+++ b/src/truetype/ttdriver.h
@@ -4,7 +4,7 @@
*
* High-level TrueType driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/tterrors.h b/src/truetype/tterrors.h
index a14dee3..5609d28 100644
--- a/src/truetype/tterrors.h
+++ b/src/truetype/tterrors.h
@@ -4,7 +4,7 @@
*
* TrueType error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 9e98f11..a046840 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -4,7 +4,7 @@
*
* TrueType Glyph Loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -45,7 +45,22 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttgload
+#define FT_COMPONENT ttgload
+
+
+ /**************************************************************************
+ *
+ * Simple glyph flags.
+ */
+#define ON_CURVE_POINT 0x01 /* same value as FT_CURVE_TAG_ON */
+#define X_SHORT_VECTOR 0x02
+#define Y_SHORT_VECTOR 0x04
+#define REPEAT_FLAG 0x08
+#define X_POSITIVE 0x10 /* two meanings depending on X_SHORT_VECTOR */
+#define SAME_X 0x10
+#define Y_POSITIVE 0x20 /* two meanings depending on Y_SHORT_VECTOR */
+#define SAME_Y 0x20
+#define OVERLAP_SIMPLE 0x40 /* we ignore this value */
/**************************************************************************
@@ -62,11 +77,20 @@
#define WE_HAVE_A_2X2 0x0080
#define WE_HAVE_INSTR 0x0100
#define USE_MY_METRICS 0x0200
-#define OVERLAP_COMPOUND 0x0400
+#define OVERLAP_COMPOUND 0x0400 /* we ignore this value */
#define SCALED_COMPONENT_OFFSET 0x0800
#define UNSCALED_COMPONENT_OFFSET 0x1000
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+#define IS_DEFAULT_INSTANCE( _face ) \
+ ( !( FT_IS_NAMED_INSTANCE( _face ) || \
+ FT_IS_VARIATION( _face ) ) )
+#else
+#define IS_DEFAULT_INSTANCE( _face ) 1
+#endif
+
+
/**************************************************************************
*
* Return the horizontal metrics in font units for a given glyph.
@@ -267,12 +291,9 @@
FT_Error error;
FT_Stream stream = loader->stream;
- /* for non-debug mode */
FT_UNUSED( glyph_index );
- FT_TRACE4(( "Glyph %ld\n", glyph_index ));
-
/* the following line sets the `error' variable through macros! */
if ( FT_STREAM_SEEK( offset ) || FT_FRAME_ENTER( byte_count ) )
return error;
@@ -337,7 +358,7 @@
FT_Byte *flag, *flag_limit;
FT_Byte c, count;
FT_Vector *vec, *vec_limit;
- FT_Pos x;
+ FT_Pos x, y;
FT_Short *cont, *cont_limit, prev_cont;
FT_Int xy_size = 0;
@@ -454,7 +475,7 @@
goto Invalid_Outline;
*flag++ = c = FT_NEXT_BYTE( p );
- if ( c & 8 )
+ if ( c & REPEAT_FLAG )
{
if ( p + 1 > limit )
goto Invalid_Outline;
@@ -480,31 +501,29 @@
for ( ; vec < vec_limit; vec++, flag++ )
{
- FT_Pos y = 0;
- FT_Byte f = *flag;
+ FT_Pos delta = 0;
+ FT_Byte f = *flag;
- if ( f & 2 )
+ if ( f & X_SHORT_VECTOR )
{
if ( p + 1 > limit )
goto Invalid_Outline;
- y = (FT_Pos)FT_NEXT_BYTE( p );
- if ( ( f & 16 ) == 0 )
- y = -y;
+ delta = (FT_Pos)FT_NEXT_BYTE( p );
+ if ( !( f & X_POSITIVE ) )
+ delta = -delta;
}
- else if ( ( f & 16 ) == 0 )
+ else if ( !( f & SAME_X ) )
{
if ( p + 2 > limit )
goto Invalid_Outline;
- y = (FT_Pos)FT_NEXT_SHORT( p );
+ delta = (FT_Pos)FT_NEXT_SHORT( p );
}
- x += y;
+ x += delta;
vec->x = x;
- /* the cast is for stupid compilers */
- *flag = (FT_Byte)( f & ~( 2 | 16 ) );
}
/* reading the Y coordinates */
@@ -512,35 +531,36 @@
vec = gloader->current.outline.points;
vec_limit = vec + n_points;
flag = (FT_Byte*)outline->tags;
- x = 0;
+ y = 0;
for ( ; vec < vec_limit; vec++, flag++ )
{
- FT_Pos y = 0;
- FT_Byte f = *flag;
+ FT_Pos delta = 0;
+ FT_Byte f = *flag;
- if ( f & 4 )
+ if ( f & Y_SHORT_VECTOR )
{
if ( p + 1 > limit )
goto Invalid_Outline;
- y = (FT_Pos)FT_NEXT_BYTE( p );
- if ( ( f & 32 ) == 0 )
- y = -y;
+ delta = (FT_Pos)FT_NEXT_BYTE( p );
+ if ( !( f & Y_POSITIVE ) )
+ delta = -delta;
}
- else if ( ( f & 32 ) == 0 )
+ else if ( !( f & SAME_Y ) )
{
if ( p + 2 > limit )
goto Invalid_Outline;
- y = (FT_Pos)FT_NEXT_SHORT( p );
+ delta = (FT_Pos)FT_NEXT_SHORT( p );
}
- x += y;
- vec->y = x;
+ y += delta;
+ vec->y = y;
+
/* the cast is for stupid compilers */
- *flag = (FT_Byte)( f & FT_CURVE_TAG_ON );
+ *flag = (FT_Byte)( f & ON_CURVE_POINT );
}
outline->n_points = (FT_Short)n_points;
@@ -805,15 +825,9 @@
#ifdef TT_USE_BYTECODE_INTERPRETER
- if ( loader->glyph->control_len > 0xFFFFL )
- {
- FT_TRACE1(( "TT_Hint_Glyph: too long instructions" ));
- FT_TRACE1(( " (0x%lx byte) is truncated\n",
- loader->glyph->control_len ));
- }
n_ins = loader->glyph->control_len;
- /* save original point position in org */
+ /* save original point positions in `org' array */
if ( n_ins > 0 )
FT_ARRAY_COPY( zone->org, zone->cur, zone->n_points );
@@ -922,6 +936,11 @@
FT_Outline* outline;
FT_Int n_points;
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ FT_Memory memory = loader->face->root.memory;
+ FT_Vector* unrounded = NULL;
+#endif
+
outline = &gloader->current.outline;
n_points = outline->n_points;
@@ -942,26 +961,32 @@
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
- if ( FT_IS_NAMED_INSTANCE( FT_FACE( loader->face ) ) ||
- FT_IS_VARIATION( FT_FACE( loader->face ) ) )
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
{
+ if ( FT_NEW_ARRAY( unrounded, n_points ) )
+ goto Exit;
+
/* Deltas apply to the unscaled data. */
error = TT_Vary_Apply_Glyph_Deltas( loader->face,
loader->glyph_index,
outline,
+ unrounded,
(FT_UInt)n_points );
/* recalculate linear horizontal and vertical advances */
/* if we don't have HVAR and VVAR, respectively */
+
+ /* XXX: change all FreeType modules to store `linear' and `vadvance' */
+ /* in 26.6 format before the `base' module scales them to 16.16 */
if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
- loader->linear = outline->points[n_points - 3].x -
- outline->points[n_points - 4].x;
+ loader->linear = FT_PIX_ROUND( unrounded[n_points - 3].x -
+ unrounded[n_points - 4].x ) / 64;
if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
- loader->vadvance = outline->points[n_points - 1].x -
- outline->points[n_points - 2].x;
+ loader->vadvance = FT_PIX_ROUND( unrounded[n_points - 1].x -
+ unrounded[n_points - 2].x ) / 64;
if ( error )
- return error;
+ goto Exit;
}
#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
@@ -1016,10 +1041,23 @@
/* compensate for any scaling by de/emboldening; */
/* the amount was determined via experimentation */
if ( x_scale_factor != 1000 && ppem > 11 )
+ {
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ FT_Vector* orig_points = outline->points;
+
+
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
+ outline->points = unrounded;
+#endif
FT_Outline_EmboldenXY( outline,
FT_MulFix( 1280 * ppem,
1000 - x_scale_factor ),
0 );
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
+ outline->points = orig_points;
+#endif
+ }
do_scale = TRUE;
}
}
@@ -1040,10 +1078,26 @@
if ( do_scale )
{
- for ( ; vec < limit; vec++ )
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
{
- vec->x = FT_MulFix( vec->x, x_scale );
- vec->y = FT_MulFix( vec->y, y_scale );
+ FT_Vector* u = unrounded;
+
+
+ for ( ; vec < limit; vec++, u++ )
+ {
+ vec->x = ( FT_MulFix( u->x, x_scale ) + 32 ) >> 6;
+ vec->y = ( FT_MulFix( u->y, y_scale ) + 32 ) >> 6;
+ }
+ }
+ else
+#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
+ {
+ for ( ; vec < limit; vec++ )
+ {
+ vec->x = FT_MulFix( vec->x, x_scale );
+ vec->y = FT_MulFix( vec->y, y_scale );
+ }
}
}
@@ -1075,6 +1129,11 @@
error = TT_Hint_Glyph( loader, 0 );
}
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ Exit:
+ FT_FREE( unrounded );
+#endif
+
return error;
}
@@ -1468,7 +1527,7 @@
}
#endif
- use_aw_2 = (FT_Bool)( subpixel_hinting && grayscale );
+ use_aw_2 = FT_BOOL( subpixel_hinting && grayscale );
loader->pp1.x = loader->bbox.xMin - loader->left_bearing;
loader->pp1.y = 0;
@@ -1520,12 +1579,13 @@
FT_UInt recurse_count,
FT_Bool header_only )
{
- FT_Error error = FT_Err_Ok;
+ FT_Error error = FT_Err_Ok;
FT_Fixed x_scale, y_scale;
FT_ULong offset;
- TT_Face face = loader->face;
- FT_GlyphLoader gloader = loader->gloader;
- FT_Bool opened_frame = 0;
+ TT_Face face = loader->face;
+ FT_GlyphLoader gloader = loader->gloader;
+
+ FT_Bool opened_frame = 0;
#ifdef FT_CONFIG_OPTION_INCREMENTAL
FT_StreamRec inc_stream;
@@ -1558,16 +1618,16 @@
loader->glyph_index = glyph_index;
- if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
- {
- x_scale = loader->size->metrics->x_scale;
- y_scale = loader->size->metrics->y_scale;
- }
- else
+ if ( loader->load_flags & FT_LOAD_NO_SCALE )
{
x_scale = 0x10000L;
y_scale = 0x10000L;
}
+ else
+ {
+ x_scale = loader->size->metrics->x_scale;
+ y_scale = loader->size->metrics->y_scale;
+ }
/* Set `offset' to the start of the glyph relative to the start of */
/* the `glyf' table, and `byte_len' to the length of the glyph in */
@@ -1625,38 +1685,36 @@
if ( error )
goto Exit;
- opened_frame = 1;
-
/* read glyph header first */
error = face->read_glyph_header( loader );
- if ( error )
- goto Exit;
- /* the metrics must be computed after loading the glyph header */
- /* since we need the glyph's `yMax' value in case the vertical */
- /* metrics must be emulated */
- error = tt_get_metrics( loader, glyph_index );
- if ( error )
- goto Exit;
+ face->forget_glyph_frame( loader );
- if ( header_only )
+ if ( error )
goto Exit;
}
+ /* a space glyph */
if ( loader->byte_len == 0 || loader->n_contours == 0 )
{
loader->bbox.xMin = 0;
loader->bbox.xMax = 0;
loader->bbox.yMin = 0;
loader->bbox.yMax = 0;
+ }
- error = tt_get_metrics( loader, glyph_index );
- if ( error )
- goto Exit;
+ /* the metrics must be computed after loading the glyph header */
+ /* since we need the glyph's `yMax' value in case the vertical */
+ /* metrics must be emulated */
+ error = tt_get_metrics( loader, glyph_index );
+ if ( error )
+ goto Exit;
- if ( header_only )
- goto Exit;
+ if ( header_only )
+ goto Exit;
+ if ( loader->byte_len == 0 || loader->n_contours == 0 )
+ {
/* must initialize points before (possibly) overriding */
/* glyph metrics from the incremental interface */
tt_loader_set_pp( loader );
@@ -1677,6 +1735,9 @@
short contours[4] = { 0, 1, 2, 3 };
FT_Outline outline;
+ /* unrounded values */
+ FT_Vector unrounded[4] = { {0, 0}, {0, 0}, {0, 0}, {0, 0} };
+
points[0].x = loader->pp1.x;
points[0].y = loader->pp1.y;
@@ -1698,6 +1759,7 @@
error = TT_Vary_Apply_Glyph_Deltas( loader->face,
glyph_index,
&outline,
+ unrounded,
(FT_UInt)outline.n_points );
if ( error )
goto Exit;
@@ -1712,13 +1774,14 @@
loader->pp4.x = points[3].x;
loader->pp4.y = points[3].y;
-
/* recalculate linear horizontal and vertical advances */
/* if we don't have HVAR and VVAR, respectively */
if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
- loader->linear = loader->pp2.x - loader->pp1.x;
+ loader->linear = FT_PIX_ROUND( unrounded[1].x -
+ unrounded[0].x ) / 64;
if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
- loader->vadvance = loader->pp4.x - loader->pp3.x;
+ loader->vadvance = FT_PIX_ROUND( unrounded[3].x -
+ unrounded[2].x ) / 64;
}
#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
@@ -1753,6 +1816,16 @@
/***********************************************************************/
/***********************************************************************/
+ /* we now open a frame again, right after the glyph header */
+ /* (which consists of 10 bytes) */
+ error = face->access_glyph_frame( loader, glyph_index,
+ face->glyf_offset + offset + 10,
+ (FT_UInt)loader->byte_len - 10 );
+ if ( error )
+ goto Exit;
+
+ opened_frame = 1;
+
/* if it is a simple glyph, load it */
if ( loader->n_contours > 0 )
@@ -1798,7 +1871,6 @@
* 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 )
@@ -1849,9 +1921,10 @@
FT_SubGlyph subglyph;
FT_Outline outline;
- FT_Vector* points = NULL;
- char* tags = NULL;
- short* contours = NULL;
+ FT_Vector* points = NULL;
+ char* tags = NULL;
+ short* contours = NULL;
+ FT_Vector* unrounded = NULL;
limit = (short)gloader->current.num_subglyphs;
@@ -1865,9 +1938,10 @@
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 ) )
+ if ( FT_NEW_ARRAY( points, outline.n_points ) ||
+ FT_NEW_ARRAY( tags, outline.n_points ) ||
+ FT_NEW_ARRAY( contours, outline.n_points ) ||
+ FT_NEW_ARRAY( unrounded, outline.n_points ) )
goto Exit1;
subglyph = gloader->current.subglyphs;
@@ -1916,6 +1990,7 @@
face,
glyph_index,
&outline,
+ unrounded,
(FT_UInt)outline.n_points ) ) )
goto Exit1;
@@ -1943,14 +2018,19 @@
/* recalculate linear horizontal and vertical advances */
/* if we don't have HVAR and VVAR, respectively */
if ( !( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
- loader->linear = loader->pp2.x - loader->pp1.x;
+ loader->linear =
+ FT_PIX_ROUND( unrounded[outline.n_points - 3].x -
+ unrounded[outline.n_points - 4].x ) / 64;
if ( !( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
- loader->vadvance = loader->pp4.x - loader->pp3.x;
+ loader->vadvance =
+ FT_PIX_ROUND( unrounded[outline.n_points - 1].x -
+ unrounded[outline.n_points - 2].x ) / 64;
Exit1:
FT_FREE( outline.points );
FT_FREE( outline.tags );
FT_FREE( outline.contours );
+ FT_FREE( unrounded );
if ( error )
goto Exit;
@@ -2010,7 +2090,7 @@
FT_Int linear_vadvance;
- /* Each time we call load_truetype_glyph in this loop, the */
+ /* Each time we call `load_truetype_glyph' in this loop, the */
/* value of `gloader.base.subglyphs' can change due to table */
/* reallocations. We thus need to recompute the subglyph */
/* pointer on each iteration. */
@@ -2053,12 +2133,14 @@
if ( num_points == num_base_points )
continue;
- /* gloader->base.outline consists of three parts: */
- /* 0 -(1)-> start_point -(2)-> num_base_points -(3)-> n_points. */
- /* */
- /* (1): exists from the beginning */
- /* (2): components that have been loaded so far */
- /* (3): the newly loaded component */
+ /* gloader->base.outline consists of three parts: */
+ /* */
+ /* 0 ----> start_point ----> num_base_points ----> n_points */
+ /* (1) (2) (3) */
+ /* */
+ /* (1) points that exist from the beginning */
+ /* (2) component points that have been loaded so far */
+ /* (3) points of the newly loaded component */
error = TT_Process_Composite_Component( loader,
subglyph,
start_point,
@@ -2074,6 +2156,7 @@
loader->ins_pos = ins_pos;
if ( IS_HINTED( loader->load_flags ) &&
#ifdef TT_USE_BYTECODE_INTERPRETER
+ subglyph &&
subglyph->flags & WE_HAVE_INSTR &&
#endif
num_points > start_point )
@@ -2140,7 +2223,7 @@
glyph->metrics.horiBearingX = bbox.xMin;
glyph->metrics.horiBearingY = bbox.yMax;
- glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x;
+ glyph->metrics.horiAdvance = SUB_LONG(loader->pp2.x, loader->pp1.x);
/* Adjust advance width to the value contained in the hdmx table */
/* unless FT_LOAD_COMPUTE_METRICS is set or backward compatibility */
@@ -2597,11 +2680,6 @@
if ( reexecute )
{
- FT_UInt i;
-
-
- for ( i = 0; i < size->cvt_size; i++ )
- size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
error = tt_size_run_prep( size, pedantic );
if ( error )
return error;
@@ -2704,13 +2782,6 @@
FT_Error error;
TT_LoaderRec loader;
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-#define IS_DEFAULT_INSTANCE ( !( FT_IS_NAMED_INSTANCE( glyph->face ) || \
- FT_IS_VARIATION( glyph->face ) ) )
-#else
-#define IS_DEFAULT_INSTANCE 1
-#endif
-
FT_TRACE1(( "TT_Load_Glyph: glyph index %d\n", glyph_index ));
@@ -2719,7 +2790,7 @@
/* try to load embedded bitmap (if any) */
if ( size->strike_index != 0xFFFFFFFFUL &&
( load_flags & FT_LOAD_NO_BITMAP ) == 0 &&
- IS_DEFAULT_INSTANCE )
+ IS_DEFAULT_INSTANCE( glyph->face ) )
{
FT_Fixed x_scale = size->root.metrics.x_scale;
FT_Fixed y_scale = size->root.metrics.y_scale;
diff --git a/src/truetype/ttgload.h b/src/truetype/ttgload.h
index c117728..f1324bc 100644
--- a/src/truetype/ttgload.h
+++ b/src/truetype/ttgload.h
@@ -4,7 +4,7 @@
*
* TrueType Glyph Loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 3df50d6..78d87dc 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -4,7 +4,7 @@
*
* TrueType GX Font Variation loader
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
*
* This file is part of the FreeType project, and may only be used,
@@ -68,14 +68,16 @@
/* some macros we need */
-#define FT_FIXED_ONE ( (FT_Fixed)0x10000 )
-
-#define FT_fdot14ToFixed( x ) \
- ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
-#define FT_intToFixed( i ) \
- ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
-#define FT_fixedToInt( x ) \
- ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
+#define FT_fdot14ToFixed( x ) \
+ ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
+#define FT_intToFixed( i ) \
+ ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
+#define FT_fdot6ToFixed( i ) \
+ ( (FT_Fixed)( (FT_ULong)(i) << 10 ) )
+#define FT_fixedToInt( x ) \
+ ( (FT_Short)( ( (x) + 0x8000U ) >> 16 ) )
+#define FT_fixedToFdot6( x ) \
+ ( (FT_Pos)( ( (x) + 0x200 ) >> 10 ) )
/**************************************************************************
@@ -85,7 +87,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttgxvar
+#define FT_COMPONENT ttgxvar
/*************************************************************************/
@@ -399,9 +401,10 @@
for ( j = 0; j < segment->pairCount; j++ )
{
- /* convert to Fixed */
- segment->correspondence[j].fromCoord = FT_GET_SHORT() * 4;
- segment->correspondence[j].toCoord = FT_GET_SHORT() * 4;
+ segment->correspondence[j].fromCoord =
+ FT_fdot14ToFixed( FT_GET_SHORT() );
+ segment->correspondence[j].toCoord =
+ FT_fdot14ToFixed( FT_GET_SHORT() );
FT_TRACE5(( " mapping %.5f to %.5f\n",
segment->correspondence[j].fromCoord / 65536.0,
@@ -884,7 +887,7 @@
/* outer loop steps through master designs to be blended */
for ( master = 0; master < varData->regionIdxCount; master++ )
{
- FT_Fixed scalar = FT_FIXED_ONE;
+ FT_Fixed scalar = 0x10000L;
FT_UInt regionIndex = varData->regionIndices[master];
GX_AxisCoords axis = itemStore->varRegionList[regionIndex].axisList;
@@ -893,47 +896,43 @@
/* inner loop steps through axes in this region */
for ( j = 0; j < itemStore->axisCount; j++, axis++ )
{
- FT_Fixed axisScalar;
-
-
/* compute the scalar contribution of this axis; */
/* ignore invalid ranges */
if ( axis->startCoord > axis->peakCoord ||
axis->peakCoord > axis->endCoord )
- axisScalar = FT_FIXED_ONE;
+ continue;
else if ( axis->startCoord < 0 &&
axis->endCoord > 0 &&
axis->peakCoord != 0 )
- axisScalar = FT_FIXED_ONE;
+ continue;
/* peak of 0 means ignore this axis */
else if ( axis->peakCoord == 0 )
- axisScalar = FT_FIXED_ONE;
+ continue;
+
+ else if ( face->blend->normalizedcoords[j] == axis->peakCoord )
+ continue;
/* ignore this region if coords are out of range */
- else if ( face->blend->normalizedcoords[j] < axis->startCoord ||
- face->blend->normalizedcoords[j] > axis->endCoord )
- axisScalar = 0;
-
- /* calculate a proportional factor */
- else
+ else if ( face->blend->normalizedcoords[j] <= axis->startCoord ||
+ face->blend->normalizedcoords[j] >= axis->endCoord )
{
- if ( face->blend->normalizedcoords[j] == axis->peakCoord )
- axisScalar = FT_FIXED_ONE;
- else if ( face->blend->normalizedcoords[j] < axis->peakCoord )
- axisScalar =
- FT_DivFix( face->blend->normalizedcoords[j] - axis->startCoord,
- axis->peakCoord - axis->startCoord );
- else
- axisScalar =
- FT_DivFix( axis->endCoord - face->blend->normalizedcoords[j],
- axis->endCoord - axis->peakCoord );
+ scalar = 0;
+ break;
}
- /* take product of all the axis scalars */
- scalar = FT_MulFix( scalar, axisScalar );
-
+ /* cumulative product of all the axis scalars */
+ else if ( face->blend->normalizedcoords[j] < axis->peakCoord )
+ scalar =
+ FT_MulDiv( scalar,
+ face->blend->normalizedcoords[j] - axis->startCoord,
+ axis->peakCoord - axis->startCoord );
+ else
+ scalar =
+ FT_MulDiv( scalar,
+ axis->endCoord - face->blend->normalizedcoords[j],
+ axis->endCoord - axis->peakCoord );
} /* per-axis loop */
/* get the scaled delta for this region */
@@ -1331,6 +1330,9 @@
{
GX_Blend blend = face->blend;
GX_Value value, limit;
+ FT_Short mvar_hasc_delta = 0;
+ FT_Short mvar_hdsc_delta = 0;
+ FT_Short mvar_hlgp_delta = 0;
if ( !( face->variation_support & TT_FACE_FLAG_VAR_MVAR ) )
@@ -1365,6 +1367,14 @@
/* since we handle both signed and unsigned values as FT_Short, */
/* ensure proper overflow arithmetic */
*p = (FT_Short)( value->unmodified + (FT_Short)delta );
+
+ /* Treat hasc, hdsc and hlgp specially, see below. */
+ if ( value->tag == MVAR_TAG_HASC )
+ mvar_hasc_delta = (FT_Short)delta;
+ else if ( value->tag == MVAR_TAG_HDSC )
+ mvar_hdsc_delta = (FT_Short)delta;
+ else if ( value->tag == MVAR_TAG_HLGP )
+ mvar_hlgp_delta = (FT_Short)delta;
}
}
@@ -1372,25 +1382,40 @@
{
FT_Face root = &face->root;
+ /*
+ * Apply the deltas of hasc, hdsc and hlgp to the FT_Face's ascender,
+ * descender and height attributes, no matter how they were originally
+ * computed.
+ *
+ * (Code that ignores those and accesses the font's metrics values
+ * directly is already served by the delta application code above.)
+ *
+ * The MVAR table supports variations for both typo and win metrics.
+ * According to Behdad Esfahbod, the thinking of the working group was
+ * that no one uses win metrics anymore for setting line metrics (the
+ * specification even calls these metrics "horizontal clipping
+ * ascent/descent", probably for their role on the Windows platform in
+ * computing clipping boxes), and new fonts should use typo metrics, so
+ * typo deltas should be applied to whatever sfnt_load_face decided the
+ * line metrics should be.
+ *
+ * Before, the following led to different line metrics between default
+ * outline and instances, visible when e.g. the default outlines were
+ * used as the regular face and instances for everything else:
+ *
+ * 1. sfnt_load_face applied the hhea metrics by default.
+ * 2. This code later applied the typo metrics by default, regardless of
+ * whether they were actually changed or the font had the OS/2 table's
+ * fsSelection's bit 7 (USE_TYPO_METRICS) set.
+ */
+ FT_Short current_line_gap = root->height - root->ascender +
+ root->descender;
- if ( face->os2.version != 0xFFFFU )
- {
- if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
- {
- root->ascender = face->os2.sTypoAscender;
- root->descender = face->os2.sTypoDescender;
- root->height = root->ascender - root->descender +
- face->os2.sTypoLineGap;
- }
- else
- {
- root->ascender = (FT_Short)face->os2.usWinAscent;
- root->descender = -(FT_Short)face->os2.usWinDescent;
-
- root->height = root->ascender - root->descender;
- }
- }
+ root->ascender = root->ascender + mvar_hasc_delta;
+ root->descender = root->descender + mvar_hdsc_delta;
+ root->height = root->ascender - root->descender +
+ current_line_gap + mvar_hlgp_delta;
root->underline_position = face->postscript.underlinePosition -
face->postscript.underlineThickness / 2;
@@ -1531,28 +1556,55 @@
if ( gvar_head.flags & 1 )
{
+ FT_ULong limit = gvar_start + table_len;
+
+
/* long offsets (one more offset than glyphs, to mark size of last) */
if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 4L ) )
goto Exit;
for ( i = 0; i <= blend->gv_glyphcnt; i++ )
+ {
blend->glyphoffsets[i] = offsetToData + FT_GET_ULONG();
-
- FT_FRAME_EXIT();
+ /* use `>', not `>=' */
+ if ( blend->glyphoffsets[i] > limit )
+ {
+ FT_TRACE2(( "ft_var_load_gvar:"
+ " invalid glyph variation data offset for index %d\n",
+ i ));
+ error = FT_THROW( Invalid_Table );
+ break;
+ }
+ }
}
else
{
+ FT_ULong limit = gvar_start + table_len;
+
+
/* short offsets (one more offset than glyphs, to mark size of last) */
if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 2L ) )
goto Exit;
for ( i = 0; i <= blend->gv_glyphcnt; i++ )
+ {
blend->glyphoffsets[i] = offsetToData + FT_GET_USHORT() * 2;
- /* XXX: Undocumented: `*2'! */
-
- FT_FRAME_EXIT();
+ /* use `>', not `>=' */
+ if ( blend->glyphoffsets[i] > limit )
+ {
+ FT_TRACE2(( "ft_var_load_gvar:"
+ " invalid glyph variation data offset for index %d\n",
+ i ));
+ error = FT_THROW( Invalid_Table );
+ break;
+ }
+ }
}
+ FT_FRAME_EXIT();
+ if ( error )
+ goto Exit;
+
if ( blend->tuplecount != 0 )
{
if ( FT_NEW_ARRAY( blend->tuplecoords,
@@ -1569,7 +1621,7 @@
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 */
+ FT_fdot14ToFixed( FT_GET_SHORT() );
FT_TRACE5(( "%.5f ",
blend->tuplecoords[i * gvar_head.axisCount + j] / 65536.0 ));
}
@@ -1631,13 +1683,8 @@
for ( i = 0; i < blend->num_axis; i++ )
{
- FT_TRACE6(( " axis coordinate %d (%.5f):\n",
+ FT_TRACE6(( " axis %d coordinate %.5f:\n",
i, blend->normalizedcoords[i] / 65536.0 ));
- if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) )
- FT_TRACE6(( " intermediate coordinates %d (%.5f, %.5f):\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. */
@@ -1646,7 +1693,7 @@
if ( tuple_coords[i] == 0 )
{
- FT_TRACE6(( " tuple coordinate is zero, ignored\n", i ));
+ FT_TRACE6(( " tuple coordinate is zero, ignore\n", i ));
continue;
}
@@ -1659,7 +1706,7 @@
if ( blend->normalizedcoords[i] == tuple_coords[i] )
{
- FT_TRACE6(( " tuple coordinate value %.5f fits perfectly\n",
+ FT_TRACE6(( " tuple coordinate %.5f fits perfectly\n",
tuple_coords[i] / 65536.0 ));
/* `apply' does not change */
continue;
@@ -1672,13 +1719,13 @@
if ( blend->normalizedcoords[i] < FT_MIN( 0, tuple_coords[i] ) ||
blend->normalizedcoords[i] > FT_MAX( 0, tuple_coords[i] ) )
{
- FT_TRACE6(( " tuple coordinate value %.5f is exceeded, stop\n",
+ FT_TRACE6(( " tuple coordinate %.5f is exceeded, stop\n",
tuple_coords[i] / 65536.0 ));
apply = 0;
break;
}
- FT_TRACE6(( " tuple coordinate value %.5f fits\n",
+ FT_TRACE6(( " tuple coordinate %.5f fits\n",
tuple_coords[i] / 65536.0 ));
apply = FT_MulDiv( apply,
blend->normalizedcoords[i],
@@ -1688,10 +1735,10 @@
{
/* intermediate tuple */
- if ( blend->normalizedcoords[i] < im_start_coords[i] ||
- blend->normalizedcoords[i] > im_end_coords[i] )
+ if ( blend->normalizedcoords[i] <= im_start_coords[i] ||
+ blend->normalizedcoords[i] >= im_end_coords[i] )
{
- FT_TRACE6(( " intermediate tuple range [%.5f;%.5f] is exceeded,"
+ FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ is exceeded,"
" stop\n",
im_start_coords[i] / 65536.0,
im_end_coords[i] / 65536.0 ));
@@ -1699,25 +1746,17 @@
break;
}
- else if ( blend->normalizedcoords[i] < tuple_coords[i] )
- {
- FT_TRACE6(( " intermediate tuple range [%.5f;%.5f] fits\n",
- im_start_coords[i] / 65536.0,
- im_end_coords[i] / 65536.0 ));
+ FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ fits\n",
+ im_start_coords[i] / 65536.0,
+ im_end_coords[i] / 65536.0 ));
+ if ( blend->normalizedcoords[i] < tuple_coords[i] )
apply = FT_MulDiv( apply,
blend->normalizedcoords[i] - im_start_coords[i],
tuple_coords[i] - im_start_coords[i] );
- }
-
else
- {
- FT_TRACE6(( " intermediate tuple range [%.5f;%.5f] 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] );
- }
}
}
@@ -3020,7 +3059,7 @@
if ( instance_index > num_instances )
goto Exit;
- if ( instance_index > 0 && mmvar->namedstyle )
+ if ( instance_index > 0 )
{
FT_Memory memory = face->root.memory;
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
@@ -3046,7 +3085,12 @@
mmvar->num_axis,
named_style->coords );
if ( error )
+ {
+ /* internal error code -1 means `no change' */
+ if ( error == -1 )
+ error = FT_Err_Ok;
goto Exit;
+ }
}
else
error = TT_Set_Var_Design( face, 0, NULL );
@@ -3069,6 +3113,21 @@
/*************************************************************************/
+ static FT_Error
+ tt_cvt_ready_iterator( FT_ListNode node,
+ void* user )
+ {
+ TT_Size size = (TT_Size)node->data;
+
+ FT_UNUSED( user );
+
+
+ size->cvt_ready = -1;
+
+ return FT_Err_Ok;
+ }
+
+
/**************************************************************************
*
* @Function:
@@ -3099,6 +3158,8 @@
FT_Error error;
FT_Memory memory = stream->memory;
+ FT_Face root = &face->root;
+
FT_ULong table_start;
FT_ULong table_len;
@@ -3205,14 +3266,14 @@
}
FT_TRACE5(( "cvar: there %s %d tuple%s:\n",
- ( tupleCount & 0xFFF ) == 1 ? "is" : "are",
- tupleCount & 0xFFF,
- ( tupleCount & 0xFFF ) == 1 ? "" : "s" ));
+ ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "is" : "are",
+ tupleCount & GX_TC_TUPLE_COUNT_MASK,
+ ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
if ( FT_NEW_ARRAY( cvt_deltas, face->cvt_size ) )
goto FExit;
- for ( i = 0; i < ( tupleCount & 0xFFF ); i++ )
+ for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
{
FT_UInt tupleDataSize;
FT_UInt tupleIndex;
@@ -3227,8 +3288,7 @@
if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD )
{
for ( j = 0; j < blend->num_axis; j++ )
- tuple_coords[j] = FT_GET_SHORT() * 4; /* convert from */
- /* short frac to fixed */
+ tuple_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
{
@@ -3236,20 +3296,32 @@
" invalid tuple index\n" ));
error = FT_THROW( Invalid_Table );
- goto Exit;
+ goto FExit;
}
else
+ {
+ if ( !blend->tuplecoords )
+ {
+ FT_TRACE2(( "tt_face_vary_cvt:"
+ " no valid tuple coordinates available\n" ));
+
+ error = FT_THROW( Invalid_Table );
+ goto FExit;
+ }
+
FT_MEM_COPY(
tuple_coords,
- &blend->tuplecoords[( tupleIndex & 0xFFF ) * blend->num_axis],
+ blend->tuplecoords +
+ ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
blend->num_axis * sizeof ( FT_Fixed ) );
+ }
if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
{
for ( j = 0; j < blend->num_axis; j++ )
- im_start_coords[j] = FT_GET_SHORT() * 4;
+ im_start_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
for ( j = 0; j < blend->num_axis; j++ )
- im_end_coords[j] = FT_GET_SHORT() * 4;
+ im_end_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
apply = ft_var_apply_tuple( blend,
@@ -3314,9 +3386,9 @@
{
FT_TRACE7(( " %d: %f -> %f\n",
j,
- ( FT_intToFixed( face->cvt[j] ) +
+ ( FT_fdot6ToFixed( face->cvt[j] ) +
old_cvt_delta ) / 65536.0,
- ( FT_intToFixed( face->cvt[j] ) +
+ ( FT_fdot6ToFixed( face->cvt[j] ) +
cvt_deltas[j] ) / 65536.0 ));
count++;
}
@@ -3356,9 +3428,9 @@
{
FT_TRACE7(( " %d: %f -> %f\n",
pindex,
- ( FT_intToFixed( face->cvt[pindex] ) +
+ ( FT_fdot6ToFixed( face->cvt[pindex] ) +
old_cvt_delta ) / 65536.0,
- ( FT_intToFixed( face->cvt[pindex] ) +
+ ( FT_fdot6ToFixed( face->cvt[pindex] ) +
cvt_deltas[pindex] ) / 65536.0 ));
count++;
}
@@ -3383,7 +3455,7 @@
FT_TRACE5(( "\n" ));
for ( i = 0; i < face->cvt_size; i++ )
- face->cvt[i] += FT_fixedToInt( cvt_deltas[i] );
+ face->cvt[i] += FT_fixedToFdot6( cvt_deltas[i] );
FExit:
FT_FRAME_EXIT();
@@ -3396,6 +3468,12 @@
FT_FREE( im_end_coords );
FT_FREE( cvt_deltas );
+ /* iterate over all FT_Size objects and set `cvt_ready' to -1 */
+ /* to trigger rescaling of all CVT values */
+ FT_List_Iterate( &root->sizes_list,
+ tt_cvt_ready_iterator,
+ NULL );
+
return error;
}
@@ -3440,9 +3518,8 @@
/* between `p1' and `p2', using `ref1' and `ref2' as the reference */
/* point indices. */
- /* modeled after `af_iup_interp', `_iup_worker_interpolate', and */
- /* `Ins_IUP' */
-
+ /* modeled after `af_iup_interp', `_iup_worker_interpolate', and */
+ /* `Ins_IUP' with spec differences in handling ill-defined cases. */
static void
tt_delta_interpolate( int p1,
int p2,
@@ -3624,6 +3701,11 @@
* outline ::
* The outline to change.
*
+ * @Output:
+ * unrounded ::
+ * An array with `n_points' elements that is filled with unrounded
+ * point coordinates (in 26.6 format).
+ *
* @Return:
* FreeType error code. 0 means success.
*/
@@ -3631,6 +3713,7 @@
TT_Vary_Apply_Glyph_Deltas( TT_Face face,
FT_UInt glyph_index,
FT_Outline* outline,
+ FT_Vector* unrounded,
FT_UInt n_points )
{
FT_Error error;
@@ -3645,6 +3728,7 @@
FT_UInt tupleCount;
FT_ULong offsetToData;
+ FT_ULong dataSize;
FT_ULong here;
FT_UInt i, j;
@@ -3671,6 +3755,12 @@
if ( !face->doblend || !blend )
return FT_THROW( Invalid_Argument );
+ for ( i = 0; i < n_points; i++ )
+ {
+ unrounded[i].x = INT_TO_F26DOT6( outline->points[i].x );
+ unrounded[i].y = INT_TO_F26DOT6( outline->points[i].y );
+ }
+
if ( glyph_index >= blend->gv_glyphcnt ||
blend->glyphoffsets[glyph_index] ==
blend->glyphoffsets[glyph_index + 1] )
@@ -3685,9 +3775,11 @@
FT_NEW_ARRAY( has_delta, n_points ) )
goto Fail1;
- if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] ) ||
- FT_FRAME_ENTER( blend->glyphoffsets[glyph_index + 1] -
- blend->glyphoffsets[glyph_index] ) )
+ dataSize = blend->glyphoffsets[glyph_index + 1] -
+ blend->glyphoffsets[glyph_index];
+
+ if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] ) ||
+ FT_FRAME_ENTER( dataSize ) )
goto Fail1;
glyph_start = FT_Stream_FTell( stream );
@@ -3703,8 +3795,8 @@
offsetToData = FT_GET_USHORT();
/* rough sanity test */
- if ( offsetToData + ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) * 4 >
- blend->gvar_size )
+ if ( offsetToData > dataSize ||
+ ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) * 4 > dataSize )
{
FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:"
" invalid glyph variation array header\n" ));
@@ -3759,8 +3851,7 @@
if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD )
{
for ( j = 0; j < blend->num_axis; j++ )
- tuple_coords[j] = FT_GET_SHORT() * 4; /* convert from */
- /* short frac to fixed */
+ tuple_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
{
@@ -3773,15 +3864,16 @@
else
FT_MEM_COPY(
tuple_coords,
- &blend->tuplecoords[( tupleIndex & 0xFFF ) * blend->num_axis],
+ blend->tuplecoords +
+ ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
blend->num_axis * sizeof ( FT_Fixed ) );
if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
{
for ( j = 0; j < blend->num_axis; j++ )
- im_start_coords[j] = FT_GET_SHORT() * 4;
+ im_start_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
for ( j = 0; j < blend->num_axis; j++ )
- im_end_coords[j] = FT_GET_SHORT() * 4;
+ im_end_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
apply = ft_var_apply_tuple( blend,
@@ -4015,6 +4107,9 @@
for ( i = 0; i < n_points; i++ )
{
+ unrounded[i].x += FT_fixedToFdot6( point_deltas_x[i] );
+ unrounded[i].y += FT_fixedToFdot6( point_deltas_y[i] );
+
outline->points[i].x += FT_fixedToInt( point_deltas_x[i] );
outline->points[i].y += FT_fixedToInt( point_deltas_y[i] );
}
diff --git a/src/truetype/ttgxvar.h b/src/truetype/ttgxvar.h
index bdc09d1..07c99b6 100644
--- a/src/truetype/ttgxvar.h
+++ b/src/truetype/ttgxvar.h
@@ -4,7 +4,7 @@
*
* TrueType GX Font Variation loader (specification)
*
- * Copyright 2004-2018 by
+ * Copyright (C) 2004-2019 by
* David Turner, Robert Wilhelm, Werner Lemberg and George Williams.
*
* This file is part of the FreeType project, and may only be used,
@@ -416,6 +416,7 @@
TT_Vary_Apply_Glyph_Deltas( TT_Face face,
FT_UInt glyph_index,
FT_Outline* outline,
+ FT_Vector* unrounded,
FT_UInt n_points );
FT_LOCAL( FT_Error )
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 35aa399..70434e1 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -4,7 +4,7 @@
*
* TrueType bytecode interpreter (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -46,7 +46,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttinterp
+#define FT_COMPONENT ttinterp
#define NO_SUBPIXEL_HINTING \
@@ -537,14 +537,6 @@
* Executes one or more instructions in the execution context.
*
* @Input:
- * debug ::
- * A Boolean flag. If set, the function sets some internal
- * variables and returns immediately, otherwise TT_RunIns()
- * is called.
- *
- * This is commented out currently.
- *
- * @Input:
* exec ::
* A handle to the target execution context.
*
@@ -662,23 +654,25 @@
/* opcodes are gathered in groups of 16 */
/* please keep the spaces as they are */
- /* SVTCA y */ PACK( 0, 0 ),
- /* SVTCA x */ PACK( 0, 0 ),
- /* SPvTCA y */ PACK( 0, 0 ),
- /* SPvTCA x */ PACK( 0, 0 ),
- /* SFvTCA y */ PACK( 0, 0 ),
- /* SFvTCA x */ PACK( 0, 0 ),
- /* SPvTL // */ PACK( 2, 0 ),
- /* SPvTL + */ PACK( 2, 0 ),
- /* SFvTL // */ PACK( 2, 0 ),
- /* SFvTL + */ PACK( 2, 0 ),
- /* SPvFS */ PACK( 2, 0 ),
- /* SFvFS */ PACK( 2, 0 ),
- /* GPv */ PACK( 0, 2 ),
- /* GFv */ PACK( 0, 2 ),
- /* SFvTPv */ PACK( 0, 0 ),
+ /* 0x00 */
+ /* SVTCA[0] */ PACK( 0, 0 ),
+ /* SVTCA[1] */ PACK( 0, 0 ),
+ /* SPVTCA[0] */ PACK( 0, 0 ),
+ /* SPVTCA[1] */ PACK( 0, 0 ),
+ /* SFVTCA[0] */ PACK( 0, 0 ),
+ /* SFVTCA[1] */ PACK( 0, 0 ),
+ /* SPVTL[0] */ PACK( 2, 0 ),
+ /* SPVTL[1] */ PACK( 2, 0 ),
+ /* SFVTL[0] */ PACK( 2, 0 ),
+ /* SFVTL[1] */ PACK( 2, 0 ),
+ /* SPVFS */ PACK( 2, 0 ),
+ /* SFVFS */ PACK( 2, 0 ),
+ /* GPV */ PACK( 0, 2 ),
+ /* GFV */ PACK( 0, 2 ),
+ /* SFVTPV */ PACK( 0, 0 ),
/* ISECT */ PACK( 5, 0 ),
+ /* 0x10 */
/* SRP0 */ PACK( 1, 0 ),
/* SRP1 */ PACK( 1, 0 ),
/* SRP2 */ PACK( 1, 0 ),
@@ -692,10 +686,11 @@
/* SMD */ PACK( 1, 0 ),
/* ELSE */ PACK( 0, 0 ),
/* JMPR */ PACK( 1, 0 ),
- /* SCvTCi */ PACK( 1, 0 ),
- /* SSwCi */ PACK( 1, 0 ),
+ /* SCVTCI */ PACK( 1, 0 ),
+ /* SSWCI */ PACK( 1, 0 ),
/* SSW */ PACK( 1, 0 ),
+ /* 0x20 */
/* DUP */ PACK( 1, 2 ),
/* POP */ PACK( 1, 0 ),
/* CLEAR */ PACK( 0, 0 ),
@@ -703,7 +698,7 @@
/* DEPTH */ PACK( 0, 1 ),
/* CINDEX */ PACK( 1, 1 ),
/* MINDEX */ PACK( 1, 0 ),
- /* AlignPTS */ PACK( 2, 0 ),
+ /* ALIGNPTS */ PACK( 2, 0 ),
/* INS_$28 */ PACK( 0, 0 ),
/* UTP */ PACK( 1, 0 ),
/* LOOPCALL */ PACK( 2, 0 ),
@@ -713,6 +708,7 @@
/* MDAP[0] */ PACK( 1, 0 ),
/* MDAP[1] */ PACK( 1, 0 ),
+ /* 0x30 */
/* IUP[0] */ PACK( 0, 0 ),
/* IUP[1] */ PACK( 0, 0 ),
/* SHP[0] */ PACK( 0, 0 ), /* loops */
@@ -725,17 +721,18 @@
/* IP */ PACK( 0, 0 ), /* loops */
/* MSIRP[0] */ PACK( 2, 0 ),
/* MSIRP[1] */ PACK( 2, 0 ),
- /* AlignRP */ PACK( 0, 0 ), /* loops */
+ /* ALIGNRP */ PACK( 0, 0 ), /* loops */
/* RTDG */ PACK( 0, 0 ),
/* MIAP[0] */ PACK( 2, 0 ),
/* MIAP[1] */ PACK( 2, 0 ),
- /* NPushB */ PACK( 0, 0 ),
- /* NPushW */ PACK( 0, 0 ),
+ /* 0x40 */
+ /* NPUSHB */ PACK( 0, 0 ),
+ /* NPUSHW */ PACK( 0, 0 ),
/* WS */ PACK( 2, 0 ),
/* RS */ PACK( 1, 1 ),
- /* WCvtP */ PACK( 2, 0 ),
- /* RCvt */ PACK( 1, 1 ),
+ /* WCVTP */ PACK( 2, 0 ),
+ /* RCVT */ PACK( 1, 1 ),
/* GC[0] */ PACK( 1, 1 ),
/* GC[1] */ PACK( 1, 1 ),
/* SCFS */ PACK( 2, 0 ),
@@ -743,10 +740,11 @@
/* MD[1] */ PACK( 2, 1 ),
/* MPPEM */ PACK( 0, 1 ),
/* MPS */ PACK( 0, 1 ),
- /* FlipON */ PACK( 0, 0 ),
- /* FlipOFF */ PACK( 0, 0 ),
+ /* FLIPON */ PACK( 0, 0 ),
+ /* FLIPOFF */ PACK( 0, 0 ),
/* DEBUG */ PACK( 1, 0 ),
+ /* 0x50 */
/* LT */ PACK( 2, 1 ),
/* LTEQ */ PACK( 2, 1 ),
/* GT */ PACK( 2, 1 ),
@@ -760,10 +758,11 @@
/* AND */ PACK( 2, 1 ),
/* OR */ PACK( 2, 1 ),
/* NOT */ PACK( 1, 1 ),
- /* DeltaP1 */ PACK( 1, 0 ),
+ /* DELTAP1 */ PACK( 1, 0 ),
/* SDB */ PACK( 1, 0 ),
/* SDS */ PACK( 1, 0 ),
+ /* 0x60 */
/* ADD */ PACK( 2, 1 ),
/* SUB */ PACK( 2, 1 ),
/* DIV */ PACK( 2, 1 ),
@@ -781,14 +780,15 @@
/* NROUND[2] */ PACK( 1, 1 ),
/* NROUND[3] */ PACK( 1, 1 ),
- /* WCvtF */ PACK( 2, 0 ),
- /* DeltaP2 */ PACK( 1, 0 ),
- /* DeltaP3 */ PACK( 1, 0 ),
- /* DeltaCn[0] */ PACK( 1, 0 ),
- /* DeltaCn[1] */ PACK( 1, 0 ),
- /* DeltaCn[2] */ PACK( 1, 0 ),
+ /* 0x70 */
+ /* WCVTF */ PACK( 2, 0 ),
+ /* DELTAP2 */ PACK( 1, 0 ),
+ /* DELTAP3 */ PACK( 1, 0 ),
+ /* DELTAC1 */ PACK( 1, 0 ),
+ /* DELTAC2 */ PACK( 1, 0 ),
+ /* DELTAC3 */ PACK( 1, 0 ),
/* SROUND */ PACK( 1, 0 ),
- /* S45Round */ PACK( 1, 0 ),
+ /* S45ROUND */ PACK( 1, 0 ),
/* JROT */ PACK( 2, 0 ),
/* JROF */ PACK( 2, 0 ),
/* ROFF */ PACK( 0, 0 ),
@@ -798,23 +798,25 @@
/* SANGW */ PACK( 1, 0 ),
/* AA */ PACK( 1, 0 ),
- /* FlipPT */ PACK( 0, 0 ), /* loops */
- /* FlipRgON */ PACK( 2, 0 ),
- /* FlipRgOFF */ PACK( 2, 0 ),
+ /* 0x80 */
+ /* FLIPPT */ PACK( 0, 0 ), /* loops */
+ /* FLIPRGON */ PACK( 2, 0 ),
+ /* FLIPRGOFF */ PACK( 2, 0 ),
/* INS_$83 */ PACK( 0, 0 ),
/* INS_$84 */ PACK( 0, 0 ),
- /* ScanCTRL */ PACK( 1, 0 ),
- /* SDPvTL[0] */ PACK( 2, 0 ),
- /* SDPvTL[1] */ PACK( 2, 0 ),
- /* GetINFO */ PACK( 1, 1 ),
+ /* SCANCTRL */ PACK( 1, 0 ),
+ /* SDPVTL[0] */ PACK( 2, 0 ),
+ /* SDPVTL[1] */ PACK( 2, 0 ),
+ /* GETINFO */ PACK( 1, 1 ),
/* IDEF */ PACK( 1, 0 ),
/* ROLL */ PACK( 3, 3 ),
/* MAX */ PACK( 2, 1 ),
/* MIN */ PACK( 2, 1 ),
- /* ScanTYPE */ PACK( 1, 0 ),
- /* InstCTRL */ PACK( 2, 0 ),
+ /* SCANTYPE */ PACK( 1, 0 ),
+ /* INSTCTRL */ PACK( 2, 0 ),
/* INS_$8F */ PACK( 0, 0 ),
+ /* 0x90 */
/* INS_$90 */ PACK( 0, 0 ),
/* GETVAR */ PACK( 0, 0 ), /* will be handled specially */
/* GETDATA */ PACK( 0, 1 ),
@@ -832,6 +834,7 @@
/* INS_$9E */ PACK( 0, 0 ),
/* INS_$9F */ PACK( 0, 0 ),
+ /* 0xA0 */
/* INS_$A0 */ PACK( 0, 0 ),
/* INS_$A1 */ PACK( 0, 0 ),
/* INS_$A2 */ PACK( 0, 0 ),
@@ -849,23 +852,25 @@
/* INS_$AE */ PACK( 0, 0 ),
/* INS_$AF */ PACK( 0, 0 ),
- /* PushB[0] */ PACK( 0, 1 ),
- /* PushB[1] */ PACK( 0, 2 ),
- /* PushB[2] */ PACK( 0, 3 ),
- /* PushB[3] */ PACK( 0, 4 ),
- /* PushB[4] */ PACK( 0, 5 ),
- /* PushB[5] */ PACK( 0, 6 ),
- /* PushB[6] */ PACK( 0, 7 ),
- /* PushB[7] */ PACK( 0, 8 ),
- /* PushW[0] */ PACK( 0, 1 ),
- /* PushW[1] */ PACK( 0, 2 ),
- /* PushW[2] */ PACK( 0, 3 ),
- /* PushW[3] */ PACK( 0, 4 ),
- /* PushW[4] */ PACK( 0, 5 ),
- /* PushW[5] */ PACK( 0, 6 ),
- /* PushW[6] */ PACK( 0, 7 ),
- /* PushW[7] */ PACK( 0, 8 ),
+ /* 0xB0 */
+ /* PUSHB[0] */ PACK( 0, 1 ),
+ /* PUSHB[1] */ PACK( 0, 2 ),
+ /* PUSHB[2] */ PACK( 0, 3 ),
+ /* PUSHB[3] */ PACK( 0, 4 ),
+ /* PUSHB[4] */ PACK( 0, 5 ),
+ /* PUSHB[5] */ PACK( 0, 6 ),
+ /* PUSHB[6] */ PACK( 0, 7 ),
+ /* PUSHB[7] */ PACK( 0, 8 ),
+ /* PUSHW[0] */ PACK( 0, 1 ),
+ /* PUSHW[1] */ PACK( 0, 2 ),
+ /* PUSHW[2] */ PACK( 0, 3 ),
+ /* PUSHW[3] */ PACK( 0, 4 ),
+ /* PUSHW[4] */ PACK( 0, 5 ),
+ /* PUSHW[5] */ PACK( 0, 6 ),
+ /* PUSHW[6] */ PACK( 0, 7 ),
+ /* PUSHW[7] */ PACK( 0, 8 ),
+ /* 0xC0 */
/* MDRP[00] */ PACK( 1, 0 ),
/* MDRP[01] */ PACK( 1, 0 ),
/* MDRP[02] */ PACK( 1, 0 ),
@@ -883,6 +888,7 @@
/* MDRP[14] */ PACK( 1, 0 ),
/* MDRP[15] */ PACK( 1, 0 ),
+ /* 0xD0 */
/* MDRP[16] */ PACK( 1, 0 ),
/* MDRP[17] */ PACK( 1, 0 ),
/* MDRP[18] */ PACK( 1, 0 ),
@@ -900,6 +906,7 @@
/* MDRP[30] */ PACK( 1, 0 ),
/* MDRP[31] */ PACK( 1, 0 ),
+ /* 0xE0 */
/* MIRP[00] */ PACK( 2, 0 ),
/* MIRP[01] */ PACK( 2, 0 ),
/* MIRP[02] */ PACK( 2, 0 ),
@@ -917,6 +924,7 @@
/* MIRP[14] */ PACK( 2, 0 ),
/* MIRP[15] */ PACK( 2, 0 ),
+ /* 0xF0 */
/* MIRP[16] */ PACK( 2, 0 ),
/* MIRP[17] */ PACK( 2, 0 ),
/* MIRP[18] */ PACK( 2, 0 ),
@@ -945,23 +953,25 @@
static
const char* const opcode_name[256] =
{
- "7 SVTCA y",
- "7 SVTCA x",
- "8 SPvTCA y",
- "8 SPvTCA x",
- "8 SFvTCA y",
- "8 SFvTCA x",
- "8 SPvTL ||",
- "7 SPvTL +",
- "8 SFvTL ||",
- "7 SFvTL +",
- "5 SPvFS",
- "5 SFvFS",
- "3 GPv",
- "3 GFv",
- "6 SFvTPv",
+ /* 0x00 */
+ "8 SVTCA[y]",
+ "8 SVTCA[x]",
+ "9 SPVTCA[y]",
+ "9 SPVTCA[x]",
+ "9 SFVTCA[y]",
+ "9 SFVTCA[x]",
+ "9 SPVTL[||]",
+ "8 SPVTL[+]",
+ "9 SFVTL[||]",
+ "8 SFVTL[+]",
+ "5 SPVFS",
+ "5 SFVFS",
+ "3 GPV",
+ "3 GFV",
+ "6 SFVTPV",
"5 ISECT",
+ /* 0x10 */
"4 SRP0",
"4 SRP1",
"4 SRP2",
@@ -975,10 +985,11 @@
"3 SMD",
"4 ELSE",
"4 JMPR",
- "6 SCvTCi",
- "5 SSwCi",
+ "6 SCVTCI",
+ "5 SSWCI",
"3 SSW",
+ /* 0x20 */
"3 DUP",
"3 POP",
"5 CLEAR",
@@ -986,50 +997,53 @@
"5 DEPTH",
"6 CINDEX",
"6 MINDEX",
- "8 AlignPTS",
+ "8 ALIGNPTS",
"7 INS_$28",
"3 UTP",
"8 LOOPCALL",
"4 CALL",
"4 FDEF",
"4 ENDF",
- "7 MDAP[0]",
- "7 MDAP[1]",
+ "6 MDAP[]",
+ "9 MDAP[rnd]",
- "6 IUP[0]",
- "6 IUP[1]",
- "6 SHP[0]",
- "6 SHP[1]",
- "6 SHC[0]",
- "6 SHC[1]",
- "6 SHZ[0]",
- "6 SHZ[1]",
+ /* 0x30 */
+ "6 IUP[y]",
+ "6 IUP[x]",
+ "8 SHP[rp2]",
+ "8 SHP[rp1]",
+ "8 SHC[rp2]",
+ "8 SHC[rp1]",
+ "8 SHZ[rp2]",
+ "8 SHZ[rp1]",
"5 SHPIX",
"2 IP",
- "8 MSIRP[0]",
- "8 MSIRP[1]",
- "7 AlignRP",
+ "7 MSIRP[]",
+ "A MSIRP[rp0]",
+ "7 ALIGNRP",
"4 RTDG",
- "7 MIAP[0]",
- "7 MIAP[1]",
+ "6 MIAP[]",
+ "9 MIAP[rnd]",
- "6 NPushB",
- "6 NPushW",
+ /* 0x40 */
+ "6 NPUSHB",
+ "6 NPUSHW",
"2 WS",
"2 RS",
- "5 WCvtP",
- "4 RCvt",
- "5 GC[0]",
- "5 GC[1]",
+ "5 WCVTP",
+ "4 RCVT",
+ "8 GC[curr]",
+ "8 GC[orig]",
"4 SCFS",
- "5 MD[0]",
- "5 MD[1]",
+ "8 MD[curr]",
+ "8 MD[orig]",
"5 MPPEM",
"3 MPS",
- "6 FlipON",
- "7 FlipOFF",
+ "6 FLIPON",
+ "7 FLIPOFF",
"5 DEBUG",
+ /* 0x50 */
"2 LT",
"4 LTEQ",
"2 GT",
@@ -1043,10 +1057,11 @@
"3 AND",
"2 OR",
"3 NOT",
- "7 DeltaP1",
+ "7 DELTAP1",
"3 SDB",
"3 SDS",
+ /* 0x60 */
"3 ADD",
"3 SUB",
"3 DIV",
@@ -1055,23 +1070,24 @@
"3 NEG",
"5 FLOOR",
"7 CEILING",
- "8 ROUND[0]",
- "8 ROUND[1]",
- "8 ROUND[2]",
- "8 ROUND[3]",
- "9 NROUND[0]",
- "9 NROUND[1]",
- "9 NROUND[2]",
- "9 NROUND[3]",
+ "8 ROUND[G]",
+ "8 ROUND[B]",
+ "8 ROUND[W]",
+ "7 ROUND[]",
+ "9 NROUND[G]",
+ "9 NROUND[B]",
+ "9 NROUND[W]",
+ "8 NROUND[]",
- "5 WCvtF",
- "7 DeltaP2",
- "7 DeltaP3",
- "A DeltaCn[0]",
- "A DeltaCn[1]",
- "A DeltaCn[2]",
+ /* 0x70 */
+ "5 WCVTF",
+ "7 DELTAP2",
+ "7 DELTAP3",
+ "7 DELTAC1",
+ "7 DELTAC2",
+ "7 DELTAC3",
"6 SROUND",
- "8 S45Round",
+ "8 S45ROUND",
"4 JROT",
"4 JROF",
"4 ROFF",
@@ -1081,26 +1097,28 @@
"5 SANGW",
"2 AA",
- "6 FlipPT",
- "8 FlipRgON",
- "9 FlipRgOFF",
+ /* 0x80 */
+ "6 FLIPPT",
+ "8 FLIPRGON",
+ "9 FLIPRGOFF",
"7 INS_$83",
"7 INS_$84",
- "8 ScanCTRL",
- "9 SDPvTL[0]",
- "9 SDPvTL[1]",
- "7 GetINFO",
+ "8 SCANCTRL",
+ "A SDPVTL[||]",
+ "9 SDPVTL[+]",
+ "7 GETINFO",
"4 IDEF",
"4 ROLL",
"3 MAX",
"3 MIN",
- "8 ScanTYPE",
- "8 InstCTRL",
+ "8 SCANTYPE",
+ "8 INSTCTRL",
"7 INS_$8F",
+ /* 0x90 */
"7 INS_$90",
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
- "6 GETVAR",
+ "C GETVARIATION",
"7 GETDATA",
#else
"7 INS_$91",
@@ -1120,6 +1138,7 @@
"7 INS_$9E",
"7 INS_$9F",
+ /* 0xA0 */
"7 INS_$A0",
"7 INS_$A1",
"7 INS_$A2",
@@ -1137,90 +1156,95 @@
"7 INS_$AE",
"7 INS_$AF",
- "8 PushB[0]",
- "8 PushB[1]",
- "8 PushB[2]",
- "8 PushB[3]",
- "8 PushB[4]",
- "8 PushB[5]",
- "8 PushB[6]",
- "8 PushB[7]",
- "8 PushW[0]",
- "8 PushW[1]",
- "8 PushW[2]",
- "8 PushW[3]",
- "8 PushW[4]",
- "8 PushW[5]",
- "8 PushW[6]",
- "8 PushW[7]",
+ /* 0xB0 */
+ "8 PUSHB[0]",
+ "8 PUSHB[1]",
+ "8 PUSHB[2]",
+ "8 PUSHB[3]",
+ "8 PUSHB[4]",
+ "8 PUSHB[5]",
+ "8 PUSHB[6]",
+ "8 PUSHB[7]",
+ "8 PUSHW[0]",
+ "8 PUSHW[1]",
+ "8 PUSHW[2]",
+ "8 PUSHW[3]",
+ "8 PUSHW[4]",
+ "8 PUSHW[5]",
+ "8 PUSHW[6]",
+ "8 PUSHW[7]",
+ /* 0xC0 */
"7 MDRP[G]",
"7 MDRP[B]",
"7 MDRP[W]",
- "7 MDRP[?]",
+ "6 MDRP[]",
"8 MDRP[rG]",
"8 MDRP[rB]",
"8 MDRP[rW]",
- "8 MDRP[r?]",
+ "7 MDRP[r]",
"8 MDRP[mG]",
"8 MDRP[mB]",
"8 MDRP[mW]",
- "8 MDRP[m?]",
+ "7 MDRP[m]",
"9 MDRP[mrG]",
"9 MDRP[mrB]",
"9 MDRP[mrW]",
- "9 MDRP[mr?]",
+ "8 MDRP[mr]",
+ /* 0xD0 */
"8 MDRP[pG]",
"8 MDRP[pB]",
"8 MDRP[pW]",
- "8 MDRP[p?]",
+ "7 MDRP[p]",
"9 MDRP[prG]",
"9 MDRP[prB]",
"9 MDRP[prW]",
- "9 MDRP[pr?]",
+ "8 MDRP[pr]",
"9 MDRP[pmG]",
"9 MDRP[pmB]",
"9 MDRP[pmW]",
- "9 MDRP[pm?]",
+ "8 MDRP[pm]",
"A MDRP[pmrG]",
"A MDRP[pmrB]",
"A MDRP[pmrW]",
- "A MDRP[pmr?]",
+ "9 MDRP[pmr]",
+ /* 0xE0 */
"7 MIRP[G]",
"7 MIRP[B]",
"7 MIRP[W]",
- "7 MIRP[?]",
+ "6 MIRP[]",
"8 MIRP[rG]",
"8 MIRP[rB]",
"8 MIRP[rW]",
- "8 MIRP[r?]",
+ "7 MIRP[r]",
"8 MIRP[mG]",
"8 MIRP[mB]",
"8 MIRP[mW]",
- "8 MIRP[m?]",
+ "7 MIRP[m]",
"9 MIRP[mrG]",
"9 MIRP[mrB]",
"9 MIRP[mrW]",
- "9 MIRP[mr?]",
+ "8 MIRP[mr]",
+ /* 0xF0 */
"8 MIRP[pG]",
"8 MIRP[pB]",
"8 MIRP[pW]",
- "8 MIRP[p?]",
+ "7 MIRP[p]",
"9 MIRP[prG]",
"9 MIRP[prB]",
"9 MIRP[prW]",
- "9 MIRP[pr?]",
+ "8 MIRP[pr]",
"9 MIRP[pmG]",
"9 MIRP[pmB]",
"9 MIRP[pmW]",
- "9 MIRP[pm?]",
+ "8 MIRP[pm]",
"A MIRP[pmrG]",
"A MIRP[pmrB]",
"A MIRP[pmrW]",
- "A MIRP[pmr?]"
+ "9 MIRP[pmr]"
};
#endif /* FT_DEBUG_LEVEL_TRACE */
@@ -1572,7 +1596,7 @@
FT_ULong idx,
FT_F26Dot6 value )
{
- exc->cvt[idx] += value;
+ exc->cvt[idx] = ADD_LONG( exc->cvt[idx], value );
}
@@ -1581,7 +1605,8 @@
FT_ULong idx,
FT_F26Dot6 value )
{
- exc->cvt[idx] += FT_DivFix( value, Current_Ratio( exc ) );
+ exc->cvt[idx] = ADD_LONG( exc->cvt[idx],
+ FT_DivFix( value, Current_Ratio( exc ) ) );
}
@@ -1669,6 +1694,32 @@
}
+ /*
+ *
+ * Apple's TrueType specification at
+ *
+ * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#order
+ *
+ * gives the following order of operations in instructions that move
+ * points.
+ *
+ * - check single width cut-in (MIRP, MDRP)
+ *
+ * - check control value cut-in (MIRP, MIAP)
+ *
+ * - apply engine compensation (MIRP, MDRP)
+ *
+ * - round distance (MIRP, MDRP) or value (MIAP, MDAP)
+ *
+ * - check minimum distance (MIRP,MDRP)
+ *
+ * - move point (MIRP, MDRP, MIAP, MSIRP, MDAP)
+ *
+ * For rounding instructions, engine compensation happens before rounding.
+ *
+ */
+
+
/**************************************************************************
*
* @Function:
@@ -1893,7 +1944,6 @@
zone->org[point].y = ADD_LONG( zone->org[point].y, distance );
}
-
/**************************************************************************
*
* @Function:
@@ -1911,12 +1961,6 @@
*
* @Return:
* The compensated distance.
- *
- * @Note:
- * The TrueType specification says very few 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.
*/
static FT_F26Dot6
Round_None( TT_ExecContext exc,
@@ -6319,7 +6363,7 @@
if ( exc->GS.auto_flip )
{
if ( ( org_dist ^ cvt_dist ) < 0 )
- cvt_dist = -cvt_dist;
+ cvt_dist = NEG_LONG( cvt_dist );
}
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
@@ -7874,7 +7918,7 @@
/* and the first few stack elements also */
FT_TRACE6(( " " ));
FT_TRACE7(( "%06d ", exc->IP ));
- FT_TRACE6(( opcode_name[exc->opcode] + 2 ));
+ FT_TRACE6(( "%s", opcode_name[exc->opcode] + 2 ));
FT_TRACE7(( "%*s", *opcode_name[exc->opcode] == 'A'
? 2
: 12 - ( *opcode_name[exc->opcode] - '0' ),
diff --git a/src/truetype/ttinterp.h b/src/truetype/ttinterp.h
index 172cdd0..0cb1e89 100644
--- a/src/truetype/ttinterp.h
+++ b/src/truetype/ttinterp.h
@@ -4,7 +4,7 @@
*
* TrueType bytecode interpreter (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -352,7 +352,7 @@
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
*
* [3] Beat Stamm describes it in more detail:
- * http://www.beatstamm.com/typography/RTRCh4.htm#Sec12
+ * http://rastertragedy.com/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
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index df6c72a..e4775a5 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -4,7 +4,7 @@
*
* Objects manager (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -43,7 +43,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttobjs
+#define FT_COMPONENT ttobjs
#ifdef TT_USE_BYTECODE_INTERPRETER
@@ -148,7 +148,7 @@
/* This list shall be expanded as we find more of them. */
static FT_Bool
- tt_check_trickyness_family( FT_String* name )
+ tt_check_trickyness_family( const FT_String* name )
{
#define TRICK_NAMES_MAX_CHARACTERS 19
@@ -937,7 +937,22 @@
TT_Face face = (TT_Face)size->root.face;
TT_ExecContext exec;
FT_Error error;
+ FT_UInt i;
+ /* unscaled CVT values are already stored in 26.6 format */
+ FT_Fixed scale = size->ttmetrics.scale >> 6;
+
+
+ /* Scale the cvt values to the new ppem. */
+ /* By default, we use the y ppem value for scaling. */
+ FT_TRACE6(( "CVT values:\n" ));
+ for ( i = 0; i < size->cvt_size; i++ )
+ {
+ size->cvt[i] = FT_MulFix( face->cvt[i], scale );
+ FT_TRACE6(( " %3d: %f (%f)\n",
+ i, face->cvt[i] / 64.0, size->cvt[i] / 64.0 ));
+ }
+ FT_TRACE6(( "\n" ));
exec = size->context;
@@ -1094,11 +1109,17 @@
tt_metrics->rotated = FALSE;
tt_metrics->stretched = FALSE;
- /* set default engine compensation */
- tt_metrics->compensations[0] = 0; /* gray */
- tt_metrics->compensations[1] = 0; /* black */
- tt_metrics->compensations[2] = 0; /* white */
- tt_metrics->compensations[3] = 0; /* reserved */
+ /* Set default engine compensation. Value 3 is not described */
+ /* in the OpenType specification (as of Mai 2019), but Greg */
+ /* says that MS handles it the same as `gray'. */
+ /* */
+ /* The Apple specification says that the compensation for */
+ /* `gray' is always zero. FreeType doesn't do any */
+ /* compensation at all. */
+ tt_metrics->compensations[0] = 0; /* gray */
+ tt_metrics->compensations[1] = 0; /* black */
+ tt_metrics->compensations[2] = 0; /* white */
+ tt_metrics->compensations[3] = 0; /* the same as gray */
}
/* allocate function defs, instruction defs, cvt, and storage area */
@@ -1171,14 +1192,8 @@
if ( size->cvt_ready < 0 )
{
FT_UInt i;
- TT_Face face = (TT_Face)size->root.face;
- /* Scale the cvt values to the new ppem. */
- /* We use by default the y ppem to scale the CVT. */
- for ( i = 0; i < size->cvt_size; i++ )
- size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
-
/* all twilight points are originally zero */
for ( i = 0; i < (FT_UInt)size->twilight.n_points; i++ )
{
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index dcff3f7..9fc654d 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -4,7 +4,7 @@
*
* Objects manager (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttpload.c b/src/truetype/ttpload.c
index f7935cf..bc954c2 100644
--- a/src/truetype/ttpload.c
+++ b/src/truetype/ttpload.c
@@ -4,7 +4,7 @@
*
* TrueType-specific tables loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -38,7 +38,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_ttpload
+#define FT_COMPONENT ttpload
/**************************************************************************
@@ -352,12 +352,12 @@
goto Exit;
{
- FT_Short* cur = face->cvt;
- FT_Short* limit = cur + face->cvt_size;
+ FT_Int32* cur = face->cvt;
+ FT_Int32* limit = cur + face->cvt_size;
for ( ; cur < limit; cur++ )
- *cur = FT_GET_SHORT();
+ *cur = FT_GET_SHORT() * 64;
}
FT_FRAME_EXIT();
diff --git a/src/truetype/ttpload.h b/src/truetype/ttpload.h
index eef2695..022750e 100644
--- a/src/truetype/ttpload.h
+++ b/src/truetype/ttpload.h
@@ -4,7 +4,7 @@
*
* TrueType-specific tables loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttsubpix.c b/src/truetype/ttsubpix.c
index 70e94e2..23a2e5b 100644
--- a/src/truetype/ttsubpix.c
+++ b/src/truetype/ttsubpix.c
@@ -4,7 +4,7 @@
*
* TrueType Subpixel Hinting.
*
- * Copyright 2010-2018 by
+ * Copyright (C) 2010-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttsubpix.h b/src/truetype/ttsubpix.h
index 2e10ea3..4966800 100644
--- a/src/truetype/ttsubpix.h
+++ b/src/truetype/ttsubpix.h
@@ -4,7 +4,7 @@
*
* TrueType Subpixel Hinting.
*
- * Copyright 2010-2018 by
+ * Copyright (C) 2010-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/Jamfile b/src/type1/Jamfile
index b94b7d0..0bcfb2e 100644
--- a/src/type1/Jamfile
+++ b/src/type1/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/type1 Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type1/module.mk b/src/type1/module.mk
index 3fea5cc..2f48c65 100644
--- a/src/type1/module.mk
+++ b/src/type1/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type1/rules.mk b/src/type1/rules.mk
index cb1a142..901169c 100644
--- a/src/type1/rules.mk
+++ b/src/type1/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type1/t1afm.c b/src/type1/t1afm.c
index 0cbef3b..6841184 100644
--- a/src/type1/t1afm.c
+++ b/src/type1/t1afm.c
@@ -4,7 +4,7 @@
*
* AFM support for Type 1 fonts (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -33,7 +33,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1afm
+#define FT_COMPONENT t1afm
FT_LOCAL_DEF( void )
diff --git a/src/type1/t1afm.h b/src/type1/t1afm.h
index d92b78f..a8e6a54 100644
--- a/src/type1/t1afm.h
+++ b/src/type1/t1afm.h
@@ -4,7 +4,7 @@
*
* AFM support for Type 1 fonts (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c
index 4d46e3e..557733d 100644
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -4,7 +4,7 @@
*
* Type 1 driver interface (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,7 +50,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1driver
+#define FT_COMPONENT t1driver
/*
* GLYPH DICT SERVICE
@@ -70,8 +70,8 @@
static FT_UInt
- t1_get_name_index( T1_Face face,
- FT_String* glyph_name )
+ t1_get_name_index( T1_Face face,
+ const FT_String* glyph_name )
{
FT_Int i;
@@ -122,17 +122,19 @@
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
static const FT_Service_MultiMastersRec t1_service_multi_masters =
{
- (FT_Get_MM_Func) T1_Get_Multi_Master, /* get_mm */
- (FT_Set_MM_Design_Func) T1_Set_MM_Design, /* set_mm_design */
- (FT_Set_MM_Blend_Func) T1_Set_MM_Blend, /* set_mm_blend */
- (FT_Get_MM_Blend_Func) T1_Get_MM_Blend, /* get_mm_blend */
- (FT_Get_MM_Var_Func) T1_Get_MM_Var, /* get_mm_var */
- (FT_Set_Var_Design_Func)T1_Set_Var_Design, /* set_var_design */
- (FT_Get_Var_Design_Func)T1_Get_Var_Design, /* get_var_design */
- (FT_Set_Instance_Func) T1_Reset_MM_Blend, /* set_instance */
+ (FT_Get_MM_Func) T1_Get_Multi_Master, /* get_mm */
+ (FT_Set_MM_Design_Func) T1_Set_MM_Design, /* set_mm_design */
+ (FT_Set_MM_Blend_Func) T1_Set_MM_Blend, /* set_mm_blend */
+ (FT_Get_MM_Blend_Func) T1_Get_MM_Blend, /* get_mm_blend */
+ (FT_Get_MM_Var_Func) T1_Get_MM_Var, /* get_mm_var */
+ (FT_Set_Var_Design_Func) T1_Set_Var_Design, /* set_var_design */
+ (FT_Get_Var_Design_Func) T1_Get_Var_Design, /* get_var_design */
+ (FT_Set_Instance_Func) T1_Reset_MM_Blend, /* set_instance */
+ (FT_Set_MM_WeightVector_Func)T1_Set_MM_WeightVector, /* set_mm_weightvector */
+ (FT_Get_MM_WeightVector_Func)T1_Get_MM_WeightVector, /* get_mm_weightvector */
- (FT_Get_Var_Blend_Func) NULL, /* get_var_blend */
- (FT_Done_Blend_Func) T1_Done_Blend /* done_blend */
+ (FT_Get_Var_Blend_Func) NULL, /* get_var_blend */
+ (FT_Done_Blend_Func) T1_Done_Blend /* done_blend */
};
#endif
diff --git a/src/type1/t1driver.h b/src/type1/t1driver.h
index 2dae4bd..206f64a 100644
--- a/src/type1/t1driver.h
+++ b/src/type1/t1driver.h
@@ -4,7 +4,7 @@
*
* High-level Type 1 driver interface (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1errors.h b/src/type1/t1errors.h
index 312f456..b35f67a 100644
--- a/src/type1/t1errors.h
+++ b/src/type1/t1errors.h
@@ -4,7 +4,7 @@
*
* Type 1 error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c
index 87c2a0f..f9b115b 100644
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -4,7 +4,7 @@
*
* Type 1 Glyph Loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -36,7 +36,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1gload
+#define FT_COMPONENT t1gload
static FT_Error
@@ -402,9 +402,9 @@
t1glyph->outline.n_points = 0;
t1glyph->outline.n_contours = 0;
- hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 &&
- ( load_flags & FT_LOAD_NO_HINTING ) == 0 );
- scaled = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 );
+ hinting = FT_BOOL( !( load_flags & FT_LOAD_NO_SCALE ) &&
+ !( load_flags & FT_LOAD_NO_HINTING ) );
+ scaled = FT_BOOL( !( load_flags & FT_LOAD_NO_SCALE ) );
glyph->hint = hinting;
glyph->scaled = scaled;
@@ -416,7 +416,7 @@
t1glyph,
(FT_Byte**)type1->glyph_names,
face->blend,
- FT_BOOL( hinting ),
+ hinting,
FT_LOAD_TARGET_MODE( load_flags ),
T1_Parse_Glyph );
if ( error )
@@ -424,8 +424,7 @@
must_finish_decoder = TRUE;
- decoder.builder.no_recurse = FT_BOOL(
- ( load_flags & FT_LOAD_NO_RECURSE ) != 0 );
+ decoder.builder.no_recurse = FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
decoder.num_subrs = type1->num_subrs;
decoder.subrs = type1->subrs;
@@ -546,7 +545,7 @@
/* First of all, scale the points, if we are not hinting */
- if ( !hinting || ! decoder.builder.hints_funcs )
+ if ( !hinting || !decoder.builder.hints_funcs )
for ( n = cur->n_points; n > 0; n--, vec++ )
{
vec->x = FT_MulFix( vec->x, x_scale );
diff --git a/src/type1/t1gload.h b/src/type1/t1gload.h
index 12ba234..8044036 100644
--- a/src/type1/t1gload.h
+++ b/src/type1/t1gload.h
@@ -4,7 +4,7 @@
*
* Type 1 Glyph Loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index a443571..5cffdfa 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -4,7 +4,7 @@
*
* Type 1 font loader (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -73,7 +73,7 @@
#ifdef FT_CONFIG_OPTION_INCREMENTAL
-#define IS_INCREMENTAL (FT_Bool)( face->root.internal->incremental_interface != 0 )
+#define IS_INCREMENTAL FT_BOOL( face->root.internal->incremental_interface )
#else
#define IS_INCREMENTAL 0
#endif
@@ -86,7 +86,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1load
+#define FT_COMPONENT t1load
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
@@ -384,24 +384,31 @@
for ( n = 0; n < blend->num_designs; n++ )
{
FT_Fixed result = 0x10000L; /* 1.0 fixed */
+ FT_Fixed factor;
for ( m = 0; m < blend->num_axis; m++ )
{
- FT_Fixed factor;
-
-
- /* get current blend axis position; */
/* use a default value if we don't have a coordinate */
- factor = m < num_coords ? coords[m] : 0x8000;
- if ( factor < 0 )
- factor = 0;
- if ( factor > 0x10000L )
- factor = 0x10000L;
+ if ( m >= num_coords )
+ {
+ result >>= 1;
+ continue;
+ }
+ /* get current blend axis position */
+ factor = coords[m];
if ( ( n & ( 1 << m ) ) == 0 )
factor = 0x10000L - factor;
+ if ( factor <= 0 )
+ {
+ result = 0;
+ break;
+ }
+ else if ( factor >= 0x10000L )
+ continue;
+
result = FT_MulFix( result, factor );
}
@@ -474,6 +481,75 @@
FT_LOCAL_DEF( FT_Error )
+ T1_Set_MM_WeightVector( T1_Face face,
+ FT_UInt len,
+ FT_Fixed* weightvector )
+ {
+ PS_Blend blend = face->blend;
+ FT_UInt i, n;
+
+
+ if ( !blend )
+ return FT_THROW( Invalid_Argument );
+
+ if ( !len && !weightvector )
+ {
+ for ( i = 0; i < blend->num_designs; i++ )
+ blend->weight_vector[i] = blend->default_weight_vector[i];
+ }
+ else
+ {
+ if ( !weightvector )
+ return FT_THROW( Invalid_Argument );
+
+ n = len < blend->num_designs ? len : blend->num_designs;
+
+ for ( i = 0; i < n; i++ )
+ blend->weight_vector[i] = weightvector[i];
+
+ for ( ; i < blend->num_designs; i++ )
+ blend->weight_vector[i] = (FT_Fixed)0;
+
+ if ( len )
+ face->root.face_flags |= FT_FACE_FLAG_VARIATION;
+ else
+ face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
+ }
+
+ return FT_Err_Ok;
+ }
+
+
+ FT_LOCAL_DEF( FT_Error )
+ T1_Get_MM_WeightVector( T1_Face face,
+ FT_UInt* len,
+ FT_Fixed* weightvector )
+ {
+ PS_Blend blend = face->blend;
+ FT_UInt i;
+
+
+ if ( !blend )
+ return FT_THROW( Invalid_Argument );
+
+ if ( *len < blend->num_designs )
+ {
+ *len = blend->num_designs;
+ return FT_THROW( Invalid_Argument );
+ }
+
+ for ( i = 0; i < blend->num_designs; i++ )
+ weightvector[i] = blend->weight_vector[i];
+ for ( ; i < *len; i++ )
+ weightvector[i] = (FT_Fixed)0;
+
+ *len = blend->num_designs;
+
+ return FT_Err_Ok;
+ }
+
+
+ FT_LOCAL_DEF( FT_Error )
T1_Set_MM_Design( T1_Face face,
FT_UInt num_coords,
FT_Long* coords )
@@ -1062,16 +1138,22 @@
parse_buildchar( T1_Face face,
T1_Loader loader )
{
- FT_UInt i;
-
-
face->len_buildchar = (FT_UInt)T1_ToFixedArray( &loader->parser,
0, NULL, 0 );
- FT_TRACE4(( " [" ));
- for ( i = 0; i < face->len_buildchar; i++ )
- FT_TRACE4(( " 0" ));
- FT_TRACE4(( "]\n" ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+ {
+ FT_UInt i;
+
+
+ FT_TRACE4(( " [" ));
+ for ( i = 0; i < face->len_buildchar; i++ )
+ FT_TRACE4(( " 0" ));
+
+ FT_TRACE4(( "]\n" ));
+ }
+#endif
+
return;
}
@@ -1425,12 +1507,7 @@
/* We need to `zero' out encoding_table.elements */
for ( n = 0; n < array_size; n++ )
- {
- char* notdef = (char *)".notdef";
-
-
- (void)T1_Add_Table( char_table, n, notdef, 8 );
- }
+ (void)T1_Add_Table( char_table, n, ".notdef", 8 );
/* Now we need to read records of the form */
/* */
@@ -2065,7 +2142,6 @@
/* 0 333 hsbw endchar */
FT_Byte notdef_glyph[] = { 0x8B, 0xF7, 0xE1, 0x0D, 0x0E };
- char* notdef_name = (char *)".notdef";
error = T1_Add_Table( swap_table, 0,
@@ -2080,7 +2156,7 @@
if ( error )
goto Fail;
- error = T1_Add_Table( name_table, 0, notdef_name, 8 );
+ error = T1_Add_Table( name_table, 0, ".notdef", 8 );
if ( error )
goto Fail;
@@ -2551,8 +2627,7 @@
/* we must now build type1.encoding when we have a custom array */
if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY )
{
- FT_Int charcode, idx, min_char, max_char;
- FT_Byte* glyph_name;
+ FT_Int charcode, idx, min_char, max_char;
/* OK, we do the following: for each element in the encoding */
@@ -2566,27 +2641,27 @@
charcode = 0;
for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
{
- FT_Byte* char_name;
+ const FT_String* char_name =
+ (const FT_String*)loader.encoding_table.elements[charcode];
type1->encoding.char_index[charcode] = 0;
- type1->encoding.char_name [charcode] = (char *)".notdef";
+ type1->encoding.char_name [charcode] = ".notdef";
- char_name = loader.encoding_table.elements[charcode];
if ( char_name )
for ( idx = 0; idx < type1->num_glyphs; idx++ )
{
- glyph_name = (FT_Byte*)type1->glyph_names[idx];
- if ( ft_strcmp( (const char*)char_name,
- (const char*)glyph_name ) == 0 )
+ const FT_String* glyph_name = type1->glyph_names[idx];
+
+
+ if ( ft_strcmp( char_name, glyph_name ) == 0 )
{
type1->encoding.char_index[charcode] = (FT_UShort)idx;
- type1->encoding.char_name [charcode] = (char*)glyph_name;
+ type1->encoding.char_name [charcode] = glyph_name;
/* Change min/max encoded char only if glyph name is */
/* not /.notdef */
- if ( ft_strcmp( (const char*)".notdef",
- (const char*)glyph_name ) != 0 )
+ if ( ft_strcmp( ".notdef", glyph_name ) != 0 )
{
if ( charcode < min_char )
min_char = charcode;
diff --git a/src/type1/t1load.h b/src/type1/t1load.h
index 43d5db5..44f835b 100644
--- a/src/type1/t1load.h
+++ b/src/type1/t1load.h
@@ -4,7 +4,7 @@
*
* Type 1 font loader (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -106,6 +106,16 @@
FT_LOCAL( void )
T1_Done_Blend( T1_Face face );
+ FT_LOCAL( FT_Error )
+ T1_Set_MM_WeightVector( T1_Face face,
+ FT_UInt len,
+ FT_Fixed* weightvector );
+
+ FT_LOCAL( FT_Error )
+ T1_Get_MM_WeightVector( T1_Face face,
+ FT_UInt* len,
+ FT_Fixed* weightvector );
+
#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c
index 05f02d5..741388a 100644
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -4,7 +4,7 @@
*
* Type 1 objects manager (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -43,7 +43,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1objs
+#define FT_COMPONENT t1objs
/**************************************************************************
@@ -526,7 +526,8 @@
error = FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );
if ( error &&
- FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+ FT_ERR_NEQ( error, Unimplemented_Feature ) )
goto Exit;
error = FT_Err_Ok;
diff --git a/src/type1/t1objs.h b/src/type1/t1objs.h
index 86fecd9..2161091 100644
--- a/src/type1/t1objs.h
+++ b/src/type1/t1objs.h
@@ -4,7 +4,7 @@
*
* Type 1 objects manager (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1parse.c b/src/type1/t1parse.c
index 9214831..56caeb9 100644
--- a/src/type1/t1parse.c
+++ b/src/type1/t1parse.c
@@ -4,7 +4,7 @@
*
* Type 1 parser (body).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -50,7 +50,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t1parse
+#define FT_COMPONENT t1parse
/*************************************************************************/
diff --git a/src/type1/t1parse.h b/src/type1/t1parse.h
index 5659f4a..dab8fdd 100644
--- a/src/type1/t1parse.h
+++ b/src/type1/t1parse.h
@@ -4,7 +4,7 @@
*
* Type 1 parser (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1tokens.h b/src/type1/t1tokens.h
index 45fc50d..97f2dbe 100644
--- a/src/type1/t1tokens.h
+++ b/src/type1/t1tokens.h
@@ -4,7 +4,7 @@
*
* Type 1 tokenizer (specification).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/type1.c b/src/type1/type1.c
index c2d7922..ce8557a 100644
--- a/src/type1/type1.c
+++ b/src/type1/type1.c
@@ -4,7 +4,7 @@
*
* FreeType Type 1 driver component (body only).
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/Jamfile b/src/type42/Jamfile
index b98de05..6123b35 100644
--- a/src/type42/Jamfile
+++ b/src/type42/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/type42 Jamfile
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type42/module.mk b/src/type42/module.mk
index 3d4732b..9e9d154 100644
--- a/src/type42/module.mk
+++ b/src/type42/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type42/rules.mk b/src/type42/rules.mk
index 9325d38..9d71f53 100644
--- a/src/type42/rules.mk
+++ b/src/type42/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2002-2018 by
+# Copyright (C) 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/type42/t42drivr.c b/src/type42/t42drivr.c
index 1036503..09ad632 100644
--- a/src/type42/t42drivr.c
+++ b/src/type42/t42drivr.c
@@ -4,7 +4,7 @@
*
* High-level Type 42 driver interface (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
@@ -47,7 +47,7 @@
#include FT_SERVICE_POSTSCRIPT_INFO_H
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t42
+#define FT_COMPONENT t42
/*
@@ -69,8 +69,8 @@
static FT_UInt
- t42_get_name_index( T42_Face face,
- FT_String* glyph_name )
+ t42_get_name_index( T42_Face face,
+ const FT_String* glyph_name )
{
FT_Int i;
diff --git a/src/type42/t42drivr.h b/src/type42/t42drivr.h
index ef50ad9..a35ca28 100644
--- a/src/type42/t42drivr.h
+++ b/src/type42/t42drivr.h
@@ -4,7 +4,7 @@
*
* High-level Type 42 driver interface (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42error.h b/src/type42/t42error.h
index 95f9e69..5fb2143 100644
--- a/src/type42/t42error.h
+++ b/src/type42/t42error.h
@@ -4,7 +4,7 @@
*
* Type 42 error codes (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c
index 0325cad..d31bace 100644
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -4,7 +4,7 @@
*
* Type 42 objects manager (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
@@ -25,7 +25,7 @@
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t42
+#define FT_COMPONENT t42
static FT_Error
@@ -98,8 +98,7 @@
/* we must now build type1.encoding when we have a custom array */
if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY )
{
- FT_Int charcode, idx, min_char, max_char;
- FT_Byte* glyph_name;
+ FT_Int charcode, idx, min_char, max_char;
/* OK, we do the following: for each element in the encoding */
@@ -114,27 +113,27 @@
charcode = 0;
for ( ; charcode < loader.encoding_table.max_elems; charcode++ )
{
- FT_Byte* char_name;
+ const FT_String* char_name =
+ (const FT_String*)loader.encoding_table.elements[charcode];
type1->encoding.char_index[charcode] = 0;
- type1->encoding.char_name [charcode] = (char *)".notdef";
+ type1->encoding.char_name [charcode] = ".notdef";
- char_name = loader.encoding_table.elements[charcode];
if ( char_name )
for ( idx = 0; idx < type1->num_glyphs; idx++ )
{
- glyph_name = (FT_Byte*)type1->glyph_names[idx];
- if ( ft_strcmp( (const char*)char_name,
- (const char*)glyph_name ) == 0 )
+ const FT_String* glyph_name = type1->glyph_names[idx];
+
+
+ if ( ft_strcmp( char_name, glyph_name ) == 0 )
{
type1->encoding.char_index[charcode] = (FT_UShort)idx;
- type1->encoding.char_name [charcode] = (char*)glyph_name;
+ type1->encoding.char_name [charcode] = glyph_name;
/* Change min/max encoded char only if glyph name is */
/* not /.notdef */
- if ( ft_strcmp( (const char*)".notdef",
- (const char*)glyph_name ) != 0 )
+ if ( ft_strcmp( ".notdef", glyph_name ) != 0 )
{
if ( charcode < min_char )
min_char = charcode;
@@ -354,7 +353,8 @@
error = FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );
if ( error &&
- FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+ FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+ FT_ERR_NEQ( error, Unimplemented_Feature ) )
goto Exit;
error = FT_Err_Ok;
diff --git a/src/type42/t42objs.h b/src/type42/t42objs.h
index 332a43c..98300cf 100644
--- a/src/type42/t42objs.h
+++ b/src/type42/t42objs.h
@@ -4,7 +4,7 @@
*
* Type 42 objects manager (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42parse.c b/src/type42/t42parse.c
index edd27a8..c47a777 100644
--- a/src/type42/t42parse.c
+++ b/src/type42/t42parse.c
@@ -4,7 +4,7 @@
*
* Type 42 font parser (body).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
@@ -30,7 +30,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_t42
+#define FT_COMPONENT t42
static void
@@ -226,7 +226,8 @@
if ( !parser->in_memory )
FT_FREE( parser->base_dict );
- parser->root.funcs.done( &parser->root );
+ if ( parser->root.funcs.done )
+ parser->root.funcs.done( &parser->root );
}
@@ -373,12 +374,7 @@
/* We need to `zero' out encoding_table.elements */
for ( n = 0; n < count; n++ )
- {
- char* notdef = (char *)".notdef";
-
-
- (void)T1_Add_Table( char_table, n, notdef, 8 );
- }
+ (void)T1_Add_Table( char_table, n, ".notdef", 8 );
/* Now we need to read records of the form */
/* */
@@ -595,6 +591,14 @@
else if ( *cur == '<' )
{
+ if ( string_buf && !allocated )
+ {
+ FT_ERROR(( "t42_parse_sfnts: "
+ "can't handle mixed binary and hex strings\n" ));
+ error = FT_THROW( Invalid_File_Format );
+ goto Fail;
+ }
+
T1_Skip_PS_Token( parser );
if ( parser->root.error )
goto Exit;
@@ -1013,8 +1017,7 @@
}
/* if /.notdef does not occupy index 0, do our magic. */
- if ( ft_strcmp( (const char*)".notdef",
- (const char*)name_table->elements[0] ) )
+ if ( ft_strcmp( ".notdef", (const char*)name_table->elements[0] ) )
{
/* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */
/* name and code entries to swap_table. Then place notdef_index */
diff --git a/src/type42/t42parse.h b/src/type42/t42parse.h
index d9b9a69..0c7bb48 100644
--- a/src/type42/t42parse.h
+++ b/src/type42/t42parse.h
@@ -4,7 +4,7 @@
*
* Type 42 font parser (specification).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42types.h b/src/type42/t42types.h
index 7d0230e..a258144 100644
--- a/src/type42/t42types.h
+++ b/src/type42/t42types.h
@@ -4,7 +4,7 @@
*
* Type 42 font data types (specification only).
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/type42.c b/src/type42/type42.c
index 187c5ed..0cb7b77 100644
--- a/src/type42/type42.c
+++ b/src/type42/type42.c
@@ -4,7 +4,7 @@
*
* FreeType Type 42 driver component.
*
- * Copyright 2002-2018 by
+ * Copyright (C) 2002-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/winfonts/Jamfile b/src/winfonts/Jamfile
index 4385e3b..4b92226 100644
--- a/src/winfonts/Jamfile
+++ b/src/winfonts/Jamfile
@@ -1,6 +1,6 @@
# FreeType 2 src/winfonts Jamfile
#
-# Copyright 2001-2018 by
+# Copyright (C) 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/winfonts/fnterrs.h b/src/winfonts/fnterrs.h
index 08fceb0..af29307 100644
--- a/src/winfonts/fnterrs.h
+++ b/src/winfonts/fnterrs.h
@@ -4,7 +4,7 @@
*
* Win FNT/FON error codes (specification only).
*
- * Copyright 2001-2018 by
+ * Copyright (C) 2001-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/winfonts/module.mk b/src/winfonts/module.mk
index 13f9077..82fb015 100644
--- a/src/winfonts/module.mk
+++ b/src/winfonts/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/winfonts/rules.mk b/src/winfonts/rules.mk
index d694d1a..998d49b 100644
--- a/src/winfonts/rules.mk
+++ b/src/winfonts/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2018 by
+# Copyright (C) 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c
index 70fc827..2d771be 100644
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -4,7 +4,7 @@
*
* FreeType font driver for Windows FNT/FON files
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
* Copyright 2003 Huw D M Davies for Codeweavers
* Copyright 2007 Dmitry Timoshkov for Codeweavers
@@ -37,7 +37,7 @@
* messages during execution.
*/
#undef FT_COMPONENT
-#define FT_COMPONENT trace_winfnt
+#define FT_COMPONENT winfnt
static const FT_Frame_Field winmz_header_fields[] =
diff --git a/src/winfonts/winfnt.h b/src/winfonts/winfnt.h
index 0161939..b628ad4 100644
--- a/src/winfonts/winfnt.h
+++ b/src/winfonts/winfnt.h
@@ -4,7 +4,7 @@
*
* FreeType font driver for Windows FNT/FON files
*
- * Copyright 1996-2018 by
+ * Copyright (C) 1996-2019 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
* Copyright 2007 Dmitry Timoshkov for Codeweavers
*
@@ -150,9 +150,6 @@
FT_FaceRec root;
FNT_Font font;
- FT_CharMap charmap_handle;
- FT_CharMapRec charmap; /* a single charmap per face */
-
} FNT_FaceRec, *FNT_Face;
diff --git a/vms_make.com b/vms_make.com
index 7b8a49b..b5da5f8 100644
--- a/vms_make.com
+++ b/vms_make.com
@@ -1,6 +1,6 @@
$! make FreeType 2 under OpenVMS
$!
-$! Copyright 2003-2018 by
+$! Copyright (C) 2003-2019 by
$! David Turner, Robert Wilhelm, and Werner Lemberg.
$!
$! This file is part of the FreeType project, and may only be used, modified,
@@ -47,13 +47,13 @@
$! Setup variables holding "config" information
$!
$ Make = ""
-$ ccopt = "/name=as_is/float=ieee"
+$ ccopt = "/name=(as_is,short)/float=ieee"
$ lopts = ""
$ dnsrl = ""
$ aconf_in_file = "config.hin"
$ name = "Freetype2"
-$ mapfile = name + ".map"
-$ optfile = name + ".opt"
+$ mapfile = name + ".map"
+$ optfile = name + ".opt"
$ s_case = false
$ liblist = ""
$!
@@ -113,7 +113,14 @@
$ If f$getsyi("HW_MODEL") .gt. 1024
$ Then
$ write sys$output "Creating freetype2shr.exe"
-$ call anal_obj_axp 'optfile' _link.opt
+$ If f$getsyi("HW_MODEL") .le. 2048
+$ Then
+$ call anal_obj_axp 'optfile' _link.opt
+$ Else
+$ copy _link.opt_ia64 _link.opt
+$ close libsf
+$ copy libs.opt_ia64 libs.opt
+$ endif
$ open/append optf 'optfile'
$ if s_case then WRITE optf "case_sensitive=YES"
$ close optf
@@ -157,7 +164,7 @@
#
-# Copyright 2001 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -172,15 +179,16 @@
all :
- define freetype [--.include]
- define psaux [-.psaux]
+ define config [--.include.freetype.config]
+ define internal [--.include.freetype.internal]
define autofit [-.autofit]
- define autohint [-.autohint]
define base [-.base]
define cache [-.cache]
define cff [-.cff]
define cid [-.cid]
+ define freetype [--.include.freetype]
define pcf [-.pcf]
+ define psaux [-.psaux]
define psnames [-.psnames]
define raster [-.raster]
define sfnt [-.sfnt]
@@ -191,9 +199,7 @@
if f$search("lib.dir") .eqs. "" then create/directory [.lib]
set default [.builds.vms]
$(MMS)$(MMSQUALIFIERS)
-# set default [--.src.autofit]
-# $(MMS)$(MMSQUALIFIERS)
- set default [--.src.autohint]
+ set default [--.src.autofit]
$(MMS)$(MMSQUALIFIERS)
set default [-.base]
$(MMS)$(MMSQUALIFIERS)
@@ -205,8 +211,12 @@
$(MMS)$(MMSQUALIFIERS)
set default [-.cid]
$(MMS)$(MMSQUALIFIERS)
+ set default [-.gxvalid]
+ $(MMS)$(MMSQUALIFIERS)
set default [-.gzip]
$(MMS)$(MMSQUALIFIERS)
+ set default [-.bzip2]
+ $(MMS)$(MMSQUALIFIERS)
set default [-.lzw]
$(MMS)$(MMSQUALIFIERS)
set default [-.otvalid]
@@ -250,7 +260,7 @@
#
-# Copyright 2001 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -260,7 +270,7 @@
# fully.
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([],[--.include],[--.src.base])
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
OBJS=ftsystem.obj
@@ -282,7 +292,7 @@
#
-# Copyright 2002 by
+# Copyright 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -293,39 +303,7 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.autofit])
-OBJS=afangles.obj,afhints.obj,aflatin.obj
-
-all : $(OBJS)
- library [--.lib]freetype.olb $(OBJS)
-
-# EOF
-$ eod
-$ close out
-$ write sys$output "... [.src.autohint] directory"
-$ create [.src.autohint]descrip.mms
-$ open/append out [.src.autohint]descrip.mms
-$ copy sys$input: out
-$ deck
-#
-# FreeType 2 auto-hinter module compilation rules for VMS
-#
-
-
-# Copyright 2001, 2002 Catharon Productions Inc.
-#
-# This file is part of the Catharon Typography Project and shall only
-# be used, modified, and distributed under the terms of the Catharon
-# Open Source License that should come with this file under the name
-# `CatharonLicense.txt'. By continuing to use, modify, or distribute
-# this file you indicate that you have read the license and
-# understand and accept it fully.
-#
-# Note that this license is compatible with the FreeType license.
-
-
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/incl=([--.include],[--.src.autohint])
-
-OBJS=autohint.obj
+OBJS=autofit.obj
all : $(OBJS)
library [--.lib]freetype.olb $(OBJS)
@@ -343,7 +321,7 @@
#
-# Copyright 2001, 2003 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -355,9 +333,22 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.builds.vms],[--.include],[--.src.base])
-OBJS=ftbase.obj,ftinit.obj,ftglyph.obj,ftdebug.obj,ftbdf.obj,ftmm.obj,\
- fttype1.obj,ftpfr.obj,ftstroke.obj,ftwinfnt.obj,ftbbox.obj,\
- ftbitmap.obj,ftgasp.obj
+OBJS=ftbase.obj,\
+ ftbbox.obj,\
+ ftbdf.obj,\
+ ftbitmap.obj,\
+ ftcid.obj,\
+ ftdebug.obj,\
+ ftfstype.obj,\
+ ftgasp.obj,\
+ ftglyph.obj,\
+ ftinit.obj,\
+ ftmm.obj,\
+ ftpfr.obj,\
+ ftstroke.obj,\
+ ftsynth.obj,\
+ fttype1.obj,\
+ ftwinfnt.obj
all : $(OBJS)
library [--.lib]freetype.olb $(OBJS)
@@ -375,7 +366,7 @@
#
-# Copyright 2002 by
+# Copyright 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -405,7 +396,7 @@
#
-# Copyright 2001, 2002, 2003, 2004 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -415,16 +406,13 @@
# fully.
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cache])
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cache])/nowarn
OBJS=ftcache.obj
all : $(OBJS)
library [--.lib]freetype.olb $(OBJS)
-ftcache.obj : ftcache.c ftcbasic.c ftccache.c ftccmap.c ftcglyph.c ftcimage.c \
- ftcmanag.c ftcmru.c ftcsbits.c
-
# EOF
$ eod
$ close out
@@ -438,7 +426,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -468,7 +456,7 @@
#
-# Copyright 2001 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -488,6 +476,36 @@
# EOF
$ eod
$ close out
+$ write sys$output "... [.src.gxvalid] directory"
+$ create [.src.gxvalid]descrip.mms
+$ open/append out [.src.gxvalid]descrip.mms
+$ copy sys$input: out
+$ deck
+#
+# FreeType 2 TrueTypeGX/AAT validation driver configuration rules for VMS
+#
+
+
+# Copyright 2004-2019 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.
+
+
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.gxvalid])
+
+OBJS=gxvalid.obj
+
+all : $(OBJS)
+ library [--.lib]freetype.olb $(OBJS)
+
+# EOF
+$ eod
+$ close out
$ write sys$output "... [.src.gzip] directory"
$ create [.src.gzip]descrip.mms
$ open/append out [.src.gzip]descrip.mms
@@ -498,7 +516,7 @@
#
-# Copyright 2002 by
+# Copyright 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -522,6 +540,42 @@
# EOF
$ eod
$ close out
+$ write sys$output "... [.src.bzip2] directory"
+$ create [.src.bzip2]descrip.mms
+$ open/append out [.src.bzip2]descrip.mms
+$ copy sys$input: out
+$ deck
+#
+# FreeType 2 BZIP2 support compilation rules for VMS
+#
+
+
+# Copyright 2010-2019 by
+# Joel Klinghed.
+#
+# based on `src/lzw/rules.mk'
+#
+# 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.
+$EOD
+$ if libincs .nes. "" then write out "LIBINCS = ", libincs - ",", ","
+$ write out "COMP_FLAGS = ", ccopt
+$ copy sys$input: out
+$ deck
+
+CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.bzip2])
+
+OBJS=ftbzip2.obj
+
+all : $(OBJS)
+ library [--.lib]freetype.olb $(OBJS)
+
+# EOF
+$ eod
+$ close out
$ write sys$output "... [.src.lzw] directory"
$ create [.src.lzw]descrip.mms
$ open/append out [.src.lzw]descrip.mms
@@ -532,7 +586,7 @@
#
-# Copyright 2004 by
+# Copyright 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -556,38 +610,6 @@
# EOF
$ eod
$ close out
-$ write sys$output "... [.src.otlayout] directory"
-$ create [.src.otlayout]descrip.mms
-$ open/append out [.src.otlayout]descrip.mms
-$ copy sys$input: out
-$ deck
-#
-# FreeType 2 OT layout compilation rules for VMS
-#
-
-
-# Copyright 2004 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT. By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-
-CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.otlayout])
-
-OBJS=otlbase.obj,otlcommn.obj,otlgdef.obj,otlgpos.obj,otlgsub.obj,\
- otljstf.obj,otlparse.obj
-
-all : $(OBJS)
- library [--.lib]freetype.olb $(OBJS)
-
-
-# EOF
-$ eod
-$ close out
$ write sys$output "... [.src.otvalid] directory"
$ create [.src.otvalid]descrip.mms
$ open/append out [.src.otvalid]descrip.mms
@@ -598,7 +620,7 @@
#
-# Copyright 2004 by
+# Copyright 2004-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -670,7 +692,7 @@
#
-# Copyright 2002 by
+# Copyright 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -700,7 +722,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -730,7 +752,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -756,11 +778,11 @@
$ copy sys$input: out
$ deck
#
-# FreeType 2 PSNames driver compilation rules for VMS
+# FreeType 2 psnames driver compilation rules for VMS
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -790,7 +812,7 @@
#
-# Copyright 2001 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -820,7 +842,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -850,7 +872,7 @@
#
-# Copyright 2001 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -880,7 +902,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -910,7 +932,7 @@
#
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -927,8 +949,6 @@
all : $(OBJS)
library [--.lib]freetype.olb $(OBJS)
-type1.obj : type1.c t1parse.c t1load.c t1objs.c t1driver.c t1gload.c t1afm.c
-
# EOF
$ eod
$ close out
@@ -942,7 +962,7 @@
#
-# Copyright 2002 by
+# Copyright 2002-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -972,7 +992,7 @@
#
-# Copyright 2001, 2002 by
+# Copyright 2001-2019 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -1103,7 +1123,7 @@
$!
$! Init symbols used to hold CPP definitions and include path
$!
-$ libdefs = ""
+$ libdefs = "FT2_BUILD_LIBRARY,FT_CONFIG_OPTION_OLD_INTERNALS,"
$ libincs = ""
$!
$! Open data file with location of libraries