[Solved] Font rendering on Linux

Trouble with Synthesia, your keyboard, or adapter? Think you found a bug?
When describing problems, always mention your OS and game version (shown at the bottom of the title screen).

If your keyboard has USB or MIDI ports, there is a tremendously high chance (>99%) it will work with Synthesia. See what you'll need on the keyboards page.
Post Reply
aria1121
Posts: 1505

Post by aria1121 »

Hello, Synthesia Forum! Sure haven't posted here in a long time.

I have been using the 8.5 beta for a long time, and I noted this bug was still not fixed.
FontBug.png
FontBug.png (85.41 KiB) Viewed 12294 times
If I recall correctly, the builds of begin-2012 worked just fine on Wine 1.4.0. All the fonts now in the scores in the library, in the in-game titles, on the keys and on the falling notes are remarkably off-set.

Using r2368, on Debian x64 using Wine 1.4.1 stable.
Last edited by aria1121 on 09-18-13 9:42 am, edited 1 time in total.
Nicholas
Posts: 13135

Post by Nicholas »

Which renderer are you using? DirectX 9 or OpenGL? Try switching to the other one using the Synthesia Configuration utility. Does that improve the situation?

I know the Wine folks actually like to have bugs reported to them instead of the original software developers, because their philosophy is that Wine should transparently work exactly the same. If a software developer has to include workarounds for them, they would describe that as a failure on their part. If the other renderer doesn't fix the problem, this might be something to ask them about instead.

If the renderer changed doesn't fix things, my guess is it's a GDI+ bug in Wine. The following might be useful information for the Wine folks. It's a little technical though:

The difference between Synthesia 8.5 and 8.6 in terms of that title bar text is that now it uses a combination GraphicsPath::AddString/FillPath instead of a simple DrawString. That new solution is only used for text with outlines (like that in the title bar and note labels in your screenshot). The reason for the change: Windows 8 renders text a little differently than previous versions of the OS. Historically I could use DrawPath for the outlines and DrawString for the foreground text... but suddenly in Win8, those two didn't match up perfectly anymore. One would end up a little wider than the other. So now I use DrawPath and FillPath for outlined text.

I wanted to use it for everything (FillPath's text is much higher quality in Win8 than DrawString) but then my text-measurements were off by the same amount whenever you interacted with a textbox (cursor, clicking in the middle of the text, etc.) so I had to use a split solution: DrawPath/FillPath for outlined text (which luckily never occurs in a text box) and plain DrawString everywhere else.

So the TL;DR for the Wine bug report: it looks like GDI+'s GraphicsPath::AddString is misbehaving.

If you use the real GDI+ DLLs instead, does that fix the problem? I don't know how exactly to use native DLLs with Wine, but I know it can be done. Grab that download, run it to extract, and use the gdiplus.dll you can find in the \asms\10\msft\windows\gdiplus\ extracted folder.
aria1121
Posts: 1505

Post by aria1121 »

Nicholas wrote:If you use the real GDI+ DLLs instead, does that fix the problem? I don't know how exactly to use native DLLs with Wine, but I know it can be done. Grab that download, run it to extract, and use the gdiplus.dll you can find in the \asms\10\msft\windows\gdiplus\ extracted folder.
Thanks, that fixed the problem. This is what I did:

- Download the executable you linked to
- Run and extract
- Copy DLL to ~/.wine/drive_c/windows/system32/
- Run winecfg and go to Libraries tab
- new entry 'gdiplus' > Add > Edit > Load order 'Native (Windows)'

Using OpenGL.
Nicholas
Posts: 13135

Post by Nicholas »

Good to hear! This is optional at this point, but the Wine folks would probably really like to hear about the problem. Here is their process. If they can fix it on their end, this workaround won't be needed.
ziggystar
Posts: 5

Post by ziggystar »

I've experienced the very same bug with wine 1.4.1 (default in my Linux). After upgrading to wine 1.7.3 the bug was more or less gone. The characters are now aligned properly. But they are rendered aliased and the finger hints on the falling notes flicker.
Nicholas
Posts: 13135

Post by Nicholas »

ziggystar wrote:But they are rendered aliased and the finger hints on the falling notes flicker.
Hmm. Sounds like some things improved but others got worse.

Does the workaround above (using the Microsoft GDI+ redistributable) solve things?
Post Reply