Ola,

Don't you just love how UNICODE is not haphazardly implemented? That was
sarcasm, by the way. My solution for all this UNIversal lack of communication
and understanding of UNICODE implementation, was to create a few function
calls of my own to translate on-the-fly between UTF-16 and UTF-8, and between
UTF-8 and GB18030. Why UTF-16? Because it has the most native support from
Microsoft and much of the Windows internals are in UTF-16 (NTFS especially
comes to mind). Why GB18030? Because GB18030 is the only UNICODE
implementation so far that has actually been standardized in at least one
country (China, with an audience of 1.5 billion customers). I wish IUP would
directly support GB18030 so I could eliminate half of the translations needed
(Antonio tells me that IUP will contain a GB18030 preprocessor flag for
providing GB18030 support). Why UTF-8? Because UTF-8 is a central part of this
translation process because IUP does directly support UTF-8 with the following
commands:

UTF8MODE [Windows and GTK Only]. By default IUP uses strings in the current
locale (See FONT attribute). To use UTF-8 strings set this attribute to Yes.
Default: NO.


UTF8MODE_FILE [Windows Only]. By default IUP uses file names in the current
locale, even when UTF8MODE=Yes. To use UTF-8 file names set this attribute to
Yes. Default: NO.

Gracias,
Andrew


On 2019-05-14 at 5:45 AM, Antonio Scuri <antonio.sc...@gmail.com> wrote:
  Hi, 


  Interesting. I saw that you did this:


 if (sizeof(ImWchar) == 2)
                cp = 0xFFFD;


  We use the TCHAR definition which is a 16 bits value when UNICODE is defined
(the default in IUP), i.e. sizeof==2 by default. So we don't actually need the
"Surrogate" variable storage but just to replace the surrogate pair by 0xFFFD.
Is that correct?


Best,
Scuri




Em qui, 9 de mai de 2019 às 04:45, 云风 Cloud Wu <clou...@gmail.com> escreveu:

IupGLText can't handle surrogate pairs (
https://en.wikipedia.org/wiki/UTF-16 ) now.

In windows, a unicode above U+10000 (For example U+1F604 😀 ) will be
separated into two WM_CHAR messages. If we got a WM_CHAR with WPARAM
between 0xD800 to 0xDBFF , we should wait for another part of
surrogate pair, and combine them into one unicode code point.

btw, I fix the same issue for imgui . This patch   (
https://github.com/ocornut/imgui/pull/2541/commits/fc2dff0ab602e77628a97edd983f03f6f571487a
) is for your reference.

-- 
http://blog.codingnow.com


_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to