Changes to allow fonts with any charset (such as terminal)
authorEric Mullins <emwine@earthlink.net>
Sun, 18 Oct 2009 17:32:55 +0000 (11:32 -0600)
committerEric Mullins <emwine@earthlink.net>
Sun, 18 Oct 2009 17:32:55 +0000 (11:32 -0600)
Affects winboard only.

winboard/winboard.c
winboard/winboard.h
winboard/woptions.c [changed mode: 0644->0755]

index 62d5072..31afd62 100644 (file)
@@ -1496,6 +1496,10 @@ ParseFontName(char *name, MyFontParams *mfp)
   mfp->italic = (strchr(p, 'i') != NULL);\r
   mfp->underline = (strchr(p, 'u') != NULL);\r
   mfp->strikeout = (strchr(p, 's') != NULL);\r
+  mfp->charset = DEFAULT_CHARSET;\r
+  q = strchr(p, 'c');\r
+  if (q)\r
+    mfp->charset = (BYTE) atoi(q+1);\r
 }\r
 \r
 /* Color name parser.\r
@@ -1870,7 +1874,7 @@ LFfromMFP(LOGFONT* lf, MyFontParams *mfp)
   lf->lfItalic = mfp->italic;\r
   lf->lfUnderline = mfp->underline;\r
   lf->lfStrikeOut = mfp->strikeout;\r
-  lf->lfCharSet = DEFAULT_CHARSET;\r
+  lf->lfCharSet = mfp->charset;\r
   lf->lfOutPrecision = OUT_DEFAULT_PRECIS;\r
   lf->lfClipPrecision = CLIP_DEFAULT_PRECIS;\r
   lf->lfQuality = DEFAULT_QUALITY;\r
@@ -2493,13 +2497,14 @@ SaveSettings(char* name)
        for (bs=0; bs<NUM_SIZES; bs++) {\r
          MyFontParams *mfp = &font[bs][(int) ad->argLoc]->mfp;\r
           fprintf(f, "/size=%s ", sizeInfo[bs].name);\r
-         fprintf(f, "/%s=\"%s:%g%s%s%s%s%s\"\n",\r
+         fprintf(f, "/%s=\"%s:%g%s%s%s%s%sc%d\"\n",\r
            ad->argName, mfp->faceName, mfp->pointSize,\r
             mfp->bold || mfp->italic || mfp->underline || mfp->strikeout ? " " : "",\r
            mfp->bold ? "b" : "",\r
            mfp->italic ? "i" : "",\r
            mfp->underline ? "u" : "",\r
-           mfp->strikeout ? "s" : "");\r
+           mfp->strikeout ? "s" : "",\r
+            (int)mfp->charset);\r
        }\r
       }\r
       break;\r
index fab659e..973aab6 100644 (file)
@@ -59,6 +59,7 @@ typedef struct {
   char faceName[LF_FACESIZE];\r
   float pointSize;\r
   BYTE bold, italic, underline, strikeout;\r
+  BYTE charset;\r
 } MyFontParams;\r
 \r
 typedef struct {\r
old mode 100644 (file)
new mode 100755 (executable)
index 46f0e4b..aaab83b
@@ -1010,6 +1010,7 @@ MyCreateFont(HWND hwnd, MyFont *font)
   font->mfp.italic = font->lf.lfItalic;
   font->mfp.underline = font->lf.lfUnderline;
   font->mfp.strikeout = font->lf.lfStrikeOut;
+  font->mfp.charset = font->lf.lfCharSet;
   strcpy(font->mfp.faceName, font->lf.lfFaceName);
   return TRUE;
 }
@@ -1021,7 +1022,7 @@ UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca)
   CHARFORMAT cf;
   cf.cbSize = sizeof(CHARFORMAT);
   cf.dwMask = 
-    CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE;
+    CFM_COLOR|CFM_CHARSET|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE;
   cf.crTextColor = mca->color;
   cf.dwEffects = mca->effects;
   strcpy(cf.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName);
@@ -1265,7 +1266,9 @@ IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       appData.colorize =
        (Boolean)!IsDlgButtonChecked(hDlg, OPT_DontColorize);
 
-      if (!appData.colorize) {
+    ChangedConsoleFont();\r
+\r
+    if (!appData.colorize) {
        CHARFORMAT cf;
        COLORREF background = ParseColorName(COLOR_BKGD);
        /*
@@ -1275,7 +1278,7 @@ IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        cf.cbSize = sizeof(CHARFORMAT);
        cf.dwMask = CFM_COLOR;
        cf.crTextColor = ParseColorName(COLOR_NORMAL);
-
+\r
        SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, 
          EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
         SendDlgItemMessage(hwndConsole, OPT_ConsoleText, 
@@ -1495,6 +1498,7 @@ CopyFont(MyFont *dest, const MyFont *src)
   dest->mfp.italic    = src->mfp.italic;
   dest->mfp.underline = src->mfp.underline;
   dest->mfp.strikeout = src->mfp.strikeout;
+  dest->mfp.charset   = src->mfp.charset;
   lstrcpy(dest->mfp.faceName, src->mfp.faceName);
   CreateFontInMF(dest);
 }