【问题标题】:Issue with IDWriteFont::GetInformationalStrings(...) on Windows 7 (Japanese system locale)Windows 7 上的 IDWriteFont::GetInformationalStrings(...) 问题(日语系统区域设置)
【发布时间】:2019-01-30 01:15:18
【问题描述】:

我正在使用 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 上对相同的字体工作正常(英语语言环境)。

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

谢谢。

【问题讨论】:

  • 我也有同样的问题。你找到解决办法了吗?
  • @edi 添加了答案。
  • 谢谢@newuser

标签: locale directwrite


【解决方案1】:

我向 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)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多