使用winapi启用ClearType字体

问题描述 投票:0回答:1

我正在尝试在vile编辑器GUI模式“winvile”中将ClearType添加到字体中。我不熟悉代码。

我搜索了所有LOGFONT结构,并在ntwinio.cw32cmd.c找到了一些

我找不到任何其他地方与LOGFONT所以我只是尝试添加CLEARTYPE_QUALITYdocs)结构初始化。结束于:

diff --git a/ntwinio.c b/ntwinio.c
index 4b73176..c3a9871 100644
--- a/ntwinio.c
+++ b/ntwinio.c
@@ -848,6 +848,7 @@ GetMyFont(VIDEO_ATTR attr)
        LOGFONT logfont = vile_logfont;
        logfont.lfItalic = (BYTE) ((attr & VAITAL) != 0);
        logfont.lfUnderline = (BYTE) ((attr & VAUL) != 0);
+       logfont.lfQuality = CLEARTYPE_QUALITY;
        if (attr & VABOLD)
            logfont.lfWeight = FW_SEMIBOLD;
        if ((MyFonts[n].font = CreateFontIndirect(&logfont)) != 0) {
@@ -1218,6 +1219,7 @@ set_font(void)

     vile_logfont.lfPitchAndFamily = FIXED_PITCH | FF_MODERN;
     vile_logfont.lfCharSet = ANSI_CHARSET;
+    vile_logfont.lfQuality = CLEARTYPE_QUALITY;
     TRACE(("LOGFONT Facename:%s\n", vile_logfont.lfFaceName));

     if (ChooseFont(&choose)) {
@@ -1346,6 +1348,7 @@ ntwinio_font_frm_str(const char *fontstr,
        /* Build up LOGFONT data structure. */
        memset(&logfont, 0, sizeof(logfont));
        logfont.lfWeight = (str_rslts.bold) ? FW_BOLD : FW_NORMAL;
+       logfont.lfQuality = CLEARTYPE_QUALITY;
        logfont.lfHeight = -MulDiv(str_rslts.size,
                                   GetDeviceCaps(hdc, LOGPIXELSY),
                                   72);
diff --git a/w32cmd.c b/w32cmd.c
index 50276af..e9223ad 100644
--- a/w32cmd.c
+++ b/w32cmd.c
@@ -1626,6 +1626,7 @@ w32_init_logfont(LOGFONT * logfont, FONTSTR_OPTIONS * str_rslts, int height)

     logfont->lfWeight = (str_rslts->bold) ? FW_BOLD : FW_NORMAL;
     logfont->lfHeight = height;
+    logfont->lfQuality = CLEARTYPE_QUALITY;

     if (str_rslts->italic)
        logfont->lfItalic = TRUE;

与cmd.exe相比,这似乎不起作用,字体仍然看起来很糟糕:

enter image description here

我也尝试过其他质量设置,它们对我来说都是一样的。我在winapi调用中遗漏了什么,或者可能会误解ClearType是如何工作的?

我正在Windows 10上使用Visual Studio 2010 Express构建。

c visual-studio winapi visual-c++ cleartype
1个回答
0
投票

不是ClearType,而是兼容winvile.exe的DPI设置。感谢IInspectable指针。

© www.soinside.com 2019 - 2024. All rights reserved.