-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
Description
Working with kerning & groups in code has been a pain every time I've had to do it, and a lot of that comes from having relatively basic functionality not being available because both Python & Rust libraries; they just expose raw dictionary/map types and provide zero convenience methods. This has become somewhat of a pet peeve of mine and something I'd like to fix.
Some of my ideas are as follows, and I'd like to gauge interest/discuss them before starting work:
- Kerning look-up methods (one with group resolution, one without)
- Kerning/Group modifying methods that uphold invariants (as opposed to validation on write-to-disk)
- Generating reverse look-ups for kerning & groups
- Transparent caching of reverse look-ups to make resolving kerns faster (transparent as in, requires no thought/involvement from the library user at any point, will require interior mutability)
- Renaming group method
- Culling empty groups method
- Culling 0 kerns method
The breaking change would be privatising Font.kerning and Font.groups and/or changing the underlying type. Interested in hearing any use cases for kerning/group information beyond what I've outlined in my points. Iterating over groups/kerning would of course still be available
Reactions are currently unavailable