Another font dialog sample text patch.

Rein Klazes rklazes at xs4all.nl
Mon Dec 1 08:06:09 CST 2003


Hi,

Here are at least the sample texts for all of them.

Changelog:

	dlls/commdlg	: fontdlg.c
	Add sample texts for all missing character sets (or explain
	why some don't have it). Put the complete text in one place and 
	remove the glue code. Change the 2D array that holds the texts
	by a array of pointer to 1D character arrays to save space.

Rein.
-- 
Rein Klazes
rklazes at xs4all.nl
-------------- next part --------------
--- wine/dlls/commdlg/fontdlg.c	2003-11-29 08:45:19.000000000 +0100
+++ mywine/dlls/commdlg/fontdlg.c	2003-12-01 14:50:22.000000000 +0100
@@ -58,35 +58,45 @@
  */
 
 #define CI(cs) ((IDS_CHARSET_##cs)-IDS_CHARSET_ANSI)
-#define SAMPLE_EXTLEN 10
 
-static const WCHAR SAMPLE_LANG_TEXT[][SAMPLE_EXTLEN]={
-    {'Y','y','Z','z',0}, /* Western and default */
-    {0}, /* Symbol */
-    {0}, /* Shift JIS */
-    {0}, /* Hangul */
-    {0}, /* GB2312 */
-    {0}, /* BIG5 */
-    {0}, /* Greek */
-    {0}, /* Turkish */
-    {0x05e0, 0x05e1, 0x05e9, 0x05ea, 0}, /* Hebrew */
-    {0}, /* Arabic */
-    {0}, /* Baltic */
-    {0}, /* Vietnamese */
-    {0}, /* Russian */
-    {0}, /* East European */
-    {0}, /* Thai */
-    {0}, /* Johab */
-    {0}, /* Mac */
-    {0}, /* OEM */
-    {0}, /* VISCII */
-    {0}, /* TCVN */
-    {0}, /* KOI-8 */
-    {0}, /* ISO-8859-3 */
-    {0}, /* ISO-8859-4 */
-    {0}, /* ISO-8859-10 */
-    {0} /* Celtic */
-};
+
+static const WCHAR stWestern[]={'A','a','B','b','Y','y','Z','z',0}; /* Western and default */
+static const WCHAR stSymbol[]={'S','y','m','b','o','l',0}; /* Symbol */
+static const WCHAR stShiftJis[]={'A','a',0x3042,0x3041,0x30a2,0x30a1,0x4e9c,0x5b87,0}; /* Shift JIS */
+static const WCHAR stHangul[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Hangul */
+static const WCHAR stGB2312[]={0x5fae,0x8f6f,0x4e2d,0x6587,0x8f6f,0x4ef6,0}; /* GB2312 */
+static const WCHAR stBIG5[]={0x4e2d,0x6587,0x5b57,0x578b,0x7bc4,0x4f8b,0}; /* BIG5 */
+static const WCHAR stGreek[]={'A','a','B','b',0x0391,0x03b1,0x0392,0x03b2,0}; /* Greek */
+static const WCHAR stTurkish[]={'A','a','B','b',0x011e,0x011f,0x015e,0x015f,0}; /* Turkish */
+static const WCHAR stHebrew[]={'A','a','B','b',0x05e0,0x05e1,0x05e9,0x05ea,0}; /* Hebrew */
+static const WCHAR stArabic[]={'A','a','B','b',0x0627,0x0628,0x062c,0x062f,0x0647,0x0648,0x0632,0};/* Arabic */
+static const WCHAR stBaltic[]={'A','a','B','b','Y','y','Z','z',0}; /* Baltic */
+static const WCHAR stVietname[]={'A','a','B','b',0x01a0,0x01a1,0x01af,0x01b0,0}; /* Vietnamese */
+static const WCHAR stCyrillic[]={'A','a','B','b',0x0411,0x0431,0x0424,0x0444,0}; /* Cyrillic */
+static const WCHAR stEastEur[]={'A','a','B','b',0xc1,0xe1,0xd4,0xf4,0}; /* East European */
+static const WCHAR stThai[]={'A','a','B','b',0x0e2d,0x0e31,0x0e01,0x0e29,0x0e23,0x0e44,0x0e17,0x0e22,0}; /* Thai */
+static const WCHAR stJohab[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Johab */
+static const WCHAR stMac[]={'A','a','B','b','Y','y','Z','z',0}; /* Mac */
+static const WCHAR stOEM[]={'A','a','B','b',0xf8,0xf1,0xfd,0}; /* OEM */
+/* the following character sets actually behave different (Win2K observation):
+ * the sample string is 'sticky': it uses the sample string of the previous
+ * selected character set. That behaviour looks like some default, which is
+ * not (yet) implemented. */
+static const WCHAR stVISCII[]={'A','a','B','b',0}; /* VISCII */
+static const WCHAR stTCVN[]={'A','a','B','b',0}; /* TCVN */
+static const WCHAR stKOI8[]={'A','a','B','b',0}; /* KOI-8 */
+static const WCHAR stIso88593[]={'A','a','B','b',0}; /* ISO-8859-3 */
+static const WCHAR stIso88594[]={'A','a','B','b',0}; /* ISO-8859-4 */
+static const WCHAR stIso885910[]={'A','a','B','b',0}; /* ISO-8859-10 */
+static const WCHAR stCeltic[]={'A','a','B','b',0};/* Celtic */
+
+static const WCHAR *sample_lang_text[]={
+    stWestern,stSymbol,stShiftJis,stHangul,stGB2312,
+    stBIG5,stGreek,stTurkish,stHebrew,stArabic,
+    stBaltic,stVietname,stCyrillic,stEastEur,stThai,
+    stJohab,stMac,stOEM,stVISCII,stTCVN,
+    stKOI8,stIso88593,stIso88594,stIso885910,stCeltic};
+
 
 static const int CHARSET_ORDER[256]={
     CI(ANSI), 0, CI(SYMBOL), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1037,9 +1047,7 @@
         HPEN hOrigPen;
         HFONT hOrigFont;
         COLORREF rgbPrev;
-        WCHAR sample[SAMPLE_EXTLEN+5]={'A','a','B','b'};
         LOGFONTA lf = *(lpcf->lpLogFont);
-        /* Always start with this basic sample */
 
         MapWindowPoints( 0, hDlg, (LPPOINT) &info.rcWindow, 2);
         hdc=BeginPaint( hDlg, &ps );
@@ -1057,8 +1065,6 @@
         DeleteObject(SelectObject( hdc, hOrigPen ));
 
         /* Draw the sample text itself */
-        lstrcatW(sample, SAMPLE_LANG_TEXT[CHARSET_ORDER[lpcf->lpLogFont->lfCharSet]] );
-
         info.rcWindow.right--;
         info.rcWindow.bottom--;
         info.rcWindow.top++;
@@ -1066,8 +1072,10 @@
         lf.lfHeight = MulDiv(lf.lfHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72);
         hOrigFont = SelectObject( hdc, CreateFontIndirectA( &lf ) );
         rgbPrev=SetTextColor( hdc, lpcf->rgbColors );
-
-        DrawTextW( hdc, sample, -1, &info.rcWindow, DT_CENTER|DT_VCENTER|DT_SINGLELINE );
+        
+        DrawTextW( hdc,
+                sample_lang_text[CHARSET_ORDER[lpcf->lpLogFont->lfCharSet]],
+                -1, &info.rcWindow, DT_CENTER|DT_VCENTER|DT_SINGLELINE );
 
         EndPaint( hDlg, &ps );
     }


More information about the wine-patches mailing list