Another part of code does formatted output of text tables. Those old style ones, with '-', '+' and '|' "frame" characters.
In that case you probably only deal with latin chars? Because as I said, East Asian chars have "full width" chars, that are (in a monospaced font, and on a console output) twice the width. (yet they are one char, and usually also one codepoint)
Is there a fundamental problem to add this functionality to LazUTF8, either into existing UTF8*() or to new ones? Or it is just "not done yet" and anybody's help is welcome?
I do not know from Juha's comment if Delphi's function is for surrogate pairs, combining codepoints, or both.
Their are 2 considerations.
1) The work must be done by somebody. I guess if it is done (with sufficient quality) then it can be added.
2) Hardcoding it to the LCL, is not the best solution, but still acceptable I guess. (Or maybe , if the below does not apply, then it is all fine)
Afaik the utf specs are updated regularly. No idea if ever either of the 2 classes have add ons. I would guess that surrogate pairs are unlikely to be extended. No idea about combining.
Depending on this hardcoding means compiled apps need to be rebuild with a newer LCL if it happens.
If instead an external library was called (afaik any OS should provide this nowadays) then the update would be within the library.
Overall, this (2) may be a minor point.... So its down to (1) a person.
---------------------------
You find a range of combining (or at least what they were a few years back) in SynEdit. It does not include surrogate pairs.
components\synedit\synedittextbuffer.pp
TSynEditStringList.LogicPosIsCombining