On 7/4/23 09:12, Hairy Pixels via fpc-pascal wrote:

On Jul 4, 2023, at 12:38 PM, Nikolay Nikolov via fpc-pascal 
<fpc-pascal@lists.freepascal.org> wrote:

For console apps that use the Unicode KVM video unit, I've introduced two 
functions for determining the display width of a Unicode string in the video 
unit:

function ExtendedGraphemeClusterDisplayWidth(const EGC: UnicodeString): Integer;
{ Returns the number of display columns needed for the given extended grapheme 
cluster }

function StringDisplayWidth(const S: UnicodeString): Integer;
{ Returns the number of display columns needed for the given string }

Remember, the display width is different than the number of graphemes, due to 
East Asian double width characters.

And these work with UnicodeString, which is UTF-16, not UTF-8. But Free Pascal 
can convert between the two.
is there an example snippet of how all this works? It's too level for newbies 
to understand. :)

Rendering Unicode to the screen is not for newbies :)

Using Unicode (where another library, like GTK or QT or the console deals with it) is another matter. What is it that you need to do? From your emails I get the impression you're writing a parser for a language. For that, you don't usually need this sort of "length". If you're making a GUI app, e.g. with the LCL, there should be ways to determine the display length of a text control? Generally, you should use your GUI or TUI toolkit. The Unicode version of Free Vision is for fullscreen TUI apps, like the console IDE (which does not yet support Unicode). If that's what you want, here's a starting point:

https://wiki.freepascal.org/Free_Vision#Unicode_version

Nikolay

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to