Commit Graph

2087 Commits

Author SHA1 Message Date
Khaled Hosny c3f590bb1e [arabic] Support legacy PUA shaping
Support legacy pre-OpenType Windows 3.1-era fonts, by remapping PUA code
points in cmap table and letting our fallback shaper build the GSUB
table.

Uniscribe applies also mset-like substitution, but our fallback mark
positioning gives better results, so this is not implemented.
2022-06-19 10:42:05 -06:00
Garret Rieger af74ab452f [repack] always run the sort in repack.
This is needed to ensure virtual link ordering constraints are respected when repack is being called from fontTools. For subset usage, repack won't be called if the graph doesn't already overflow so this change doesn't cause any extra work.
2022-06-16 15:17:58 -06:00
Garret Rieger 311413f16b [subset] Fix fuzzer issue.
Fixes https://oss-fuzz.com/testcase-detail/5693568490012672. new_index should be set from new_index2 when the entry is present in the map.
2022-06-14 17:49:13 +01:00
Behdad Esfahbod 697287fbd7 [benchmark-shape,hb-shape-threads] Fix argument parsing order
After recent change.
2022-06-05 06:53:42 -06:00
Behdad Esfahbod c03a31417b [hb-shape-threads] Adjustments similar to benchmark-shape
Duplication sighz.
2022-06-05 02:31:21 -06:00
Behdad Esfahbod d7c9cc34ae Fix build 2022-06-05 02:30:11 -06:00
Behdad Esfahbod b39b5f2f31 [name] Implement approximate language matching
Very rudimentary.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3354
2022-06-03 13:00:33 +01:00
Khaled Hosny 26d8066a41 [test/shape] Remove texts subdirectory
These texts were never hooked into the test suite, they however
represent a good collection of test texts, but one can always access
them from git history.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3123
2022-06-03 12:12:13 +01:00
Khaled Hosny cd41557a96 [test/shape] Add PhagsPa tests
Adopted from texts/in-house/shaper-arabic/script-phags-pa/misc/misc.txt.

Using Noto Sans PhagsPa.
2022-06-03 12:12:13 +01:00
Khaled Hosny 1ab12e314a [test/shape] Add Malayalam dot-reph tests
Adopted from texts/in-house/shaper-indic/script-malayalam/misc/dot-reph.txt.

Using Noto Sans Malayalam.
2022-06-03 12:12:13 +01:00
Khaled Hosny 6b2f3b5a99 [test/shape] Add Javanese tests
Adopted from texts/in-house/shaper-use/script-javanese/misc.txt.

I don’t know what font this was originally tested against, so I used
Noto Sans Javanese.
2022-06-03 12:12:13 +01:00
Khaled Hosny c9c47dd8ad [test/shape] Add Hebrew diacritics tests
Adopted from 406044986a. Using
TaameyFrankCLM.ttf from the Mozilla issue.
2022-06-03 12:12:13 +01:00
Khaled Hosny ef5d7febc8 [test/shape] Allow using hb-subset in record-test.sh
I think it is about time we use our own subsetter here. FontTools can
still be used.
2022-06-03 12:12:13 +01:00
Behdad Esfahbod 7aacdd05bd [cplusplus] Test hashing shared_ptr / unique_ptr 2022-06-03 02:10:06 -06:00
Behdad Esfahbod d7785a6da0 [cplusplus] Add unique_ptr 2022-06-02 12:43:04 -06:00
Behdad Esfahbod e0f3cab246 [cplusplus] Add hb-cplusplus.hh
Fixes https://github.com/harfbuzz/harfbuzz/issues/2152
2022-06-02 18:22:05 +01:00
Garret Rieger 98aaecd397 [subset] fix data race touching Crap() in cff subsetting. 2022-06-01 22:50:35 +01:00
Garret Rieger d8d96b26e7 [threads-test] Add a threads test against hb-subset. 2022-06-01 22:50:35 +01:00
Garret Rieger 858570b1d9 [subset] add some additional 32bit var store cases.
Test the path where the 32 bit delta is not included.
2022-06-01 19:31:55 +01:00
Garret Rieger 209d6aa2b7 [subset] Update make files for 32bit_var_store test. 2022-06-01 19:31:55 +01:00
Garret Rieger 9c41bfe1a6 [subset] Add subset test of font with 32 bit delta in a var store. 2022-06-01 19:31:55 +01:00
Behdad Esfahbod 18cd15bede Rename test 2022-06-01 07:55:59 -06:00
Behdad Esfahbod 62e803b361 [sbix] Limit glyph extents
Fixes https://github.com/harfbuzz/harfbuzz/issues/3557
2022-06-01 07:39:20 -06:00
Behdad Esfahbod 5a058ba158 [shape-fuzzer] Add commented out more buffer-verify option
Those currently fail and I've been unable to debug them.

I tried two, passing them to hb-shape doesn't reproduce the failure. :(
2022-06-01 04:53:50 -06:00
Behdad Esfahbod 189f65344a [fuzz-shape] Verify shape output
Let the fuzzers loose on shape verify.
2022-06-01 04:53:50 -06:00
Behdad Esfahbod 33145a4b75 [test/shape] Pass --unsafe-to-concat to hb-shape 2022-05-31 06:36:08 -06:00
Behdad Esfahbod b010962c3b [test/hb-shape-threads] Silence hb_language_get_default() threadysafety issue 2022-05-30 05:34:25 -06:00
Behdad Esfahbod 4e59900ff5 [test/hb-shape-threads] Share font amongst threads 2022-05-30 05:21:55 -06:00
Behdad Esfahbod 18b0bd0f5f [test/hb-shape-threads] Verify buffer 2022-05-30 05:12:12 -06:00
Behdad Esfahbod 484cc18732 [test-shape-threads] Set language 2022-05-30 05:09:53 -06:00
Behdad Esfahbod f371789b40 Sprinkle static around 2022-05-30 05:09:53 -06:00
Behdad Esfahbod 4386626ee0 [test/threads] Fix dependency 2022-05-30 05:09:53 -06:00
Behdad Esfahbod e0544c481d [test/threads] Fix distcheck 2022-05-30 05:09:53 -06:00
Behdad Esfahbod e3d5a117a3 [hb-shape-threads] Fix tsan race 2022-05-30 05:09:53 -06:00
Behdad Esfahbod 33c990f0a9 Include cassert to fix bots 2022-05-30 05:09:53 -06:00
Behdad Esfahbod 049af18684 [threads] Add suite to test 2022-05-30 05:09:53 -06:00
Behdad Esfahbod 87453f63fa [hb-shape-threads] Fix current-work-dir so test passes 2022-05-30 05:09:53 -06:00
Behdad Esfahbod f77faf8654 [hb-shape-threads] Allow overriding test parameters from cmdline 2022-05-30 05:09:53 -06:00
Behdad Esfahbod f0fba59969 [hb-shape-threads] Reduce num-iterations 2022-05-30 05:09:53 -06:00
Behdad Esfahbod e8a2436332 [threads] Add a condition_variable to test for all threads to be ready 2022-05-30 05:09:53 -06:00
Behdad Esfahbod 4d42a94c19 [threads] Add hb-shape-threads test 2022-05-30 05:09:53 -06:00
Garret Rieger 3472f73b79 [subset] also include no subset tables when guessing which tables are present. 2022-05-25 21:52:48 +00:00
Garret Rieger 9564d98739 [subset] fix subsetting of faces created via hb_face_create_for_tables.
Fixes #3609.
2022-05-25 21:16:37 +00:00
Garret Rieger 4e11da054d [repacker] update repacker test golden file.
Changed due to removal of Kahn sorting.
2022-05-20 09:41:18 -06:00
Behdad Esfahbod 25393288f0 [test] Fix compiler warning 2022-05-19 18:16:48 -06:00
Garret Rieger 52d59bf150 [perf] Make subset benchmark data driven. 2022-05-10 14:30:08 -06:00
Garret Rieger 8f9f0c494b [subset] Enforce cmap12 group ordering constraints in collect_mapping.
Fixes fuzzer issue: https://oss-fuzz.com/testcase-detail/6365271012540416
2022-05-10 12:15:09 -06:00
Garret Rieger b051f3fa83 [subset] Fix cpal subsetting when there are partial palette overlaps.
The existing code doesn't correctly handle the case where palettes partially overlap in the color record array. This changes the subsetting to only share entries in the color record array when palettes have the same first color index. Partially overlapping palettes will be converted to disjoint segments in the color record array.

Updates one of the color tests to use multiple palettes.

Also fixes fuzzer: https://oss-fuzz.com/testcase-detail/5568200165687296.
2022-05-09 12:25:05 -06:00
Behdad Esfahbod ca8a0f3ea3 [gvar] Protect against out-of-range access
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47281
Fixes https://oss-fuzz.com/testcase-detail/5508865908670464
2022-05-06 11:54:38 -06:00
Behdad Esfahbod 4de5352a3d [test] Add test
From https://github.com/harfbuzz/harfbuzz/issues/3545

Dropped the CFF table.
2022-04-28 14:40:33 -06:00
Behdad Esfahbod 4d48fae4f2 Enforce Regional_Indicators native direction to LTR
And undo the morx direction reversal change introduced in
https://github.com/harfbuzz/harfbuzz/pull/3315
23159084b4

This fixes original bug https://github.com/harfbuzz/harfbuzz/issues/3314

And the reversion in morx code fixes regressions:
https://github.com/harfbuzz/harfbuzz/issues/3528
https://github.com/harfbuzz/harfbuzz/issues/3535

Supersedes:
https://github.com/harfbuzz/harfbuzz/pull/3529
2022-04-21 11:15:34 -06:00
Khaled Hosny 383c11d756 Add test for ligature-id allocation
Test for the fix in 7bdc20ec81 for the
regression from 43be5ba442.
2022-04-19 16:33:57 +02:00
David Corbett ecb3e7ec92 Enable indic-feature-order.tests 2022-03-28 18:02:36 -06:00
Behdad Esfahbod 044d7a06db [indic-like] Add per-lookup per-syllable flag
This allows mix-and-matching per-syllable and other lookups.
In fact, removes the clear-syllables call completely.

Fixes https://github.com/harfbuzz/harfbuzz/issues/3513
2022-03-28 17:39:54 -06:00
Behdad Esfahbod 18c0290cf5 Add test for previous commit 2022-03-28 13:24:16 -06:00
Behdad Esfahbod a665e29ed7 [use] Avoid O(n^2) in the machine
Fixes https://github.com/harfbuzz/harfbuzz/issues/3502
2022-03-25 15:17:55 -06:00
Behdad Esfahbod ccd9161bfd [apply-lookup] Try to fix the logic for contextual lookups
Fixes https://github.com/harfbuzz/harfbuzz/issues/1611

Notably, this fixes Myles's AdditionFont:
https://litherum.blogspot.com/2019/03/addition-font.html

Test with AdditionFont, eg.:
$ util/hb-view AdditionFont.otf =1112112+1113134=
2022-03-25 15:14:40 -06:00
Behdad Esfahbod a003fc0df1 Remove accidental files 2022-03-25 09:37:50 -06:00
Andrew John 0182988229
[set] Add call to export set contents to an array. (#3500)
[set] Add hb_set_next_many.
2022-03-25 09:36:44 -06:00
Khaled Hosny f76ffa8374 [build] Change how platform shaper tests are enable
Run the tests unconditionally and skip if the shaper is not available.
This fixes distcheck (https://github.com/harfbuzz/harfbuzz/pull/3504)
and shows SKIP for these tests instead of ignoring them.
2022-03-24 06:48:12 +02:00
Chun-wei Fan eb44d64bc2 test: Dist the platform shaper test data
For builds from release tarballs, the tests fail in the DirectWrite and
Uniscribe tests when these platform shapers are enabled, since the data files
were not found in the source tree, when building with Meson at least.

Fix this by dist'ing the platform shaper test data files.
2022-03-24 11:25:50 +08:00
Behdad Esfahbod 36b8f97413 Update tests for recent changes 2022-03-21 21:50:04 -06:00
Behdad Esfahbod 03085132ba [buffer] Fix out-buffer under memory-alloc failure
This was broken in July refactoring of the buffer, and exposed to
ReverseChainSingleSubstFormat1 in 3807061d63

Fixes:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38800
https://bugs.chromium.org/p/chromium/issues/detail?id=1303552
2022-03-21 18:09:06 -06:00
David Corbett 98b4852434 [indic] Test clearing syllables earlier 2022-03-21 15:42:08 -06:00
Andy John ef588ea97b Add option to insert a sorted arrays of values to sets. 2022-03-21 15:32:59 -06:00
Qunxin Liu 7cb002cb58 [subset] bug fix in prune_langsys
we should not cache visited langsys cause 2 different Record<Langsys>
could have different Tag while pointing to the same Langsys, a langsys
is redundant in Record<Langsys> A does not mean it's redundant in Record
B. Same thing for visited_script.
Also adding the number of features in the LangSys's feature list to the
visited langsys count so it's more accurate.
Plus some improvement in langsys compare()
2022-03-16 13:08:13 -06:00
David Corbett 49fb8f9072 [USE] Treat visible viramas like dependent vowels 2022-03-13 14:45:27 -06:00
Qunxin Liu a35757c6bc [repacker] expose hb_subset_repack() API, hb_object_t and hb_link_t structs 2022-03-10 17:26:20 -07:00
Garret Rieger f6071c16b0
[subset] Rename codepoint -> unicode in subset plan api 2022-02-28 23:45:40 +02:00
Behdad Esfahbod 222301bfa4
Merge pull request #3429 from harfbuzz/external_plan
[subset] expose subset plan in public subsetting API
2022-02-24 12:55:01 -07:00
Matthias Clasen d4cb07728c Add a missing file
The style test is using notosansitalic.ttf now,
but I forgot to add it with the test. Fix that.
2022-02-18 18:27:02 -06:00
Matthias Clasen 16b232be0e [hb-style] Fix the sign of slant ratios
We want negative slant angles to yield
positive slant ratios. Fix that.

Test included.
2022-02-18 18:10:34 -06:00
Matthias Clasen e76061a737 [hb-style] Fix synthetic slant values
When reporting the slant ratio of a font
that has synthetic slant set, we were
reporting twice the expected value.
Fix that. Test included.
2022-02-18 17:53:54 -06:00
Behdad Esfahbod 56f11ec938 [buffer] Add HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT
Fixes https://github.com/harfbuzz/harfbuzz/issues/3454
2022-02-18 17:52:27 -06:00
Behdad Esfahbod f8e9e315bb
Merge pull request #3437 from matthiasclasen/synthesize-missing-baselines
[BASE] Synthesize missing baselines
2022-02-17 14:34:46 -06:00
Matthias Clasen f81578fd86 [ot-layout] Synthesize missing baselines
Add a variation of hb_ot_layout_get_baseline that
synthesizes missing baselines, using heuristics in part
taken from the CSS Inline Layout Module, Level 3.

Includes some new tests for synthesized baselines.
The base2.ttf is a subset of Noto Sans Bengali that
includes just the Bengali Ka.

New API: hb_ot_layout_get_baseline_with_fallback
2022-02-16 17:37:33 -06:00
Behdad Esfahbod d2998faad3
Merge pull request #3410 from harfbuzz/boring-expansion
[Boring Expansion] >64k loca & hmtx tables

This does two things:

The num-glyphs reported by the face now is the maximum reported by the maxp and that deduced from the length of the loca table; I think this is the right thing to do anyway; According to OpenType such loca tables are invalid.

The interpretation hmtx tables that have excessive bytes at the end, again, invalid according to OpenType, has changed. Previously we were interpreting those excessive bytes as extra lsb values. Now we interpret them as extra advance values, the last of which is repeated for all missing glyphs. Again, these are tables that are invalid according to OpenType, and the advances are for glyph indices beyond maxp table's num-glyphs.

The combined effect is that the font can have shapes and advances for gid's beyond the maxp limit of 64k. In fact, maxp table becomes optional.
2022-02-16 14:37:09 -06:00
Khaled Hosny cfa8cd7fb0 [autotools] Fix make distcheck
The test-draw.c can now optionally uses hb-ft, but automake file was not
passing FreeType cflags or libs to it.
2022-02-16 11:58:38 +02:00
Behdad Esfahbod a396543ae1
Merge pull request #3411 from harfbuzz/draw
[draw] Finish and release draw API
2022-02-15 18:47:55 -06:00
Behdad Esfahbod 67eb9acf79 [config] Add HB_NO_BORING_EXPANSION 2022-02-15 17:17:49 -06:00
Behdad Esfahbod 1bf588e28b [test/shape] Internal rename
Residual from e0d7060f80
2022-02-15 16:57:23 -06:00
Behdad Esfahbod 197ed8f592 [test/api] Fix leaks 2022-02-15 14:30:12 -06:00
Behdad Esfahbod 531c27d199 Fix build 2022-02-15 14:20:54 -06:00
Behdad Esfahbod 8b7ccc41c4 [hmtx] Implement [boring-expansion] >64k expansion
This implements https://github.com/be-fonts/boring-expansion-spec/issues/7
2022-02-15 14:15:12 -06:00
Behdad Esfahbod 379e526aa4 [test] Add test for current hmtx logic 2022-02-14 15:02:31 -06:00
Behdad Esfahbod ed6d287d11 [ot-face] Load num-glyphs from `loca` table before `maxp`
Implements [boring-expansion] [maxp] Relax
https://github.com/be-fonts/boring-expansion-spec/issues/6
2022-02-14 13:52:30 -06:00
Ebrahim Byagowi 6b75a30a73 [draw/test] Swap a freetype test case with a simpler one
As CI failure, apparently the my local freetype and CI one have different
result so let's switch the case with a simpler one just to test quadratic command
is emitted correctly.
2022-02-14 01:54:33 +03:30
Behdad Esfahbod ae223764a3 [test/draw] Typo 2022-02-13 15:39:14 -06:00
Ebrahim Byagowi 0429921c10 [draw/test] Add test for freetype callback
Let's have that part of the code also covered.
2022-02-14 00:18:13 +03:30
Ebrahim Byagowi d4588204e5 [draw/glyf] Emit empty contours
This makes it actually match freetype behaviour even though rasterizer
should filter such contours specially for stroking.

See https://github.com/harfbuzz/harfbuzz/pull/3411#discussion_r802283827 for the context.
2022-02-13 23:50:53 +03:30
Khaled Hosny 0e357c504c [draw] Test scaling subfont differently from parent 2022-02-13 13:21:15 -06:00
Behdad Esfahbod 151f205819 [draw] Emit move_to immediately, like other operators 2022-02-13 13:21:15 -06:00
Khaled Hosny aca80a4a40 [draw] Add test for applying synthetic slant 2022-02-13 13:21:15 -06:00
Khaled Hosny 052fd2d8b9 [draw] Add test for hb_draw_move_to() etc 2022-02-13 13:21:15 -06:00
Behdad Esfahbod f1a9a9ccaf [draw-state] Pass state down to callbacks 2022-02-13 13:21:14 -06:00
Behdad Esfahbod 9f05362d43 [test-draw] Fix compiler warning 2022-02-13 13:21:14 -06:00
Behdad Esfahbod 1740916ede [draw] Remove check for no-op
This is unnecessary overhead. Up to rasterizers to handle this.  Plus,
this throws off point-numbers in uses that rely on it.

Disabled one test that broke with this.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod 5610fa1da0 [test-draw] Re-enable two disabled tests 2022-02-13 13:21:14 -06:00
Behdad Esfahbod 8b4f429000 [draw] Virtualize hb_font_draw_glyph() into hb_font_get_glyph_shape()
To be implemented in hb-ft.
2022-02-13 13:21:14 -06:00
Behdad Esfahbod 2bed4f46fb [draw] Fix draw signatures 2022-02-13 13:21:14 -06:00