Fix ligature caret offset determination #477
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prerequisites
Description
Fixes #474
This pull request focuses on improving the accuracy and robustness of the font table parsing logic, particularly around offset handling, and adds a new regression test for a previously reported issue. The most important changes include switching from
ReadUInt16toReadOffset16for certain font table offsets to better handle OpenType font specifications, fixing offset calculations when loading ligature glyphs, and introducing a test to prevent regressions for Issue #474.Font Table Offset Handling Improvements:
ReadUInt16withReadOffset16forligatureCaretListOffset,markAttachClassDefOffset, andcoverageOffsetinGlyphDefinitionTableandLigatureCaretListto ensure correct parsing of OpenType offsets. [1] [2]LigatureCaretList.Loadby adding the base offset to each ligature glyph offset, ensuring correct glyph data is loaded.LigatureGlyph.Loadby returning the constructed object directly.Testing and Regression Prevention:
Issues_474to ensure that text layout with the ServiceNow font does not throw exceptions and renders correctly, preventing regressions for Issue Exception on FontCollection #474.ServiceNowWoff2inTestFontsfor use in the regression test.