https://bugs.winehq.org/show_bug.cgi?id=55529
Bug ID: 55529 Summary: Text in SRPG Studio games ends with a tofu/missing character glyph. Product: Wine Version: 8.15 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: rjtulloh@gmail.com Distribution: ---
All text (excluding some menu text) in SRPG Studio games ends with a tofu/missing character glyph.
I tested the following games/projects: - Vestaria Saga (Steam Version) - Vestaria Saga 2 - Clarent Saga Tactics (https://davidnguyen.itch.io/clarent-saga-tactics) - Sanctaea Chronicles (https://forums.serenesforest.net/index.php?/topic/85032-sanctaea-chronicles-...)
I first observed this issue in Wine 7.14.
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #1 from Rafał Mużyło galtgendo@o2.pl --- More details needed.
From that selection, semi-randomly chosen CST seems to work just fine throughout the tutorial battle.
https://bugs.winehq.org/show_bug.cgi?id=55529
Jeff Smith whydoubt@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |whydoubt@gmail.com
--- Comment #2 from Jeff Smith whydoubt@gmail.com --- I can reproduce: When I start CST, and click Start, it brings up a difficulty selection box. I can see the tofu at the end of the descriptive text.
Now, if I run with the dwrite debug channel, and grep for dwritefactory_CreateTextLayout, I see trailing nulls in the strings where the tofu appears. So it would seem that this function may need to better handle trailing nulls.
I'm unclear if this is a regression. Did this appear correctly in earlier versions of Wine, and if so can you specify such a version of Wine?
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #3 from Rafał Mużyło galtgendo@o2.pl --- Odd.
What I see there is a square with a cross in it. That might be just as well 'works as intended' or at most a missing glyph box for what ever glyph was intended as a paragraph terminator...
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #4 from Rafał Mużyło galtgendo@o2.pl --- ...then again, alternative take: perhaps on Windows some of text display functions treat a null in the string as a hard stop, while wine is trying to deal with embedded nulls ?
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #5 from Robert T rjtulloh@gmail.com --- (In reply to Jeff Smith from comment #2)
I can reproduce: When I start CST, and click Start, it brings up a difficulty selection box. I can see the tofu at the end of the descriptive text.
Now, if I run with the dwrite debug channel, and grep for dwritefactory_CreateTextLayout, I see trailing nulls in the strings where the tofu appears. So it would seem that this function may need to better handle trailing nulls.
I'm unclear if this is a regression. Did this appear correctly in earlier versions of Wine, and if so can you specify such a version of Wine?
I tested with these versions:
* 8.15 (Tofu glyphs appear) * 8.0 (Tofu glyphs appear) * 7.22 (Tofu glyphs appear) * 7.14 (Tofu glyphs appear) * 7.13 (Tofu glyphs don't appear) * 7.12 (Tofu glyphs don't appear) * 7.11 (Tofu glyphs don't appear) * 7.10 (Tofu glyphs don't appear) * 7.6 (Tofu glyphs don't appear)
7.6 is the oldest available version in the wine-builds for Ubuntu that I can check easily.
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #6 from Robert T rjtulloh@gmail.com --- Created attachment 75091 --> https://bugs.winehq.org/attachment.cgi?id=75091 Screenshots of various SRPG Studio games in Wine and Windows.
I've attached a set of screenshots from the games I've tested, with the same text in both Wine and Windows.
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #7 from Robert T rjtulloh@gmail.com --- I should clarify: when I say "tofu glyph," I mean "missing character glyph." I thought this shorthand would be well understood. Apologies if it wasn't.
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #8 from Jeff Smith whydoubt@gmail.com --- Thank you, knowing it was between 7.13 and 7.14 helped me determine the likely regression commit. I did not do a full bisect, but reverting it does fix the problem.
commit 5259c1a1dcbbdeec8d60548194bbb6aed9c2f671 Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Jul 25 14:27:41 2022 +0300
dwrite: Use correct ranges to set DWRITE_SCRIPT_SHAPES_NO_VISUAL.
Also note that the revert does not apply cleanly, and a better fix (needs further testing) may be
--- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -658,7 +658,7 @@ static DWRITE_SCRIPT_ANALYSIS get_char_sa(UINT32 c)
sa.script = get_char_script(c); sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT; - if ((c >= 0x0001 && c <= 0x001f) /* C0 controls */ + if ((c <= 0x001f) /* C0 controls */ || (c >= 0x007f && c <= 0x009f) /* DELETE, C1 controls */ || (c == 0x00ad) /* SOFT HYPHEN */ || (c >= 0x200b && c <= 0x200f) /* ZWSP, ZWNJ, ZWJ, LRM, RLM */
https://bugs.winehq.org/show_bug.cgi?id=55529
--- Comment #9 from Jeff Smith whydoubt@gmail.com --- FYI, https://gitlab.winehq.org/wine/wine/-/merge_requests/3744 has been merged, which appears to fix this bug.
https://bugs.winehq.org/show_bug.cgi?id=55529
Robert T rjtulloh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED
--- Comment #10 from Robert T rjtulloh@gmail.com --- I no longer see the tofu blocks in wine 8.16.
https://bugs.winehq.org/show_bug.cgi?id=55529
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |c93cfb4aad8c1ede7a767d30779 | |1767b8294dbeb
https://bugs.winehq.org/show_bug.cgi?id=55529
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 8.17.