diff --git a/reactos/dll/win32/gdi32/include/gdi32p.h b/reactos/dll/win32/gdi32/include/gdi32p.h index 2ae1f53deda..723c5657ba2 100644 --- a/reactos/dll/win32/gdi32/include/gdi32p.h +++ b/reactos/dll/win32/gdi32/include/gdi32p.h @@ -15,6 +15,7 @@ extern HANDLE hProcessHeap; extern HANDLE CurrentProcessId; extern DWORD GDI_BatchLimit; extern PDEVCAPS GdiDevCaps; +extern BOOL gbLpk; // Global bool LanguagePack typedef INT (CALLBACK* EMFPLAYPROC)( diff --git a/reactos/dll/win32/gdi32/main/dllmain.c b/reactos/dll/win32/gdi32/main/dllmain.c index afd9764e912..2e676ac7037 100644 --- a/reactos/dll/win32/gdi32/main/dllmain.c +++ b/reactos/dll/win32/gdi32/main/dllmain.c @@ -13,6 +13,7 @@ extern HGDIOBJ stock_objects[]; BOOL SetStockObjects = FALSE; PDEVCAPS GdiDevCaps = NULL; PGDIHANDLECACHE GdiHandleCache = NULL; +BOOL gbLpk = FALSE; /* * GDI32.DLL does have an entry point for disable threadlibrarycall,. The initialization is done by a call diff --git a/reactos/dll/win32/gdi32/objects/font.c b/reactos/dll/win32/gdi32/objects/font.c index 34a2c083508..8f82cb89ac0 100644 --- a/reactos/dll/win32/gdi32/objects/font.c +++ b/reactos/dll/win32/gdi32/objects/font.c @@ -914,7 +914,19 @@ GetFontLanguageInfo( HDC hDc ) { - return GetDCDWord(hDc, GdiGetFontLanguageInfo, GCP_ERROR); + DWORD Gcp = 0, Ret = 0; + if (gbLpk) + { + Ret = NtGdiGetTextCharsetInfo(hDc, NULL, 0); + if ((Ret == ARABIC_CHARSET) || (Ret == HEBREW_CHARSET)) + Ret = (GCP_KASHIDA|GCP_DIACRITIC|GCP_LIGATE|GCP_GLYPHSHAPE|GCP_REORDER); + } + Gcp = GetDCDWord(hDc, GdiGetFontLanguageInfo, GCP_ERROR); + if ( Gcp == GCP_ERROR) + return Gcp; + else + Ret = Gcp | Ret; + return Ret; } /*