>> Why can't this logic go in gdip_format_string? > > Because not all of its callers should be affected (GdipMeasureCharacterRanges > is one of them). How not? If the padding is there when drawing the whole string, it affects the positions of individual characters.