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

Winapi API CreateFont中使用的默认字体高度是多少?它如何选择字体?,winapi,fonts,Winapi,Fonts,我修补了一些代码以使其能够识别DPI font=CreateFont(0,0,0,0,0,0,0,0,0,0,0,0,0,固定音高,固定音高,文本(“固定系统”) 变成 font=CreateFont([某些缩放值]、0、0、0、0、0、0、0、0、0、0、0、0、固定音高、固定音高、固定音高、文本(“固定系统”) 如果高度=0(第一个参数),我不理解这种行为 据MS 0 字体映射器在搜索匹配项时使用默认高度值 默认高度值是多少? 我有一位韩国客户抱怨,应用程序中的文本在100%缩放时,在旧代码

我修补了一些代码以使其能够识别DPI

font=CreateFont(0,0,0,0,0,0,0,0,0,0,0,0,0,固定音高,固定音高,文本(“固定系统”)

变成

font=CreateFont([某些缩放值]、0、0、0、0、0、0、0、0、0、0、0、0、固定音高、固定音高、固定音高、文本(“固定系统”)

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

据MS

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

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

映射器使用不同的字体。

它看起来像您。字体高度通过以下公式计算
nHeight=-MulDiv(PointSize,GetDeviceCaps(hDC,LOGPIXELSY),72)

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

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

fontStruct.lfHeight=0-MulDiv(高度,GetWindowDpi(窗口),72)


GetWindowDpi
是一个包装器,用于为windows 10调用
GetDpiForWindow
,或为windows 8.1调用
GetDpiForMonitor
,或为windows 7使用相同的旧东西
GetDeviceCaps(hDC,LOGPIXELSY)

可能取决于字体。它实际上取决于字体。因此,当你想拥有稳定的用户体验时,你需要自己定义字体高度。我想这更像是一个平台问题,而不是编码问题——我有代码来获得合适的高度(很像你的例子)但它产生的东西比我们的韩国用户以前在我们将高度指定为0时要小得多。请用户提供韩国字体名称并进行检查,默认值取决于系统字体,可以通过接收您未设置自己字体的DC。