4 Limitations
dxtr edited this page 2026-10-14 03:41:02 +02:00

Limitations

What cl-textrender does not do yet.

Layout

  • Hyphenation. Lines break only at ICU's break opportunities and, for words longer than a line, between graphemes. Words are never hyphenated.
  • Justification without spaces. :justify widens spaces only. Inter-character justification, for CJK, and kashida stretching, for Arabic, are not done; lines without spaces stay at the start.
  • Optimal line breaking. Lines are filled greedily, one at a time, not balanced across the paragraph as Knuth and Plass's algorithm does.
  • Incremental layout. layout-text lays out the whole text each time. For a long document, lay out each paragraph separately and keep the layouts of paragraphs that did not change.
  • Decorations. Underline and strikethrough positions are not provided. Draw them from line-baseline and the font's size.

Vertical text

  • Transformed characters. Characters whose Vertical_Orientation is Tr are shaped upright. One the font has no vertical form for stands upright rather than turning sideways.
  • Tate-chū-yoko. Short horizontal runs inside a column, such as two-digit numbers, are not set specially; they turn sideways like other Latin text.

Fonts

  • Font discovery. Fonts are loaded from files or octet vectors. There is no lookup by family name, and no system font fallback: give the fallback list yourself.
  • Synthetic styles. There is no synthetic bold or oblique. Use the font's bold and italic faces, or a variable font's axes.
  • Web fonts. WOFF and WOFF2 files must be converted to TrueType or OpenType first.

Rendering

  • Color glyphs. The raster backend and the glyph atlas draw color bitmap glyphs, such as emoji, as their alpha only, in the text's color.
  • Cache eviction. A font keeps every outline, glyph image and atlas page made from it while it lives; they go only with the font. See Threads and Lifetimes.
  • GPU upload. The atlases prepare textures but upload nothing: the renderer copies the changed rectangles of each page.