Since I have no tests for GdipMeasureCharacterRanges I don't want to break it inadvertently. If somebody proves that GdipMeasureCharacterRanges should be affected by extra padding as well, merging the code to gdip_format_string shouldn't be too hard.
Well, I'm saying you'll break it if you only change the other two functions and leave this one alone. It's more important for DrawString, MeasureString, and MeasureCharacterRanges to be consistent with each other than with Windows. Applications won't typically rely on specific measurements, but they WILL rely on the measurements from MeasureCharacterRanges and MeasureString to match the actual result from DrawString.
It should be obvious that changing the way DrawString lays out the text, or changing the measurements of some text, without a corresponding change in the other functions, will make the measurements WRONG, even if they happen to pass your tests and match the results on Windows. If you want to change the layout for only some of the string functions, you're going to need some very strong justification for that.