Skip to content

Feature scope #70

@dhardy

Description

@dhardy

#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:

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions