none
FontFamily中的中文字体是英文名,能改成中文的吗? RRS feed

  • 问题

  • 原先以为是Language的问题,但是当我把Language修改成中文后,FontFamily中的中文字体样式仍然是(Simsun)宋体,KaiTi(楷体)..
    2011年5月30日 10:29

答案

  • 这个不能改,这个是由字体文件决定的,你在Windows中双击字体文件,你可以看到FontName属性,这个就是FontFamily的名字:

    不过在XAML中,Font文件的名字和里面的FontName都是适用的,看下图:

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 MaJiXiang 2011年6月1日 0:55
    2011年5月30日 17:42
    版主
  • 我们可以通过遍历这个集合 Fonts.SystemFontFamilies 里面的每一格FontFamily对象的 FamilyNames 属性找到她的中文名字。
    比如:
       XmlLanguage enus = XmlLanguage.GetLanguage("en-us");
       XmlLanguage zhcn = XmlLanguage.GetLanguage("zh-cn");
       string fontname = "";
       foreach (FontFamily fontfamily in Fonts.SystemFontFamilies)
       {
        if (fontfamily.FamilyNames.ContainsKey(enus))
        {
         fontfamily.FamilyNames.TryGetValue(enus, out fontname);
         list.Items.Add(fontname);
        }
        if (fontfamily.FamilyNames.ContainsKey(zhcn))
        {
         fontfamily.FamilyNames.TryGetValue(zhcn, out fontname);
         list.Items.Add(fontname);
        }
       }
    

     

    并不是所有的字体都有中文名字的,所以你需要的是 先判断是否这个字体含有中文语言环境的名字,然后取出来。

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月31日 9:09
    版主

全部回复

  • 这个不能改,这个是由字体文件决定的,你在Windows中双击字体文件,你可以看到FontName属性,这个就是FontFamily的名字:

    不过在XAML中,Font文件的名字和里面的FontName都是适用的,看下图:

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 MaJiXiang 2011年6月1日 0:55
    2011年5月30日 17:42
    版主
  • 我发现WinForm的就能显示中文的,

    然后我就调用 System.Drawing.Text.InstalledFontCollection ofjfont = new System.Drawing.Text.InstalledFontCollection();

    WinForm的这个类,

    在遍历到控件里 就能让WPF呈现中文的字库了。

     



    2011年5月31日 1:08
  • 我们可以通过遍历这个集合 Fonts.SystemFontFamilies 里面的每一格FontFamily对象的 FamilyNames 属性找到她的中文名字。
    比如:
       XmlLanguage enus = XmlLanguage.GetLanguage("en-us");
       XmlLanguage zhcn = XmlLanguage.GetLanguage("zh-cn");
       string fontname = "";
       foreach (FontFamily fontfamily in Fonts.SystemFontFamilies)
       {
        if (fontfamily.FamilyNames.ContainsKey(enus))
        {
         fontfamily.FamilyNames.TryGetValue(enus, out fontname);
         list.Items.Add(fontname);
        }
        if (fontfamily.FamilyNames.ContainsKey(zhcn))
        {
         fontfamily.FamilyNames.TryGetValue(zhcn, out fontname);
         list.Items.Add(fontname);
        }
       }
    

     

    并不是所有的字体都有中文名字的,所以你需要的是 先判断是否这个字体含有中文语言环境的名字,然后取出来。

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月31日 9:09
    版主