http://bugs.winehq.org/show_bug.cgi?id=23272
Summary: FFFTP: shows only the first line of the Japanese legend. Product: Wine Version: 1.2-rc4 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 AssignedTo: wine-bugs@winehq.org ReportedBy: sagawa.aki+winebugs@gmail.com
Created an attachment (id=28997) --> (http://bugs.winehq.org/attachment.cgi?id=28997) FFFTP option panel (wine 1.2 rc4 on Ubuntu 10.04)
FFFTP is a famous FTP client software in Japan. Its web page is http://www2.biglobe.ne.jp/~sota/ffftp-e.html . And its source is available under new BSD license.
I use Japanese version of FFFTP in Japanese locale (LANG=ja_JP.UTF-8) on Ubuntu 10.04. On the wine environment, FFFTP's option panel shows only the first line of the legend.
I attach the snapshots taken in wine-1.2-rc4. NOTE: Red rectangles and texts are retouched by me.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #1 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-19 22:48:40 --- Created an attachment (id=28998) --> (http://bugs.winehq.org/attachment.cgi?id=28998) Windows XP (Japanese) environment
In Windows XP environment, it shows three lines for the text.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #2 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-19 23:56:38 --- In my observation, this caused by DrawText API with DT_WORDBREAK flag.
As you might know, Japanese writing style does not put a space between words. Thus whole the legend texts treated as a long word in the wine. So the text was shown in a line.
I made a draft patch for this problem, which enables wine to break a word before a CJK character.
In my Windows XP environment, the rule, which character is breakable or not-breakable, varies according to the font character set. For example, Greek characters (e.g. U+03b1, GREEK SMALL LETTER ALPHA) are breakable in SHIFTJIS_CHARSET, but not in ANSI_CHARSET. But I'd like to make it simple, I defined just CJK characters are breakable in the above patch.
I hope my assumption is suitable and other wordbreak rules are unchanged. I'm not familiar with another language, your comments or suggests are welcome.
Best regards.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #3 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-19 23:57:52 --- Created an attachment (id=29001) --> (http://bugs.winehq.org/attachment.cgi?id=29001) add wordbreak rule for CJK characters
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #4 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-20 00:05:56 --- Created an attachment (id=29002) --> (http://bugs.winehq.org/attachment.cgi?id=29002) FFFTP option panel (after the patch)
The legend is shown in three lines as well as in Windows XP environment.
http://bugs.winehq.org/show_bug.cgi?id=23272
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, patch URL| |http://www2.biglobe.ne.jp/~ | |sota/ffftp-e.html CC| |wylda@volny.cz
--- Comment #5 from Wylda wylda@volny.cz 2010-06-20 00:12:23 ---
Good job! Note: pathces are not picked up from bugzilla. Please send your final patch to wine-patches@winehq.org.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #6 from Dmitry Timoshkov dmitry@codeweavers.com 2010-06-20 00:54:03 --- (In reply to comment #3)
Created an attachment (id=29001)
--> (http://bugs.winehq.org/attachment.cgi?id=29001) [details]
add wordbreak rule for CJK characters
Using GetStringTypeW() would be cleaner.
http://bugs.winehq.org/show_bug.cgi?id=23272
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |source
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #7 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-26 23:27:02 --- Created an attachment (id=29164) --> (http://bugs.winehq.org/attachment.cgi?id=29164) proposed patch for CJK word break rule 2
http://bugs.winehq.org/show_bug.cgi?id=23272
Sagawa sagawa.aki+winebugs@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #29001|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #8 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-26 23:41:57 --- Thank you comments.
(In reply to comment #5)
Good job! Note: pathces are not picked up from bugzilla. Please send your final patch to wine-patches@winehq.org.
I'll keep in a mind to send a patch wine-patches. But the tree is working for 1.2 release, so I'm going to wait for the release.
(In reply to comment #6)
add wordbreak rule for CJK characters
Using GetStringTypeW() would be cleaner.
I update my patch to use GetStringTypeW and enhance no-begining character table.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #9 from Dmitry Timoshkov dmitry@codeweavers.com 2010-06-28 01:31:18 --- (In reply to comment #7)
Created an attachment (id=29164)
--> (http://bugs.winehq.org/attachment.cgi?id=29164) [details]
proposed patch for CJK word break rule 2
Why using GetStringTypeW() is not enough?
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #10 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-28 08:11:31 --- (In reply to comment #9)
(In reply to comment #7)
Created an attachment (id=29164)
--> (http://bugs.winehq.org/attachment.cgi?id=29164) [details] [details]
proposed patch for CJK word break rule 2
Why using GetStringTypeW() is not enough?
OK, there are three reasons.
1. Hangul Syllables Hangul Syllables characters (i.e. U+AC00-U+D7A3) are classified into C3_ALPHA, not C3_KATAKANA, C3_HIRAGANA, C3_IDEOGRAPH. And Thai alphabets (e.g.U+0E01) also have the same classification. In my knowledge, the former can be break in words, but the latter is not. But GetStringTypeW() just returns C3_ALPHA for both of them. Therefore, we cannot make a distinction between them with CT_CTYPE3 information.
2. CJK symbols In CJK codepage, some symbol characters are defined and used. For instance, following characters are used in Japanese text: - U+3005(IDEOGRAPHIC ITERATION MARK) - U+300F(RIGHT WHITE CORNER BRACKET) - U+3231(PARENTHESIZED IDEOGRAPH STOCK) - U+339E (SQUARE KM) But they aren't hiragana, katakana or ideographic characters as for GetStringTypeW(). They are C3_NOTAPPLICABLE or C3_SYMBOL character. Therefore, they have same problem. Not only them but also other non-CJK script characters have C3_NOTAPPLICABLE or C3_SYMBOL class. In my opinion, because above character is a part of CJK texts, they should word-wrap like ideographic characters (not western style).
3. Kinsoku shori In CJK text, it can break in words. However, there are some exceptions called Kinsoku shori (Japanese publishing term). In short, some characters are not allowed at the start of a line, and some of others are not allowed at the end of a line. For details, please refer Wikipedia (http://en.wikipedia.org/wiki/Kinsoku_shori) or W3C Working Group Note (http://www.w3.org/TR/2009/NOTE-jlreq-20090604/#en-subheading2_1_7). These special characters are not determined by GetStringTypeW(), but it needs to format CJK texts properly. Thus, I added a table without the API for the basic implementation of Kinsoku shori.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #11 from Dmitry Timoshkov dmitry@codeweavers.com 2010-06-28 08:47:53 --- You may want to write a test case to see how Windows makes a difference. I don't think that Windows hardcodes character ranges like you do.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #12 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-30 11:20:53 --- Created an attachment (id=29263) --> (http://bugs.winehq.org/attachment.cgi?id=29263) CJK wordbreak test application
This archive file contains the test application for DrawText()'s DT_WORDBREAK.
[Usage] 1. Execute ``cjk-wwrap'' program with a test name which is a section name of cjk-wwrap.ini file. e.g. cjk-wwrap japanese / cjk-wwrap chinese-936 / cjk-wwrap korean 2. Change the window width. The window width is getting narrow, the words break into several lines.
[Files] cjk-wwrap.exe: This is a main application. It tests DrawText()'s DT_WORDBREAK flag behavior for CJK texts. Please put a cjk-wwrap.ini file on the current directory.
cjk-wwrap.ini: This is a data file. This ini file written in Unicode. You can define additional test for the API.
src/*: This is a source file and Makefile. I built with mingw-gcc 4.2.1 on Ubuntu 10.04.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #13 from Sagawa sagawa.aki+winebugs@gmail.com 2010-06-30 12:15:48 --- Created an attachment (id=29267) --> (http://bugs.winehq.org/attachment.cgi?id=29267) wordbreak behavior on Windows XP (Japanese edition)
Simplified Chinese, Traditional Chinese, Japanese and Korean test results on my Windows XP (Japanese edition).
Please note that the second line of both Chinese text, the third line of Japanese one and the first line of Korean one. There is no space between words, but it breaks a line.
More technically, GetStringTypeW() return following information for above breaking words: Chinese (ideographic character, e.g. U+8FD0) C1_ALPHA C1_DEFINED C2_LEFTTORIGHT C3_IDEOGRAPH C3_ALPHA Japanese (hiragana, e.g.U+3067) C1_ALPHA C1_DEFINED C2_LEFTTORIGHT C3_HIRAGANA C3_ALPHA Korean (hangul, e.g. U+ADF8) C1_ALPHA C1_DEFINED C2_LEFTTORIGHT C3_ALPHA Thai (e.g. U+0E01) -- no characters in the text just as a refence information. C1_ALPHA C1_DEFINED C2_LEFTTORIGHT C3_ALPHA
Although no differences between Korean characters and Thai characters by using GetStringTypeW(), I would like to find CJK character to do line-breaking.
http://bugs.winehq.org/show_bug.cgi?id=23272
Aric Stewart aric@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aric@codeweavers.com
http://bugs.winehq.org/show_bug.cgi?id=23272
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |00cpxxx@gmail.com
--- Comment #14 from Bruno Jesus 00cpxxx@gmail.com 2012-10-16 21:28:54 CDT --- Is this still an issue in the latest development version of wine?
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #15 from Sagawa sagawa.aki+winebugs@gmail.com 2012-10-17 06:37:53 CDT --- (In reply to comment #14)
Is this still an issue in the latest development version of wine?
Unfortunately, it's true. Because this bug comes from line breaking rules. Now, we have a good Uniscribe alternative. So I'm considering to implement this with it.
http://bugs.winehq.org/show_bug.cgi?id=23272
--- Comment #16 from Sagawa sagawa.aki+winebugs@gmail.com 2013-09-13 05:53:56 CDT --- Created attachment 45935 --> http://bugs.winehq.org/attachment.cgi?id=45935 FFFTP option panel (wine 1.7.1+Aric patch on Ubuntu 12.04)
A patch [1] written by Aric fixes this issue. Thank you, Aric!
[1] http://source.winehq.org/patches/data/98761
http://bugs.winehq.org/show_bug.cgi?id=23272
Sagawa sagawa.aki+winebugs@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |4247e80a797944cee3e58ceba6b | |2757094f10632 Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #17 from Sagawa sagawa.aki+winebugs@gmail.com 2013-09-13 22:15:13 CDT --- Fixed by 4247e80a797944cee3e58ceba6b2757094f10632.
http://bugs.winehq.org/show_bug.cgi?id=23272
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #18 from Alexandre Julliard julliard@winehq.org 2013-09-27 13:41:13 CDT --- Closing bugs fixed in 1.7.3.