Commit Graph

2231 Commits

Author SHA1 Message Date
Garret Rieger ea1ee0d4b6 [instance] drop and don't collect lookups from feature variations when fully instancing.
This previously incorrectly collected lookups that could be reached via feature variations that are dropped and not activated by the current instance position.
2023-01-14 18:04:24 -07:00
Matthias Clasen d250148db0
Merge pull request #4024 from harfbuzz/test-paint-variable
test-paint: Add variable font tests
2023-01-12 21:26:24 -05:00
Behdad Esfahbod 60a4f2e6f5 [test-paint] Detect FreeType COLRv1 from struct size 2023-01-12 19:12:46 -07:00
Behdad Esfahbod b783967242 [test] Minor save glyph_count 2023-01-12 19:11:10 -07:00
Matthias Clasen cca0ed9bcd test-paint: Add variable font tests
These needs freetype master to work.
2023-01-12 21:09:50 -05:00
Garret Rieger c324d99952 [instancing] Add tests for MVAR instancing. 2023-01-12 18:15:07 +00:00
Behdad Esfahbod d675f0d4f2
Merge pull request #4023 from harfbuzz/aat-features2
[aat] Support feature ranges
2023-01-11 15:06:31 -07:00
Matthias Clasen 1cb5a87feb test-pain: Print out extend for color lines
Update all expected results to include this value.
2023-01-10 22:13:44 -05:00
Matthias Clasen 6648e6e3e5 Add one more paint test
Add a test for the clip_box_top_left_glyph,
since we've seen broken rendering with it.
2023-01-10 22:07:44 -05:00
Behdad Esfahbod 4ee6094114 [aat] Add test for feature range 2023-01-10 11:52:12 -07:00
Khaled Hosny 8460909e0c [build] Fix make dist 2023-01-10 09:04:35 -07:00
Garret Rieger 0f01a83622 [subset] add basic test for CFF2 subsetting.
FontTools does not yet support CFF2 subsetting so we can't add a comparison test. Instead add a golden file test.
2023-01-09 21:15:11 -07:00
Matthias Clasen b20871322f test-paint: Fix use of g_test_skip 2023-01-09 16:30:42 -05:00
Matthias Clasen eb0f0279d2 test-paint: Avoid g_test_skip_printf
This is relatively recent api we don't need.
2023-01-09 15:33:34 -05:00
Matthias Clasen e61c2be41c test-paint: Skip tests if ft COLRv1 is missing 2023-01-09 15:25:29 -05:00
Matthias Clasen 1d662632d9 test-paint: More output for failures 2023-01-09 15:01:59 -05:00
Matthias Clasen d0108d31a2 Add more paint tests
These tests compare the output of the ft and ot
implementations for all the glyphs in the test_glyphs
font.
2023-01-09 14:42:30 -05:00
Matthias Clasen 5f976d86a7 test-paint: Use %.3g for results
This produces more readable output.
2023-01-09 14:24:32 -05:00
Matthias Clasen ec78a486bf Run paint tests at upem scale
This avoids problems with rouding.
2023-01-09 14:03:58 -05:00
Matthias Clasen a085efa699 test-paint: Fix font setup for ft
We must call hb_ft_font_set_funcs after
setting the font scale.
2023-01-09 13:11:16 -05:00
Matthias Clasen 26f713a7f5 paint-test: Use larger scales
A scale of 20 is noise, so use 1000.
2023-01-09 12:54:06 -05:00
Behdad Esfahbod e886b6b8a6 [test-draw] Use a larger scale
A scale of 20 is in the noise category for us. Using a larger
scale makes the test pass.
2023-01-09 10:31:28 -07:00
Matthias Clasen 347910fd4c Add a draw test
This test compares output between ft and ot
font funcs.
2023-01-09 10:31:28 -07:00
Matthias Clasen 42047070dd test-paint: More helpful output
No need to print ASCII chars as hex.
2023-01-08 16:08:16 -05:00
Behdad Esfahbod 3fd6c0d97a [test-paint] Remove unused FT_Library 2023-01-08 12:30:26 -07:00
Behdad Esfahbod 28be4f8805 [test-paint] Actually run against hb-ft 2023-01-08 12:19:41 -07:00
Matthias Clasen ed7d0234e1 test-paint: Limit the precision of clip boxes
Update expected test results.
2023-01-08 11:57:43 -07:00
Matthias Clasen 10390ec5c6 Update expected test results 2023-01-08 09:06:03 -05:00
Matthias Clasen f3ce137420 test-paint: Be more flexible for expected results
When generating the expected output with GENERATE_DATA=1,
Glib's test framework puts out some comments at the top
of the file. Ignore them when comparing the expected
output. This makes it possible to directly use the output
of

GENERATE_DATA=1 ./test-paint -p TESTCASE

as expected result for TESTCASE.
2023-01-08 09:01:31 -05:00
Matthias Clasen d0aaea2319 Update test results for paint-test
These were affected by the PaintComposite optimization.
2023-01-07 16:30:56 -05:00
Qunxin Liu 1eb5445e75 [subset] Fix issue in hb_subset_input_override_name_table()
If a nameRecord with provided name_id/platform_id/encoding_id/lang_id
is not retained after subsetting, create it and insert it to
the name table. So we need to check against retained name_records
rather than name_record in the original name table.
2023-01-06 19:17:14 -07:00
Behdad Esfahbod c54debc76d [face] Add hb_face_collect_nominal_glyph_mapping
Fixes https://github.com/harfbuzz/harfbuzz/issues/3973
2023-01-05 11:57:48 -07:00
Matthias Clasen 9f3b59fe6b Update expected test results
These need updates, because they record
every callback, and we've changed what
callbacks are happening.
2022-12-31 16:19:20 -05:00
Matthias Clasen 313f74a693 Add a basic test for hb-coretext api
This tests what would be my minimum assumption
about this api. It was written blindly.
2022-12-28 11:14:22 -07:00
Matthias Clasen 661baf403c Add a basic test for hb-ft api
This tests what would be my minimum assumption
about this api.
2022-12-28 11:14:22 -07:00
Matthias Clasen 2a51567925 [paint] Add a test for recursion 2022-12-26 17:00:20 -07:00
Matthias Clasen 1eb4d002f2 Try to fix the build with msvc 2022-12-26 11:29:26 -07:00
Matthias Clasen 00e93102a6 Add a test for hb_ot_color_glyph_has_paint 2022-12-26 11:29:26 -07:00
Matthias Clasen e7b0947afd Add a test for hb_ot_color_has_paint 2022-12-26 11:29:26 -07:00
Matthias Clasen a7a93b85e6 Drop accidentally added ttx files 2022-12-24 12:08:32 -07:00
Behdad Esfahbod 6ccbfabd4f [paint] Return bool from paint_image()
Fixes https://github.com/harfbuzz/harfbuzz/issues/3974
2022-12-24 10:44:25 -07:00
Matthias Clasen d00e97f16c Add test-paint to the autotools build 2022-12-24 09:16:29 -05:00
Matthias Clasen 3478728edb Fix test-paint build without freetype 2022-12-24 09:16:29 -05:00
Matthias Clasen 9b9d7c7b8e Plug a memory lek in paint tests 2022-12-24 05:34:47 -05:00
Matthias Clasen f9c865a899 Update test results
These were changed by the introduction of
clip boxes.
2022-12-23 20:56:20 -05:00
Matthias Clasen 55b7af6b62 Tweak paint-tests 2022-12-23 18:34:09 -05:00
Matthias Clasen 44b48845b7 Add tests for hb_color_line_t
Test a few things that were broken with the
ft implementation before.
2022-12-23 16:28:53 -05:00
Behdad Esfahbod a4a86c0ec2 [test-paint] g_test_message 2022-12-23 13:52:22 -07:00
Behdad Esfahbod dcab567988 [test-paint] Don't use g_test_fail_print() for older glib 2022-12-23 13:47:37 -07:00
Matthias Clasen 8e197f50da Add missing paint test results 2022-12-23 13:40:02 -07:00
Matthias Clasen 3b021c5568 Run paint tests with ft font funcs 2022-12-23 13:37:59 -07:00
Matthias Clasen ca190aaba4 Split off the hb-paint tests
They belong in their own file.
2022-12-23 13:37:59 -07:00
Matthias Clasen ee7bbdf372 tests: Update expected results
These were changed by fixes for glyph transforms.
2022-12-23 13:37:59 -07:00
Matthias Clasen 3993a40703 test: Add some verification hints 2022-12-23 13:37:59 -07:00
Matthias Clasen 47dbebff39 [paint] Add COLRv0 tests 2022-12-23 13:37:59 -07:00
Behdad Esfahbod 3c972867b9 More s/hb_font_get_glyph_shape/hb_font_draw_glyph/ 2022-12-23 13:37:59 -07:00
Matthias Clasen c221933977 [paint] Preserve foreground information 2022-12-23 13:37:59 -07:00
Matthias Clasen 6387004cad [paint] Simplify api
Drop the hb_paint_context_t struct from the API, and
only pass the font where we need it.
2022-12-23 13:37:59 -07:00
Matthias Clasen 71bd5a0dfc [paint] Resolve colors
We don't need to pass the index/alpha pairs to
client callbacks, and can just resolve the colors
internally.

Update test results.
2022-12-23 13:37:59 -07:00
Matthias Clasen 9be01b6bff [paint] Pass hb_paint_context_t along
Replace the font argument with a hb_paint_context_t
that carries the font, the palette index and the
foreground color.

The hb_font_paint_glyph() api now takes the palette
index and the foreground color as extra arguments.

Update all callers and regenerate test results.
2022-12-23 13:37:59 -07:00
Matthias Clasen 97224f3b63 [paint] Pass font to all callbacks
This will lead to easier implementations.

At the same time, we change the push_clip_glyph
callback to use the font as-is, no unscaling needed.

Update all callers and expected test results.
2022-12-23 13:37:59 -07:00
Matthias Clasen b0fa40b2ec tests: More diagnostics 2022-12-23 13:37:59 -07:00
Matthias Clasen 290bb338bf Dist test result files 2022-12-23 13:37:59 -07:00
Matthias Clasen 74ccc1e76d tests: Produce useful output on failure 2022-12-23 13:37:59 -07:00
Matthias Clasen 084291108a Tests: Fix memleak pointed out by valgrind 2022-12-23 13:37:59 -07:00
Behdad Esfahbod d8cb7ceefb [test] Try fixing bots with old glib 2022-12-23 13:37:59 -07:00
Matthias Clasen 2d4678b647 Add a comment 2022-12-23 13:37:59 -07:00
Matthias Clasen 30a6fd04d0 [colr] Add some tests 2022-12-23 13:37:59 -07:00
Chun-wei Fan 4622be7f84 test/fuzzing: Fix dist
We need to dist the repacker fuzzer test items into the tarball, along
with the items in graphs/ and sets/.
2022-12-22 06:44:04 -07:00
Garret Rieger 40342c9437 [subset] check for addition overflow in hdmx size calculation.
Fixes https://oss-fuzz.com/testcase-detail/4877336988483584.
2022-12-21 16:44:06 -07:00
Garret Rieger b5acde43ed [subset] check pending/subsetted tag sets for alloc failure. 2022-12-13 15:31:40 -07:00
Garret Rieger 9fbe52b88d [subset] enable instancing tests by default. 2022-12-12 20:24:24 +00:00
Garret Rieger eda02c2ebd [subset] Move hb_subset_preprocess to be non-experimental. 2022-12-08 16:32:24 -07:00
Garret Rieger 35233d2514 [repacker] fix fuzzer reported stack overflow.
Fixes https://oss-fuzz.com/testcase-detail/6014493291577344.
2022-12-07 10:32:56 -07:00
Garret Rieger b17fbc200b [repacker] use memcpy to avoid alignment issues. 2022-12-05 14:13:47 -07:00
Garret Rieger f1d3489388 [repacker] bail on failure to alloc assigned_bytes set.
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/5390364397928448.
2022-12-05 14:13:47 -07:00
Garret Rieger 239a5aca02 [repacker] don't allow references to the null object in graph.
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/6714085985353728
2022-12-05 14:13:47 -07:00
David Corbett 260df1fa32 [indic] Support <U+0A02, U+0A40> 2022-12-04 10:46:47 -07:00
Qunxin Liu 8eadb83640 [subset] Update hb_subset_input_override_name_table API
Override the name string for the NameRecord identified by name_id,
platform_id, encoding_id and language_ids specified by the user.
If a record with specified name_id does not exist, this API will create
a new NameRecord with provided info and insert it to the name table.
2022-12-02 18:05:53 -07:00
Garret Rieger 16f61a1c87 [repacker] only build repacker fuzzer when experimental api is enabled. 2022-12-02 00:02:14 +00:00
Garret Rieger de5a621322 [repacker] enforce root node having no incoming edges. 2022-12-01 23:37:16 +00:00
Garret Rieger 30e405e470 [repacker] ensure link obj indices are valid. 2022-12-01 22:12:59 +00:00
Garret Rieger 554ed06fac [repacker] add cycle detection to the graph sort.
This allows us to bail early if the graph is not acyclic.
2022-12-01 21:52:37 +00:00
Garret Rieger 9e99d08470 [repacker] validate link widths during repacker setup. 2022-12-01 20:17:41 +00:00
Garret Rieger edf7a29595 [repacker] Validate link positions before running the repacker. 2022-12-01 20:17:41 +00:00
Garret Rieger 88d437525f [repacker] add test for repacker fuzzer. 2022-12-01 20:17:40 +00:00
Garret Rieger 6627a1ab45 [repacker] Add a initial seed for the fuzzer repacker. 2022-12-01 20:17:40 +00:00
Garret Rieger deca30b268 [repacker] get repacker fuzzer working.
Additionally add helper method that allows a graph to be saved as a fuzzer seed.
2022-12-01 20:17:40 +00:00
Garret Rieger 261a605f9c [repacker] verify graph is a dag before using the fuzzer input. 2022-12-01 20:17:40 +00:00
Garret Rieger 985b19f678 [repacker] begin implementing a fuzzer for the repacker api. 2022-12-01 20:17:39 +00:00
Garret Rieger 64e8707eca [subset] don't use hb repacker when generating test files from fonttools. 2022-11-24 18:24:50 +00:00
Garret Rieger ff3cac0ccd [subset] Fix unecessary trailing 0 bytes left by ContextFormat2 pruning.
Uneeded rules where beind removed from the count by the bytes for them was being left in the font.
2022-11-23 23:50:49 +00:00
Garret Rieger dd1ba328a8 [repacker] fix fuzzer timeout.
For https://oss-fuzz.com/testcase-detail/5845846876356608. Only process the set of unique overflows.
2022-11-21 16:24:48 -07:00
Behdad Esfahbod 527823ccac [unicode] Destroy user_data in set_funcs fail paths
This is what the font_funcs / draw_funcs do.
2022-11-19 15:19:08 -07:00
Qunxin Liu 6314aa7da4 [subset] add an experimental API that can override name strings for specified name_id 2022-11-08 14:10:25 -07:00
Behdad Esfahbod f53ef69d59 [indic] Order left-matras inside-out
Fixes https://github.com/harfbuzz/harfbuzz/issues/3863
2022-11-05 15:40:05 -06:00
Garret Rieger 2822b589bc [subset] Include instancing tests in distribution.
Automatically enable them when the experimental api is enabled.
2022-11-03 14:24:15 -06:00
Qunxin Liu 8a5524833c [instance] update OS2/.usWeightClass and .usWidthClass when
no-prune-unicode-ranges option is enabled
2022-10-27 11:59:31 -06:00
Behdad Esfahbod e854739b2d [fuzzing] Add test font for previous commit 2022-10-26 13:12:56 -06:00
Garret Rieger db22bfb3cc [subset] Remove Franklin from the tests which is not an open source font. 2022-10-17 13:15:47 -06:00