文档章节

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

© 著作权归作者所有

共有 人打赏支持
喔喔兒
粉丝 26
博文 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
《Head first HTML与CSS 第二版》读书笔记 第八章 文字样式

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

一万
2016/07/31
45
0
PHP学习笔记6:面向对象的PHP

读《PHP和MySQL Web开发》笔记合集: http://my.oschina.net/bluefly/blog/478580 1、面向对象和类 在面向对象的程序中,对象是一个被保存数据和操作这些数据的操作方法的唯一、可标识的集合...

slyso
2015/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二十分钟教你如何将区块链应用与函数计算相结合

前言 本篇文章适合对区块链应用感兴趣或是想要通过函数计算服务进一步开发区块链应用的新人。本文将结合阿里云区块链服务、阿里云函数计算服务、阿里云日志服务 以及社区应用 Marbles,手把手...

阿里云官方博客
5分钟前
0
0
Double数相加后结果不准确

在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十...

嘴角轻扬30
13分钟前
0
0
去除移动端点击效果

移动端点击时,会有一个类似active的短暂背景淡出效果,去除该效果可使用 -webkit-tap-highlight-color: rgba(255, 0, 0, 0);

originDu
14分钟前
0
0
腾讯云与MariaDB 基金会签署战略合作,共建全球开源生态圈

本文由云+社区发表 腾讯云日前与MariaDB基金会正式签署战略合作协议,2019年,腾讯云将继续以白金会员身份为基金会的发展提供强有力的资源支持,与MariaDB全球用户和开发者一道,共建开放共赢...

腾讯云加社区
19分钟前
1
0
Kotlin的SAM(Single Abstract Method)

今天有人在群里问kotlin支持SAM的问题,其实kotlin不支持SAM,因为人家支持FP(function programing) package reactinterface Test { fun print()}class TestInterface(var...

SuShine
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部