summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Improve handling of color palettes.wl/colrWerner Lemberg2022-03-073-22/+283
| | | | | | | | | | | | | | | | | | | This commit adds new functions to streamline palette access: FT_Palette_Set: Set a user-defined palette. FT_Palette_Get: Get palette and palette index. FT_Palette_Get_Foreground_Color: Get foreground color. Fixes issue #1134. * include/freetype/internal/tttypes.h (TT_FaceRec): Change type of `palette_index` to `FT_Int`. Negative values now represent user-defined palettes. * src/base/ftcolor.c (FT_Palette_Set, FT_Palette_Get, FT_Palette_Get_Foreground_Color): New functions. * include/freetype/ftcolor.h: Updated.
* Documentation, whitespace.Werner Lemberg2022-03-072-4/+14
|
* [sdf] Fix corner checks and improve performance.Anuj Verma2022-03-051-6/+23
| | | | | | | | * src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if two distances (for different curves) are very close. (sdf_conic_to): Check whether the conic curve can be treated as a line (which happens if the control point coincides with any end point).
* [sdf] Implement deviation-based splitting for Bezier curves.Anuj Verma2022-03-052-9/+45
| | | | | | | | * src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure out the deviation of Bezier curves and stop splitting if the curve is flat enough. * src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro.
* * include/freetype/freetype.h: Improve SDF documentation.Anuj Verma2022-03-051-0/+38
|
* [sfnt] Fix bounds check in SVG.Ben Wagner2022-03-031-5/+5
| | | | | | | | | | | | | | The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not protected by parentheses. As a result, the expression `table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to `table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected `table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect bounds check which may lead to reading past the end of the `SVG ` table. * src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in parentheses. Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179
* [psaux] Full bounds check for OtherSubr 19.Ben Wagner2022-02-231-7/+9
| | | | | | | | | | | | | | | | | | | | | | | It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with `blend->num_designs` set to 2, and the user supplied `idx` to be large (for example 0xFFFFFFFE). Since these are all `FT_UInt32` the existing bounds check overflows in a well defined manner, allowing for an invalid call to `memcpy`. In addition, it is possible to call OtherSubr 19 with `decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying that `blend->weight_vector` and `decoder->buildchar` are NULL). This passes the bounds check (it is logically always fine to copy nothing starting at index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed by `memcpy`. Calling `memcpy` with either the `src` or `dst` NULL is undefined behavior (even if `count` is zero). * src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that `blend->num_designs` can be copied to `decoder->buildchar[idx]`. Also avoid passing NULL to `ft_memcpy`. Bug: https://crbug.com/1299259
* [cmake] Drop the support of CMake 2.x.suzuki toshiya2022-02-211-4/+3
| | | | | | | | | | | * CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer. The issue #1059 reports the difficulty to support both of CMake 2.x and newer one by single CMakeLists.txt without the inflation of cmake_policy() workarounds. For better maintainability, the support of CMake 2.x is dropped.
* * src/bdf/README: Updated.Werner Lemberg2022-02-191-1/+5
|
* * builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H|<freetype/ftmac.h>|.Werner Lemberg2022-02-192-2/+2
|
* src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize.Werner Lemberg2022-02-191-4/+5
| | | | | | A kerning table can be handled by binary search if it has equal entries. Fixes #1132.
* [builds/windows] Add support for legacy UWP builds.Steve Lhomme2022-02-171-1/+19
| | | | | | | | | * builds/windows/ftsystem.c: Add neccessary macro substitutions to enable strict UWP builds. See !141. Co-authored-by: Alexei Podtelezhnikov <apodtele@gmail.com>
* ftmm.h: Minor documentation improvement.Werner Lemberg2022-02-161-0/+3
|
* [pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value.Alexei Podtelezhnikov2022-02-121-2/+3
| | | | | | | | | Before the change, the hinting engine frequently confused horizontal stem and serif hints making some stems too thin and some serifs too thick. The value was tuned using serif fonts from the URW+ base 35 collection. * src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/.
* t1tables.h: Documentation improvements.Werner Lemberg2022-02-121-8/+28
|
* t1tables.h: Whitespace.Werner Lemberg2022-02-121-73/+73
|
* [type42] Fix `FT_Get_PS_Font_Private` for this format.Werner Lemberg2022-02-111-11/+2
| | | | | | | | Since Type42 fonts don't have a 'Private' dictionary, the return value should be `FT_Err_Invalid_Argument`. * src/type42/t42drivr.c (t42_ps_get_font_private): Removed. (t42_service_ps_info): Updated.
* [pshinter] Clear reused mask. Alexei Podtelezhnikov2022-02-091-0/+4
| | | | | | In PS hinter, memory allocations persist until the module is done. Therefore, we have to clear reused masks. * src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask.
* [pshinter] Use unsigned indices. Alexei Podtelezhnikov2022-02-091-32/+20
| | | | | | | | This reduces casting and eliminates some checks. * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge, ps_dimension_add_t1stem, ps_hints_t1stem3): Updated. (ps_dimension_add_counter): Updated, unnecessary checks removed.
* [pshinter] Fix mask merging.Alexei Podtelezhnikov2022-02-081-21/+5
| | | | | | | | | | | We forgot to update the number of bits when merging a larger mask into a smaller one. This fix might have rendering effects. * src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number of bits from a larger mask. There is no need to zero unused bits, already zeroed during allocation. (ps_mask_clear_bit): Removed. (ps_mask_ensure): Minor.
* [pshinter] Revise the hint table handling. Alexei Podtelezhnikov2022-02-081-13/+8
| | | | | | | * src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size check; avoid array zeroing because it is fully initialized when used. (ps_hint_table_alloc): Fix off-by-one comparison and remove another zeroing of the array elements.
* Various minor doc fixes.Werner Lemberg2022-02-062-5/+6
|
* [builds/windows] Add SVG to to project files.Alexei Podtelezhnikov2022-02-063-1/+9
| | | | | | * builds/windows/vc2010/freetype.vcxproj: Updated. * builds/windows/vc2010/freetype.vcxproj.filters: Updated. * builds/windows/visualc/freetype.vcproj: Updated.
* * src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources.Alexei Podtelezhnikov2022-02-031-0/+4
|
* [cmake] Fix build on MacOS.Eric Jing2022-02-022-2/+2
| | | | | | | | | | * CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building of a framework on MacOS. * builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier lowercase only. Fixes #1127.
* [psaux] Revise `PS_Table` handling.Alexei Podtelezhnikov2022-02-021-50/+18
| | | | | | | | | | | | The old impleemntation was not using `FT_REALLOC`, buing too careful with the offset rebasing. It shoudl be safe to rely on the base movements. * src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine into... (ps_table_realloc): ... this function based on `FT_REALLOC`. (ps_table_done): Simplified. (ps_table_add): Updated.
* * src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing.Alexei Podtelezhnikov2022-02-021-0/+2
|
* [cache] Partially revert 9870b6c07e2c. Alexei Podtelezhnikov2022-01-311-1/+1
| | | | | Fix crashes reported by Werner. * src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again.
* freetype.h: Minor documentation improvement.Werner Lemberg2022-01-311-5/+6
|
* [cache] Fix fallouts from edd4fedc5427.Alexei Podtelezhnikov2022-01-302-1/+4
| | | | | | | Reported by Werner. * src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph. * src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit.
* Clean-up - do not doubt FT_FREE.Alexei Podtelezhnikov2022-01-305-7/+0
| | | | | | | | | | * src/base/ftobjs.c (memory_stream_close): Do not reassign zero after `FT_FREE`. * src/sfnt/sfwoff.c (sfnt_stream_close): Ditto. * src/sfnt/sfwoff2.c (stream_close): Ditto. * src/psaux/psobjs.c (ps_parser_load_field): Ditto. * src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend, tt_set_mm_blend): Ditto.
* * CMakeLists.txt: Include 'FindPkgConfig' module.Werner Lemberg2022-01-301-0/+1
| | | | | | Older cmake versions don't provide `pkg_check_modules` by default. Fixes #1126.
* * src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope.Alexei Podtelezhnikov2022-01-291-3/+3
|
* [cmake] Check the availability of `bzip2.pc'.suzuki toshiya2022-01-291-1/+10
| | | | | | | | | | | | (CMakeLists.txt): Check the availability of `bzip2.pc'. * If `bzip2.pc' is available, Requires.private should include bzip2, but Libs.private should not include -lbz2. * If `bzip2.pc' is unavailable, Requires.private cannot include bzip2, but Libs.private should include -lbz2. Fix #897.
* * unix/configure.raw: We need 'librsvg' version 2.46.0 or newer.Werner Lemberg2022-01-281-1/+1
| | | | Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`.
* Minor clean-ups.Alexei Podtelezhnikov2022-01-275-23/+7
| | | | | | | | * src/base/ftrfork.c (raccess_make_file_name): Do not set error. * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto. * src/cff/cffobjs.c (cff_strcpy): Do not confuse about error. * src/psaux/psobjs.c (ps_table_done): Ditto. * src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto.
* Document `FT_Outline_Decompose` degenerate segments.Ben Wagner2022-01-271-5/+7
| | | | | | | | | | | | | | `FT_Outline_Decompose` does not filter out and can return degenerate segments in an outline. This can be surprising when attemping to stroke such an outline. Clarify the existing documentation on this matter to cover all forms of degeneracy (without specifying exactly how they will be reported), why they might arise, and better explain in what cases they may be an issue. * include/freetype/ftoutlin.h (FT_Outline_Decompose): update documentation. Fixes #952.
* Fix sdf computation while `USE_SQUARED_DISTANCES`.Anuj Verma2022-01-272-7/+9
| | | | | | | | | | Function `map_fixed_to_sdf` expects spread to be absolute and not squared. * src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread while `map_fixed_to_sdf`. * src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto.
* [sfnt] Improve sRGB constants.Tapish Ojha2022-01-271-4/+4
| | | | | | | * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly more precise values. Fixes #1018.
* docs/release: Updated.Werner Lemberg2022-01-271-2/+10
|
* * src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY.Alexei Podtelezhnikov2022-01-261-1/+1
|
* * src/sdf/ftsdf.c (sdf_*_new): Use standard macro.Alexei Podtelezhnikov2022-01-261-3/+3
|
* [pcf] Delay encoding allocation and avoid its zeroing.Alexei Podtelezhnikov2022-01-261-15/+10
| | | | * src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY.
* Aarg, typo.Werner Lemberg2022-01-251-1/+1
|
* freetype.h: More updates to `FT_LOAD_COLOR` description.Werner Lemberg2022-01-251-4/+5
|
* * builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`.Werner Lemberg2022-01-251-1/+1
| | | | | This helps in decoupling library support from `pkg-config` for other platforms.
* Update documentation for `FT_LOAD_COLOR`.Werner Lemberg2022-01-251-10/+18
|
* [pshinter] Ensure all point flags are initialized.Ben Wagner2022-01-241-4/+5
| | | | | | | | Only off curve point flags were fully initialized. * src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags. Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930
* .mailmap: Typo.Werner Lemberg2022-01-241-1/+1
|
* * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers.Werner Lemberg2022-01-232-1/+21
|