/// <summary>選択可能な全フォント一覧を取得します</summary> private void GetSystemFontName() { //todo:起動時に一度呼ぶだけで良いので、設定ファイルの読み込み箇所とかに移動させるべき // 日本語フォントを日本語で表示したいので、現在動いている環境の言語を取得する //todo:WinwowのLanguageに、このlanguageを指定する必要がある System.Windows.Markup.XmlLanguage language = System.Windows.Markup.XmlLanguage.GetLanguage (System.Threading.Thread.CurrentThread.CurrentCulture.Name); // 使える全言語を取得 var fonts = Fonts.SystemFontFamilies.Select (i => new FontInfo() { FontFamily = i, FontName = i.Source }); // IEnumerableのままだと要素の更新ができないので、一旦ローカルで受け取る FontInfo[] fontsArr = fonts.ToArray(); // このままだと日本語で表示してくれないので、日本語のものはこちらで取得して入れ込み、表示してやる foreach (var fontInfo in fontsArr) { foreach (var familyName in fontInfo.FontFamily.FamilyNames) { if (familyName.Key == language && familyName.Value != null) { fontInfo.FontName = familyName.Value; break; } } } FontList = fontsArr.ToList();//todo:ToArrayしているので型を配列にする }
private static CultureInfo GetCulture(DependencyObject element) { object obj2 = element.GetValue(FrameworkElement.LanguageProperty); CultureInfo specificCulture = null; if (obj2 != null) { System.Windows.Markup.XmlLanguage language = (System.Windows.Markup.XmlLanguage)obj2; try { specificCulture = language.GetSpecificCulture(); } catch (InvalidOperationException) { } } return(specificCulture); }
public GlyphRun(GlyphTypeface glyphTypeface, int bidiLevel, bool isSideways, double renderingEmSize, IList <ushort> glyphIndices, System.Windows.Point baselineOrigin, IList <double> advanceWidths, IList <System.Windows.Point> glyphOffsets, IList <char> characters, string deviceFontName, IList <ushort> clusterMap, IList <bool> caretStops, System.Windows.Markup.XmlLanguage language) { }