[Ttssh2-commit] [7259] フォントの設定をガイドラインに沿って行うようにした

scmno****@osdn***** scmno****@osdn*****
2018年 11月 18日 (日) 00:41:07 JST


Revision: 7259
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7259
Author:   zmatsuo
Date:     2018-11-18 00:41:06 +0900 (Sun, 18 Nov 2018)
Log Message:
-----------
フォントの設定をガイドラインに沿って行うようにした

Modified Paths:
--------------
    branches/cmake/teraterm/teraterm/teraterm.cpp

-------------- next part --------------
Modified: branches/cmake/teraterm/teraterm/teraterm.cpp
===================================================================
--- branches/cmake/teraterm/teraterm/teraterm.cpp	2018-11-03 15:33:55 UTC (rev 7258)
+++ branches/cmake/teraterm/teraterm/teraterm.cpp	2018-11-17 15:41:06 UTC (rev 7259)
@@ -1,4 +1,4 @@
-/*
+/*
  * Copyright (C) 1994-1998 T. Teranishi
  * (C) 2006-2018 TeraTerm Project
  * All rights reserved.
@@ -60,12 +60,12 @@
 
 	if ((module = GetModuleHandle("kernel32.dll")) != NULL) {
 		if ((setDefDllDir = (pSetDefDllDir)GetProcAddress(module, "SetDefaultDllDirectories")) != NULL) {
-			// SetDefaultDllDirectories() \x82\xAA\x8Eg\x82\xA6\x82\xE9\x8Fꍇ\x82́A\x8C\x9F\x8D\xF5\x83p\x83X\x82\xF0 %WINDOWS%\system32 \x82݂̂ɐݒ肷\x82\xE9
+			// SetDefaultDllDirectories() が使える場合は、検索パスを %WINDOWS%\system32 のみに設定する
 			(*setDefDllDir)((DWORD)0x00000800); // LOAD_LIBRARY_SEARCH_SYSTEM32
 		}
 		else if ((setDllDir = (pSetDllDir)GetProcAddress(module, "SetDllDirectoryA")) != NULL) {
-			// SetDefaultDllDirectories() \x82\xAA\x8Eg\x82\xA6\x82Ȃ\xAD\x82Ă\xE0\x81ASetDllDirectory() \x82\xAA\x8Eg\x82\xA6\x82\xE9\x8Fꍇ\x82\xCD
-			// \x83J\x83\x8C\x83\x93\x83g\x83f\x83B\x83\x8C\x83N\x83g\x83\x8A\x82\xBE\x82\xAF\x82ł\xE0\x8C\x9F\x8D\xF5\x83p\x83X\x82\xA9\x82\xE7\x82͂\xB8\x82\xB5\x82Ă\xA8\x82\xAD\x81B
+			// SetDefaultDllDirectories() が使えなくても、SetDllDirectory() が使える場合は
+			// カレントディレクトリだけでも検索パスからはずしておく。
 			(*setDllDir)("");
 		}
 	}
@@ -115,9 +115,9 @@
 				switch (ActiveWin) {
 				case IdVT:
 					Change =  ((CVTWindow*)pVTWin)->Parse();
-					// TEK window\x82̃A\x83N\x83e\x83B\x83u\x92\x86\x82\xC9 pause \x82\xF0\x8Eg\x82\xA4\x82ƁACPU\x8Eg\x97p\x97\xA6100%\x82ƂȂ\xE9
-					// \x8C\xBB\x8Fۂւ̎b\x92\xE8\x91Ώ\x88\x81B(2006.2.6 yutaka)
-					// \x91҂\xBF\x8E\x9E\x8AԂ\xF0\x82Ȃ\xAD\x82\xB5\x81A\x83R\x83\x93\x83e\x83L\x83X\x83g\x83X\x83C\x83b\x83`\x82\xBE\x82\xAF\x82ɂ\xB7\x82\xE9\x81B(2006.3.20 yutaka)
+					// TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
+					// 現象への暫定対処。(2006.2.6 yutaka)
+					// 待ち時間をなくし、コンテキストスイッチだけにする。(2006.3.20 yutaka)
 					Sleep(0);
 					break;
 
@@ -124,8 +124,8 @@
 				case IdTEK:
 					if (pTEKWin != NULL) {
 						Change = ((CTEKWindow*)pTEKWin)->Parse();
-						// TEK window\x82̃A\x83N\x83e\x83B\x83u\x92\x86\x82\xC9 pause \x82\xF0\x8Eg\x82\xA4\x82ƁACPU\x8Eg\x97p\x97\xA6100%\x82ƂȂ\xE9
-						// \x8C\xBB\x8Fۂւ̎b\x92\xE8\x91Ώ\x88\x81B(2006.2.6 yutaka)
+						// TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる
+						// 現象への暫定対処。(2006.2.6 yutaka)
 						Sleep(1);
 					}
 					else {
@@ -181,10 +181,10 @@
 
 		/* Receiver */
 		if (DDELog && cv.DCount >0) {
-			// \x83\x8D\x83O\x83o\x83b\x83t\x83@\x82\xAA\x82܂\xBEDDE\x83N\x83\x89\x83C\x83A\x83\x93\x83g\x82֑\x97\x82\xE7\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x8Fꍇ\x82́A
-			// TCP\x83p\x83P\x83b\x83g\x82̎\xF3\x90M\x82\xF0\x8Ds\x82\xED\x82Ȃ\xA2\x81B
-			// \x98A\x91\xB1\x82\xB5\x82Ď\xF3\x90M\x82\xF0\x8Ds\x82\xA4\x82ƁA\x83\x8D\x83O\x83o\x83b\x83t\x83@\x82\xAA\x83\x89\x83E\x83\x93\x83h\x83\x8D\x83r\x83\x93\x82ɂ\xE6\x82薢\x91\x97\x90M\x82̃f\x81[\x83^\x82\xF0
-			// \x8F㏑\x82\xAB\x82\xB5\x82Ă\xB5\x82܂\xA4\x89”\\x90\xAB\x82\xAA\x82\xA0\x82\xE9\x81B(2007.6.14 yutaka)
+			// ログバッファがまだDDEクライアントへ送られていない場合は、
+			// TCPパケットの受信を行わない。
+			// 連続して受信を行うと、ログバッファがラウンドロビンにより未送信のデータを
+			// 上書きしてしまう可能性がある。(2007.6.14 yutaka)
 
 		} else {
 			CommReceive(&cv);
@@ -223,32 +223,40 @@
 {
 	LOGFONT logfont;
 	BOOL result;
+
+	// 明示的に指定されている場合はそれに従う
 	result = GetI18nLogfont("Tera Term", "DLG_FONT", &logfont, 72, ts.UILanguageFile);
+
+	// 明示されていない場合
 	if (result == FALSE) {
-		NONCLIENTMETRICSA ncm = {sizeof ncm};
-		result = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);
-		if (result == TRUE) {
-			logfont = ncm.lfMessageFont;
+		// ガイドラインに沿った設定を行う
+		// https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa511282.aspx
+		if (IsWindowsVistaOrLater()) {
+			// Windows Vista以降 Segoe UI
+			strcpy(logfont.lfFaceName, "Segoe UI");
+			logfont.lfCharSet = 0;
+			logfont.lfHeight = -9;
+			logfont.lfWidth = 0;
+		} else if (IsWindows2000OrLater()) {
+			// Windows®XP および Windows 2000 をターゲットとする場合は、
+			// 8 ポイント MS Shell Dlg 2 擬似フォントを使用します。
+			// このフォントは Tahoma にマッピングされます。
+			strcpy(logfont.lfFaceName, "MS Shell Dlg 2");
+			logfont.lfCharSet = 0;
+			logfont.lfHeight = -8;
+			logfont.lfWidth = 0;
+		} else {
+			// 以前のバージョンをターゲットとする場合は
+			// 8 ポイント MS Shell Dlg 擬似フォントを使用します
+			// MS Sans Serif にそれぞれマッピングされます
+			strcpy(logfont.lfFaceName, "MS Shell Dlg");
+			logfont.lfCharSet = 0;
+			logfont.lfHeight = -8;
+			logfont.lfWidth = 0;
 		}
+		result = TRUE;
 	}
-	if (result == FALSE) {
-		result = GetI18nLogfont("Tera Term", "DLG_TAHOMA_FONT", &logfont, 72, ts.UILanguageFile);
-		if (result == FALSE) {
-			result = GetI18nLogfont("Tera Term", "DLG_SYSTEM_FONT", &logfont, 72, ts.UILanguageFile);
-		}
-	}
 
-#if 0
-	TTSetDlgFont(L"MS Shell Dlg2", 8, 128);
-	TTSetDlgFont(L"MS Shell Dlg", 8, 128);
-	TTSetDlgFont(L"Yu Gothic UI",12,128);	// windows 10
-	TTSetDlgFont(L"Meiryo UI",12,128);		// Windows 7,8
-	TTSetDlgFont(L"\x83\x81\x83C\x83\x8A\x83I",10,128);
-	TTSetDlgFont(L"MS UI Gothic",10,128);
-	TTSetDlgFont(L"\x82l\x82r \x82o\x83S\x83V\x83b\x83N",12,128);
-	TTSetDlgFont(L"Segoe UI",10,128);
-#endif
-
 	if (result) {
 		TTSetDlgFont(logfont.lfFaceName, logfont.lfHeight, logfont.lfCharSet);
 	} else {
@@ -279,9 +287,9 @@
 
 		if (m_pMainWnd->m_hAccel != NULL) {
 			if (!MetaKey(ts.MetaKey)) {
-				// matakey\x82\xAA\x89\x9F\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2
+				// matakeyが押されていない
 				if (TranslateAccelerator(m_pMainWnd->m_hWnd , m_pMainWnd->m_hAccel, &msg)) {
-					// \x83A\x83N\x83Z\x83\x89\x83\x8C\x81[\x83^\x81[\x83L\x81[\x82\xF0\x8F\x88\x97\x9D\x82\xB5\x82\xBD
+					// アクセラレーターキーを処理した
 					message_processed = true;
 				}
 			}
@@ -293,16 +301,16 @@
 		}
 
 		while (!PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) {
-			// \x83\x81\x83b\x83Z\x81[\x83W\x82\xAA\x82Ȃ\xA2
+			// メッセージがない
 			if (!OnIdle(lCount)) {
-				// idle\x95s\x97v
-				if (SleepTick < 500) {	// \x8Dő\xE5 501ms\x96\xA2\x96\x9E
+				// idle不要
+				if (SleepTick < 500) {	// 最大 501ms未満
 					SleepTick += 2;
 				}
 				lCount = 0;
 				Sleep(SleepTick);
 			} else {
-				// \x97vidle
+				// 要idle
 				SleepTick = 0;
 				lCount++;
 			}


Ttssh2-commit メーリングリストの案内