Commit Graph

13284 Commits

Author SHA1 Message Date
Behdad Esfahbod 3ce0a9841f [inplace] Adjust 2022-06-08 06:17:27 -06:00
Behdad Esfahbod 204d71514c [layout] Add (back) inplace implementation
This is a forward-port from the (8yr old) accelerate-lookups branch.
The overhead is too high though, so going to abandon it. Posting for
posterity.
2022-06-08 05:46:57 -06:00
Behdad Esfahbod 42051fe18a [layout] s/inplace/always_inplace/g 2022-06-08 04:00:21 -06:00
Behdad Esfahbod 21346af01d [layout-cache] Adjust cost-function for recent change 2022-06-07 14:41:39 -06:00
Behdad Esfahbod bfee6839b0 [layout-cache] Cache lookahead, not input, classdef in ChainContextFormat2
From the commit:

+    /* For ChainContextFormat2 we cache the LookaheadClassDef instead of InputClassDef.
+     * The reason is that most heavy fonts want to identify a glyph in context and apply
+     * a lookup to it. In this scenario, the length of the input sequence is one, whereas
+     * the lookahead / backtrack are typically longer.  The one glyph in input sequence is
+     * looked-up below and no input glyph is looked up in individual rules, whereas the
+     * lookahead and backtrack glyphs are tried.  Since we match lookahead before backtrack,
+     * we should cache lookahead.  This decisions showed a 20% improvement in shaping of
+     * the Gulzar font.

https://github.com/harfbuzz/harfbuzz/pull/3636
2022-06-07 11:41:05 -06:00
Behdad Esfahbod 39820af72f [layout] Add HB_NO_OT_LAYOUT_LOOKUP_CACHE to disable caching lookups
Enabled when optimize-size profile is enabled.
2022-06-07 10:27:55 -06:00
Behdad Esfahbod 845279c34c
Merge pull request #3636 from harfbuzz/classdef-cache
Classdef cache
2022-06-07 16:40:22 +01:00
Behdad Esfahbod b59e25f25e [cff] Try fixing Heap-buffer-overflow in CFF::Charset::collect_glyph_to_sid_map
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47790
2022-06-07 09:27:44 -06:00
Behdad Esfahbod c8fb048f79 [gsubgpos] Document caching 2022-06-07 09:20:27 -06:00
Behdad Esfahbod 5963cf4469 [gsubgpos] Merge cache_enter and cache_leave entry points
Saves a pointer per subtable
2022-06-07 09:17:14 -06:00
Behdad Esfahbod d4c09e9a87 [gsubgpos] Remove apply_cached() entry point
Just use a bool to apply()
2022-06-07 09:17:14 -06:00
Behdad Esfahbod b96622d15c [layout] Use a cache for main input ClassDef of (Chain)ContextLookupFormat2
This commit adds a per-lookup caching infrastructure to GSUB/GPOS, and
uses it to cache input ClassDef.get_class value for (Chain)ContextLookupFormat2.

For fonts heavy on use of heave class-based2 context matching, this shows
a good speedup. For NotoNastaliqUrdu for example, I observe 17% speedup.

Unfortunately not many other lookups can use a cache like this :(.

https://github.com/harfbuzz/harfbuzz/pull/3636
2022-06-07 09:14:38 -06:00
neilnaveen 356c1f8336 chore: Set permissions for GitHub actions
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: neilnaveen <42328488+neilnaveen@users.noreply.github.com>
2022-06-07 14:32:11 +01:00
Xavier Claessens 4266f4e29a Fix check-* scripts when harfbuzz is a subproject
When harfbuzz is a subproject paths are in the form
"subprojects/harfbuzz/src/...". Instead of removing "src/" prefix, take
the absolute path and make it relative to current source dir.

This fix regression introduced in
https://github.com/harfbuzz/harfbuzz/pull/3394.
2022-06-06 16:53:29 +01:00
Behdad Esfahbod 15543f70e0 [indic-like] Move allocation of syllable() buffer var to shapers that use it
In indic, we don't have a pause location release the var.
2022-06-05 08:15:47 -06:00
Behdad Esfahbod 104dc85a22 [buffer] Add try_allocate for buffer variables 2022-06-05 08:15:46 -06:00
Behdad Esfahbod b5f621b08d [cplusplus] Internally allow using hb_unique_ptr with hb_free()
...for arbitrary types.
2022-06-05 08:15:31 -06:00
Behdad Esfahbod f18eb000d3 [buffer] Mark a variable as unused
Weird. Somehow our HB_TINY bot started erring as this var being unused
in non-debug builds. Not sure why now...

    In file included from src/hb-ot-map.hh:32:0,
                     from src/hb-ot-shape.hh:32,
                     from src/hb-aat-layout.hh:32,
                     from src/hb-aat-layout.cc:30,
                     from src/harfbuzz.cc:1:
    src/hb-buffer.hh: In member function ‘void hb_buffer_t::assert_var(unsigned int, unsigned int)’:
    src/hb-buffer.hh:192:18: error: unused variable ‘bits’ [-Werror=unused-variable]
         unsigned int bits = (1u<<end) - (1u<<start);
                      ^~~~
cc1plus: some warnings being treated as errors
Error: Process completed with exit code 1.
2022-06-05 07:06:07 -06:00
Behdad Esfahbod e6409d3905 Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups"
This reverts commit 57d1c08739.

Err. This was an accident.
2022-06-05 06:57:37 -06:00
Behdad Esfahbod 57d1c08739 [layout] Use a cache for main input ClassDef of (Chain)ContextLookups 2022-06-05 06:54:19 -06: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 2dec742070 [benchmark-shape] Remove a few tests
They were not adding value.
2022-06-05 02:04:02 -06:00
Behdad Esfahbod 3c258e1373 [benchmark-shape] Reorder text vs font order for better output 2022-06-05 02:01:17 -06:00
Behdad Esfahbod 92e81ab1df [indic/khmer/myanmar] Shift category numbers around to avoid overlap
Fixes https://github.com/harfbuzz/harfbuzz/issues/3632
2022-06-05 01:14:32 -06:00
Behdad Esfahbod d6dbc0d175 [gi/ft] Silence warnings
gi doesn't understand that FT_Face is a pointer, and not bare struct.
So it skips these APIs anyway. Mark skip to silense the warning.

../src/hb-ft.cc:242: Warning: HarfBuzz: hb_ft_font_get_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
../src/hb-ft.cc:264: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip)
2022-06-05 00:58:53 -06:00
Behdad Esfahbod f78a25098a [gi] Remove Xconstructor annotations 2022-06-05 00:55:35 -06:00
Behdad Esfahbod aef92b2846 [ci] Better compiler specification in configs-build job 2022-06-05 00:45:38 -06:00
Behdad Esfahbod cb961eac5c [configs] Fix builds with HB_NO_BUFFER_SERIALIZE but not HB_NO_BUFFER_VERIFY
e986c12075 (commitcomment-75339317)
2022-06-05 00:45:29 -06:00
Behdad Esfahbod 67852504f6 [indic/myanmar] No-op update to machines 2022-06-04 09:27:45 -06:00
Behdad Esfahbod 20a61ca447 [myanmar] Fold D category into GB
Trying to free a byte the buffer vars, for caching of lookups.

Part of https://github.com/harfbuzz/harfbuzz/issues/3633
2022-06-04 09:27:37 -06:00
Behdad Esfahbod f9b643f6b2 [layout] s/hb_get_subtables_context_t/hb_accelerate_subtables_context_t/g 2022-06-04 09:27:31 -06:00
Behdad Esfahbod d4dfb8c1f1 [arabic] Free up buffer variable earlier 2022-06-04 09:27:23 -06:00
Behdad Esfahbod 0c3d8c0d0f [README] Test adding as a symlink
Autoconf requires README
2022-06-04 06:05:23 -06:00
Behdad Esfahbod 4510d9a928 [README] Delete. We ship README.md 2022-06-04 06:02:25 -06:00
Behdad Esfahbod 01337e7a64 [README.md] minor 2022-06-04 06:01:52 -06:00
Behdad Esfahbod 3972ec7340 [TESTING.md] Update profiling instructions. 2022-06-04 06:01:17 -06:00
Khaled Hosny af41be6fa7 Move freedesktop.org/wiki/HarfBuzz content to README.md 2022-06-04 12:59:22 +01:00
Khaled Hosny 9622337b52 Move old harfbuzz.org content to README.md
Copied from:

  https://web.archive.org/web/20191221151847/https://freedesktop.org/wiki/Software/HarfBuzz/

Edited lightly trying to merge it with existing README.md content and
remove grossly outdated bits. Might still need more editing.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1919
2022-06-04 12:59:22 +01:00
Khaled Hosny e2ece939fb [doc] Expand a little bit on Uniscribe compatibility
https://github.com/harfbuzz/harfbuzz/issues/3556#issuecomment-1130247124
2022-06-04 12:46:37 +01:00
Khaled Hosny 8d36300154 [doc] Talk less about “complex” scripts
Use more neutral terms and don’t make it like some scripts are outliers.
2022-06-04 12:46:37 +01:00
Khaled Hosny bd44840fab [doc] s/complexshapers/shapers/g 2022-06-04 12:46:37 +01:00
Behdad Esfahbod cc7ebb0ffa Remove remaining mention to complex shapers in the code
https://github.com/harfbuzz/harfbuzz/pull/3628#issuecomment-1146248037
2022-06-04 05:42:58 -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
Behdad Esfahbod 40d7d56e53 [subset-input] Minor move 2022-06-03 05:40:18 -06:00
Behdad Esfahbod 40193adbfc [subset] Update default features list 2022-06-03 05:35:19 -06: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