Implements font glyph cache sharing between multiple sources #275
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.
Primarily fonts are cached based on the following properties: font file, font size, horizontal and vertical DPI.
Unfortunately the loaded fonts can be mutated by changing their hinting and style.
Due to these mutations an extra indirection is required for font struct access, so that it would be possible to fork cached font and apply the mutation on the new copy. This ensures that other references to the original font are not affected by local mutation.
Although such indirection and forking considerably increases caching complexity, it comes with benefits such as amortising font style changes in heavily formatted text, which normally would require glyph cache flush on every font style or hinting change.