1. 出典:
VCU10 プロジェクト。Noto Sans フォントを使用しています。これは本当に美しいです。ただ、win7で検証すると表示される韓国語が文字化けしてしまい、かなり頭が痛いです。
インターフェースは図のように表示されます:
Dude、Noto Sans、CJK フォントが利用可能で、名前が示すように、中国語、日本語、韓国語をサポートしており、サイズが大きいため、サポートされていません。解決策として適切です。
2. Font.GdiCharSet 属性
現状では解決策はありませんか?プログラムは複数の言語をサポートする必要があります。
まずはフォント自体のプロパティを確認してみましょう。検証の結果、韓国語は文字セット GdiCharSet を変更することで正常に表示できることがわかりました。
情報を調べると、フォント GdiCharSet は次の値を持つことができます:
Character set |
value |
---|---|
ANSI |
0 |
デフォルト |
1 |
シンボル |
2 |
SHIFTJIS適用 |
128 |
韓国語 |
129 |
韓国語 |
129 |
GB2312 |
134 |
CHINESEBIG5は |
136 |
OEM |
255 に適しています |
韓国語 |
130 |
こんにちはアラビア語 |
177 |
アラビア語 |
178 |
ギリシャ語 |
161 |
トルコ語 |
162 |
ベトナム語 |
163 |
タイ語 |
222 |
東ヨーロッパ |
238 |
ロシア |
204 |
MAC |
77 |
Baltic |
186 |
3. 置き換える
プロジェクトのインターフェースにはフォントが設定されており、それらをバッチで処理するコードを 1 つずつ記述するのはもちろん不便です。 各フォームまたは各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 フォントで韓国語をサポートするチュートリアルの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。