include


Log

Author Commit Date CI Message
Werner Lemberg ce43d808 2020-12-01T12:20:43 [base] Implement vertical alignment of log printing. Based on a patch by Priyesh. * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH): New macro. * src/base/ftdebug.c, builds/windows/ftdebug.c (ft_log_handler): Print logs after a fixed width to handle different lengths of `FT_COMPONENT` entries. Use `ft_strrchr` to check for final newline character.
Priyesh Kumar 2a46d1f0 2020-08-27T13:01:05 [base] Add public API to change log handling function. * include/freetype/ftlogging.h (FT_Custom_Log_Handler): New function typedef to store the custom callback logging function. (FT_Set_Log_Handler, FT_Set_Default_Log_Handler): New functions to set and reset custom log handler. * include/freetype/internal/ftdebug.h (custom_output_handler): New variable to support a custom callback logging function. (FT_Logging_Callback): A new function typedef to print log using custom callback logging function, which is set using `FT_Set_Log_Handler`. (FT_Log): Use it. * src/base/ftdebug.c (FT_Set_Log_Handler, FT_Set_Default_Log_Handler, FT_Logging_Callback): Add function definitions.
Priyesh Kumar 5fea76cf 2020-08-26T21:30:35 [base] Add public API to change the levels of tracing components. * include/freetype/ftlogging.h: New header file. * include/freetype/internal/ftdebug.h [FT_LOGGING]: Include `ftlogging.h`. * src/base/ftdebug.c (ft_custom_trace_level): New variable. (ft_debug_init): Update to support change of levels of tracing components of FreeType at run-time. (FT_Trace_Set_Level): New function to change the levels of tracing components at run-time. (FT_Trace_Set_Default_Level): New function to reset the levels of tracing components back to default.
Priyesh Kumar d00cbc3f 2020-08-26T19:44:01 [base] Updates to print timestamp and name of `FT_COMPONENT` in logs. * include/freetype/internal/ftdebug.h (FT_LOGGING_TAG, FT_LOGGING_TAG_): New macros to resolve the value of `FT_COMPONENT' into a string. (ft_add_tag, ft_remove_tag): New functions to add and remove dlg tags. * src/base/ftdebug.c: Add new variables to control the logging of timestamp and name of `FT_COMPONENT` along with actual logs. (ft_add_tag, ft_remove_tag): Add function definitions. (ft_log_handler): Updates to print timestamp and name of `FT_COMPONENT`. (ft_debug_init) [FT_LOGGING]: Users can now control the logging of timestamp and name of `FT_COMPONENT` by adding tags in the `FT2_DEBUG` environment variable.
Priyesh Kumar d46bada2 2020-08-26T17:41:43 [base] Add functions and variables to print logs to a file. * include/freetype/internal/ftdebug.h: Added dlg's header files. (FT_LOG): New macro to redirect trace logs to dlg's API's whenever `FT_LOGGING' is defined. (ft_logging_init, ft_logging_deinit): New functions to handle initialization and uninitialization of logging related variables. (ft_log_handler): New function to handle logs of FreeType. * src/base/ftdebug.c: Add necessary logging related variables. (ft_logging_init, ft_logging_deinit, ft_log_handler): Add function definitions. * src/base/ftinit.c (FT_Init_FreeType) [FT_LOGGING]: Call `ft_logging_init`. (FT_Done_FreeType) [FT_LOGGING]: Call `ft_logging_deinit`. * src/base/ftobjs.c (FT_New_Library): Call `ft_debug_init` only if `FT_LOGGING` is not defined.
Priyesh Kumar 34b1c897 2020-08-26T12:27:52 [builds] Necessary changes to make 'dlg' compile. * autogen.sh (copy_submodule_files): New script to copy all the necessary source and include files from `submodules/dlg` to `src/dlg`. * src/dlg/dlgwrap.c: New wrapper file for `src/dlg.c`. It enables the build of 'dlg' if the `FT_LOGGING` macro is defined. * src/dlg/rules.mk: New sub-Makefile. * builds/freetype.mk (DLG_DIR): New variable to include the header files of the 'dlg' library. (INCLUDES): Add `DLG_DIR`. (FT_CFLAGS): Add `-std=c99' flag. Include `src/dlg/rules.mk` file to build 'dlg' library. (OBJ_S, OBJ_M): Add `DLG_OBJS_M` and `DLG_OBJS_S`. * builds/toplevel.mk: For builds directly from the git repository we need to copy files from `submodule/dlg` to `src/dlg`. * include/freetype/config/ftoption.h, devel/ftoption.h (FT_LOGGING): New macro to enable or disable the logging facility in FreeType.
Jan Alexander Steffens (heftig) 22bb0660 2020-11-03T22:30:30 Fix documentation build. The empty line after `* @description:` caused the refdoc build to fail, see https://github.com/freetype/docwriter/issues/77
Alexei Podtelezhnikov b049cade 2020-11-02T14:26:44 Mention external modules.
Werner Lemberg 6fca2e5b 2020-10-31T06:52:18 Minor clean-ups of last commit.
Alexei Podtelezhnikov 681c7e23 2020-10-30T23:03:12 Better scan converter documentation.
Alexei Podtelezhnikov 5cbd052d 2020-10-30T13:53:17 Add preamble.
Werner Lemberg e9a7015e 2020-10-30T08:27:55 Avoid non-ASCII character in public header file.
Werner Lemberg 101e62a2 2020-10-30T08:04:01 ftimage.h: Improve description of `FT_Span`. From Piotr Grochowski <piotrunio-2004@wp.pl>.
Werner Lemberg 6a2b3e40 2020-10-20T07:10:27 * Version 2.10.4 released. ========================== Tag sources with `VER-2-10-4'. * docs/VERSION.TXT: Add entry for version 2.10.4. * docs/CHANGES: Updated. * README, src/base/ftver.rc, builds/windows/vc2010/index.html, builds/windows/visualc/index.html, builds/windows/visualce/index.html, builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, docs/freetype-config.1: s/2.10.3/2.10.4/, s/2103/2104/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. * builds/unix/configure.raw (version_info): Set to 23:4:17. * CMakeLists.txt (VERSION_PATCH): Set to 4.
Alexei Podtelezhnikov 82d33155 2020-10-11T21:56:50 Unnest markdown.
Werner Lemberg 337670af 2020-10-10T18:14:57 * Version 2.10.3 released. ========================== Tag sources with `VER-2-10-3'. * docs/VERSION.TXT: Add entry for version 2.10.3. * README, src/base/ftver.rc, builds/windows/vc2010/index.html, builds/windows/visualc/index.html, builds/windows/visualce/index.html, builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, docs/freetype-config.1: s/2.10.2/2.10.3/, s/2102/2103/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. * builds/unix/configure.raw (version_info): Set to 23:3:17. * CMakeLists.txt (VERSION_PATCH): Set to 3.
Werner Lemberg c9f588be 2020-10-10T12:48:18 Document changes to last release.
Alexei Podtelezhnikov ab6a21b7 2020-09-18T22:32:20 Documentation updates.
Alexei Podtelezhnikov d8228a00 2020-08-28T22:28:47 Improve FT_Outline_Render docs.
Alexei Podtelezhnikov f9f6adb6 2020-08-05T08:24:15 [truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND. For glyphs with OVERLAP_SIMPLE or OVERLAP_COMPOUND, set FT_OUTLINE_OVERLAP to render them with direct oversampling, which mitigates artifacts (see 3bb512bc9f62). * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Redefine to rhyme with OVERLAP_SIMPLE. * src/base/ftgloadr.c (FT_GlyphLoader_Rewind): Reset outline flags. * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Retain OVERLAP_SIMPLE. (load_truetype_glyph): Retain OVERLAP_COMPOUND.
Werner Lemberg 8b360132 2020-08-04T10:48:42 Minor typos, formatting.
Alexei Podtelezhnikov 986a340d 2020-07-28T23:20:59 Unbreak compilation.
Alexei Podtelezhnikov f76f7fde 2020-07-28T23:13:51 Hide internal functions with SunPro. * include/freetype/internal/compiler-macros.h (FT_INTERNAL_FUNCTION_ATTRIBUTE) <__SUNPRO_C>: Define as __hidden.
Anuj Verma 3273521f 2020-07-28T18:34:37 Fix static compilation with Visual C. * include/freetype/internal/compiler-macros.h (FT_INTERNAL_FUNCTION_ATTRIBUTE) <_WIN32>: Define as empty.
Werner Lemberg fffc303a 2020-07-28T18:28:10 Formatting, improving comments.
Werner Lemberg b7c467b6 2020-07-15T09:15:25 [doc] Stem darkening is off by default for CFF driver. Bug reported by Ishi Tatsuyuki <ishitatsuyuki@gmail.com>.
David Turner 5fe7c044 2020-07-14T16:12:29 freetype.h (FT_Set_Transform): Minor documentation update. In order to mention the limited accuracy of `FT_Matrix' coefficients and encourage client code to perform the transform themselves with floating point values instead.
Ben Wagner b1286b32 2020-07-09T14:31:00 Document `FT_Face_Rec_::box' with variable fonts (#54969). As pointed out in the "Note:" in the section of https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#variation-data-tables-and-miscellaneous-requirements ... the xMin, yMin, xMax, yMax, macStyle and lowestRecPPEM fields in the font header ('head') table are not supported by variation data and should only be used in relation to the default instance for the font. Document that `FT_Face_Rec_::box' does not vary with OpenType variable fonts.
Werner Lemberg 96fb73ef 2020-07-07T16:58:14 Fix clang warnings. * include/freetype/internal/autohint.h (FT_DECLARE_AUTOHINTER_INTERFACE): New macro. * src/autofit/afmodule.h: Use it to declare `af_autofitter_interface'. * include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro. * src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class' and `ft_outline_glyph_class'. * src/base/ftglyph.c: Include `ftbase.h'. * src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size'. * src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result'. * src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE'. * src/psaux/psauxmod.h: Declare `afm_parser_funcs', `t1_cmap_classes', `cff_decoder_funcs', and `psaux_module_class'. * src/pshinter/pshmod.c: Include `pshmod.h'. * src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign conversion. (compute_ULong_sum): Fix return type. Fix implicit sign conversion. (store_points): Fix type of `last_flag', `repeat_count', and `flag'. Use casts to avoid warnings. (reconstruct_glyf): Fix implicit sign conversion. Use cast to avoid warning. (get_x_mins): Fix implicit sign conversion. * src/sfnt/ttcmap.c: Undef `TTCMAPCITEM'. * src/sfnt/ttcmap.h: Define `TTCMAPCITEM' and include `ttcmapc.h' to declare cmap classes. * src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast. * src/truetype/ttinterp.c (Ins_MIAP): Fix typo.
David Turner 0f35b042 2020-07-06T10:56:36 [build] Really fix multi and C++ builds. The following builds were still failing due to previous changes: make multi make multi CC="c++" make CC="c++" This patch fixes the issues, which were missing includes to get the right macro definitions in multi-build mode. Also, `FT_UNUSED' is actually used by third-party code, so move it back to `public-macros.h' to avoid breaking it. * include/freetype/config/public-macros.h (FT_EXPORT): Remove special definition for C++. (FT_UNUSED): Define here instead of... * include/freetype/config/compiler-macros.h: ... here. (FT_FUNCTION_DECLARATION): Remove special definition for C++. (FT_LOCAL_ARRAY_DEF): Fix definition. * src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h, src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'.
David Turner cb4a943b 2020-07-06T10:56:36 [build] Fix multi and C++ builds. The following builds were failing due to previous changes: make multi make multi CC="c++" * include/freetype/config/ftconfig.h: Remove `FT_END_HEADER'. * include/freetype/config/ftheader.h (FT_BEGIN_HEADER, FT_END_HEADER): Protect against redefinition. * src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h, src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h, src/sfnt/woff2tags.h: Include `compiler-macros.h'. * src/sfnt/woff2tags.c: Include `woff2tags.h'.
David Turner b0667d2d 2020-07-02T11:20:10 [build] Improve visibility support of library function names. * include/freetype/config/public-macros.h (FT_PUBLIC_FUNCTION_ATTRIBUTE): New macro to tag functions as public (and thus exportable). (FT_EXPORT): Use it. * include/freetype/config/compiler-macros.h (FT_INTERNAL_FUNCTION_ATTRIBUTE): New macro to tag functions as internal to the library (and thus hidden). Note that on ELF systems, all internal functions have hidden visibility, which avoids the need to enforce this when invoking the compiler (e.g., with an option like `-fvisibility=hidden'). (FT_FUNCTION_DECLARATION, FT_FUNCTION_DEFINITION): New base macros to deal with C and C++ linkage issues at the same time. (FT_LOCAL, FT_LOCAL_DEF, FT_LOCAL_ARRAY, FT_LOCAL_ARRAY_DEF, FT_BASE, FT_BASE_DEF, FT_EXPORT_VAR, FT_BASE_CALLBACK, FT_BASE_CALLBACK_DEF): Redefined using new macros.
David Turner bb66c8d8 2020-07-02T11:09:57 [build] Split off more stuff from `ftconfig.h'. * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, include/freetype/config/ftconfig.h: Split off macro definitions required by the FreeType API headers to... * include/freetype/config/public-macros.h: ...this new file. * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, include/freetype/config/ftconfig.h: Split off macro definitions used by the library but not to be exposed to clients to... * include/freetype/config/compiler-macros.h: ...this new file. * include/freetype/internal/*.h, src/raster/ftraster.h: Include `compiler-macros.h' where needed.
David Turner 0322efb5 2020-07-02T10:31:28 [build] Move mac support code to `mac-support.h'. * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, include/freetype/config/ftconfig.h: Split off mac-specific stuff to... * include/freetype/config/mac-support.h: ...this new file. * CMakeLists.txt, builds/unix/configure.raw: Remove `/undef -> #undef' string replacement; the affected code is no longer part of the `ftconfig.h' template.
David Turner bd7251ac 2020-07-02T10:24:20 [build] Put integer type definitions into `integer-types.h'. Refactor some of the `ftconfig.h' headers and template to move the definition of the FreeType integer types (e.g., `FT_Int16') to a common header file `freetype/config/integer-types.h'. * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, include/freetype/config/ftconfig.h: Split off integer type definition stuff to... * include/freetype/config/integer-types.h: ...this new file. * builds/unix/ftconfig.h.in: Control the definition of `FT_SIZEOF_INT' and `FT_SIZEOF_LONG' with macro `FT_USE_AUTOCONF_SIZEOF_TYPES'. If these are not defined, auto detection happens in `integer-types.h' as usual based on `INTXX_MAX' values. Otherwise the autoconf-detected values are used. * builds/unix/configure.raw (CPPFLAGS): Don't include path to `config' directory. Instead, ... (FT_CONFIG_STANDARD_LIBRARY_H): Use complete path.
Alexei Podtelezhnikov 3bb512bc 2020-07-03T22:29:34 [smooth] Introduce direct oversampling for overlaps. This implements oversampling to metigate artifacts in pixels partially covered by overlapping contours. It turns out that the 4x4 oversampling is sufficient but, at least, quadruples the rendering time. The outline has to set FT_OUTLINE_OVERLAP to use this method. * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag. * src/smooth/ftsmooth.c (ft_smooth_render): Check it to... (ft_smooth_raster_overlap): ... inflate outline and set up direct rendering for oversampling with... (ft_smooth_overlap_spans): ... new span function that integrates them.
Alexei Podtelezhnikov de088b1d 2020-06-19T22:46:30 Simplify unused macro.
Werner Lemberg 16586859 2020-06-13T21:15:45 Remove redundant inclusion of `ft2build.h'. * */*: Remove `#include <ft2build.h>' where possible. * include/freetype/freetype.h: Remove cpp error about missing inclusion of `ft2build.h'.
David Turner e1339133 2020-06-08T13:31:55 Make macros for header file names optional. We no longer have to take care of the 8.3 file name limit; this allows us (a) to introduce longer, meaningful file names, and (b) to avoid macro names in `#include' lines altogether since some compilers (most notably Visual C++) doesn't support this properly. */*: Replace #include FOO_H with #include <freetype/foo.h> or something similar. Also update the documentation.
David Turner 4eee1340 2020-05-18T09:16:12 Remove Jamfile files from the tree. These have not been used in a very, very long time, so better remove them. A corresponding patch will be submitted to the `freetype2-demos' repository. * src/Jamfile, src/*/Jamfile, Jamrules: Delete.
Alexei Podtelezhnikov 3f70e6d2 2020-05-12T00:38:46 [smooth] Turn on LCD filtering during FreeType initialization. * src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering. * include/freetype/ftlcdfil.h: Document it, remove patent warnings. * include/freetype/freetype.h (FT_Render_Mode): Updated. * include/freetype/config/ftoption.h, devel/ftoption.h [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents.
Alexei Podtelezhnikov 652f8863 2020-05-11T23:30:37 [smooth] Stop using dedicated LCD modules and classes. The LCD modules were never truly independent. They mostly served as a way to disable patented LCD rendering, which is no longer necessary. The `smooth' module now handles LCD modes as well. * src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class. ft_smooth_lcdv_renderer_class): Deleted. (ft_render_smooth): Reworked from `ft_render_smooth_generic'. * src/smooth/ftsmooth.h: Remove dedicated LCD classes. * src/smooth/module.mk: Remove dedicated LCD modules. * include/freetype/config/ftmodule.h: Ditto. * builds/amiga/include/config/ftmodule.h: Ditto. * include/freetype/ftmodapi.h: Do not mention LCD modules.
Werner Lemberg 132f19b7 2020-05-05T20:14:14 * Version 2.10.2 released. ========================== Tag sources with `VER-2-10-2'. * docs/VERSION.TXT: Add entry for version 2.10.2. * README, Jamfile (RefDoc), src/base/ftver.rc, builds/windows/vc2010/index.html, builds/windows/visualc/index.html, builds/windows/visualce/index.html, builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, docs/freetype-config.1: s/2.10.1/2.10.2/, s/2101/2102/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. * builds/unix/configure.raw (version_info): Set to 23:2:17. * CMakeLists.txt (VERSION_PATCH): Set to 2. * docs/CHANGES: Updated.
Werner Lemberg 141da028 2020-02-27T09:49:06 Make `FT_HAS_*' and `FT_IS_*' really return true (#57906). * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it.
Werner Lemberg e5038be7 2020-01-19T17:05:19 Update all copyright notices.
Werner Lemberg 26d0f579 2019-11-23T10:28:37 * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro. Use this for `base + offset' pointer calculations where `base' can be NULL (triggering a sanitizer warning even if the resulting pointer gets never dereferenced since it is undefined behaviour in C). Suggested by Ben Wagner.
Filip Filmar 0a3d2bb9 2019-10-20T02:05:02 [doc] FT_Open_Args: Clarify the ownership of `pathname'. Don't expect the function to deallocate the buffer. This may be obvious in C, but it is not so obvious in FFI bindings for FreeType 2.
Werner Lemberg 5a1a79c0 2019-10-08T11:12:18 [woff2] Fix SFNT table checks. Also reduce number of SFNT table lookups. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18065 * include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields `glyf_table', `loca_table', and `head_table'. * src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature. Use table pointers in `info' parameter. (get_x_mins): Check `maxp_table' Use table pointers in `info' parameter. (reconstruct_font): Use and set table pointers in `info' parameter. Fix check for `glyf' and `loca' tables. Update call to `reconstruct_glyf'. (woff2_open_font): Updated.
Werner Lemberg 0fcf486e 2019-10-06T21:12:42 Improve memory debugging. * include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use `FT_DEBUG_INNER' to set source code file name and line. * src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of tracing message.
Alexei Podtelezhnikov b39576f9 2019-09-27T19:18:49 * src/base/ftstroke.c (ft_stroker_cap): Speed up caps.
Alexei Podtelezhnikov 432efa25 2019-09-25T21:50:16 * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter. * include/freetype/ftstroke.h: Wordsmith miter docs.
Avi Halachmi (:avih) cc17f852 2019-09-15T04:30:18 [cmake] Don't fail if brotli is missing (#56894). The libs which cmake controls are commented out at include/freetype/config/ftoption.h and cmake un-comment each enabled library, but the brotli option was not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained defined even if brotli was missing/disabled/etc. Comment it such that cmake can control it, which means leaving it undefined if brotli is missing. * include/freetype/config/ftoption.h: Fix typo.
Werner Lemberg 87f52252 2019-09-05T12:14:03 Fix handling of `AF_CONFIG_OPTION_INDIC'. * devel/ftoption.h, include/freetype/config/ftoption.h: `AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.
Werner Lemberg 60c52f0e 2019-08-27T10:08:01 [woff2] Formatting; some comments.
Nikhil Ramakrishnan d2681a49 2019-08-21T20:21:02 [woff2] More formatting and documentation. * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff2.c: Implement formatting changes suggested as https://lists.nongnu.org/archive/html/freetype-devel/2019-08/msg00052.html
Nikhil Ramakrishnan 1e020768 2019-07-18T01:50:16 [woff2] Avoid too many calls to `FT_REALLOC'. We do this by using `totalSfntSize' as an initial reference, and extending the buffer when required. This reduces rendering time considerably. * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add `totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'. * src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep track of and update total size of stream. (WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly. (pad4, store_loca, reconstruct_glyf, reconstruct_hmtx, reconstruct_font): Update parameters to accept `sfnt_size'. (woff2_open_font): Add variable `sfnt_size'. Use WOFF2 header field `totalSfntSize' as initial reference (if value makes sense) and allocate `totalSfntSize' bytes for the sfnt stream. `write_buf' handles reallocation if and when required. Also resize the stream to `actual_sfnt_size' after reconstruction.
Nikhil Ramakrishnan 4d9b3d1d 2019-07-16T02:45:03 [woff2] Reconstruct `loca', `hmtx', and swap out stream. Add necessary functions to reconstruct loca and hmtx tables (the two remaining tables that can have a transform). `woff2_open_font' is now capable of loading a woff2 font face. This code may still need more refining and better memory management. * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total (final) size of sfnt stream. (WOFF2_InfoRec): Add header checksum value. * src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index' parameter to its pointer so its value can be modified by `woff2_open_font'. * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into sfnt buffer at given position. (write_buf): Add parameter `extend_buf' which allows caller to specify whether buffer should be reallocated before copying data. (WRITE_SFNT_BUF): Updated. (pad4, store_loca, reconstruct_htmx): New functions. (reconstruct_glyf): Calculate loca values and store them. (reconstruct_font): Call `reconstruct_hmtx', write table record entries, and calculate table checksums. Also calculate font checksum and update `checksumAdjustment' entry in head table. (woff2_open_font): Open stream for sfnt buffer, swap out input stream and return. * src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept pointer to `face_index'.
Nikhil Ramakrishnan e3953e54 2019-07-13T03:14:17 [woff2] Reconstruct transformed `glyf' table. Reconstruct `glyf' table if it is transformed in the uncompressed table stream. Also add necessary structures, macros and functions. * include/freetype/internal/wofftypes.h (WOFF2_InfoRec, WOFF2_SubstreamRec, WOFF2_PointRec): New structures. (WOFF2_TableRec): s/OrigLength/dst_length/. * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use `FT_SET_ERROR' to set implicit `error' variable. (WRITE_SHORT): New macro. (N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM, COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to refer to substreams of the transformed `glyf' tables. (Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX' macros. (with_sign, safe_int_addition): New functions to add sign to values based on a flag and perform safe addition respectively. (triplet_decode): Decode variable-length (flag, xCoordinate, yCoordinate) triplet for a simple glyph. See https://www.w3.org/TR/WOFF2/#triplet_decoding (store_points, compute_bbox, composteGlyph_size, reconstruct_glyf): New functions. (reconstruct_font): Call `reconstruct_glyf'. * src/sfnt/sfwoff2.h: Add required constants. * src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'.
Nikhil Ramakrishnan 9443a1bc 2019-06-28T01:01:17 Add Brotli dependency and required checks. Brotli is required for decompressing WOFF2 font directory streams. The library is thus being added as an optional dependency for FreeType. * builds/unix/configure.raw: Add checks for `libbrotlidec'. (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated. * devel/ftoption.h, include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_BROTLI): New macro.
Nikhil Ramakrishnan e496cb29 2019-06-16T18:56:18 [woff2] Read table and collection directory. * include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New structure. (WOFF2_HeaderRec): Add more fields. * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New macros. (Read255UShort, CollectionHeaderSize, compute_first_table_offset): New functions. (ReadBase128): Use `FT_READ_BYTE'. (woff2_open_font): Add functionality to read table directory and collection directory (if present).
Nikhil Ramakrishnan 2fa573c1 2019-06-12T00:21:20 [sfnt] Read WOFF 2 header. Check for WOFF2 tag, call `woff2_open_font', and implement it to read header according to specification. * include/freetype/internal/fttrace.h: Add `sfwoff2.c'. * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'. * src/sfnt/sfnt.c: Include `sfwoff2.c'. * src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call `woff2_open_font'. * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h: New files.
Nikhil Ramakrishnan 83dba0e9 2019-06-11T23:40:19 Add structures for WOFF2. Add structures and macro for WOFF 2 header and table directory. * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec, WOFF2_TableRec_): New structures. * include/freetype/tttags.h (TTAG_wOF2): New macro.
Werner Lemberg 734d60f6 2019-08-06T20:38:17 Another minor documentation improvement.
Werner Lemberg ad3443c9 2019-08-05T10:00:41 Minor documentation improvement.
Werner Lemberg 8cf046c3 2019-07-01T13:54:54 * 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.
Alexei Podtelezhnikov 81445c03 2019-06-22T22:54:57 Doc polishing.
Alexei Podtelezhnikov a41e560b 2019-06-19T22:29:55 Minor.
Werner Lemberg 8acd9800 2019-06-13T11:12:26 Add memory access macro summary.
Alexei Podtelezhnikov 59e0c6f9 2019-06-12T22:30:21 * 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.
Alexei Podtelezhnikov 78c02bc1 2019-06-10T23:09:49 [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.
Alexei Podtelezhnikov e13c1f46 2019-05-31T22:31:47 Solidify VC2005 builds. * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly declare `_BitScanReverse' intrinsic. * builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.
Nikhil Ramakrishnan 7b275a5a 2019-05-30T23:57:34 [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.
Werner Lemberg 37580053 2019-05-16T12:15:54 [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.
Werner Lemberg 1178227b 2019-05-11T09:29:19 [truetype] Increase precision of font variation (#54371). This patch make 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.
Alexei Podtelezhnikov 65f9516b 2019-05-02T23:06:55 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.
Alexei Podtelezhnikov 432bb50f 2019-04-23T21:51:42 Clarify docs.
Werner Lemberg 01aed76c 2019-04-14T09:39:28 Minor.
Antony Lee 3ad1c93a 2019-04-06T06:37:42 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.
Werner Lemberg fdb10e8b 2019-03-21T13:51:59 Improve link.
Werner Lemberg fbbcf503 2019-03-15T07:27:02 * 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.
Andrei Alexeyev 2f4b740c 2019-03-07T09:42:25 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.
Nikhil Ramakrishnan 6d65c60f 2019-03-02T16:05:51 Minor formatting.
Werner Lemberg bf04c592 2019-02-25T06:32:26 Minor doc fixes.
Werner Lemberg 4d51f78d 2019-02-23T11:21:48 More documentation updates. In particular, mark the new behaviour of `FT_LOAD_COLOR' as experimental.
Werner Lemberg 6ab36880 2019-02-23T11:18:39 * src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets. The function only provided a framework without an actual implementation, which this commits removes.
Werner Lemberg 75859970 2019-02-23T10:07:09 Update all copyright notices.
Werner Lemberg a346abc0 2019-02-21T09:19:09 s/`....`/'....'/ for SFNT table tags in documentation.
Werner Lemberg 8de11f3d 2019-02-20T16:18:40 s/NULL/`NULL`/ in documentation.
Werner Lemberg f92fa393 2019-02-20T16:04:48 Minor documentation fixes.
Werner Lemberg f686ad46 2019-01-22T20:31:44 Update copyright years.
Nikhil Ramakrishnan 2875ada1 2018-12-30T20:02:08 Minor documentation fix.
Werner Lemberg afa043de 2018-12-25T22:44:05 Fix links (mostly http -> https).
Werner Lemberg e8bbef85 2018-12-12T14:05:03 Fix documentation of TrueType bytecode interpreter debug hook.
Werner Lemberg 0c83ba6d 2018-12-10T12:11:54 Minor documentation updates and fixes.
Alexei Podtelezhnikov d01e28f4 2018-12-06T08:12:27 Important doc fix.
Nikhil Ramakrishnan c1e58b4d 2018-11-29T12:57:35 * include/freetype/ftmm.h: Minor.
Chris Liddell 78a1e695 2018-11-27T22:24:06 [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.
Alexei Podtelezhnikov 8d517e67 2018-11-10T15:47:48 Clarification.
Alexei Podtelezhnikov acb19ed4 2018-10-28T14:19:33 Comment on timestamp storage.
Alexei Podtelezhnikov 3e8ec291 2018-10-26T23:23:48 [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.