linebender / linebender/parley
Renderability axis would be useful in font selection
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 736
- Forks
- 120
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 53
Description
Currently the font is selected based on family name, attributes like weight, width or style and cmap coverage (does the font even have the codepoints we need).
There is another factor that can lead to sub-optimal results though and that is if the rasterizer supports the format the font uses to describe the codepoint (COLRv0, COLRv1, CBDT,...). swash 0.2.9 does not support COLRv1 so it would be strictly better if it got a font that contains that codepoint described in another format it does support since it will otherwise just lead to a blank space where the character should be.
This could be relatively easily solved if the consumer of the font could tell the font selection logic which formats it supports (capabilities) or if a Query::matches_with style predicate supplied by the consumer would be consulted during the selection process, assuming of course that the actual FontInfo contained the information on the formats.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the font-selection query and FontInfo paths, then trace how cmap coverage is matched. Compare the proposed consumer capability input with Query::matches_with and identify the format metadata and selection behavior that would need tests. Done should mean selecting a supported representation instead of a glyph that renders as blank.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100