zoukankan      html  css  js  c++  java
  • c#: Noto Sans字体如何支持韩文

    1、源起:

    VCU10项目,使用了Noto Sans字体,的确漂亮。但验证在win7下,其显示韩文为乱码,颇为头痛。

    其界面显示如图:

    度娘之,得Noto Sans又有CJK字体,顾名思义,其为支持中日韩文,且其体积巨大,不宜做为方案,继续思考!

    2、Font.GdiCharSet 属性

    也是没有办法,看在目前基础上,能不能解决问题?程序多国语言需支持。

    就从字体本身属性开始检查吧,验证发现,改其字符集GdiCharSet,可正常显示韩文,解决方案有了!

    查阅资料得知,字体GdiCharSet可有如下值:

    字符集

    ANSI

    0

    DEFAULT

    1

    符号

    2

    SHIFTJIS 适用

    128

    韩语

    129

    朝鲜语

    129

    GB2312

    134

    CHINESEBIG5 适用

    136

    OEM

    255

    韩文

    130

    希伯来语

    177

    阿拉伯语

    178

    希腊语

    161

    土耳其语

    162

    越南语

    163

    泰语

    222

    EASTEUROPE

    238

    俄语

    204

    MAC

    77

    波罗的语

    186

    验证比如东欧、波罗的海等字符集,可以正常显示韩文,而不影响其默认字符集显示效果,于是,决定替换其字符集。

    3、替换

    项目界面已设定字体,且界面众多,一个一个改当然不够方便,写代码批量处理吧!

    在每个窗体,或每个UserControl中,调用一下UpdateNotoSansCharset()数,就统一替换了。

            //处理Label字体,以能在win7下,NotoSans字体能显示韩文
            public static void UpdateNotoSansCharset(Form form)
            {
                if (OSUtils.OSVersion > FriendlyOSVersion.Win7)
                    return;
    
                foreach (Control ctrl in form.Controls)
                    UpdateNotoSansCharset(ctrl);
            }
    
            public static void UpdateNotoSansCharset(ScrollableControl parent)
            {
                if (OSUtils.OSVersion > FriendlyOSVersion.Win7)
                    return;
    
                foreach (Control ctrl in parent.Controls)
                    UpdateNotoSansCharset(ctrl);
            }
    
            public static void UpdateNotoSansCharset(GControl ctrl)
            {
                if (ctrl is ScrollableControl)
                    UpdateNotoSansCharset(ctrl as ScrollableControl);
                else if (ctrl is Label)
                {
                    //CharSet采用中欧字符集
                    var font = new Font(ctrl.Font.FontFamily, ctrl.Font.Size, ctrl.Font.Style, ctrl.Font.Unit, 238);
                    ctrl.Font = font;
                }
            }

     4、效果

    OK,难题解决,非常完美:

  • 相关阅读:
    ul制作导航菜单
    HTML5+CSS (简易nav设计)
    鼠标事件-拖拽(滑块控制物体透明度变化)
    鼠标事件-拖拽5(带虚线框的拖拽)
    鼠标事件-拖拽4(捕获)
    鼠标事件-拖拽3(磁性吸附)
    鼠标事件-拖拽2(不能拖出指定对象的div)
    生成整数排列的方法
    python工具程序一、复制目录中指定扩展名的文件
    Anaconda packages list
  • 原文地址:https://www.cnblogs.com/crwy/p/7019067.html
Copyright © 2011-2022 走看看