From 6cc4823eb0ac95c98ee1fbf322900af490fa16da Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Tue, 9 Apr 2013 21:20:52 +1000 Subject: With DirectWrite, text was drawn at different vertical positions depending on which other characters were draw in the same call. Switching to DWRITE_LINE_SPACING_METHOD_UNIFORM fixed this. --- win32/PlatWin.cxx | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'win32') diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index f23f0a6e8..1a39b1350 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -369,6 +369,12 @@ FontCached::FontCached(const FontParameters &fp) : } } pTextLayout->Release(); + DWRITE_LINE_SPACING_METHOD lineSpacingMethod=DWRITE_LINE_SPACING_METHOD_DEFAULT; + FLOAT lineSpacing=0; + FLOAT baseline=0; + if (SUCCEEDED(pTextFormat->GetLineSpacing(&lineSpacingMethod, &lineSpacing, &baseline))) { + pTextFormat->SetLineSpacing(DWRITE_LINE_SPACING_METHOD_UNIFORM, lineMetrics[0].height, lineMetrics[0].baseline); + } } fid = reinterpret_cast(new FormatAndMetrics(pTextFormat, fp.extraFontFlag, fp.characterSet, yAscent, yDescent, yInternalLeading)); } -- cgit v1.2.3