繁体   English   中英

API CreateFont 中使用的默认字体高度是多少? 它如何选择字体?

[英]What is the default font height used in the API CreateFont ? How does it choose a font face?

我修补了一些代码以使其了解 DPI

font = CreateFont (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_PITCH | FF_DONTCARE, TEXT ("FixedSys"));

变成了

font = CreateFont ([some scaled value], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FIXED_PITCH | FF_DONTCARE, TEXT ("FixedSys"));

如果高度 = 0(第一个参数),我不理解行为

根据 MS

0 字体映射器在搜索匹配项时使用默认高度值。

默认高度值是多少? 我有一位韩国客户抱怨应用程序中的文本在旧代码(高度 = 0)和新代码(高度 = 14)之间以 100% 缩放比例显着缩小。 在英国操作系统上,文本显示相同。

映射器使用不同的字体。

看起来您需要此代码 字体高度由这个公式计算nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

PointSize - 是字体大小, GetDeviceCaps(hDC, LOGPIXELSY)是通过 GDI(旧东西)获取 DPI 的调用。

在我的 DPI 意识战斗中,我使用以下代码:

fontStruct.lfHeight = 0 - MulDiv( height, GetWindowDpi( window ), 72 );

GetWindowDpi是一个包装,调用GetDpiForWindow为Windows 10或GetDpiForMonitor为Windows 8.1或使用炒冷饭GetDeviceCaps(hDC, LOGPIXELSY)的Windows 7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM