我在Window注册表中设置了链接到SimSun的字体。
当我将该字体应用于Richedit控件时,它具有以下行为:
这是屏幕截图:
字体是:
在这种情况下,如何强制窗口选择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控件发送带有EM_SETCHARFORMAT
标志的 SCF_ASSOCIATEFONT
message来设置字符表示的默认字体。
如文档中所述,这涉及用所需字体的特征以及与所需字符表示的语言环境相对应的LCID填充 CHARFORMAT2
structure。
另请参阅:How to Use Font Binding in Rich Edit Controls
Windows 8引入“Microsoft YaHei”字体作为简体中文脚本的默认UI字体,这是looks like to me。我认为(但不确定)SimSun曾经是此脚本的默认字体,因此如果您在某些系统而不是其他系统上看到此行为,则可以对此进行解释。
关于winapi - 如何用东亚文本将Win32 RichEdit强制回退到SimSun?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34784110/