3

我正在使用 IDWriteFont::GetInformationalStrings(...) 在 Windows 7(日语语言环境 ja-JP)上获取字体的全名,这是问题所在:

当我将 DWRITE_INFORMATIONAL_STRING_FULL_NAME 或 DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME 作为 DWRITE_INFORMATIONAL_STRING_ID 传递时,我得到 exists=false 并且没有返回 IDWriteLocalizedStrings(对于系统上的任何字体)。

但是,相应的条目存在于字体中的名称表中,并且 IDWriteFont::GetInformationalStrings(...) 调用对于 Win 7 上的相同字体(en-us 语言环境)工作正常。

//works when system locale is en-us; exists=true
//does not work when system locale is ja-JP; exists=false; pFontNames=NULL
hr = pFont->GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_FULL_NAME, &pFontNames, &exists);

谁能告诉我这是否是 DirectWrite 的问题。

谢谢。

4

1 回答 1

2

我向微软提出了一个错误,这是他们提供的解决方案:

[症状] 在某些机器上使用 DWRITE_INFORMATIONAL_STRING_FULL_NAME 或 DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME 调用 IDWriteFont::GetInformationalStrings() 返回存在 == FALSE。

[原因] Windows 8 中引入了 DWRITE_INFORMATIONAL_STRING_FULL_NAME 和 DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME。为此,您需要在Windows 7 上安装适用于 Windows 7的平台更新 ( https://support.microsoft.com/en-us/kb/2670838 )系统。

[解决] 安装平台更新解决了这个问题。

于 2019-01-29T17:15:18.000 回答