linebender / linebender/parley

Tracking issue: Features for Blitz

Open
#208 0 comments 5 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.