The reason I ask is that I know which part of the code introduces the bug.No idea.
assignFontIds works fine and assigns the proper char to each symbol.
But getFontSymbols does not seem to work properly. It is not entirely clear what the meaning of the parameters is and we can't check the caller code itself as it is in the exe.
The easiest way to fix it that I found is not adding the resources at all. The shift in the symbols in the city bar display then disappears. If the big font resource icons are never used that should not be a problem. The small font works fine with the proper Ids alone.
My suspicion about what the function is meant to do (although it is probably a remnant that has no practical use besides introducing bugs as it only works on the big font):
It tries to reassemble the font. You give it a number of IDs to the original font and a max number of rows which determines the padding. Then you give it another array of IDs and the padding and so on.
That it works now despite that the order was changed in the font ID assignment is only because someone meddled with the font and removed empty slots in the font until it happened to fit.
If my suspicion is correct then the proper way to fix this is to change the max number of rows for the religions and corporations to the correct value and use a fixed font file that does not have the bandaid of slot removal. Then exchange the order of symbols and resources in getFontSymbols.
I'll give that a try this evening.