Requirements
This document describes the requirements that drive the design and implementation of EAText.
A given platform or application may
have smaller requirements. A key requirement is that systems with lower
requirements pay a smaller price. This requirement set is based on what
shipping titles on all platforms have needed in the past or have asked
for in the future. Note that the term "script" refers to a specific writing system, as in "Hebrew script."
- Cross-platform portable.
- Scalable functionality,
advanced features can be compiled away if
desired. Users with lower requirements "pay" only for what they need.
- Simple high level API.
Drawing a line of plain text should be achievable at the application
level with a single line of C++ code.
- High performance.
- Low memory usage,
including little or no runtime memory allocation.
- Fast execution, including
the ability to create and save pre-built display lists.
- Fast startup. Supports the
pre-loading of glyphs from disk.
- Smooth
performance. Hiccups with disturb the frame rate should not occur under
conventional usage.
- "Easy" maintenance.
- Easy to add new script
support, due to the introduction of a universal text analysis and
layout pipeline. Users of EAText need not change their code for it to
work with new scripts.
- The universal pipeline
should also allow new maintainers to do changes with less fear of
breaking something.
- Ability to add raster back
ends; system is not dependent on any
3D solution.
- Ability to draw large text efficiently.
- Ability to layout and draw text in 3D as well as onto 2D surfaces via the same unified pipeline. This includes text as polygonal and possibly extruded models.
- Provide the ability for users to build their own pipelines with
the basic utilities of the provided library.
- Nextgen console and
PC-friendly. Base functionality works on
existing consoles such as PS2.
- CSS-friendly (font style
specification).
- Alignment: left, right,
centered, justified.
- TrueType font capable,
bitmap font capable.
- RGB capable (not just
monochrome as with outline fonts).
- Rasterization: antialiasing
and translucency at a minimum. Styles
can provide information for rasterization.
- Provides enough support for
the writing of text editors.
- Possibly provide a
reference multi-lingual text editor with the
package.
- Provides enough support for
the writing of formatted (e.g. HTML)
display.
- An implementation of HTML
parsing and display is available as a
separate package.
- Supports multiple scripts
and fonts in a line of text,
allowing not just for HTML but also for overcoming font glyph support
problems.
- Complex script support
- Bidirectional script.
- Contextual shaping.
- Combining characters.
- Specialized word breaking.
- Minimum supported script,
based on current shipping titles and requested languages:
- Latin (English, Spanish, etc.)
- Chinese (traditional and simplified)
- Japanese (kanji, hiragana, katakana)
- Korean
- Thai
- Hebrew
- Greek
- Hungarian
- Hindi
- Arabic
- Password character support.
- Proper password entry is
difficult to do properly with complex scripts, and can be non-trivial
for even simple scripts.
- Beautification shaping:
ligatures and kerning pairs.
End of document