[ttssh2-commit] [10440] フォントダイアログのフォント名が空になる場合があるので修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 12月 27日 (火) 23:00:54 JST


Revision: 10440
          https://osdn.net/projects/ttssh2/scm/svn/commits/10440
Author:   zmatsuo
Date:     2022-12-27 23:00:54 +0900 (Tue, 27 Dec 2022)
Log Message:
-----------
フォントダイアログのフォント名が空になる場合があるので修正

- 次の2箇所
  - 「設定」メニューの「フォント」の「ダイアログフォント」
  - 「その他の設定」の「フォント」タブを選択し、ダイアログフォント
- フォント構造体に適切な値を設定するよう修正

ticket #45658

Ticket Links:
------------
    https://osdn.net/projects/ttssh2/tracker/detail/45658

Modified Paths:
--------------
    trunk/teraterm/teraterm/font_pp.cpp
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/teraterm/teraterm/font_pp.cpp
===================================================================
--- trunk/teraterm/teraterm/font_pp.cpp	2022-12-27 13:17:01 UTC (rev 10439)
+++ trunk/teraterm/teraterm/font_pp.cpp	2022-12-27 14:00:54 UTC (rev 10440)
@@ -60,10 +60,21 @@
 
 static void GetDlgLogFont(HWND hWnd, const TTTSet *ts, LOGFONTW *logfont)
 {
-	memset(logfont, 0, sizeof(*logfont));
-	logfont->lfHeight = -GetFontPixelFromPoint(hWnd, ts->DialogFontPoint);
-	wcsncpy_s(logfont->lfFaceName, _countof(logfont->lfFaceName),ts->DialogFontNameW, _TRUNCATE);
-	logfont->lfCharSet = ts->DialogFontCharSet;
+	*logfont = {};
+	if (ts->DialogFontNameW == NULL || ts->DialogFontNameW[0] == 0) {
+		// \x83t\x83H\x83\x93\x83g\x82\xAA\x90ݒ肳\x82\xEA\x82Ă\xA2\x82Ȃ\xA9\x82\xC1\x82\xBD\x82\xE7OS\x82̃t\x83H\x83\x93\x83g\x82\xF0\x8Eg\x97p\x82\xB7\x82\xE9
+		GetMessageboxFontW(logfont);
+	}
+	else {
+		wcsncpy_s(logfont->lfFaceName, _countof(logfont->lfFaceName), ts->DialogFontNameW,  _TRUNCATE);
+		logfont->lfHeight = -GetFontPixelFromPoint(hWnd, ts->DialogFontPoint);
+		logfont->lfCharSet = ts->DialogFontCharSet;
+		logfont->lfWeight = FW_NORMAL;
+		logfont->lfOutPrecision = OUT_DEFAULT_PRECIS;
+		logfont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
+		logfont->lfQuality = DEFAULT_QUALITY;
+		logfont->lfPitchAndFamily = DEFAULT_PITCH | FF_ROMAN;
+	}
 }
 
 static void SetDlgLogFont(HWND hWnd, const LOGFONTW *logfont, TTTSet *ts)

Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2022-12-27 13:17:01 UTC (rev 10439)
+++ trunk/teraterm/teraterm/vtwin.cpp	2022-12-27 14:00:54 UTC (rev 10440)
@@ -4364,12 +4364,20 @@
 
 		// LOGFONT\x8F\x80\x94\xF5
 		memset(&LogFont, 0, sizeof(LogFont));
-		wcsncpy_s(LogFont.lfFaceName, _countof(LogFont.lfFaceName), ts.DialogFontNameW,  _TRUNCATE);
-		LogFont.lfHeight = -GetFontPixelFromPoint(m_hWnd, ts.DialogFontPoint);
-		LogFont.lfCharSet = ts.DialogFontCharSet;
-		if (LogFont.lfFaceName[0] == 0) {
+		if (ts.DialogFontNameW == NULL || ts.DialogFontNameW[0] == 0) {
+			// \x83t\x83H\x83\x93\x83g\x82\xAA\x90ݒ肳\x82\xEA\x82Ă\xA2\x82Ȃ\xA9\x82\xC1\x82\xBD\x82\xE7OS\x90ݒ\xE8\x82\xF0\x8Eg\x97p\x82\xB7\x82\xE9
 			GetMessageboxFontW(&LogFont);
 		}
+		else {
+			wcsncpy_s(LogFont.lfFaceName, _countof(LogFont.lfFaceName), ts.DialogFontNameW,  _TRUNCATE);
+			LogFont.lfHeight = -GetFontPixelFromPoint(m_hWnd, ts.DialogFontPoint);
+			LogFont.lfCharSet = ts.DialogFontCharSet;
+			LogFont.lfWeight = FW_NORMAL;
+			LogFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
+			LogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
+			LogFont.lfQuality = DEFAULT_QUALITY;
+			LogFont.lfPitchAndFamily = DEFAULT_PITCH | FF_ROMAN;
+		}
 
 		// \x83_\x83C\x83A\x83\x8D\x83O\x95\\x8E\xA6
 		memset(&cf, 0, sizeof(cf));


ttssh2-commit メーリングリストの案内
Back to archive index