-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
#1 leaves the target feature scope unclear. This issue is not a development plan or goal, but merely an attempt to add perspective on what/where the project is.
Unfortunately there are few clear dividing lines between features in terms of complexity, thus grouping of items here is somewhat arbitrary.
Basic features:
- Simple typesetting with kerning
- Line wrapping
- Basic alignment
- (Simple) justified text
Advanced text features:
- Hyphenation
- Advanced justified text: e.g. Arabic justification should increase inter-letter distance, extending the baseline
- Bi-directional text support: breaking into "level runs" and reordering
- Glyph mirroring
- Shaping
- Rotated text (could be done downstream)
- Vertical text support
- Emotojis — I think the only issue is with font selection
- Shaper and formatting inter-mixing: supporting format changes within a shaped run
Font features:
- Font fallback
- Font discovery: uses https://crates.io/crates/fontique
- Font face selection from family: done but sub-optimal API
- Variable fonts, font synthesis
- Small-caps text
Text interaction:
- Cursor position from index
- Visual-order navigation via Left/Right keys
- Mouse-coordinate to nearest text-index
- Better than
O(n)
text editing - Intra-ligature cursor position
Text formatting:
- Highlighting
- Formatted text selecting font size and face/family
- Underline and strike-through
- Interactive formatting (e.g. hyperlinks should have mouse-hover effect and be clickable)
- Non-contact underline
Text parsing is mostly orthogonal to other features; never-the-less having an easy way to construct formatted texts is useful:
- BiDi breaking
- Markdown (basic)
- Simplified HTML?
Rendering is out-of-scope.
Layout:
- Inter-paragraph spacing (beyond an empty line)
- Tabs (basic implementation but too limited to call done)
- Embedding: supporting arbitrary content embedded within text flow
- Composibility: supporting text or complex content over multiple
Text
/TextDisplay
objects (possibly better supported by a downstream library)
Non-text objects (likely beyond scope):
- Horizontal rules
- Tables
- Quote background box
There is no desired scope or use-case, but it is very unlikely that all the above will be implemented. Notes:
- Unclear how to handle indentation/tabs and inter-paragraph spaces. Possibly allow formatting tokens to specify indent/v-skip?
Metadata
Metadata
Assignees
Labels
No labels