linebender / linebender/parley
Tracking issue: Features for Blitz
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 736
- Forks
- 120
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 53
Description
This issue tracks features that Blitz needs from Parley
See also: https://blitz.is/status/css. The "Text" section applies to Parley.
### Bugs fixes
- [x] https://github.com/linebender/parley/pull/207
### Parley Layout
- [x] Inline boxes
- [x] Tree-based styles
- [x] Production grade shaping
- [x] Whitespace collapsing
- [x] Hit testing for inline spans (https://github.com/linebender/parley/pull/230)
- [x] `word-break` style (https://github.com/linebender/parley/pull/315)
- [x] `overflow-wrap` style (https://github.com/linebender/parley/pull/315)
- [x] `text-wrap-mode` style (#367)
- [x] `text-indent` style
- [x] https://github.com/linebender/parley/issues/99
- [ ] `vertical-align` style (https://github.com/linebender/parley/issues/291)
- [x] [Baseline alignment for inline boxes](https://github.com/linebender/parley/pull/639)
- [ ] Subscript and superscript
- [ ] White space handling (https://github.com/linebender/parley/issues/619)
- [ ] `white-space-collapse` as a style (rather than hacked into the `TreeBuilder`)
- [ ] `white-space-trim` style
- [ ] Margin/border/padding for inline spans (should be bidi-aware)
- [ ] Overflow handling:
- [ ] `text-overflow` (horizontal overflow) https://github.com/linebender/parley/issues/304
- [ ] `line-clamp` (vertical overflow)
- [ ] BiDi-direction overrides (html `dir` attribute)
- [x] Root-level default BiDi direction
- [ ] Span-level overrides of BiDi direction
- [ ] Bounding boxes for inline spans
- [ ] `text-wrap-style` style
- [ ] `tab-size` style
- [ ] Small caps (text-transform)
### Parley Editing
- [ ] https://github.com/linebender/parley/pull/657
- [ ] Editor scrolling (horizontal for single-line, vertical for multi-line)
- [ ] Placeholder text
### Fontique
- [x] Webfonts: Ability to customise name and attributes used for matching when loading a font (initial functionality implemented in https://github.com/linebender/parley/pull/312)
- [x] Webfonts: The ability to remove/unload fonts
- [ ] `unicode-range` support (this is conceptually a `Vec>` of unicode codepoints associated with a font):
- [ ] Support multiple fonts with the same family name, but covering different unicode ranges.
- [ ] Support for matching by `unicode-range` in a collection which acts as a fast-reject function for codepoints coverage matching (but the font may not cover the entire range listed (although they usually do)).
- [ ] Incremental Font Transfer (IFT)
- [ ] Ability to lazy-load fonts on demand and track fonts in a "loading" state (i.e. for `@font-face` fonts on the web where we may have metadata available for the font, but ideally do not want to load the font over the network unless/until it is actually used. This interacts with `unicode-range`: you only load the font if the `unicode-range` matches)
- [ ] A "file-system scanning" system font backend. This would provide a "no deps" option for font fallback, and is a key req. for Cosmic Text to adopt `fontique` (would also be a nice option for resvg users)
- [ ] Should have some senisble default paths configured for the major OS's
- [ ] Should have some sensible default generic families configured for the major OS's
- [ ] Should ideally also work with fonts loaded from memory (e.g. for no_std / wasm)
- [ ] More easily reuse system-fonts across collections (currently only possible by cloning the `FontCollection`)
- [ ] (consider having an (opt-in) global (static) system font cache (system fonts are `Arc>` anyway))
- [ ] `SourceCache` / `Collection` refactors
- [ ] Consider having `SourceCache` owned by collection (simplifies API)
- [ ] Consider making `SourceCache` shared by default (sensible default for multithreading)
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
This is a tracking issue for Blitz-related Parley work, spanning layout, editing, and Fontique features rather than naming one entry point or test. Start with a single unchecked item and follow its linked issue, such as issues #291, #619, or #304; the relevant checklist item is done when that feature is implemented and its status is updated here.
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
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100