summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [builds] Updates to check for a working pthread libraryGSoC-2020-priyeshPriyesh Kumar2020-08-312-0/+527
| | | | | * builds/unix/configure.raw: Check for `pthread', also check if it is working.
* [base] Fix the vertical alignment of printing of logs.Priyesh Kumar2020-08-312-16/+52
| | | | | | | | * src/base/ftdebug.c (ft_log_handler): Updates to print logs after a fixed width for better vertical alignment. * builds/windows/ftdebug.c (ft_log_handler): Updates to print logs after a fixed width for better vertical alignment.
* [docs] Updated logging related documentationPriyeshkkumar2020-08-283-3/+143
| | | | | | | | | * docs/DEBUG: Updates related to `FT_LOGGING'. * README.git: Updates related to logging * src/sfnt/ttload.c (tt_face_load_font_dir): Changed layout of tracing messages.
* Fixed `-Wformat' warnings.Priyeshkkumar2020-08-286-13/+13
| | | | | | * src/*: Fixed format specifiers. * src/bdf/bdflib.c (ACMSG3, ACMSG7): Fixed `-Wformat' warnings.
* [builds/windows] Made changes to build dlg with FreeType on Windows.Priyeshkkumar2020-08-274-196/+435
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builds/windows/vc2010/script.bat: New windows batch file to copy necessary dlg files from `submodules/dlg' to `src/dlg'. This file is used as a pre-built event in visual studios. * builds/windows/ftdebug.c: Added support for logging and logging related public APIs. (ft_debug_init): Updates to support the 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. (FT_Set_Log_Handler, FT_Set_Default_Log_Handler, FT_Callback): Added function definitions. * builds/windows/vc2010/freetype.vcxproj.filters: Added `src/dlgwrap.c'. * builds/windows/vc2010/freetype.vcxproj (AdditionalIncludeDirectories): Added include files of dlg for `Debug' and `Debug Static' configurations on both `x64' and `win32' platforms. (PreprocessorDefinitions): Added `FT_LOGGING' for `Debug' and `Debug Static' configurations on both `x64' and `win32' platforms. Added `DLG_STATIC' for `Debug' configuration on `x64' and `win32' platforms. (DisableLanguageExtensions): We need to disable the `/Za' option when building dlg with FreeType as dlg strictly follows `C99' standards and the Visual Studios produces unexpected behaviours when compiling a `C99' file with `/Za' option enabled.
* [base] Added a public API to change the log handling function at run-time.Priyeshkkumar2020-08-273-0/+108
| | | | | | | | | | | | | | | | | * include/freetype/ftlogging.h (FT_Custom_Log_Handler): New function pointer 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: Added variables to support custom callback logging function. (FT_Callback): A function to print log using custom callback logging function, which is set using `FT_Set_Log_Handler'. * src/base/ftdebug.c: Added support for handling custom logging callback function. (FT_Set_Log_Handler, FT_Set_Default_Log_Handler, FT_Callback): Added function definitions.
* * include/freetype/ftlogging.h: New header file, it contains loggingPriyeshkkumar2020-08-264-1/+128
| | | | | | | | | | | | | | | | | related public APIs. [base] Added a public API to change the levels of tracing components. * src/base/ftdebug.c: Added new variables. (ft_debug_init): Updates to support the 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. * include/freetype/ftchapters.h: Added `debugging_apis' section under `support_api' chapter.
* [base] Updates to print timestamp and name of `FT_COMPONENT' in logs.Priyeshkkumar2020-08-262-2/+98
| | | | | | | | | | | | | | * 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: Added new variables to control the logging of timestamp and name of `FT_COMPONENT' along with actual logs. (ft_add_tag, ft_remove_tag): Added function definition. (ft_log_handler): Updates to print timestamp and name of `FT_COMPONENT'. (ft_debug_init): If `FT_LOGGING' macro is defined users can now control the logging of timestamp and name of `FT_COMPONENT' by adding tags in environment variable `FT2_DEBUG'
* [base] Added necessary functions and variables to print logs to a filesPriyeshkkumar2020-08-264-6/+203
| | | | | | | | | | | | | | | | | | | | | * 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' macros is defined. (ft_logging_init, ft_logging_deinit): New functions to handle initialization and uninitialization of logging related variables. (ft_log_handler): A new function to handle logs of FreeType. * src/base/ftdebug.c: Added necessary logging related variables. (ft_logging_init, ft_logging_deinit, ft_log_handler): Added function definitions. * src/base/ftinit.c(FT_Init_FreeType): If `FT_LOGGING' macro is defined call `ft_logging_init' to initialize logging related variables. (FT_Done_FreeType): If `FT_LOGGING' macro is defined call `ft_logging_deinit' to uninitialize logging related variables. * src/base/ftobjs.c (FT_New_Library): Call `ft_debug_init' only if macro `FT_LOGGING' is not defined.
* [builds] Make necessary changes to compile dlg along with FreeType.Priyeshkkumar2020-08-267-3/+154
| | | | | | | | | | | | | | | | | | | | | | | | | * autogen.sh (copy_submodule_files): New script to copy all the necessary dlg's source and include files from `submodules/dlg' to `src/dlg' * src/dlg/dlgwrap.c: A wrapper along `src/dlg.c', it enables the dlg's build only when `FT_LOGGING' maro is defined. * src/dlg/rules.mk: Makefile to compile dlg library along with rest of FreeType's modules. * builds/freetype.mk (DLG_DIR): New variable to include dlg's header files. (INCLUDES): Added `DLG_DIR'. (FT_CFLAGS): Added `-std=c99' flag. Include `src/dlg/rules.mk' file to build dlg. (OBJ_S, OBJ_M): Added `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, devel}/ftoption.h (FT_LOGGING): A new macro to enable or disable the logging facility in FreeType.
* * .gitmodules: Added a submodule to track dlg logging library.Priyeshkkumar2020-08-262-0/+3
|
* * src/truetype/ttgload.c (TT_Get_VMetrics): Add tracing message.Werner Lemberg2020-08-222-0/+9
|
* [truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.Alexei Podtelezhnikov2020-08-054-4/+29
| | | | | | | | | | | | | 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.
* * src/truetype/ttgload.c (TT_Load_Glyph): More tracing.Alexei Podtelezhnikov2020-08-042-2/+13
|
* Minor typos, formatting.Werner Lemberg2020-08-047-8/+9
|
* Unbreak compilation.Alexei Podtelezhnikov2020-07-281-1/+0
|
* Hide internal functions with SunPro.Alexei Podtelezhnikov2020-07-282-0/+12
| | | | | * include/freetype/internal/compiler-macros.h (FT_INTERNAL_FUNCTION_ATTRIBUTE) <__SUNPRO_C>: Define as __hidden.
* Fix static compilation with Visual C.Anuj Verma2020-07-282-1/+15
| | | | | * include/freetype/internal/compiler-macros.h (FT_INTERNAL_FUNCTION_ATTRIBUTE) <_WIN32>: Define as empty.
* Formatting, improving comments.Werner Lemberg2020-07-282-154/+203
|
* Fix `-Wformat' compiler warnings.Priyesh Kumar2020-07-2838-167/+175
| | | | | | * src/*: Fix format specifiers. * builds/unix/ftsystem.c (FT_Stream_Open): Ditto.
* Fix `-Wformat' compiler warnings.Werner Lemberg2020-07-257-13/+42
| | | | | | | | | | | | | | | | | | | | Problem reported by Priyesh kumar <priyeshkkumar@gmail.com> * src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments to tracing macro. * src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property): Ditto. * src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto. Reformulate message. * src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto. * src/sfnt/sfwoff2.c (woff2_open_font): Ditto. Trace table offset, too. * src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto.
* * src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning.Werner Lemberg2020-07-232-1/+9
| | | | Reported by Hin-Tak.
* Add .clang-format fileDavid Turner2020-07-161-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This file can be used to reformat FreeType sources and commits using one of these methods: - Direct formatting of a whole file: clang-format -i path/to/file For example, to reformat all sources at once: echo builds/unix/ftconfig.h.in $(git ls-files *.[hc]) | xargs clang-format -i - Only reformat the changed lines in the current work directoy: git clang-format The style settings in this file are very close to the FreeType formatting style, with the following exceptions which are not supported here: - Mminimal 2-space margin on each non-empty line. (no left margin instead). - 2 empty lines between variable declarations and statements in C blocks. (only 1 is kept). { int x = ...; foo(x); } becomes { int x = ...; foo(x); } - Aignment of declarations uses 2 spaces to separate types and variable names (only 1 space is kept). int x; => int x; int y; int y; - The start used for output parameters in function signature should be near the variable name (always near the type). void foo(int* input_ptr, int *output_ptr) => void foo(int* input_ptr, int* output_ptr)
* [doc] Stem darkening is off by default for CFF driver.Werner Lemberg2020-07-152-5/+1
| | | | Bug reported by Ishi Tatsuyuki <ishitatsuyuki@gmail.com>.
* freetype.h (FT_Set_Transform): Minor documentation update.David Turner2020-07-141-0/+6
| | | | | | 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.
* README: Add information on contributing patches.Werner Lemberg2020-07-141-0/+12
|
* * builds/unix/configure.raw: Fix inclusion of `ftoption.h'.Werner Lemberg2020-07-122-1/+5
|
* Document `FT_Face_Rec_::box' with variable fonts (#54969).Ben Wagner2020-07-101-0/+3
| | | | | | | | | | | | | 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.
* Fix clang warnings.Werner Lemberg2020-07-0718-42/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* [build] Really fix multi and C++ builds.David Turner2020-07-077-18/+58
| | | | | | | | | | | | | | | | | | | | | | | | 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'.
* [build] Fix multi and C++ builds.David Turner2020-07-0611-15/+40
| | | | | | | | | | | | | | | | | | 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'.
* [psaux] Improve `t1_decoder_parse_metrics' (#58646).Werner Lemberg2020-07-062-11/+116
| | | | | | * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy corresponding code from old engine's `t1_decoder_parse_charstrings' function to handle `op_callsubr' and `op_return'.
* [build] Improve visibility support of library function names.David Turner2020-07-053-120/+178
| | | | | | | | | | | | | | | | | | | | | * 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.
* [build] Split off more stuff from `ftconfig.h'.David Turner2020-07-0514-808/+369
| | | | | | | | | | | | | | | * 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.
* [build] Move mac support code to `mac-support.h'.David Turner2020-07-057-111/+66
| | | | | | | | | | | * 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.
* [build] Put integer type definitions into `integer-types.h'.David Turner2020-07-056-685/+292
| | | | | | | | | | | | | | | | | | | | | 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.
* [build] Rename `build/unix/ftconfig.in' to `ftconfig.h.in'.David Turner2020-07-054-8/+18
| | | | | | | | | | Since we are no longer limited to 8.3 file names, it is simpler to follow the usual conventions for template files. * builds/unix/ftconfig.in: Renamed to... * builds/unix/ftconfig.h.in: ...this. * CMakeLists.txt, builds/unix/configure.raw: Updated.
* [smooth] Introduce direct oversampling for overlaps.Alexei Podtelezhnikov2020-07-033-6/+121
| | | | | | | | | | | | | 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.
* [smooth] Use direct rendering mode in Harmony.Alexei Podtelezhnikov2020-07-032-41/+59
| | | | | | | | | Instead of rendering 3 bitmaps side by side and reshuffling, we use direct rendering to deliver the bitmaps on each third byte. * src/smooth/ftsmooth.c (ft_smooth_raster_lcd) [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with... (ft_smooth_lcd_spans): ... new span function.
* [smooth] Separate LCD paths from gray rendering.Alexei Podtelezhnikov2020-07-032-200/+293
| | | | | | | | | | | This makes `ft_smooth_render' a lot smaller and easier to follow. It also cleanly separates Harmony and ClearType-style LCD rendering algorithms. Now I only wish to move LCD filtering and geometry from FT_Library to FT_Renderer. * src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here... (ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here. [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef's.
* [cff] Fix handling of `style_name == NULL' (#58630).Sebastian Rasmussen2020-06-202-1/+11
| | | | | | | * src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy' fails by returning NULL in `cff_face_init', `remove_style' is still called. This means that the NULL pointer is dereferenced, causing a crash.
* Simplify unused macro.Alexei Podtelezhnikov2020-06-191-2/+1
|
* [cff] Fix another two memory leaks (#58629).Sebastian Rasmussen2020-06-192-24/+39
| | | | | | | * src/cff/cffobjs.c (cff_size_init): If a call to `funcs->create' fails to allocate one of the `internal->subfont' variables, make sure to free `internal->topfont' and any successfully allocated subfonts.
* [psaux] Fix memory leak (#58626).Sebastian Rasmussen2020-06-192-6/+13
| | | | | * src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init' fails to allocate the stack, return error early.
* Fix memory leak (#58624).Sebastian Rasmussen2020-06-192-1/+10
| | | | | | * src/base/ftobjs.c (FT_New_Size): Avoid trying to free `size->internal`, unless `size' has been allocated. This mistake appeared in the fix for 58611.
* [base] Rework d1180b5f9598 until further notice.Alexei Podtelezhnikov2020-06-192-5/+10
| | | | | * src/base/ftoutln.c (FT_Outline_Get_Orientation): Reject large outlines.
* [cff, cid] Fix segfaults in case of error (#58621).Sebastian Rasmussen2020-06-193-2/+13
| | | | | | | * src/cff/cffobjs.c (cff_slot_done), src/cid/cidobjs.c (cid_slot_done): If `ft_glyphslot_init' fails to allocate `internal', then the class' `done_slot' callback (called by `ft_glyphslot_done') must not dereference the pointer to `internal'.
* [base] Fix UBSAN error.Werner Lemberg2020-06-192-0/+18
| | | | | | | | | Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23166 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Avoid values larger than 32 bits.
* [woff2] Fix segfault.Werner Lemberg2020-06-192-0/+17
| | | | | | | | | Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23402 * src/sfnt/sfwoff2.c (get_x_mins): Check whether `loca' table exists.
* [sfnt] Support Intel compilers.Stephen McDowell2020-06-192-1/+13
| | | | | * src/sfnt/pngshim.c (premultiply_data): Intel compilers do not currently support `__builtin_shuffle'.