I have an application that provides a preview of the RTF files it generates. The preview renders each page using combinations of the Times Roman and Courier New fonts with a size of 8 points.

Problem:
The size of the Courier New text is rendered larger than the Times Roman text which results in the text exceeding the page rectangle.

If I render everything in Times Roman at 8 point it matches the output from Word (My Output Reference) within a mm or so over the page length. If I render the data using Courier New I exceed the page length by 8 lines on the display.

Printing also produces a variation in text length but due to the higher printer resolution it is not as great.

I have looked at the values of the screen resolution using GetDeviceCaps(LOGPIXELSY) which returns the default 96 pixels per inch.

Using the GetDeviceCaps(VERTRES) and (VERTSIZE) I get a resolution of 91 or 76 depending on the display.

Using these resolutions improves reduces the height of the text but still not enough to achieve the required representation.

I've also tried CreateFontIndirect and CreatePointFont to see if this makes a difference which unfortunately it hasn't.

Can anyone provide some insight into a reliable method to correctly display Courier New fonts with the same accuracy as the other true type fonts.