文档章节

WP开发笔记-Font Family的应用

喔喔兒
 喔喔兒
发布于 2013/07/21 00:11
字数 711
阅读 323
收藏 1

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

© 著作权归作者所有

共有 人打赏支持
喔喔兒
粉丝 25
博文 64
码字总数 11003
作品 0
大连
程序员
加载中

评论(3)

erjun
erjun
我下了lz的例子,为啥有的在预览显示正常,在模拟器里面就成了 口 了呢。。。
喔喔兒
喔喔兒

引用来自“慢慢爬”的评论

好东西收藏了,多谢lz分享

多谢支持~
慢慢爬
慢慢爬
好东西收藏了,多谢lz分享
替换WordPress调用的Google前端库为360镜像的库

把 googleapis 替换成 useso 即可: sed -i s/googleapis/useso/g 另外在后台关闭Gravatar头像显示(设置-讨论-头像显示),免得拖慢页面加载速度. 要成倍提升WordPress速度,可以考虑使用PHP7,参...

eechen
2015/04/24
0
3
读书笔记之页面风格切换实例

这个demo是可运行的,html和css都比较简单,主要是js部分会稍微复杂一点。另外一定要确保引入的路径没有问题,比如我的文件是这样放的: html: style1.css style2.css:...

Anymore
2016/10/27
2
0
ios开发之字体样式设置大全

代码: backBtn.titleLabel.font = [UIFont fontWithName:@"Thonburi-Bold" size:15.0];//返回按钮 说明: Font Family 字体家族名称 Font 具体的字体样式 Font Family: American Typewriter......

biyu6
2016/04/21
41
0
Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

周末了,哲哲在旁边看《爸爸去哪》,骨头继续玩cocos2dx, 首先,如果你新加了CPP和H文件,记得修改项目目录下的proj.androidjni文件夹的Android.mk文件。 [html] view plaincopy LOCALSRCFI...

懒骨头
2013/12/09
0
0
《Head first HTML与CSS 第二版》读书笔记 第八章 文字样式

1、font-family: 每个font-family包含一组有共同特征的字体。共有五个字体系列: serif字体系列包含有衬线的字体。多用于新闻报纸的文字排版; sans-serif字体系列包含没有衬线的字体。与s...

一万
2016/07/31
45
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
27分钟前
1
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
42分钟前
4
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
3
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
1
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部