脚本宝典收集整理的这篇文章主要介绍了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,难题解决,非常完美:
以上就是c#中Noto Sans字体支持韩文的实例教程的详细内容,更多请关注脚本宝典其它相关文章!
以上是脚本宝典为你收集整理的c#中Noto Sans字体支持韩文的实例教程全部内容,希望文章能够帮你解决c#中Noto Sans字体支持韩文的实例教程所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。