Nice work Night

You've mentioned so many things with the Gamefonts of late if you could restate exactly what you changed and what it means for us modders that would be great. Like where and how should new icons be added and what not to do. I can post it on the BlackBoard and Wiki.
It's work in progress and it has changed a few times due to unexpected problems (like billboards).
The current state (which is likely more or less the end result) is as follows.
First of all use GameFontEditor to view and mod GameFont. It can't add/remove slots (yet?), but it appears to be the best tool to change content of slots. I added a bunch of vacant slots to help GameFontEditor as much as possible.
GameFont consists of a number of rows. They are as follows:
- Russian
- Yields
- Missions
- Symbols
Those 4 lines are the only ones reachable when writing on billboards. They have 276 slots in total.
The rest of the rows have virtually unlimited slots and I have added labels inside slots to tell intended purpose of each row.
Sometimes when you edit, the IDs gets out of sync. The starting ID is placed in XML\GameInfo\CIV4GameFontInfos.xml. Here you can set the ID of the first icon of each type. Symbols are omitted as that number is hardcoded in the exe. Maybe Yields and Russian should be removed too. Their forced fixed location turned out to be needed after I wrote that file.
To get the debug output for icons (and hence IDs), edit CvDomesticAdvisor.py
Line 155 says
Code:
#self.DEBUG_GAMEFONT_STATE = self.addButton(...
Uncomment this line and the far right button in the domestic advisor will display content of GameFont (both of them) and the IDs of each. You look here and write the ID of the first icon into the XML. Restart the game and the icons should work again.
I checked out the Gamefonts branch, besides that one little hiccup I posted I did notice that the Fonts I had added for things like Trading Posts and Vassals was missing but I can add those back, when I add Religion colors and Icons for all the Civs.
The GameFont branch is forked from the Russian branch, which is forked from release-2.5. Any changes made after 2.5 was released will not be in it. Also it is possible that I screwed up. My goal is to make a working engine to handle GameFont easily, not as much to make the perfect GameFont file. Once all the programming is done, we can add missing icons to GameFont without issues or replace them if we feel like it.