src/hb-ot-layout.cc


Log

Author Commit Date CI Message
Behdad Esfahbod 810fbedf 2025-04-03T20:59:23 [shape] Use font-data for GDEF varStore cache Last remaining alloc during shaping is gone! Fixes https://github.com/harfbuzz/harfbuzz/issues/5237
Behdad Esfahbod 7b8ae3d0 2025-03-13T10:44:40 [kern/kerx] Make zero-malloc
Behdad Esfahbod 7cf63429 2025-02-20T12:05:17 [ot-layout] Use a variable Doesn't make a diff in the generated code I believe, but is nice.
Behdad Esfahbod 6091abcc 2025-02-06T02:40:24 [buffer] Avoid a copy in collect_codepoints()
Behdad Esfahbod e5e3bc40 2025-02-06T02:36:26 [buffer] Merge two functions into a template
Behdad Esfahbod 7862c7c5 2025-02-04T21:37:27 Rename a method again
Behdad Esfahbod 80bbb0b2 2025-02-04T18:42:33 [set-digest] Rename a method
Khaled Hosny 773fe850 2024-11-20T17:20:49 [layout] Blocklist the GDEF table of various Courier New versions These files have incorrectly give several base glyphs GDEF mark glyph class leading in zeroing there advance widths. Fixes https://github.com/harfbuzz/harfbuzz/issues/4936
Behdad Esfahbod 0037ee28 2024-05-24T08:10:15 Merge pull request #4578 from harfbuzz/varc-table `VARC` table
Behdad Esfahbod e2ab6c7b 2024-05-12T15:25:13 [kern/kerx] Add accelerator and set-digest filtering
Behdad Esfahbod ebbec771 2024-05-12T15:10:21 [kern] Use the sanitized version from face I'm not sure why kern/kerx/morx were written this way before.
Behdad Esfahbod ac411f26 2024-04-23T13:26:53 [Condition] Finish evaluation of ConditionValue https://github.com/adobe-type-tools/opentype-spec-drafts/blob/main/condvalue_spec.md
Behdad Esfahbod 2f41d54b 2024-01-07T13:43:50 Fix old-compiler warning
Qunxin Liu aca55dbe 2023-11-03T10:51:37 [instancer] fix feature variations collect lookups We already know which record to keep, so just collect lookups and no need to check the substitutes_map
Qunxin Liu 091e538d 2023-10-26T12:52:08 [instancer] support partial instancing for FeatureVariations
Behdad Esfahbod 6190bb0b 2023-10-16T14:08:31 [layout] Change order of feature collection See comments for rationale. Fixes https://github.com/harfbuzz/harfbuzz/issues/4445
Khaled Hosny fcb9e591 2023-08-01T00:57:06 8.1.0
Behdad Esfahbod 29ad9304 2023-07-30T17:06:25 [layout] Minor add prealloc
Behdad Esfahbod dc35a0fb 2023-07-30T16:32:11 [ot-map] Speed up feature finding New API: - hb_ot_layout_collect_feature_map()
Khaled Hosny b4305532 2023-07-09T02:54:30 8.0.0
Behdad Esfahbod 690af7aa 2023-06-30T10:36:01 [GPOS] Sanitize Device tables lazily This speeds up face loading for variable fonts by 80%! Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New --------------------------------------------------------------------------------------------------------------------------------------------------------------- BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb -0.0368 -0.0366 20 20 20 19 BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/hb -0.7149 -0.7162 77 22 77 22 BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/var/hb -0.7241 -0.7255 80 22 79 22 BM_Font/load_face_and_shape/SourceSansPro-Regular.otf/hb -0.1441 -0.1445 28 24 28 24 BM_Font/load_face_and_shape/AdobeVFPrototype.otf/hb -0.7893 -0.7910 66 14 66 14 BM_Font/load_face_and_shape/AdobeVFPrototype.otf/var/hb -0.7865 -0.7882 67 14 66 14 BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/hb -0.8895 -0.8900 227 25 226 25 BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/var/hb -0.8895 -0.8900 226 25 225 25 BM_Font/load_face_and_shape/Comfortaa-Regular-new.ttf/hb -0.5512 -0.5531 42 19 42 19 BM_Font/load_face_and_shape/NotoNastaliqUrdu-Regular.ttf/hb -0.1511 -0.1510 227 192 225 191 BM_Font/load_face_and_shape/NotoSerifMyanmar-Regular.otf/hb -0.1494 -0.1498 41 35 40 34 OVERALL_GEOMEAN -0.6443 -0.6456 0 0 0 0
Behdad Esfahbod f0f6f6a8 2023-06-22T10:58:44 [layout] More message massaging
Behdad Esfahbod 37555f84 2023-06-22T10:21:19 [layout] Trace chosen script tag
Behdad Esfahbod 67b16247 2023-06-07T16:15:48 [set] Simplify a few set iterations as range loop
Behdad Esfahbod e047b1ab 2023-05-20T10:27:31 [layout] Improve docs
Behdad Esfahbod 02e0e939 2023-05-19T13:18:06 [layout] Fetch default font extents if localized extents not found
Behdad Esfahbod 8ccc1ff2 2023-05-19T13:14:57 [layout] Mark language as nullable GI needs it apparently.
Behdad Esfahbod 792ca22c 2023-05-19T11:42:20 [layout] Document new API
Behdad Esfahbod 0894813a 2023-05-19T11:30:03 [layout] Add "2" version of BASE table API ...that do the script/language resolution. Part of https://github.com/harfbuzz/harfbuzz/pull/4237 Ref https://github.com/harfbuzz/harfbuzz/issues/3439
Behdad Esfahbod 3e110c69 2023-05-19T11:06:26 [layout] Add hb_ot_layout_get_font_extents() Untested. Fixes https://github.com/harfbuzz/harfbuzz/issues/3290
Behdad Esfahbod 3f2401e2 2023-05-03T16:56:52 [layout] Don't init iters successively multiple times
Behdad Esfahbod 8a8fc37c 2023-05-03T14:57:00 [GDEF] Use a cache for glyph classes Shows 5% speedup for Roboto shaping.
Behdad Esfahbod 577bc8a2 2023-05-01T14:01:08 [layout] Micro-optimize
Behdad Esfahbod 5b78e9a9 2023-05-01T13:45:42 [layout] Whitespace
Khaled Hosny 7c9ed76d 2023-04-27T03:26:57 [doc] Use simpler markdown link syntax
Behdad Esfahbod 48f8ed7e 2023-04-22T10:11:22 Docs
Khaled Hosny 8bdaeddf 2023-02-11T23:44:58 7.0.0
Khaled Hosny 0ea8bbd9 2023-02-11T20:01:06 [doc] Use XSince for REPLACEME/EXPERIMENTAL To hide them from gtk-doc so that we can finally enable gtkdoc-check.
Behdad Esfahbod 7a4bd97e 2023-01-31T14:59:39 [layout] Build lookup accelerators lazily on-demand Reduces memory consumption for large multi-script fonts drastically.
Behdad Esfahbod 83353f13 2023-01-31T14:32:14 [layout] Reduce memory use slightly By using raw pointer instead of vector for subtable accelerator. To be used for more memory saving by making subtable accelerators lazy-loaded by shape-plans for large fonts.
Matthias Clasen 04056d44 2023-01-28T22:52:25 [layout] Optimize more buffer message calls Continuation of da7b66c1f8bbf7147f8113.
Behdad Esfahbod da7b66c1 2023-01-27T16:39:06 [layout] Optimize buffer message calls Those aren't exactly free. They were showing up in profiles.
Behdad Esfahbod edec8946 2023-01-20T09:28:59 New API: hb_ot_layout_script_select_language2() Variant that outputs chosen_language. Not sure why the original API didn't have this. The script counterpart has.
Behdad Esfahbod 2fd8e36e 2023-01-20T09:09:14 [layout] Fix return value of chosen_script when matching fails
Behdad Esfahbod ed023f66 2023-01-12T17:04:24 Enable -Wformat-signedness And fix the codebase.
Behdad Esfahbod a81dd105 2022-11-26T13:43:15 [layout] Adjust printing feature tags For required-feature, print spaces, not nul bytes.
Behdad Esfahbod 56e3868b 2022-11-26T13:14:23 [layout/buffer-message] Print feature name in lookup buffer messages
Behdad Esfahbod ed43bc51 2022-11-20T13:10:19 [buffer] Move delete_glyphs_inplace() here
Behdad Esfahbod 561946c7 2022-11-16T17:58:59 [layout] Comment
Behdad Esfahbod 27a8fe7d 2022-11-16T17:49:44 [layout] Only update buffer digest if buffer changed by a pause
Behdad Esfahbod 8b2a2111 2022-11-16T16:57:44 [layout] Keep digest updated in the context Don't recompute digest after every (applied) GSUB lookup.
Behdad Esfahbod a5964a2d 2022-11-16T16:45:23 [layout] Minor simplify
Behdad Esfahbod 80b87588 2022-11-16T16:26:41 [layout] Add a buffer message for digest-skipped lookups
Behdad Esfahbod dff1b809 2022-11-16T16:19:05 [buffer] Add .digest() and use
Behdad Esfahbod 654a2eaf 2022-11-16T16:09:04 [layout] Use buffer-digest for GSUB as well Combined with previous commit, this shows up to 12% speed up with Roboto and the en-words (ie. short strings) benchmark, about 5% for longer English tests, and no adverse effect on heavier fonts.
Behdad Esfahbod 15b6c325 2022-11-16T15:59:13 [layout] Use a buffer digest for GPOS to skip whole lookups
Khaled Hosny 3ce4b8f5 2022-10-08T19:10:07 5.3.0
Qunxin Liu f4813e3b 2022-09-09T10:34:09 [instance] update collect_lookups/prune_features()/closure_features() with variations Some features will be substituted with variations, so we do not collect lookups from the original feature tables.
Behdad Esfahbod b70032ed 2022-09-22T15:59:16 [layout] Fix typo in docs
Behdad Esfahbod 752060a4 2022-09-01T13:47:12 [layout] Document hb_ot_layout_lookup_get_optical_bound()
Behdad Esfahbod 71c6cba0 2022-09-01T13:43:19 [layout] Rename API: -hb_ot_layout_get_optical_bound() +hb_ot_layout_lookup_get_optical_bound()
Behdad Esfahbod 3892128a 2022-09-01T13:40:53 [layout] Add HB_NO_LAYOUT_RARELY_USED
Behdad Esfahbod 8e88653f 2022-09-01T13:39:26 [layout] Move code around
Behdad Esfahbod 4bf96211 2022-08-31T09:18:18 [optical-bounds] Optimize
Behdad Esfahbod 5d6f1a88 2022-08-31T08:31:24 [layout] Add hb_ot_layout_get_optical_bound()
Behdad Esfahbod 14eb3d37 2022-09-01T13:18:42 [layout] Improve annotations
Matthias Clasen 29d5c7f6 2022-08-31T15:03:09 docs: Improve docs for some apis Various functions take hb_tag_t arrays. Those arrays are expected to be 0-terminated. Document that.
Behdad Esfahbod c96bfca3 2022-08-31T08:05:14 [get-alternates] Minor simplify
Behdad Esfahbod 41aa02ae 2022-08-29T11:17:22 [layout] Improve get_feature_tags documentation Fixes https://github.com/harfbuzz/harfbuzz/issues/3798
Khaled Hosny 371c8867 2022-08-23T22:28:58 Add few missing since tags
Garret Rieger 5fdae684 2022-06-29T23:52:08 [reorg] Move GSUB.hh up one level and change GSUB namespace to GSUB_impl.
Khaled Hosny 98e90cc6 2022-06-30T08:43:57 [docs] Reduce warnings Use markdown syntax for inline code blocks instead of %true, %false, and %NULL.
Garret Rieger 3fbf2dec 2022-06-28T23:55:32 [reorg] Move OT::Layout::GPOS_impl::GPOS to OT::Layout::GPOS.
Garret Rieger 88ef3c5a 2022-06-28T23:26:49 [reorg] Change OT::Layout::GPOS to OT::Layout::GPOS_impl.
Garret Rieger 74f45f7c 2022-06-24T23:14:30 [reorg] Move remaining GPOS lookup types to new directory.
Behdad Esfahbod c13ff395 2022-06-08T06:25:23 [layout] Rename apply_recurse_func to specialization of dispatch_recurse_func
Behdad Esfahbod 42051fe1 2022-06-08T04:00:21 [layout] s/inplace/always_inplace/g
Behdad Esfahbod b96622d1 2022-06-05T02:45:41 [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
Behdad Esfahbod 15543f70 2022-06-04T10:55:50 [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.
Behdad Esfahbod e6409d39 2022-06-05T06:57:37 Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups" This reverts commit 57d1c08739d0acd94b96da2f9d5dd6c0ff3b3722. Err. This was an accident.
Behdad Esfahbod 57d1c087 2022-06-05T02:45:41 [layout] Use a cache for main input ClassDef of (Chain)ContextLookups
Behdad Esfahbod 997d9cc4 2022-06-02T18:04:12 [map] Make unique_ptr hashable
Behdad Esfahbod e9407a2b 2022-06-02T11:29:44 Use shared_ptr<hb_set_t> in one place See if valgrind is happy...
Behdad Esfahbod 3957d292 2022-05-29T07:30:58 [layout] Remove stale comment
Behdad Esfahbod 044d7a06 2022-03-28T12:38:56 [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
Garret Rieger b342adeb 2022-03-23T16:28:22 [reorg] Move GSUB into OT::Layout::GSUB namespace.
Behdad Esfahbod cad2fe8e 2022-03-15T10:49:29 [baseline] Fix HB_NO_METRICS build Fixes https://github.com/harfbuzz/harfbuzz/issues/3482
Behdad Esfahbod a8a89b80 2022-03-15T10:48:03 [layout] Whitespace
Behdad Esfahbod 6bf8f0a3 2022-03-15T10:44:41 [baseline] Use ot-metrics fallback API
Matthias Clasen e7ab42b2 2022-03-10T09:05:43 [layout] Fix handling of baseline variations For BASE table format 1.1, the handling of design space vs user space coordinates was inconsistent. We were applying design -> user transformation twice for the deltas, leading to wrong baseline values. Patch by Ebrahim Byagowi <ebrahim@gnu.org> Fixes: #3476
Khaled Hosny 8d1b000a 2022-03-01T21:27:32 4.0.0
Matthias Clasen 95bb2ff7 2022-02-16T13:10:52 [ot-layout] Add central baselines Add HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL and HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL which are the centers of the ideographic em-box and face box.
Matthias Clasen f81578fd 2022-02-13T19:15:36 [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
Behdad Esfahbod 98079109 2022-02-13T18:15:32 [ot-layout] Add +hb_ot_layout_get_horizontal_baseline_tag_for_script() New API: +hb_ot_layout_get_horizontal_baseline_tag_for_script()
Matthias Clasen 9909e332 2022-02-15T18:02:09 Improve docs for hb_ot_layout_get_ligature_carets Add some relevant details to the documentation for this function. Fixes: #3168
Garret Rieger bc899650 2022-01-28T13:54:10 [subset] Fix for issue #3397. cur_intersected_glyphs gets modified during recursion leading to incorrect filtering of sub tables in some cases. So don't use cur_intersected_glyphs. Instead just add an additional entry onto the parent_active_glyphs () stack. Additionaly expands NotoNastaliqUrdu tests to include coverage of the issue from #3397.
Behdad Esfahbod bea5369c 2022-01-04T10:52:05 [buffer] Rename swap_buffers() to sync()
Garret Rieger d6702570 2021-12-10T13:52:05 [subset] reset the visited lookup count before each closure iteration.
Behdad Esfahbod 394f7729 2021-11-19T11:49:23 [map] Allow storing classes in the hashmap Fixes https://github.com/harfbuzz/harfbuzz/issues/3293 The trick was to change the type of the invalid key/value to be non-class.
Matthias Clasen 1e07d42a 2021-11-07T01:19:42 Typo fix