Commit Graph

7641 Commits

Author SHA1 Message Date
Anurag Thakur
bd9aba933b Add comments to raster algorithm and cleanup 2022-10-11 04:47:58 +05:30
Anurag Thakur
d257405687 Fixed point working now 2022-10-09 18:20:49 +05:30
Anurag Thakur
9538d8e798 Fixed first pass 2022-10-06 03:06:00 +05:30
Anurag Thakur
c03591c48a lkw 2022-10-06 01:55:06 +05:30
Anurag Thakur
0b682c5417 Add SIMD 2022-10-04 03:16:11 +05:30
Anurag Thakur
3d0e33d2aa Almost fix rendering 2022-10-04 03:16:11 +05:30
Anurag Thakur
f6bd130ba3 Remove redundant code 2022-10-04 03:16:11 +05:30
Anurag Thakur
5424f47eb9 Invert bitmap pitch 2022-10-04 03:16:11 +05:30
Anurag Thakur
2fc3e384ed Free memory after use 2022-10-04 03:16:11 +05:30
Anurag Thakur
1cf8e2ed5d Fix antialiasing 2022-10-04 03:16:11 +05:30
Anurag Thakur
edd9a84c36 Rebase and cleanup 2022-10-04 03:16:11 +05:30
Anurag Thakur
6f86728eb3 Insert newline at end 2022-10-04 03:16:11 +05:30
Anurag Thakur
94183cf0b6 Revert unrelated changes 2022-10-04 03:16:11 +05:30
Anurag Thakur
9aafe98c1d Use inbuilt data-types 2022-10-04 03:16:11 +05:30
Anurag Thakur
d9c301d35a Fix quadratic rendering 2022-10-04 03:16:11 +05:30
Anurag Thakur
8af62c3469 Partially move parameters to existing types 2022-10-04 03:16:11 +05:30
Anurag Thakur
8687c459c0 Temp fix for upside-down bitmap 2022-10-04 03:16:11 +05:30
Anurag Thakur
39bcb3a647 Logging for testing 2022-10-04 03:16:11 +05:30
Anurag Thakur
bb95b4423e Added commentary 2022-10-04 03:16:11 +05:30
Anurag Thakur
dbf9623ab4 Added cmake build 2022-10-04 03:16:11 +05:30
Anurag Thakur
e122ecf1e5 Remove printfs 2022-10-04 03:16:11 +05:30
Anurag Thakur
1e0918c41c Integration prototype successful 2022-10-04 03:16:11 +05:30
Anurag Thakur
05c8790008 Trying to get it to work attempt #1 2022-10-04 03:16:11 +05:30
Anurag Thakur
dee8855a9c Compilation fix attempt #1 2022-10-04 03:16:11 +05:30
Anurag Thakur
9b40ce9cbc Finish importing code, integration pending 2022-10-04 03:16:11 +05:30
Anurag Thakur
63dd924394 Added things 2022-10-04 03:16:11 +05:30
Anurag Thakur
f6a2237ff6 Populate errors header for 'dense' renderer 2022-10-04 03:16:11 +05:30
Anurag Thakur
7511d64e60 Add files for new 'dense' module 2022-10-04 03:16:11 +05:30
Alexei Podtelezhnikov
8faf57dd17 * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid FT_Set_Charmap.
Set charmap aggressively without all validations of `FT_Set_Charmap`
because we take it from the available array and only temporarily.
Even CMap Format 14 will gracefully return 0.
2022-10-03 17:13:30 +00:00
Alexei Podtelezhnikov
b93f20ab7a * src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy. 2022-10-03 15:10:12 +00:00
Werner Lemberg
de8f14a8e4 * src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation.
Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid
overflow.

Fixes #1180.
2022-09-30 23:25:02 +02:00
Werner Lemberg
2adb810c3d * src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output. 2022-09-30 17:00:10 +02:00
mlugg
905270925d [truetype] Fix undefined pointer arithmetic.
* src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use
`FT_OFFSET`.
2022-09-29 20:44:41 +02:00
Alexei Podtelezhnikov
ff66e912d0 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix. 2022-09-29 17:46:23 +00:00
Ali Chraghi
5faa1df8b9 [base] FT_Attach_Stream: Make parameters argument constant. 2022-09-29 19:30:20 +02:00
Azamat Hackimov
3f3427c6f3 * src/tools/*.py: Migrate to Python 3.
Fixes #1185, closes !205. Formatting changes according to PEP8.
2022-09-28 22:35:49 -04:00
Dominik Röttsches
df2601395f [sfnt] Guard access in 'COLR' table when requesting child table pointer.
* src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten
pointer bounds checks.
(get_child_table_pointer): Check whether incoming pointer `p` lies within
the 'COLR' table.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816
2022-09-27 18:18:59 +02:00
Ben Wagner
bd41700773 [sfnt] Add SVG document bounds checking.
Add a check that the document content is actually contained within the
`SVG ` table.  Without this check a malformed font may claim arbitrary
memory as its document content.

* src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when
testing 'documentRecord' extents.
(find_doc): Rename `stream` to `document_records` for clarity.
(tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity.
Test that the document content is contained within the table.
Ensure minimum length of document before testing for gzip format.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812
2022-09-27 07:31:32 +02:00
Alexei Podtelezhnikov
c9c326312f [base] Clean up the bitmap flow control.
* src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch
is trully opposite, zero is not a positive value.
(FT_Bitmap_Convert): Set negative pitch as needed, accept negative
alignment values.
2022-09-22 20:40:21 -04:00
Alexei Podtelezhnikov
c456eeb47a [base] Discard and recreate bitmaps for copying and converting.
Reusing target bitmaps for copying and converting is permitted.  It is,
however, pointless to preserve their content before overwriting.  Free-
malloc might be faster than realloc.

* src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free
an old buffer and create a new one.
2022-09-22 15:09:17 +00:00
Dominik Röttsches
33ceac2afc Reject 'COLR' table if version is 1 but header too small.
* src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to
be 1, then the table size has to be at least the size of the v1 header.
Also, for peeking the number of base glyphs and entries in the layer list,
ensure that the table is sufficiently long.

Fixes #1179.  Original patch by Sergey Temnikov.
2022-09-16 18:55:24 +02:00
Werner Lemberg
a0d1536452 * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling.
Fixes #1181.
2022-09-15 09:14:06 +02:00
Dominik Röttsches
8e68439a6f [truetype] Reject 'fvar' loading when num_instances is too small.
* src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when
'fvar' values locally do not match with sanitized values from initialization
at `sfnt_init_face` time.

Reported as

  https://bugs.chromium.org/p/chromium/issues/detail?id=1360295
2022-09-06 17:18:17 +02:00
Dominik Röttsches
91a7fae777 [sfnt] Handle variable COLR v1 fonts without delta set index map
Fixes #1178.

* src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to
0 and inner index to the delta index when retrieving deltas if the
`COLR` table has no delta set index map.
2022-09-05 15:52:58 +02:00
Dominik Röttsches
6d62076ae5 [sfnt] Pointer sanity checks before reading layer info in 'COLR' v0
* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to
read from is within the 'COLR' table.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633
2022-09-05 12:23:31 +02:00
Werner Lemberg
048f2e247c [autofit] Minor fix.
* src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid
compiler warning.
2022-09-05 10:43:59 +02:00
Dominik Röttsches
a1017e2655 [sfnt] Don't require 'gvar' table to support variation fonts.
Fixes #1172.

* src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if
`fvar` is present; do not require other tables to be present.

* src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table
when setting variation coordinates.  However, if a 'gvar' table is actually
present, do perform a sanity check and fail on malformedness.
(TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all
cases, which is an overly tight check.
2022-09-05 10:36:22 +02:00
Alexei Podtelezhnikov
dd91f6e7f5 * src/base/ftver.rc: Explicitly use UTF-16.
Fixes #1177 to avoid mistranslation and other problems.
2022-08-26 22:24:02 -04:00
Dominik Röttsches
4797b2ff22 [sfnt] Avoid undefined shifts in COLR v1 color line retrieval
* src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift
behavior by using multiplication using macros from ftcalc.h.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573
2022-08-26 12:08:34 +03:00
Sean Farrell
395da3d72a CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option.
This option uncomments FreeType configuration macro
`FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return
meaningful error strings.

This option is off by default.
2022-08-21 19:58:35 +02:00