Page 1 of 1
ActionTest and WINE
Posted: Thu Jan 19, 2012 2:12 pm
by therapon
I'm using ActionTest (latest version) under WINE 1.3.37 on Kubuntu 11.10. The problem is not new, been around for several years; I just haven't gotten around to figuring it out.
ActionTest works fine in WINE using ANSI files/text. Not so with Unicode. If I copy Unicode text and paste it into ActionTest two things malfunction.
- 1. It is not possible to change the font of existing or new text; setting text as Bold has no effect either.
2. Text that is Italic shows properly in the text editor and print preview but prints out as normal rather than italics.
Both of these issues exist only in WINE, things function correctly in Windows. The issues have been around since at least WINE 1.1.xx and Kubuntu 8.04. Is it something that needs fixing in ActionTest/TRichView or in WINE?
Thanks.
therapon
Posted: Thu Jan 19, 2012 5:53 pm
by Sergey Tkachenko
Sorry, I am afraid that I do not know how to fix it from TRichView side.
It uses Canvas.Font and WinAPI functions.
Posted: Fri Jan 20, 2012 2:12 am
by therapon
OK. Guess we'll have to see what the code gurus over at WINE can do. Thanks.
Posted: Mon Jan 23, 2012 2:15 pm
by therapon
Here's what I got for a response over at the WINE bug forum:
The problem is that RichView class (that the application is using internally)
decides to use font "times new roman" with charset 128 (SHIFTJIS_CHARSET) for
unicode text, and Wine chooses some random, i.e. "appropriate" font from an
underlying system which contains glyphs from that charset, but unfortunately
most (if not all) such fonts don't have a bold/italic faces.
If I hack dlls/gdi32/freetype.c,freetype_SelectFont() to ignore 128 charset,
then I can change text to bold, italic and so on, because now real Times New
Roman font is used, which supports them.
You may try to file a bug report to the creator(s) of RichView.
Does that make sense?
Posted: Mon Jan 23, 2012 2:59 pm
by Sergey Tkachenko
RichView applies Charset specified by the user in TextStyle.Charset.
You can modify your document and change charset of text styles to DEFAULT_CHARSET.
(TRichView cannot just ignore charset of TextStyles even for Unicode font. As far as I know, one value of charset is important - SYMBOL_CHARSET)
Posted: Mon Jan 23, 2012 5:06 pm
by therapon
Using the ActionTest demo from the download page, how do I change the charset? I guess the question also applies when using the RichView class within another application, too.
therapon
Posted: Mon Jan 23, 2012 6:00 pm
by therapon
Could you check the file at this link on the WINE forum and see if the DEFAULT_CHARSET is properly set?
http://bugs.winehq.org/attachment.cgi?id=38480
Could you also verify that the WinAPI functions are getting called with the correct parameters? e.g., with DEFAULT_CHARSET and not SHIFTJIS_CHARSET.
Thanks so much.
therapon
Posted: Tue Jan 24, 2012 11:06 am
by Sergey Tkachenko
Yes, this text uses SHIFTJIS_CHARSET.
And the same problem happens to it in Windows (at least in my version of WinXP where Times New Roman does not have Japanese characters): when I load this text in ActionTest demo, it is displayed using another font, not Times New Roman!
I selected all text, opened "Font | Font... (Advanced)", chose Script="(Default)", applied. Now all text is displayed in Times New Roman.
Posted: Tue Jan 24, 2012 1:16 pm
by therapon
Thanks for the help on charset. I was able to do as you said and it worked.
Do you have ideas on the second issue? Printing italics?
Posted: Tue Jan 24, 2012 2:09 pm
by Sergey Tkachenko
Sorry, no
Posted: Fri Jan 27, 2012 10:36 pm
by therapon
Figured it out. I looked at the rvf file generated with unicode and then tracked it back from there. Apparently TRichView and whatever other libraries it uses don't know how to handle printing italic type when there's no italic ttf to go with the font. I was using Tahoma font, there's no "standard" italic form of the font like there is for Arial, Verdana, etc. (e.g. ariali.ttf, verdanai.ttf). As long as the ttf for italic text exists, TRichView can handle printing it ok in WINE.
Posted: Sat Jan 28, 2012 3:44 pm
by therapon
OK, on further investigation maybe there's a better way to look at it.
If an italic style font actually exists (ariali.ttf, for example) that name gets assigned in TRichView. It then prints correctly whether in WinXP or WINE.
If there's no italic style font (as is standard for Tahoma) then TRichView uses the base font and assigns the italic style to it. That works fine for printing in WinXP; it doesn't work in WINE. At this point, I assume it is a WINE problem, somewhere in the stuff that handles printing that doesn't recognize the style flag.
Posted: Sat Jan 28, 2012 6:57 pm
by Sergey Tkachenko
TRichView just sets Canvas.Font.Style, which in its order calls WinAPI's CreateFontIndirect (or, if TextStyle's CharScale<>100, then TRichView uses CreateFontIndirect directly). In the both cases, LogFont's quality and precision are set to defaults.
Specifics like using synthesized italic or not is implemented by OS, as I understand.