先贴代码、后贴图,相信不需要说太多。此文只能解决静态文本显示问题,至于动态文本,看完这篇文章,再加上自己的摸索,相信你能想出来。当然如有不明白可以和我交流。同时说明我也是初学者,学习时间按天计算。

 

MainPage.xaml
<UserControl x:Class="Hongcing.Silverlight.Font.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<!--不能直接使用“宋体”、“黑体”等中文字体名称,否则无效。-->
<TextBox Text="洪星的博客-Aa1-默认字体" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Bb2-微软雅黑" FontFamily="Fonts/Fonts.zip#Microsoft YaHei" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Cc3-黑体" FontFamily="SimHei" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Dd4-宋体" FontFamily="SimSun" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Ee5-新宋体" FontFamily="NSimSun" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Ff6-仿宋" FontFamily="Fonts/Fonts.zip#FangSong" FontSize="36" Margin="10" />
<TextBox Text="洪星的博客-Gg7-楷体" FontFamily="Fonts/Fonts.zip#KaiTi" FontSize="36" Margin="10" />
</StackPanel>
</UserControl>

 

 Silverlight 3 字体测试,在 Windows XP 中微软雅黑也能直接显示,仿宋、楷体也能显示。

 http://www.hongcing.com/Tool/Silverlight3Font

 

项目文件关于字体的一段内容
<ItemGroup>
<BlendEmbeddedFont Include="Fonts\simsun.ttc">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
</ItemGroup>
<ItemGroup>
<BlendEmbeddedFont Include="Fonts\simfang.ttf">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
</ItemGroup>
<ItemGroup>
<BlendEmbeddedFont Include="Fonts\simhei.ttf">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
</ItemGroup>
<ItemGroup>
<BlendEmbeddedFont Include="Fonts\simkai.ttf">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
</ItemGroup>
<ItemGroup>
<BlendEmbeddedFont Include="Fonts\msyh.ttf">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
<BlendEmbeddedFont Include="Fonts\msyhbd.ttf">
<IsSystemFont>True</IsSystemFont>
<All>False</All>
<AutoFill>True</AutoFill>
<Characters>
</Characters>
<Uppercase>False</Uppercase>
<Lowercase>False</Lowercase>
<Numbers>False</Numbers>
<Punctuation>False</Punctuation>
</BlendEmbeddedFont>
</ItemGroup>

 

在 Microsoft Expression Blend 3 中的字体管理器选择需要嵌入的字体,一般不要对中文字体选择所有字形,否则 XAP 文件会很大。(选择客户端可能不支持的字体,例如 Window XP 默认不支持微软雅黑)

Silverlight 3 中“宋体”等中文字体的使用

 

字体的子集被打包到程序集资源中

Silverlight 3 中“宋体”等中文字体的使用

 

程序集资源中的字体子集(就是打包在上面的 fonts/fonts.zip),是不是比较小阿,还是 ZIP 压缩的,XAML 使用的字体名也在这里可以看到。(这里顺便表扬一下 7Z,确实比较牛 B)

Silverlight 3 中“宋体”等中文字体的使用

相关文章: