we ran into a similar problem that the spaces did not match the text when changing font size. I want to share our solution in case someone else is searching here:
We changed the fonts via ClassificationTypeProvider. So we iterated all registered ClassificationProviders and re-registered with the updated IHighlightingStyle. We used a custom language created by geneating code with the LangugageDesigner. We took one of the free langugages (pascal) and extended it to our needs.
The pitfall then was, that in the langugage definition every token had a ClassifictationType assigned, but only WhiteSpace and LineTermination did have null as ClassificationType. And therefore none of the changes in font of the registered IHighlightingStyles applied to the spaces.
The solution was to add a new ClassificationType in the language, assign the Whitespace and LineTermination to this ClassificationType and then when updating the font/fontsize this new ClassificationType has been updated too and everything worked fine.