From 3b686c3eca42f28cc2975c0752fbb87e79f6b73c Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 27 Aug 2021 13:51:55 +0100 Subject: [PATCH] gdi32: Move GetFontLanguageInfo to text.c. Signed-off-by: Jacek Caban Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/gdi32/font.c | 49 ----------------------------------------------- dlls/gdi32/text.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index f825562b37f..b65f1e54bee 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -6044,55 +6044,6 @@ BOOL WINAPI TranslateCharsetInfo( return TRUE; } -/************************************************************************* - * GetFontLanguageInfo (GDI32.@) - */ -DWORD WINAPI GetFontLanguageInfo(HDC hdc) -{ - FONTSIGNATURE fontsig; - static const DWORD GCP_DBCS_MASK=FS_JISJAPAN|FS_CHINESESIMP|FS_WANSUNG|FS_CHINESETRAD|FS_JOHAB, - GCP_DIACRITIC_MASK=0x00000000, - FLI_GLYPHS_MASK=0x00000000, - GCP_GLYPHSHAPE_MASK=FS_ARABIC, - GCP_KASHIDA_MASK=0x00000000, - GCP_LIGATE_MASK=0x00000000, - GCP_REORDER_MASK=FS_HEBREW|FS_ARABIC; - - DWORD result=0; - - NtGdiGetTextCharsetInfo( hdc, &fontsig, 0 ); - /* We detect each flag we return using a bitmask on the Codepage Bitfields */ - - if( (fontsig.fsCsb[0]&GCP_DBCS_MASK)!=0 ) - result|=GCP_DBCS; - - if( (fontsig.fsCsb[0]&GCP_DIACRITIC_MASK)!=0 ) - result|=GCP_DIACRITIC; - - if( (fontsig.fsCsb[0]&FLI_GLYPHS_MASK)!=0 ) - result|=FLI_GLYPHS; - - if( (fontsig.fsCsb[0]&GCP_GLYPHSHAPE_MASK)!=0 ) - result|=GCP_GLYPHSHAPE; - - if( (fontsig.fsCsb[0]&GCP_KASHIDA_MASK)!=0 ) - result|=GCP_KASHIDA; - - if( (fontsig.fsCsb[0]&GCP_LIGATE_MASK)!=0 ) - result|=GCP_LIGATE; - - if( NtGdiGetKerningPairsW( hdc, 0, NULL ) ) - result|=GCP_USEKERNING; - - /* this might need a test for a HEBREW- or ARABIC_CHARSET as well */ - if( GetTextAlign( hdc) & TA_RTLREADING ) - if( (fontsig.fsCsb[0]&GCP_REORDER_MASK)!=0 ) - result|=GCP_REORDER; - - return result; -} - - /************************************************************************* * GetFontData [GDI32.@] * diff --git a/dlls/gdi32/text.c b/dlls/gdi32/text.c index ba86a1a3b1d..72b721a48a2 100644 --- a/dlls/gdi32/text.c +++ b/dlls/gdi32/text.c @@ -1849,3 +1849,51 @@ DWORD WINAPI GetKerningPairsA( HDC hdc, DWORD count, KERNINGPAIR *kern_pairA ) HeapFree( GetProcessHeap(), 0, kern_pairW ); return kern_pairs_copied; } + +/************************************************************************* + * GetFontLanguageInfo (GDI32.@) + */ +DWORD WINAPI GetFontLanguageInfo( HDC hdc ) +{ + FONTSIGNATURE fontsig; + DWORD result = 0; + + static const DWORD GCP_DBCS_MASK = FS_JISJAPAN|FS_CHINESESIMP|FS_WANSUNG|FS_CHINESETRAD|FS_JOHAB, + GCP_DIACRITIC_MASK = 0x00000000, + FLI_GLYPHS_MASK = 0x00000000, + GCP_GLYPHSHAPE_MASK = FS_ARABIC, + GCP_KASHIDA_MASK = 0x00000000, + GCP_LIGATE_MASK = 0x00000000, + GCP_REORDER_MASK = FS_HEBREW|FS_ARABIC; + + + NtGdiGetTextCharsetInfo( hdc, &fontsig, 0 ); + /* We detect each flag we return using a bitmask on the Codepage Bitfields */ + + if (fontsig.fsCsb[0] & GCP_DBCS_MASK) + result |= GCP_DBCS; + + if (fontsig.fsCsb[0] & GCP_DIACRITIC_MASK) + result |= GCP_DIACRITIC; + + if (fontsig.fsCsb[0] & FLI_GLYPHS_MASK) + result |= FLI_GLYPHS; + + if (fontsig.fsCsb[0] & GCP_GLYPHSHAPE_MASK) + result |= GCP_GLYPHSHAPE; + + if (fontsig.fsCsb[0] & GCP_KASHIDA_MASK) + result |= GCP_KASHIDA; + + if (fontsig.fsCsb[0] & GCP_LIGATE_MASK) + result |= GCP_LIGATE; + + if (NtGdiGetKerningPairsW( hdc, 0, NULL )) + result |= GCP_USEKERNING; + + /* this might need a test for a HEBREW- or ARABIC_CHARSET as well */ + if ((GetTextAlign( hdc ) & TA_RTLREADING) && (fontsig.fsCsb[0] & GCP_REORDER_MASK)) + result |= GCP_REORDER; + + return result; +}