gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:30:07 26 4
gpt4 key购买 nike

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

  • 首先,它显示 SimSun - ok
  • 当我添加不是 CKJ unicode 的文本,然后在 CKJ 中添加更多文本时,选择的字体窗口是 Microsoft Ya Hei 而不是 SimSun

  • 这是屏幕截图:

    enter image description here

    字体是:
  • 《阿哥》:SimSun
  • “◎”:Segoe UI 符号
  • "[āgē] đại ca"Arial
  • “对兄长的称呼。”微软雅黑

  • 在这种情况下,我如何强制 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 控件发送 EM_SETCHARFORMAT message 来设置字符表示的默认字体。与 SCF_ASSOCIATEFONT旗帜。

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

    另见:How to Use Font Binding in Rich Edit Controls

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

    关于winapi - 如何使用东亚文本强制 Win32 RichEdit 回退到 SimSun?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784110/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com