Skip to content

[WIP] BiDi and shaping support for Font::draw/Font::get_string_size

Rafał Mikrut requested to merge github/fork/bruvzg/min-shaping into master

Created by: bruvzg

Changes Font::draw, Font::draw_halign, Font::get_string_size functions and Label, LineEdit controls to support bi-directional text and complex scripts using ICU and HarfBuzz libraries. Adds Font::draw_paragraph function, and ShapedString/ShapedAttributedString classes for text display and input handling.

🔹 Third-party libraries
  • HarfBuzz (full library except non-relevant font backends (CoreText, Uniscribe) and built-in UCDN), 1.8.8, Old-MIT
  • ICU4C ("common" library part and built-in unicode base data), 62.1, Unicode License
🔸 Updates

7 Sep 2018 - Fixed build for ARMv7 Linux, added glyph offsets to get_string_size calculation. 27 Sep 2018 - Added multiline and rich text shaping APIs. 12 Oct 2018 - Added Label, and LineEdit, text shaping moved from font to separate ShapedString (for plain text), ShapedAttributedString (for rich text)

🔹 TODO list
  • Single line plain text rendering API
  • Multiline plain text rendering API
  • Multiline spanned text rendering API
  • LineEdit control
  • Label control
  • Char-by-char text in other controls
  • RichTextLabel control
  • TextEdit control

Related: #10546, #3081, #9961, #982

Merge request reports