summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* * meson.build: Support `FT_DEBUG_LOGGING` option.wl/meson-loggingWerner Lemberg2021-07-042-0/+16
| | | | If this option is set, we need threads support.
* README.git: Revised.Werner Lemberg2021-07-031-15/+24
|
* meson.build: Minor doc improvements.Werner Lemberg2021-07-031-10/+17
|
* * meson_options.txt: Sort alphabetically; no final full stops.Werner Lemberg2021-07-032-17/+23
|
* * src/truetype/ttgxvar.c (tt_set_mm_blend): Test `coords`.Ben Wagner2021-07-012-3/+13
| | | | | | | It is undefined behavior to pass `NULL` to `memcpy`. `coords' is passed to `memcpy` but `TT_Get_MM_Blend` and `TT_Get_Var_Design` explictly call `tt_set_mm_blend` with `coords` as `NULL`. In addition, `TT_Set_MM_Blend` has a similar possible issue.
* [sfnt] Support PaintScale in 'COLR' v1 parsing.Dominik Röttsches2021-07-013-10/+138
| | | | | | | | | | * include/freetype/ftcolor.h (FT_PaintFormat): Renumber values, add `FT_COLR_PAINTFORMAT_SCALE`. (FT_PaintScale): New structure to represent 'PaintScale*' tables. (FT_COLR_Paint): Updated. * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration. (read_paint): Parse 'PaintScale' and friends.
* [sfnt] Handle fonts without layer list in 'COLR' v1.Dominik Röttsches2021-07-012-13/+39
| | | | | | | | | | | | | 'COLR' v1 fonts do not necessarily need to have a layer list; for this reason, 'fontTools' recently started generating fonts in a way that drops the layer list if there are no layers in it. This results in the layer list offset becoming zero, which FreeType treated as an invalid table. Fix that and handle the case for layer list offset being 0. This slightly changes how we need to calculate the starting offset for paints. * src/sfnt/ttcolr.c (tt_face_load_colr): Handle case of layer list offset being zero without outright rejecting table.
* * src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'.Alexei Podtelezhnikov2021-06-302-21/+9
|
* Update `CHANGES` file; other minor doc fixes.Werner Lemberg2021-06-305-12/+35
|
* [raster] Do not skip the second pass without dropout control.Alexei Podtelezhnikov2021-06-292-11/+12
| | | | | | | The second pass also fixes horizontal lines through the pixel centers. * src/raster/ftraster.c (black_TWorker): Do not use `second_pass'. (Render_Glyph): Skip the second pass only with the appropriate flag.
* [raster] Handle sub-band stack locally.Alexei Podtelezhnikov2021-06-292-30/+38
| | | | | | * src/raster/ftraster.c (black_TWorker): Move `band_stack' from here.. (Render_Single_Pass): ... to here and accept limit arguments. (Render_Glyph): Updated.
* [CI] Introduce linux CI and refactor job namesAnurag Thakur2021-06-292-6/+101
| | | | * .gitlab-ci.yml: Added jobs for building freetype on linux.
* ftcolor.h: Minor grammar fix.Werner Lemberg2021-06-291-27/+27
|
* [raster] Handle Bézier stack locally.Alexei Podtelezhnikov2021-06-282-46/+58
| | | | | | * src/raster/ftraster.c (black_TWorker): Move `arcs' from here... (Conic_To, Cubic_To): ... to here to tighten their scope. (Bezier_Up, Bezier_Down): ... Take the current `arc' argument.
* [sfnt] Improve paint limit checksDominik Röttsches2021-06-282-8/+43
| | | | | | | | | | | | | | | | Paint tables can appear before the `base_glyphs_v1` offset if the font is produced with the layer list before the base glyph list. In this case paint tables can occur after the layer list but before the base glyph list. Checks in the 'COLR' v1 code were rejecting fonts with this layout. Improve these checks by calculating a minimum offset after which paint tables can occur and use that in safety checks. * src/sfnt/ttcolr.c (Colr, tt_face_load_colr): Declare `paint_start_v1` and calculate that as the minimum of the end of layer list and base glyph list. (get_child_table_pointer, read_paint, tt_face_get_paint_layers): Use that in safety checks.
* [raster] Clean up vertical sweep.Alexei Podtelezhnikov2021-06-282-19/+23
| | | | | | | * src/raster/ftraster.c (black_TWorker): Replace the current line offset with the pointer and drop the increment. (Function_Sweep_Init): Take values as arguments instead of pointers. (Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated.
* [raster] Make `band_top' local variable.Alexei Podtelezhnikov2021-06-262-18/+20
| | | | | | * src/raster/ftraster.c (black_TWorker): Move `band_top' from here... (Render_Single_Pass): ... to here, and refactor. (Render_Glyph): Updated.
* [raster] Adjust sub-band bisecting limits.Alexei Podtelezhnikov2021-06-252-5/+16
| | | | | | | | We can bisect a band until it is just a single scan line. This might be slow and cause time-outs but if we need to impose limits it should be elsewhere. * src/raster/ftraster.c (Render_Single_Pass): Tweak sub-banding.
* * src/raster/ftraster.c (Render_Single_Pass): Remove dead code.Alexei Podtelezhnikov2021-06-252-11/+5
|
* [base] Add trace level to logging output.Werner Lemberg2021-06-254-6/+37
| | | | | | | | | | | | | | | | | | | | | | | Some practical debugging work has shown that displaying level X of an `FT_TRACEX` macro in the output of `FT2_DEBUG="... -v"` would be very helpful to find out which trace level should be selected. As an example, we now get output like ``` [ttobjs:2] TTF driver [ttobjs:2] SFNT driver [sfobjs:2] not a font using the SFNT container format [t1objs:2] Type 1 driver [stream:7] FT_Stream_EnterFrame: 14 bytes ``` * include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro. (FT_LOG): Use it to add the trace level to the logging tag. * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH): Adjust. * docs/DEBUG: Updated.
* [smooth, raster] Fix up and align error codes.Alexei Podtelezhnikov2021-06-243-14/+32
| | | | | | | | | | | | | | | FT_Render_Glyph picked up FAILURE or 1 returned from the raster function, which became a confusing error code. Instead, return Raster_Overflow in the unlikely event that banding does not help or another meaningful error. * src/smooth/ftgrays.c (gray_convert_glyph_inner, gray_convert_glyph): Use Raster_Overflow when the rendering pool is exhausted and return it if banding does not help. (gray_raster_render): Use Smooth_Err_Ok. * src/raster/ftraster.c (Render_Single_Pass): Return Raster_Overflow if banding does not help or another error code.
* [smooth, raster] Remove synonymous error macros.Alexei Podtelezhnikov2021-06-233-59/+59
| | | | | | | | | | * src/smooth/ftgays.c [STANDALONE_]: s/ErrRaster_/Smooth_Err_/. (gray_convert_glyph_inner): Updated accordingly. * src/raster/ftraster.c [STANDALONE_]: Do not abbreviate error macros. (New_Profile, End_Profile, Insert_Y_Turn, Line_Up, Bezier_Up, Decompose_Curve, Draw_Sweep, Render_Single_Pass, ft_black_render): Updated accordingly.
* fterrors.h: Fix documentation extraction of `FT_Error_String`.Werner Lemberg2021-06-231-0/+2
|
* [sfnt] s/PaintTransformed/PaintTransform/, s/transformed/transform/.Dominik Röttsches2021-06-223-29/+39
| | | | | | | | * include/freetype/ftcolor.h (FT_PaintTransformed, FT_PaintFormat, FT_COLR_Paint): Do it to make it harmonize with other names such as 'PaintTranslate'. * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Ditto.
* Move 'COLR' API to `ftcolor.h`.Dominik Röttsches2021-06-223-1238/+1247
| | | | | | | * include/freetype/freetype.h: Cut section layer managament containing 'COLR' v0 and v1 API and move it to `ftcolor.h` as requested by Werner on freetype-devel. * include/freetype/ftcolor.h: Paste that section.
* freetype.h: Mark 'COLR' v1 API as experimental.Werner Lemberg2021-06-202-29/+56
|
* ftver.rc: Update copyright year.Werner Lemberg2021-06-191-1/+1
|
* [truetype] Fix integer overflow.Werner Lemberg2021-06-192-1/+11
| | | | | | | | Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35312 * src/truetype/ttinterp.c (Ins_JMPR): Use `ADD_LONG`.
* Prevent hinting if there are too many segments.Werner Lemberg2021-06-192-0/+38
| | | | | | | | | | | This speeds up handling of broken glyphs. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35309 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Implement it.
* * src/sdf/ftsdfrend.c (ft_(b)sdf_render): Do not FT_ERROR routinely.Alexei Podtelezhnikov2021-06-182-7/+4
|
* Add `ChangeLog` entries for last two commits.Werner Lemberg2021-06-181-0/+33
|
* Fix for issue 1063David Turner2021-06-161-0/+4
| | | | | See https://gitlab.freedesktop.org/freetype/freetype/-/issues/1063 for more details on the bug.
* [meson] Add first regression test to FreeTypeDavid Turner2021-06-167-0/+136
| | | | | | | | | | | | | | | | | | | * tests/README.md: documentation explaining how to build and run the tests with the Meson build. * tests/scripts/download-test-fonts.sh: Simple script to download test font files to the 'tests/data/' folder. * meson.build, meson_options.txt, tests/meson.build: Add 'tests' option to enable building and running the test programs, disabled by default. * tests/issue-1063/main.c: Simple regression test to exhibit issue 1063. * .gitignore: Ignore the content of the tests/data/ folder for now.
* Add a comment.Alexei Podtelezhnikov2021-06-151-0/+1
|
* [type42] Fix new memory leak.Alexei Podtelezhnikov2021-06-122-4/+15
| | | | | | | | | We need to inverse inheritance of FT_GlyphSlot_Internal so that we have a chance to free the rendered bitmap from the parent slot. * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts of the child `ttslot' and replace it with the parent structure. (T42_GlyphSlot_Done): Updated accordingly.
* [psaux] Fix another assertion.Werner Lemberg2021-06-122-1/+27
| | | | | | | | | | | | * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escCALLOTHERSUBR>: Convert assertion into error, since the problem can happen with invalid user input. Test case is file fuzzing/corpora/legacy/oss-fuzz/5754332360212480-unknown-read in the `freetype2-testing` repository.
* [psaux] Fix assertions.Werner Lemberg2021-06-122-19/+33
| | | | | * src/psaux/pshints.c (cf2_hintmap_adjustHints): Check for overflow before emitting an assertion error.
* * src/truetype/ttinterp.c (TT_RunIns): Optimize tracing.Alexei Podtelezhnikov2021-06-092-0/+5
|
* [sdf] Fix SDF positioning.Alexei Podtelezhnikov2021-06-093-8/+22
| | | | | | | * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Add padding to `bitmap_top' and `bitmap_left'. * sdf/sdf/ftsdf.c (sdf_generate_with_overlaps): Fix VC++ warning.
* More CHANGES.Alexei Podtelezhnikov2021-06-081-0/+5
|
* More various documentation improvements and fixes.Werner Lemberg2021-06-089-16/+41
|
* Various documentation improvements and fixes.Werner Lemberg2021-06-083-13/+155
|
* Fix 'devel' build for COLR 'v1'.Werner Lemberg2021-06-082-0/+22
| | | | | * devel/ftoption.h: Synchronize with `include/freetype/config/ftoption.h`.
* [sfnt] Sanitize cmap4 table better.Werner Lemberg2021-06-082-0/+19
| | | | | | | Fixes #1062. * src/sfnt/ttcmap.c (tt_cmap4_validate): Handle a too-small value of `length` gracefully.
* [sfnt] Pointer validity check when reading COLR 'v1' layersDominik Röttsches2021-06-082-0/+15
| | | | | | * src/sfnt/ttcolr.c (tt_face_get_paint_layers): In addition to the existing sanity checks, ensure that the pointer to the layer to be read is within the 'COLR' v1 table.
* * src/sdf/ftsdfcommon.c: Fix inclusion of header files.Werner Lemberg2021-06-082-2/+6
|
* [sdf] Make `make multi` work.Werner Lemberg2021-06-086-113/+175
| | | | | | | | | | | * src/sdf/ftsdf.c: Include `ftbitmap.h`. * src/sdf/ftsdfcommon.h: Move function bodies to `ftsdfcommon.c`. Include `ftobjs.h` to get definitions of `FT_LOCAL` and friends. * src/sdf/ftsdfcommon.c: New file. * src/sdf/rules.mk, src/sdf/sdf.c: Updated.
* [sdf] Formatting and improved comments.Werner Lemberg2021-06-084-44/+45
|
* [sdf] Use 8 bits for final SDF output instead of 16bits.Anuj Verma2021-06-088-71/+192
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 8-bits is enough to represent SDF data we no longer require 16-bits for this purpose. Also, we now normalize the output data to use the entire 8-bit range efficiently. For example: if we use 3.5 format with a spread of 1 we basically only use the starting 5-bits. By normalizing we can use the entire 8-bit range. * include/freetype/freetype.h (FT_Render_Mode): Updated description for `FT_RENDER_MODE_SDF` regarding this change. * include/freetype/ftimage.h (FT_Pixel_Mode): Removed `FT_PIXEL_MODE_GRAY16` since no longer required. * include/freetype/fttypes.h (FT_F6Dot10): Removed since no longer required. * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Allocate 8-bit bitmap instead of 16-bit buffer. * src/sdf/ftsdfcommon.h (map_fixed_to_sdf): Added function to convert 16.16 distance value to our desired format. * src/sdf/ftsdf.c (sdf_generate_with_overlaps, sdf_generate_bounding_box): Use the new `map_fixed_to_sdf` function and also use 8-bit output buffer. * src/sdf/ftbsdf.c (finalize_sdf): Output to a 8-bit buffer instead of 16-bit buffer.
* [sfnt] Fix fallout from 2021-05-29 change.Ben Wagner2021-06-022-10/+20
| | | | | | | * src/sfnt/ttcolr.c (find_base_glyph_record, find_base_glyph_v1_record): Adjust binary search. Needs to be updated with change to unsigned.