Skip to content

Feature scope #70

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions