I'll tackle it if you can give me an idea of what to do. And I think it would be easier to put all the icons on the far right side, and anything that changes in size (words or numbers) on the left. That should line everything up to the names to a point. How much space would this take up with the blank spaces?
Cool! This is exactly what I'm thinking. The blank spaces would take up the same space as the icon that would normally show up there, thus maintaining the same width.
The first step is to take a screen shot with all the various icons showing and measure the space that each takes up. If you are know how to get this info from the fonts, all the better. If not, an SS should do fine.
Once you know how much space each icon takes -- including a few pixels around it -- you can calculate the X coordinates of where each should go.
For example, say we're going to put the attitude icon on the far right. Say it's 15 pixels and we want 5 pixels on the right edge. Then it will be drawn at "screenwidth - 20".
Calculate similar values for the OB, TN and Religion icons (I forgot this last one in my examples above).
The way the code currently works is to build up one long string for each civ and draw it once. For the score, name, power, and war you'll do the same thing. However, for these others (and tech) you'll be drawing individual strings. The method is the same, though.
Can you give me an idea of how familiar you are with Python? A good idea would be to look at the code that currently draws the scoreboard. It should start with the first occurance of "BUG - Power" in CvMainInterface.py. See if you can make sense of what it's currently doing. You'll do all the same things, mostly moving a few items around and changing values.