-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for user-provided font loading callbacks #769
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
laurmaedje
changed the title
Arc database
Support for user-provided font loading callbacks
Jun 1, 2024
Bumped |
Thanks, that was quick! Since this PR doesn't directly depend on the fontdb changes (only users need it), the dependency can be updated separately from this PR, but if you want I can also update it here. |
Let update fontdb as well. |
Done |
I guess we're ready for a new resvg release? |
More than ready! 😄 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR adds support for user-provided font loading callbacks.
Here is small overview of the changes:
Options
now contain anArc<Database>
and a newFontResolver<'a>
. Thefontdb
arguments on other top-level functions were removed.ImageHrefResolver
is nowImageHrefResolver<'a>
(since it might as well). With the default resolvers, you just getOptions<'static>
.&mut Arc<Database>
, so they can mutate the database withArc::make_mut
if necessary, but if they don't need to add a font, we don't force the database to be cloned.Arc<Database>
in theCache
, which is populated over the course of conversion. It is only cloned if fonts are actually added.Cache
is moved into theTree
after conversion and users can access it withtree.fontdb()
to make sense of theID
s in theirSpan
s.Options
, but share the same resolver.Options
is never mutated (it's&Options
after all)One small change in
fontdb
is necessary to make writing a customFontResolver
possible, or at least convenient: The best function to add a new font ispush_face_info
, but it doesn't return the newID
it assigned. I've opened RazrFalcon/fontdb#66 to change that. As it is a breaking change, resvg would need to update to a new release of fontdb. (Alternatively, we could make it non-breaking with a new function.)Supersedes #754