RazrFalcon / rustybuzz

A complete harfbuzz's shaping algorithm port to Rust
MIT License
498 stars 34 forks source link

Sync with 3.1.1 #93

Closed LaurenzV closed 4 months ago

LaurenzV commented 4 months ago
Status Commit message HB Link
⚪️ [doc] Add missing version tags Link
⚪️ Make the code able to compile with MSVC++ from Visual Studio 2015 (Version 14.0.25431.01 Link
⚪️ [repacker] fix heap use after free in repacker. Link
⚪️ Rename HBGlyphID to HBGlyphID16 Link
⚪️ Add stub HBUINT15 Link
⚪️ Make the file UTF-8 again Link
⚪️ [myanmar] Towards separating Myanmar from Indic table Link
⚪️ [khmer] Towards separating Khmer from Indic table Link
🟢 Add support for Pwo Karen / Ason Chin medial la Link
⚪️ [set-digest] Use using instead of typedef Link
⚪️ [subset] add closure_glyphs () method for MATH table Link
⚪️ [subset] fix find_duplicate_features Link
⚪️ [subset] Fix subset_offset_array adding unused space to serializer. Link
⚪️ [subset] subset MATH table Link
⚪️ [atomic] Cannot fail anymore Link
⚪️ [mutex] Add hb_mutex_t std::mutex implementation Link
⚪️ Add a debug message when offset overflow resolution fails. Link
⚪️ [repacker] begin implementing the ability to isolate extension subtables. Link
⚪️ [repacker] extract overflows processing into its own method. Link
⚪️ [repacker] do extension subtable isolation before starting resolution attempts. Link
⚪️ [repacker] recursively duplicate nodes during isolation. Link
⚪️ [repacker] Add repacker test for subgraph isolation. Link
⚪️ [repacker] put each 32 bit subgraph into it's own packing space. Link
⚪️ [repacker] default space to 0. Link
⚪️ [repacker] correctly update incoming_edges in duplicate. Link
⚪️ [repacker] add a couple more complex isolation tests. Link
⚪️ [repacker] add repacker isolation test on real font. Link
⚪️ [repacker] reduce the bits used by order by 2 to give more bits to distance. Link
⚪️ [repacker] handle a couple of duplication edge cases. Link
⚪️ [repacker] s/0/HB_TAG_NONE Link
⚪️ [getn-hb-version.py] Open old output in UTF-8 mode as well Link
⚪️ [repacker] fix bug in subgraph isolation. Link
⚪️ [subset] Fix bug in composite operation counting. Link
⚪️ [repacker] begin storing each nodes parents. Link
⚪️ [repacker] add space assignment based on connected components. Link
⚪️ [repacker] when assigning each connected subgraph a space Link
⚪️ [repacker] restrict 32 bit subgraph connected component search to only nodes reachable via directed links. Link
⚪️ [subset] fuzzer fix: https://oss-fuzz.com/testcase-detail/6616166961905664 Link
⚪️ [repacker] Handle the case where a subgraph root has an incoming 32 and 16 bit edge. Link
⚪️ [repacker] add the ability to move subgraphs from a shared space into their own space. Link
🟢 [Unicode 14] Handle U+180F FVS4 Link
🟢 [USE] Remove overrides for hieroglyphic categories Link
🟢 [USE] Update the data files Link
🟢 [ot-shape] Tweak table order some more Link
🟢 [indic] Apply 'calt' and 'clig' across syllable boundaries Link
🟢 [test] Add test for https://github.com/harfbuzz/harfbuzz/issues/3244 Link
🟢 [test] Add test for https://github.com/harfbuzz/harfbuzz/issues/2757#issuecomment-933531978 Link
⚪️ [repacker] when assigning spaces use post isolation node indices. Link
⚪️ [repacker] add test for splitting spaces. Link
⚪️ [repacker] Add additional splitting spaces test. Link
⚪️ [repacker] Add repacker test that requires space splitting. Link
⚪️ [repacker] refactor resolve overflow tests to use a helper. Link
⚪️ [repacker] add missing fini for parents vector. Link
⚪️ [repacker] remove clone buffer Link
⚪️ [repacker] performance optimizations for topological sorting. Link
🟢 Update comments for U+180F FVS4 Link
🟢 [USE] Only skip default ignorables within CCSes Link
🟢 [USE] Merge the categories S and O Link
🟢 [USE] Document customizations of USE categories Link
⚪️ Merge pull request #3249 from harfbuzz/use-merge-s-o Link
🟢 [USE] Categorize U+11046 BRAHMI VIRAMA as HALANT Link
🟢 [USE] Insert dotted circles before lone viramas Link
🟢 [USE] Categorize characters that only have AJT Link
⚪️ [subset] code cleanup Link
⚪️ [subset] Export header & archive when HB_BUILD_SUBSET Link
⚪️ [subset] Refine the coding style Link
⚪️ Fix Wbitwise-instead-of-logical warnings Link
⚪️ Add a writeup of the overflow resolution algorithm in harfbuzz. Link
⚪️ Err on -Wbitwise-instead-of-logical Link
⚪️ [docs] Rename overflow_resolution to repacker Link
⚪️ [repacker] use possibly updated root idx after isolate_subgraph. Link
⚪️ [head] Add is_expanded() internally Link
⚪️ [style] Use head->macStyle.isExtended in style fallback Link
⚪️ [meson] Add graphite2 option and deprecate graphite Link
⚪️ [subset] update COLRv1 table struct definitions Link
⚪️ [subset] add DeltasetIndexMap struct definition Link
⚪️ [subset] COLRv1: add ClipList/ClipRecord/ClipBox struct definition Link
⚪️ [subset] COLRv1: update subset() method for new strutc ClipList and VarIdxMap Link
⚪️ [subset] Move struct DeltaSetIndexMap into hb-ot-var-common.hh Link
⚪️ Merge pull request #3248 from googlefonts/connected_components Link
⚪️ Revert "[hb-directwrite] Don't load dwrit.dll dynamically" Link
⚪️ Remove direct link to dwrite from meson scripts Link
⚪️ [API] Add hbbuffer[sg]et_not_found_glyph() and --not-found-glyph Link
⚪️ [ci] Add CIFuzz integration Link
⚪️ [subset] fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40406 Link
⚪️ Document hb_ot_name_t values Link
⚪️ docs: Add a link to the OpenType spec Link
⚪️ Better round positions during scaling Link
⚪️ [algs] Add hb_swap() ala Link
⚪️ [vector] Add initializer_list constructor & tests Link
⚪️ Revert "[vector] Add initializer_list constructor & tests" Link
⚪️ [vector] Add initializer_list constructor & tests Link
⚪️ Add a test font scale rounding behavior Link
⚪️ [vector] Implement move assignment using swap Link
⚪️ [vector] Add initializer from iterable Link
⚪️ [vector] Move test code into separate file Link
⚪️ [vector] Pre-allocate if iterator has random-access length Link
⚪️ [vector] Add more tests Link
⚪️ [set] Add standard the 5 standard methods & tests Link
⚪️ [bit-set-invertible] Implement standard-5 methods & swap Link
⚪️ [bit-set] Implement standard-5 methods plus swap Link
⚪️ [vector] Use default constructor Link
⚪️ [set] More default operators Link
⚪️ Verbiage Link
⚪️ [vector] Add swap() friend to hb_sorted_vector_t Link
⚪️ [vector] Complete sorted_vector 5-methods Link
⚪️ [array] Use default methods Link
⚪️ [bimap] Simplify initialization Link
⚪️ [set] Add successful check in swap() Link
⚪️ [map] Add 5 methods Link
⚪️ [algs] Include Link
⚪️ [map] Add initializer_list and swap() Link
⚪️ [map] Add iterable constructor Link
⚪️ Simplify swap() Link
⚪️ [map] Try moving items when resizing Link
⚪️ [algs] include Link
⚪️ [meta] Use std::istrivially... instead of internal copies Link
⚪️ [meta] Remove unused traits Link
⚪️ [algs] Use std::move instead of hb_move() Link
⚪️ [meta] Use std::forward instead of hb_forward() Link
⚪️ [meta] Use more std type_traits Link
⚪️ [meta] Use std::conditional instead of hb_conditional() Link
⚪️ [meta] Add in-house impl of hb_is_convertible() Link
⚪️ [meta] Remove otherwise-empty test-meta Link
⚪️ Merge pull request #3278 from harfbuzz/more-std Link
⚪️ [map] Fix copy assignment operator Link
⚪️ [repacker] add 'virtual links' to the serializer. Link
⚪️ [repacker] Add test for virtual links in the repacker. Link
⚪️ [repacker] remove VirtualOffset struct. Link
⚪️ [repacker] add more detailed comment about virtual links. Link
⚪️ [subset] During LigatureSubstFormat1 subsetting always place Coverage last. Link
⚪️ [subset] Don't assume FeatureList is sorted Link
⚪️ [subset] fuzzer fix: https://oss-fuzz.com/testcase?key=6254792024915968 Link
⚪️ [subset] update subset goldens to fix tests. Link
⚪️ [subset] use glyphset_gsub instead of glyphset for GDEF Link
⚪️ [subset] Update test goldens for gdef.glyphset. Link
⚪️ [subset] fix bug in (Chain)ContextFormat2 Link
⚪️ [map] Add INVALID_KEY and INVALID_VALUE Link
⚪️ [subset] Fix fuzzer found memory leak. Link
⚪️ [array] Remove defaulted destructor Link
⚪️ 3.1.0 Link
⚪️ [mutex] Try work around GCC cast-align error/warning Link
⚪️ docs: Clarify a doc comment Link
⚪️ Cosmetics: Avoid confusing indentation Link
⚪️ Typo fix Link
⚪️ 3.1.1 Link
LaurenzV commented 4 months ago

Sorry for the many uncertainties, but the codebase is so complex, I'm not always able to tell what's relevant and what isn't. :( But I tried my best. Other than that, it's mostly done.

RazrFalcon commented 4 months ago

No problem. I know that it's hard to figure out where harfbuzz code is in rustybuzz. I'm looking for a solution.

As for changes, can you reduce the number of changes in scripts/gen-universal-table.py. No need to change formatting with dummy spaces.

Rename HBGlyphID to HBGlyphID16

Completely unrelated.

Add stub HBUINT15

Same. Anything that relates to TrueType parsing is out of scope. That's ttf-parser problem. And unless it affects output (tests are failing) you can ignore it.

[head] Add is_expanded() internally

Unrelated.

[subset] update COLRv1 table struct definitions

Unrelated. Anything with the [subset] tag is unrelated. But COLR in particular isn't used during shaping, afair, so it doesn't affect us.

[API] Add hbbuffer[sg]et_not_found_glyph() and --not-found-glyph

I guess it can be safely ignored. It allows swapping the undef/0 glyph ID, but you can easily do this on the caller side.

Better round positions during scaling

We do not support scaling at all. Everything is in font units right now.

LaurenzV commented 4 months ago

Better now? I mostly copy pasted it from their repo, not sure why their formatting is so weird sometimes.

RazrFalcon commented 4 months ago

I ran my scripts through black, afair.

RazrFalcon commented 4 months ago

All good. Thanks.

Note that in case of rustybuzz I do not squash commits, so prefer not to have random/duplicate commits.