検出ClearTypeを最適化したフォント
質問
質問
があるので、チェックがあればフォントはMicrosoftの ClearTypeを最適化したフォント?
思いがけハード-コードのリストにフォント名がいるので、それらの比較的短いリストでもう少し汚い.そのフォント名と同じに関わらずWindowsのロケールと言語の設定?
背景:
パテ 見も醜いと太ClearTypeに対Consolasます。その源泉とを確認してください私はこの問題を解決し、と思いを追跡し、以下の略称)コード:
font_height = cfg.font.height;
if (font_height > 0) {
font_height =
-MulDiv(font_height, GetDeviceCaps(hdc, LOGPIXELSY), 72);
}
}
font_width = 0;
#define f(i,c,w,u) \
fonts[i] = CreateFont (font_height, font_width, 0, 0, w, FALSE, u, FALSE, \
c, OUT_DEFAULT_PRECIS, \
CLIP_DEFAULT_PRECIS, FONT_QUALITY(cfg.font_quality), \
FIXED_PITCH | FF_DONTCARE, cfg.font.name)
f(FONT_NORMAL, cfg.font.charset, fw_dontcare, FALSE);
SelectObject(hdc, fonts[FONT_NORMAL]);
GetTextMetrics(hdc, &tm);
font_height = tm.tmHeight;
font_width = tm.tmAveCharWidth;
f(FONT_BOLD, cfg.font.charset, fw_bold, FALSE);
の意図は、大胆なフォントの合うと同寸法の通常の商標または登録商標です。私はこのパテのConsolasテキストに見を言ってConsolasはなく最適化して配置が行われは特定のピクセル境界と靴べらが任意の寸法の出は悪い。
このように適切な修正が検出ClearTypeを最適化したフォントを作ってみを大胆にバージョンのフォントの使用に同じ幅と高さに初期CreateFontます。
解決
私は「次(省略)コードにそれを追跡」が、パテで確かにConsolas大胆なルックスの悪いが意味するものを、非常に従うことを確認していません。ここでは窓/ window.c( "SVNコのsvn://svn.tartarus.org/sgt/putty" 転覆で得られたリビジョン8914、2010年4月5日に)のパテソースがある。
1386 fonts[i] = CreateFont (font_height, font_width, 0, 0, w, FALSE, u, FALSE, \ 1387 c, OUT_DEFAULT_PRECIS, \ 1388 CLIP_DEFAULT_PRECIS, FONT_QUALITY(cfg.font_quality), \ 1389 FIXED_PITCH | FF_DONTCARE, cfg.font.name) 1390 1391 f(FONT_NORMAL, cfg.font.charset, fw_dontcare, FALSE); 1392 1393 SelectObject(hdc, fonts[FONT_NORMAL]); 1394 GetTextMetrics(hdc, &tm); 1395 1396 GetObject(fonts[FONT_NORMAL], sizeof(LOGFONT), &lfont); 1397 1398 if (pick_width == 0 || pick_height == 0) { 1399 font_height = tm.tmHeight; 1400 font_width = tm.tmAveCharWidth; 1401 } ... 1477 if (bold_mode == BOLD_FONT) { 1478 f(FONT_BOLD, cfg.font.charset, fw_bold, FALSE); 1479 }それは値がライン1399上で変更されている(FONT_BOLDために呼び出されたときに、
10 PT Consolasについて、font_heightとfont_widthの値が-13と0のcreateFontを(マクロFを介して)FONT_NORMALを求めたが、15 7でした、1400)。幅の値を設定すると、明示的にConsolas太字フォントとよく一致しません。 window.cがライン1477年から1479年にはライン1391太字Consolasフォントが得られる非常に良く後に来るように移動されるように変更された場合には(私はまた、他のすべての利用可能なフォントなど(宅配便、ビットストリーム、ルシーダ)をしようと、彼らは悪影響はありませんでした影響を受けた私はパテチームにこの提案を送ってきたここでの違いを示す図です。。:
ADDED ON 2011年1月16日:「バグ」はまだ存在しており、修正がまだ動作します。今window.cにおける行番号は、行1510から1512は、行1417 Kristjan後に来るように移動させなければならないということです。
ADDED ON 1月13、2012:バグはパテ(2011年12月10日にリリース)のバージョン0.62のままです。移動するにはlinenumbersは、1532年から1534年には完全にするために1439の後に来るようになりましたここで私はcygwinの中で行う手順は次のとおりです:
$ svn co svn://svn.tartarus.org/sgt/putty2
$ cd putty
$ perl mkfiles.pl
$ cd windows
$ --- edit window.c and move the 3 lines---
$ make CC=gcc-3 -f Makefile.cyg
$ --- move resulting executable files (including putty.exe) to a suitable folder
$ --- add shortcuts to the executables to Windows start menu
Kristjan
他のヒント
は必ずこれはあなたのための答えではない場合は、しかし確かフォントの幅が正確な整数ピクセル幅で作り、ClearTypeの下のTrueTypeフォントの外観の良い幅メーク固定されます。
これを実現するために、あなたは「ラウンド」にいくつかの試行錯誤を使用して、フォントの高さが必要になります。