--- np2/win9x/fontmng.cpp 2005/02/09 20:11:35 1.3 +++ np2/win9x/fontmng.cpp 2006/12/24 00:52:29 1.9 @@ -22,7 +22,12 @@ typedef struct { static const OEMCHAR deffontface[] = OEMTEXT("£Í£Ó ¥´¥·¥Ã¥¯"); static const OEMCHAR deffontface2[] = OEMTEXT("£Í£Ó £Ð¥´¥·¥Ã¥¯"); +static const OEMCHAR edeffontface[] = OEMTEXT("MS Gothic"); +static const OEMCHAR edeffontface2[] = OEMTEXT("MS PGothic"); +static const OEMCHAR *deffont[4] = { + deffontface, deffontface2, + edeffontface, edeffontface2}; void *fontmng_create(int size, UINT type, const OEMCHAR *fontface) { @@ -35,7 +40,9 @@ void *fontmng_create(int size, UINT type int fontwidth; int fontheight; int weight; - UINT pitch; + int deffontnum; + DWORD pitch; + DWORD charset; if (size < 0) { size *= -1; @@ -92,7 +99,7 @@ void *fontmng_create(int size, UINT type bi->bmiColors[i].rgbReserved = PC_RESERVED; } - hdc = GetDC(NULL); + hdc = GetDC(NULL); ret->hBitmap = CreateDIBSection(hdc, bi, DIB_RGB_COLORS, (void **)&ret->image, NULL, 0); ret->hdcimage = CreateCompatibleDC(hdc); @@ -103,11 +110,16 @@ void *fontmng_create(int size, UINT type weight = (type & FDAT_BOLD)?FW_BOLD:FW_REGULAR; pitch = (type & FDAT_PROPORTIONAL)?VARIABLE_PITCH:FIXED_PITCH; if (fontface == NULL) { - fontface = (type & FDAT_PROPORTIONAL)?deffontface2:deffontface; + deffontnum = (type & FDAT_PROPORTIONAL)?1:0; + if (GetOEMCP() != 932) { // !Japanese + deffontnum += 2; + } + fontface = deffont[deffontnum]; } + charset = (type & FDAT_SHIFTJIS)?SHIFTJIS_CHARSET:DEFAULT_CHARSET; ret->hfont = CreateFont(size, 0, FW_DONTCARE, FW_DONTCARE, weight, - FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, + FALSE, FALSE, FALSE, charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, pitch, fontface); ret->hfont = (HFONT)SelectObject(ret->hdcimage, ret->hfont); @@ -117,7 +129,6 @@ void *fontmng_create(int size, UINT type return(ret); } - void fontmng_destroy(void *hdl) { FNTMNG fhdl; @@ -164,16 +175,16 @@ static void fontmng_getchar(FNTMNG fhdl, BRESULT fontmng_getsize(void *hdl, const OEMCHAR *string, POINT_T *pt) { + int width; OEMCHAR buf[4]; _FNTDAT fdat; - int width; int leng; - width = 0; if ((hdl == NULL) || (string == NULL)) { goto fmgs_exit; } + width = 0; while(1) { leng = milstr_charsize(string); if (!leng) {