在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] 举报,一经查实,本站将立刻删除。