mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
patch 9.1.2127: MS-Windows: DirectX renders font too small
Problem: MS-Windows: DirectX renders font too small in comparison to
the GDI rendering (Linwei, after v9.1.2125)
Solution: Implement proper font clipping (Yasuhiro Matsumoto)
related: #19254
closes: #19304
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
c50be218cd
commit
fccd6f9b14
+12
-3
@@ -820,9 +820,6 @@ DWriteContext::CreateTextFormatFromLOGFONT(const LOGFONTW &logFont,
|
||||
fontSize = fontSize * float(fontMetrics.designUnitsPerEm)
|
||||
/ float(fontMetrics.ascent + fontMetrics.descent);
|
||||
}
|
||||
|
||||
// Scale by ascent ratio to match GDI rendering size
|
||||
fontSize = ceil(fontSize * float(fontMetrics.ascent) / float(fontMetrics.designUnitsPerEm));
|
||||
}
|
||||
|
||||
// The text format includes a locale name. Ideally, this would be the
|
||||
@@ -1055,6 +1052,15 @@ DWriteContext::DrawText(const WCHAR *text, int len,
|
||||
|
||||
SetDrawingMode(DM_DIRECTX);
|
||||
|
||||
// Apply clipping if ETO_CLIPPED is specified
|
||||
if ((fuOptions & ETO_CLIPPED) && lprc != NULL)
|
||||
{
|
||||
mRT->PushAxisAlignedClip(
|
||||
D2D1::RectF(FLOAT(lprc->left), FLOAT(lprc->top),
|
||||
FLOAT(lprc->right), FLOAT(lprc->bottom)),
|
||||
D2D1_ANTIALIAS_MODE_ALIASED);
|
||||
}
|
||||
|
||||
hr = mDWriteFactory->CreateTextLayout(text, len, mTextFormat,
|
||||
FLOAT(w), FLOAT(h), &textLayout);
|
||||
|
||||
@@ -1080,6 +1086,9 @@ DWriteContext::DrawText(const WCHAR *text, int len,
|
||||
}
|
||||
|
||||
SafeRelease(&textLayout);
|
||||
|
||||
if ((fuOptions & ETO_CLIPPED) && lprc != NULL)
|
||||
mRT->PopAxisAlignedClip();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -734,6 +734,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2127,
|
||||
/**/
|
||||
2126,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user