Unfortunately unicode text handling is rather painful in C. Additionally, being glib-based causes all sorts of problems for embedding due to the LGPL forbidding static linking.
Investigate a rewrite of the library in Rust, using pluggable backends for font metrics and a custom text layout system (we handling line breaking, justification, etc instead of delegating to Pango).
Yes, really...
Unfortunately unicode text handling is rather painful in C. Additionally, being glib-based causes all sorts of problems for embedding due to the LGPL forbidding static linking.
Investigate a rewrite of the library in Rust, using pluggable backends for font metrics and a custom text layout system (we handling line breaking, justification, etc instead of delegating to Pango).
This will result in:
I've started work on this here: https://github.com/mjakeman/text-engine/tree/rust
The engine will be designed for embedding and have a pure C API. This should support out-of-tree 'ports' e.g. for SwiftUI and/or Android.