WP开发笔记-Font Family的应用

windows phone的默认字体是Segoe WP(Segoe UI), 但是这个字体包含的字符非常少, 在WP7里, 只有几十KB, 虽然在WP8增加了很多字符, 但是还是很难满足开发的应用.

开发过程中, 如果需要显示一些特殊字符, 类似于表情, 颜文字等, 如果直接使用Segoe字体, 或者系统自带的字体, 会不能正常显示, 都显示成了口口. 比如: ಥ_ಥ ಠ_ರೃ 这些.

示例代码:

<TextBlock TextWrapping="Wrap" Text="你好世界(゚∀゚)ಥ_ಥಠ_ರ" />
截图:


解决办法:

嵌入自定义字体.

在visual studio中, 添加一个ttf字体, 并将生成操作改成: 内容

代码:

<TextBlock
  FontFamily="/FontTest;component/Fonts/Nirmala.ttf#Nirmala UI"
  Text="你好世界(゚∀゚)ಥ_ಥಠ_ರ" />
注意, FontFamily必须是带组件名的完整路径.(好像有时候也不用是完整路径..试一试吧..

或者, 使用Blind:

1. 选择控件, 查看属性, 选择一个字体, 然后勾选"嵌入":

Blend生成的代码:

<TextBlock TextWrapping="Wrap" Text="你好世界(゚∀゚)ಥ_ಥಠ_ರ"
  FontFamily="/FontTest;component/Fonts/Fonts.zip#Nirmala UI" />

还有更优雅的写法: 定义一个FontFamily资源, 把字体放进去, 然后需要的时候, 直接设置一下就可以了.

<!--应用程序资源-->
    <Application.Resources>
        <!--<FontFamily x:Key="FontFamily">
            Fonts/Nirmala.ttf#Nirmala UI,            
            Fonts/SegoeWP.ttf#Segoe WP
        </FontFamily>-->
        <FontFamily x:Key="FontFamily">
            /FontTest;component/Fonts/Fonts.zip#Segoe WP,
            /FontTest;component/Fonts/Fonts.zip#Nirmala UI            
        </FontFamily>
    </Application.Resources>
第一种是VS的写法, 第二种是Blend的写法.

使用方式:

<TextBox Text="ಥ_ಥ" FontFamily="{StaticResource FontFamily}" />
或者直接定义一个Style:
<ScrollViewer.Resources>
  <Style TargetType="TextBlock">
    <Setter Property="FontFamily" Value="{StaticResource FontFamily}" />
  </Style>
</ScrollViewer.Resources>


说明和注意事项:

0. WP8不支持雅黑字体, 默认只有等线字体. 如果遇到文字变成口口的情况, 可以先搜索一下这个字符的unicode码, 然后使用字符映射查找其所在的unicode区间, 看看是不是存在于你的字体中. 推荐使用Code2000或者Arial unicode的字体, 基本包含了所有的unicode字符, 但是文件体积也比较大. 而且Code2000的中文字体很难看..所以最好是放在最后面.

1. 好像font family的路径必须用完整路径, 不然不管用;

2. font family bu不支持复杂控件的继承. 比如, textbox, button等. 必须手动重新定义一遍;

3. 字体格式只能是ttf格式;

4. Blend生成的字体, 编译类型是"资源", 会生成zip的压缩包, 嵌入到应用的dll里,

5. 安排好字体的使用顺序. 比如, 把Segoe放在最前, 把Code2000放在最后.

********************************************

在这里下载示例代码>> https://github.com/george674834080/WPFontTest

********************************************

参考链接:

0. Embedding Fonts

1. Define the FontFamily as a resource in Windows Phone

2. Windows Phone 8: supports Native Unicode (Malayalam)?

3. Windows Phone 的字体和语言配置支持

4. Windows Phone 的文本和字体

5. International fonts

转载于:https://my.oschina.net/wower/blog/145905

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值