2025-08-01 19:07 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0005858Spring engineGeneralpublic2018-02-01 19:57
ReporterAnarchid 
Assigned Tohokomoko 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
Product Version104.0 +git 
Target VersionFixed in Version 
Summary0005858: Font rendering character fallback does not work on Windows
DescriptionThe text rendering in spring, as far as i am aware, is supposed to look up replacement fonts for characters which are not contained in the current font for any rendering text. This functions properly under linux: if i have Chili within ZK draw some strings in Chinese or Hebrew, both work without issue, despite the fact that none of the font families ZK uses (freesans and nimbus) have any Chinese characters (but it is of note that freesans, used ingame, does have hebrew).

This fails utterly on windows: Hebrew characters are rendered with ZK game correctly (but LTR instead of RTL), while Chinese ones are rendered as squares. In ZK lobby (via luamenu), both Hebrew and Chinese are rendered as voids.

The amount of those voids and squares, however perfectly matches the number of actual characters to be rendered, and those strings are still correctly received on Linux, which eliminates the suspicion that the problem lies in faulty encoding.

This happens on windows systems which have full support of those languages. Windows versions at least 7 and 10 were tested.

Steps To Reproduce1) Start zk launcher under linux
2) Copy-paste some chinese into chat and send it, see the characters rendered correctly.
3) Launch a skirmish game, paste same Chinese string to ingame chat, observe it still working
4) Repeat steps 1-3 under Windows
5) Observe fonts not working.
Additional InformationI assume a workaround is possible through inclusion of a pan-unicode font (or at least, a font with proper CJK support). This is obviously not an ideal solution, but if the workaround works, this at the very least strongly confirms that the issue is with font fallback, so i'll see it tried during the next week.

Some screenshots:

1) Metal Extractor name and description translated to Chinese, viewed under Linux: https://cdn.discordapp.com/attachments/278908415756206080/396402630613794836/image.png

2) Same story, but now under Windows: https://cdn.discordapp.com/attachments/388446609676959751/396632191922077696/unknown.png

3) Hebrew working ingame under Windows while Chinese doesn't. I assume this is because freesans (the font used ingame) has Hebrew characters directly, so fallback is not required: https://cdn.discordapp.com/attachments/388446609676959751/396637862780469249/unknown.png

4) Hebrew not working in lobby under Windows despite working ingame. I assume this is because Chobby uses Nimbus as default font, which doesn't have hebrew, requiring fallback, which is broken. Also observe question marks in the second quote being on their correct places. https://i.imgur.com/9n6cdLO.png
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

-Relationships
+Relationships

-Notes

~0018721

Anarchid (reporter)

Looks like Windows builds of Spring have fontconfig 1.

This is quite old, and i expect Linux to just have a newer version by default.

~0018762

Anarchid (reporter)

Hokomoko says:
> @Anarchid the dll is -1 but the version is 2.12.6

If this is correct, then "fontconfig too old on windows" is debunked.

The character substitution fails on windows versions including at least win10 and win7 though, so i think it's still unlikely that it's an upstream fontconfig / freetype issue.

~0018765

hokomoko (developer)

Fix cc71472ea0b1b746e185e5f2c8e5d95d40ce355d committed to develop branch: Fix 0005858

This makes spring have a black screen for a few seconds
when running it for the first time., repo: spring changeset id: 9531
+Notes

-Issue History
Date Modified Username Field Change
2017-12-30 18:23 Anarchid New Issue
2018-01-09 13:31 Anarchid Note Added: 0018721
2018-02-01 16:43 Anarchid Note Added: 0018762
2018-02-01 19:57 hokomoko Changeset attached => spring develop cc71472e
2018-02-01 19:57 hokomoko Note Added: 0018765
2018-02-01 19:57 hokomoko Assigned To => hokomoko
2018-02-01 19:57 hokomoko Status new => resolved
2018-02-01 19:57 hokomoko Resolution open => fixed
+Issue History