微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何知道silverlight中的本地字体名称

在silverlight 4中,我需要知道机器中的所有字体名称.
使用….

var typefaces = System.Windows.Media.Fonts.SystemTypefaces;

        foreach (System.Windows.Media.Typeface face in typefaces)
        {

            System.Windows.Media.GlyphTypeface a;
            face.TryGetGlyphTypeface(out a);
            FontSource fs = new FontSource(a);

           var b = a.FontFileName;

我只能得到FontFileName,但实际上我们需要字体名来显示它….

怎么能得到这样的信息?

谢谢大家!

解决方法

为Silverlight生成查找表:

WPF具有执行此操作的属性,但Silverlight没有.

如果查看调试器中的System.Windows.Media.Typeface对象,则字体不包含除2个版本号和FontUri(读取文件名)之外的任何内容.

您可以通过在WPF下运行代码生成查找字典,以提取所有文件名和匹配的字体名,但是您需要在安装了要覆盖的每种字体的计算机上执行此操作.

下面的WPF代码提取了这样一个表(这个表包含所有语言的字体名称,所以你可能想要为它添加一个过滤器,例如“en-us”):

foreach (var font in System.Windows.Media.Fonts.SystemTypefaces)
    {
        System.Windows.Media.GlyphTypeface glyphTypeface;
        font.TryGetGlyphTypeface(out glyphTypeface);
        var dictionary = font.FaceNames;
        foreach (var language in dictionary.Keys)
        {
            Debug.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\"",glyphTypeface.FontUri.Segments[glyphTypeface.FontUri.Segments.Count()-1],language,dictionary[language]));
        }
    }

部分输出如下所示,可以轻松地格式化为表格或在Silverlight中作为字典加载:

"ARIAL.TTF","ca-es","normal"
"ARIAL.TTF","cs-cz","obyčejné"
"ARIAL.TTF","da-dk","normal"
"ARIAL.TTF","de-de","Standard"
"ARIAL.TTF","el-gr","Κανονικά"
"ARIAL.TTF","en-us","Regular"
"ARIAL.TTF","es-es","es-mx","eu-es","Arrunta"
"ARIAL.TTF","fi-fi","normaali"
"ARIAL.TTF","fr-ca","fr-fr","hu-hu","normál"
"ARIAL.TTF","it-it","normale"
"ARIAL.TTF","nb-no","nl-nl","Standaard"
"ARIAL.TTF","pl-pl","normalny"
"ARIAL.TTF","pt-br","pt-pt","ru-ru","Обычный"
"ARIAL.TTF","sk-sk","normálne"
"ARIAL.TTF","sl-si","Navadno"
"ARIAL.TTF","sv-se","tr-tr","vi-vn","thường"
"ARIALN.TTF","Narrow"
"ARIALI.TTF","Cursiva"
"ARIALI.TTF","kurzíva"
"ARIALI.TTF","kursiv"
"ARIALI.TTF","Kursiv"
"ARIALI.TTF","Πλάγια"
"ARIALI.TTF","Italic"
"ARIALI.TTF","Etzana"
"ARIALI.TTF","Kursivoitu"
"ARIALI.TTF","Italique"
"ARIALI.TTF","Dőlt"
"ARIALI.TTF","Corsivo"
"ARIALI.TTF","Cursief"
"ARIALI.TTF","Kursywa"
"ARIALI.TTF","Itálico"
"ARIALI.TTF","Курсив"
"ARIALI.TTF","Kurzíva"
"ARIALI.TTF","Poševno"
"ARIALI.TTF","İtalik"
"ARIALI.TTF","nghiêng"
"ARIALNI.TTF","Narrow"
"ARIALBD.TTF","Negreta"
"ARIALBD.TTF","tučné"
"ARIALBD.TTF","fed"
"ARIALBD.TTF","Fett"
"ARIALBD.TTF","Έντονα"
"ARIALBD.TTF","Bold"
"ARIALBD.TTF","Negrita"
"ARIALBD.TTF","Lodia"
"ARIALBD.TTF","Lihavoitu"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐