我正在使用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的问题。
谢谢。
我提出了一个错误Microsoft这是他们提供的解决方案:
[症状]在某些机器上,使用 DWRITE_INFORMATIONAL_STRING_FULL_NAME 或 DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME 返回调用 IDWriteFont::GetInformationalStrings() 存在 == FALSE。
[原因]DWRITE_INFORMATIONAL_STRING_FULL_NAME和DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME是在Windows 8中引入的。为此,您需要在 Windows 7 系统上安装 Windows 7 (https://support.microsoft.com/en-us/kb/2670838) 的平台更新。
[分辨率]安装平台更新解决了问题。