Windows 7上的IDWriteFont :: GetInformationalStrings(...)问题(日语系统区域设置)

时间:2015-05-01 05:37:42

标签: locale directwrite

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

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

但是,相应的条目存在于字体名称Table中,IDWriteFont :: GetInformationalStrings(...)调用适用于Win 7(en-us locale)上的相同字体。

//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的问题。

感谢。

1 个答案:

答案 0 :(得分:1)

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

[症状] 在某些机器上使用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)。

[解决方案] 安装平台更新解决了该问题。