summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-08-17 10:50:06 +0500
committerXisco Fauli <xiscofauli@libreoffice.org>2024-10-18 14:34:09 +0200
commit8c295f2b87998ab8f9e4b3276b1fe0b7ee7251bb (patch)
treeb23205f9d45c84a90ca262f1fa52e177bbd9d5bc /vcl
parentf4f20c7f56847f92273d782789d9b9fc50610bd6 (diff)
Support for non-AA text on Windows
In commit 3ecd8f19a91ed7141304a2080fb11612b5ff30b3 (vcl cairo text renderer: support non-AA text, 2018-07-26) and its follow-up commit e6538f5bdd876911ea30f84a6512c03908e620fd (tdf#118966 vcl: add a flag to determine if AA of fonts is used from the system, 2018-07-28), non-antialiased text got supported in bitmap export using cairo. This change makes that support available on Windiws, including Skia. Change-Id: I1fae726539347f826e2d62246d35315e7954cf83 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171967 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins (cherry picked from commit 52a2dd0eea2ecf62b1db5f379cf65aed705446cb) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175060 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/win/salgdi.h2
-rw-r--r--vcl/win/gdi/salfont.cxx10
-rw-r--r--vcl/win/window/salframe.cxx2
3 files changed, 8 insertions, 6 deletions
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index 19edee0f4440..f8107a4a2a00 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -372,7 +372,7 @@ public:
void ImplUpdateSysColorEntries();
int ImplIsSysColorEntry( Color nColor );
void ImplGetLogFontFromFontSelect( const vcl::font::FontSelectPattern&,
- const vcl::font::PhysicalFontFace*, LOGFONTW& );
+ const vcl::font::PhysicalFontFace*, LOGFONTW&, bool bAntiAliased);
#define MAX_64KSALPOINTS ((((sal_uInt16)0xFFFF)-8)/sizeof(POINTS))
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index fb9e004b708d..63effb158ee8 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -675,7 +675,7 @@ static int CALLBACK SalEnumQueryFontProcExW( const LOGFONTW*, const TEXTMETRICW*
void ImplGetLogFontFromFontSelect( const vcl::font::FontSelectPattern& rFont,
const vcl::font::PhysicalFontFace* pFontFace,
- LOGFONTW& rLogFont )
+ LOGFONTW& rLogFont, bool bAntiAliased)
{
OUString aName;
if (pFontFace)
@@ -711,7 +711,6 @@ void ImplGetLogFontFromFontSelect( const vcl::font::FontSelectPattern& rFont,
rLogFont.lfEscapement = rFont.mnOrientation.get();
rLogFont.lfOrientation = rLogFont.lfEscapement;
rLogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
- rLogFont.lfQuality = DEFAULT_QUALITY;
rLogFont.lfOutPrecision = OUT_TT_PRECIS;
if ( rFont.mnOrientation )
rLogFont.lfClipPrecision |= CLIP_LH_ANGLES;
@@ -719,7 +718,10 @@ void ImplGetLogFontFromFontSelect( const vcl::font::FontSelectPattern& rFont,
// disable antialiasing if requested
if ( rFont.mbNonAntialiased )
rLogFont.lfQuality = NONANTIALIASED_QUALITY;
-
+ else if (bAntiAliased || Application::GetSettings().GetStyleSettings().GetUseFontAAFromSystem())
+ rLogFont.lfQuality = DEFAULT_QUALITY;
+ else
+ rLogFont.lfQuality = NONANTIALIASED_QUALITY;
}
std::tuple<HFONT,bool,sal_Int32> WinSalGraphics::ImplDoSetFont(HDC hDC, vcl::font::FontSelectPattern const & i_rFont,
@@ -729,7 +731,7 @@ std::tuple<HFONT,bool,sal_Int32> WinSalGraphics::ImplDoSetFont(HDC hDC, vcl::fon
HFONT hNewFont = nullptr;
LOGFONTW aLogFont;
- ImplGetLogFontFromFontSelect( i_rFont, i_pFontFace, aLogFont );
+ ImplGetLogFontFromFontSelect( i_rFont, i_pFontFace, aLogFont, getAntiAlias());
bool bIsCJKVerticalFont = false;
// select vertical mode for printing if requested and available
diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index 1661d3408fa8..783ca27192c6 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -2258,7 +2258,7 @@ static void ImplSalFrameSetInputContext( HWND hWnd, const SalInputContext* pCont
{
LOGFONTW aLogFont;
ImplGetLogFontFromFontSelect(pContext->mpFont->GetFontSelectPattern(),
- nullptr, aLogFont);
+ nullptr, aLogFont, true);
ImmSetCompositionFontW( hIMC, &aLogFont );
ImmReleaseContext( pFrame->mhWnd, hIMC );
}