您好,登錄后才能下訂單哦!
小編給大家分享一下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字體支持韓文的方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。