[27023] [解決!?] Re9:英語版Windows XPでミドルバーのフォントが小 | |
▽ 2005/2/26 (土) 05:17:26 ▽ fuba |
actkyo085084.adsl.ppp.infoweb.ne.jp / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) |
| cartyさん、ありがとうございます。
実は私も本職がWindowsプログラマなもので、技術的な説明は大
歓迎、大変ありがたかったです。そのおかげで一応の解決ができ
ましたのでご報告します。
まず、ミドルバーのフォントが DEFAULT_GUI_FONT で取得すると
いう情報から、正常動作の環境(日本語版WinXP) と問題の環境
(英語版WinXP + 日本語MUI)で以下のテストコードを試しました。
--
HDC screen = ::GetDC(0);
int dpiX = GetDeviceCaps(screen, LOGPIXELSX);
int dpiY = GetDeviceCaps(screen, LOGPIXELSY);
::ReleaseDC(0, screen);
LOGFONT lf;
::GetObject((HFONT)GetStockObject(DEFAUL
T_GUI_FONT),sizeof(lf),&lf);
CString strText;
strText.Format("dpiX=%d dpiY=%d\nheight=%ld,charset=%d,name=<%s>",
dpiX, dpiY, lf.lfHeight, lf.lfCharSet, lf.lfFaceName);
afxMessageBox(strText);
---
この結果、DPI は両方とも 96 と正常でしたが、フォントの結果が
異なりました。
WinXP日本語版: height=-12 charset=128 name=<MS UI Gothic>
WinXP(E)+MUI : height=-11 charset=128 name=<MS Shell Dlg>
MS Shell Dlg は実際は存在しないフォントで、実際は両者とも OS で
MS UI Gothic に置換していることが分かったので問題ないのですが、
height が違っています。height=-12 が 9pt.、height=-11 が 8pt.に
相当するので、やはりここが原因であることが分かりました。
DEFAULT_GUI_FONT と MUI の関係について色々調べた結果、MS KB に
XP Embedded の情報ではありますが、「コンポーネントの組み合わせ
方によっては、日本語表示に必要なレジストリ キーおよび値が不足
します。」という記述がありました。
http://support.microsoft.com/default.asp
x?scid=kb;ja;418877
記載のレジストリのうち、
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W
indows NT\
CurrentVersion\GRE_Initialize]
"GUIFont.Facename"="MS UI Gothic"
"GUIFont.Height"=dword:00000009
"GUIFont.CharSet"=dword:00000080
が MUI 環境には無かった上、どう見ても DEFAULT_GUI_FONT に関係
ありそうなので、この3つの値を追加して再起動しました。
すると、上記のテストコードでも日本語版WinXPと同じ結果になり、
Becky! でもミドルバーのフォントが正しいものになりました!!
OS + MUI のインストールだけで何故このような状態になってしまう
のか、どこが cartyさんの環境と違っているのか、はたまたこの解決
策が本当に正しいのかなど、分からないことだらけではありますが、
フォントについて色々知ることができましたし、何より Becky! を
これからも愛用していくことができるので嬉しい限りです。
長々とお付き合いいただきありがとうございました。m(__)m
|
|
|