汚いですがとりあえずハードコードで;;
macOS, UWP, Android ももしかすると日本語ダメだった場合もうちょっと丁寧に書き直します;;
以下のコードは MIT ライセンスで自由に利用可能です。
CanvasExtensions
に以下のメソッドを追加
private static SKTypeface GetTypeface(string label) { SKTypeface typeface; if (CultureInfo.CurrentUICulture.Name == "ja-JP") typeface = SKFontManager.Default.MatchCharacter("HiraginoSans", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-CN") typeface = SKFontManager.Default.MatchCharacter("PingFangSC", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-HK") typeface = SKFontManager.Default.MatchCharacter("PingFangHK", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-TW") typeface = SKFontManager.Default.MatchCharacter("PingFangTC", label[0]); else typeface = SKFontManager.Default.MatchCharacter(".SFUIText-Regular", label[0]); return typeface; }
UWP 版は次の通り。
private static SKTypeface GetTypeface(string label) { SKTypeface typeface; if (CultureInfo.CurrentUICulture.Name == "ja-JP") typeface = SKFontManager.Default.MatchCharacter("Yu Gothic UI", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-CN") typeface = SKFontManager.Default.MatchCharacter("MS YaHei UI", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-HK") typeface = SKFontManager.Default.MatchCharacter("MS JhengHei UI", label[0]); else if (CultureInfo.CurrentUICulture.Name == "zh-TW") typeface = SKFontManager.Default.MatchCharacter("MS JhengHei UI", label[0]); else typeface = SKFontManager.Default.MatchCharacter("Segoe UI", label[0]); return typeface; }
Label 描画部分にフォントをロードするように変更。
using (var paint = new SKPaint() { TextSize = textSize, IsAntialias = true, Color = labelColor, IsStroke = false, TextAlign = horizontalAlignment, Typeface = GetTypeface(label), })