Traditional Chinese (CP950) not displaying in WINE
dmitry at baikal.ru
Tue Feb 26 08:28:53 CST 2002
"Anthony Fok" <anthony at thizlinux.com> wrote:
> > > We are experimenting some problems with displaying and inputting
> > > Chinese characters in WINE (January 2002 or newer). For example, most
> > > Chinese characters show up as squares,
> > Probably some font misconfiguration problem. Apparently displaying of
> > Chinese characters should work since output of Japanese characters
> > admittedly works.
> Thanks for your advice. After tweaking the font settings ~/.wine/config,
> we were able to get notepad to display Chinese text. However, it seems to
> only work with bitmap fonts like -taipei-*-; it had some problems with the
> Arphic TrueType fonts that it seems Wine was using a different character set
> to display the characters.
That's because truetype support has been only recently introduced and wasn't
cleaned up for all character sets yet. Apparently only people like you familiar
with problems of multibyte languages could enormously help in that area.
> We'll do more investigation. :-)
> > > and it seems that WINE doesn't accept Chinese input via XCIN (an input
> > > method server using the XIM protocol). Did we misconfigured something?
> > > Or is this a known problem in WINE? Any pointers would be appreciated.
> > > Thanks!
> > I'm afraid that correct input of Chinese and any multibyte characters
> > will require almost complete rewrite of the Wine keyboard code using
> > X Input Method/Input Context. Simultaneously it will solve the problem
> > with dead keys.
> > Unfortunately nobody worked on that problems yet. Do you want to try?
> Yes, we are willing to give it a try. How big a task is this? Where should
> we start? Which files need to be modified?
I have made some tests and found that actually very little work is required:
create Input context using XOpenIM/XCreateIC. In order to not create context
for each window and therefore save some memory do attach windows to only one
global Input context in FocusIn event handler: XUnsetICFocus()/XSetICValues/
XSetICFocus(). Use XFilterEvent() to pass all work to an X server.
And don't forget to remove ugly dead keys emulating code from windows/message.c.
More information about the wine-devel