From <Someone>

This was caused by  character set incompatibility between message and map
windows. Apparently, Nethack is using  IBM character set (CP 437) but fonts
were create for Windows ANSI codepage. I fixed most of it by changing
character set of the fonts except for the Rogue level. I had to make changes
to src/drawing.c for Rogue level since most of Windows fonts are not capable
of displaying control characters (char. code<0x20)
And of course, disabling IBMGraphics option fixes it all.
This commit is contained in:
nethack.allison
2002-01-18 19:14:13 +00:00
parent c20a6f89f1
commit fb2f6753d6
3 changed files with 12 additions and 25 deletions

View File

@@ -45,7 +45,7 @@ HGDIOBJ mswin_create_font(int win_type, int attr, HDC hdc)
lgfnt.lfItalic = FALSE; // italic attribute option
lgfnt.lfUnderline = FALSE; // underline attribute option
lgfnt.lfStrikeOut = FALSE; // strikeout attribute option
lgfnt.lfCharSet = DEFAULT_CHARSET; // character set identifier
lgfnt.lfCharSet = OEM_CHARSET; // character set identifier
lgfnt.lfOutPrecision = OUT_DEFAULT_PRECIS; // output precision
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
@@ -63,7 +63,7 @@ HGDIOBJ mswin_create_font(int win_type, int attr, HDC hdc)
lgfnt.lfItalic = (attr==ATR_BLINK)? TRUE: FALSE; // italic attribute option
lgfnt.lfUnderline = (attr==ATR_ULINE)? TRUE : FALSE; // underline attribute option
lgfnt.lfStrikeOut = FALSE; // strikeout attribute option
lgfnt.lfCharSet = DEFAULT_CHARSET; // character set identifier
lgfnt.lfCharSet = OEM_CHARSET; // character set identifier
lgfnt.lfOutPrecision = OUT_DEFAULT_PRECIS; // output precision
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
@@ -81,7 +81,7 @@ HGDIOBJ mswin_create_font(int win_type, int attr, HDC hdc)
lgfnt.lfItalic = (attr==ATR_BLINK)? TRUE: FALSE; // italic attribute option
lgfnt.lfUnderline = (attr==ATR_ULINE)? TRUE : FALSE; // underline attribute option
lgfnt.lfStrikeOut = FALSE; // strikeout attribute option
lgfnt.lfCharSet = DEFAULT_CHARSET; // character set identifier
lgfnt.lfCharSet = OEM_CHARSET; // character set identifier
lgfnt.lfOutPrecision = OUT_DEFAULT_PRECIS; // output precision
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
@@ -98,31 +98,13 @@ HGDIOBJ mswin_create_font(int win_type, int attr, HDC hdc)
lgfnt.lfItalic = (attr==ATR_BLINK)? TRUE: FALSE; // italic attribute option
lgfnt.lfUnderline = (attr==ATR_ULINE)? TRUE : FALSE; // underline attribute option
lgfnt.lfStrikeOut = FALSE; // strikeout attribute option
lgfnt.lfCharSet = DEFAULT_CHARSET; // character set identifier
lgfnt.lfCharSet = OEM_CHARSET; // character set identifier
lgfnt.lfOutPrecision = OUT_DEFAULT_PRECIS; // output precision
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
lgfnt.lfPitchAndFamily = FIXED_PITCH; // pitch and family
/* lgfnt.lfFaceName */
break;
case NHW_MAP:
lgfnt.lfHeight = -TILE_Y; // height of font
lgfnt.lfWidth = -TILE_X; // average character width
lgfnt.lfEscapement = 0; // angle of escapement
lgfnt.lfOrientation = 0; // base-line orientation angle
lgfnt.lfWeight = FW_NORMAL; // font weight
lgfnt.lfItalic = FALSE; // italic attribute option
lgfnt.lfUnderline = FALSE; // underline attribute option
lgfnt.lfStrikeOut = FALSE; // strikeout attribute option
lgfnt.lfCharSet = DEFAULT_CHARSET; // character set identifier
// we need OEM charset for Rogue level
lgfnt.lfOutPrecision = OUT_DEFAULT_PRECIS; // output precision
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
lgfnt.lfPitchAndFamily = FIXED_PITCH; // pitch and family
_tcscpy( lgfnt.lfFaceName, TEXT("Terminal"));
break;
}
fnt = CreateFontIndirect(&lgfnt);

View File

@@ -6,8 +6,8 @@
#include "mhmap.h"
#include "mhmsg.h"
#include "mhinput.h"
#include "mhfont.h"
#define NHMAP_FONT_NAME TEXT("Terminal")
#define MAXWINDOWTEXT 255
extern short glyph2tile[];
@@ -156,7 +156,7 @@ void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw)
lgfnt.lfClipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision
lgfnt.lfQuality = DEFAULT_QUALITY; // output quality
lgfnt.lfPitchAndFamily = FIXED_PITCH; // pitch and family
_tcscpy(lgfnt.lfFaceName, TEXT("Terminal"));
_tcscpy(lgfnt.lfFaceName, NHMAP_FONT_NAME);
data->hMapFont = CreateFontIndirect(&lgfnt);
mswin_cliparound(data->xCur, data->yCur);