如何使用东亚文本强制 Win32 RichEdit 回退到 SimSun?

How to force a Win32 RichEdit fallback to SimSun with East Asian text?

我在 Window 注册表中为我的字体设置了链接到 SimSun 的字体。
当我将该字体应用于我的 richedit 控件时,它具有以下行为:

截图如下:

字体是:

在这种情况下如何强制window选择SimSun而不是Microsft Ya Hei?

编辑
感谢@Cody Gray 的完美回答。这是有效的代码:

CHARFORMAT2 cf2;

memset(&cf2, 0, sizeof(CHARFORMAT2));
cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_FACE | CFM_SIZE | CFM_CHARSET | CFM_LCID;
cf2.lcid = 0x0804;
cf2.yHeight = 280;
cf2.bCharSet = CHINESEBIG5_CHARSET;
wcscpy(cf2.szFaceName, L"SimSun");
SendMessage(rtbhWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_ASSOCIATEFONT, (LPARAM)&cf2);

cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_FACE | CFM_SIZE | CFM_CHARSET | CFM_LCID;
cf2.lcid = 0x0409;
cf2.yHeight = 220;
cf2.bCharSet = ANSI_CHARSET;
wcscpy(cf2.szFaceName, L"Segoe UI");
SendMessage(rtbhWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_ASSOCIATEFONT2, (LPARAM)&cf2);

您可以通过向 RichEdit 控件发送带有 SCF_ASSOCIATEFONT 标志的 EM_SETCHARFORMAT message 来设置字符表示的默认字体。

这涉及到 CHARFORMAT2 structure 填写所需字体的特征以及与所需字符表示的区域设置相对应的 LCID,如文档中所述。

另请参阅:How to Use Font Binding in Rich Edit Controls

looks like to me Windows 8 引入了 "Microsoft YaHei" 字体作为简体中文脚本的默认 UI 字体。我认为(但我不确定)SimSun 曾经是此脚本的默认字体,所以如果您在某些系统上看到此行为而不是其他系统,这将解释它。