gpt4 book ai didi

c - 使用 winapi 启用 ClearType 字体

转载 作者:行者123 更新时间:2023-11-30 16:37:09 26 4
gpt4 key购买 nike

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

我搜索了所有 LOGFONT 结构并在 ntwinio.c 中找到了一些结构和 w32cmd.c

我找不到任何其他带有 LOGFONT 的地方,所以我只是尝试添加 CLEARTYPE_QUALITY ( docs ) 来初始化结构。最终结果是:

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 进行构建。

最佳答案

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

关于c - 使用 winapi 启用 ClearType 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com