我们知道silverlight只提供了一下几种字体,

当我们需要显示中文字时,虽然在blend2里是正常的,但是浏览时还出现方框 。 比如当我们输入“博客园”,blend2显示如下。

xaml文件内容如下:

<Canvas
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="179" Height="147"
    Background="White"
    xmlns:UntitledProject4="clr-namespace:UntitledProject4;assembly=ClientBin/UntitledProject4.dll"
    x:Class="UntitledProject4.Page;assembly=ClientBin/UntitledProject4.dll"
    x:Name="Page"
    >
    <TextBlock Width="147" Height="66" Canvas.Left="24" Canvas.Top="60" TextWrapping="Wrap" Foreground="#FFD8712A" Text="博客园" FontSize="48"/>
</Canvas>

但在浏览器里会显示成这样的。

那么我们看如何显示中文呢?

有三种方法:分别是文字对象(Glyphs )、绘图对象(Path)与图片对象(Image)三种,这三种区别如下:

方法一: 使用文字对象Glyphs  

实例:(1)拷贝中文字到工程(比如simHei.ttf)

(2) 在xaml里加入如下代码(注意FontUri属性):

(3)在浏览器中浏览,我们可以看到Glyphs部分显示出了正确的字体,TextBlock未显示:

这样似乎解决了,可是,Glyphs 显示中文字时,虽然以异步的方式从 Web服务器下载完整的字库,但是,我们知道中文字库一般都好几兆,同时下载整个字库也会有版权的法律问题。那么我们如何减少网络流量呢,就是我们可以只下载我们需要显示的字体,步骤如下:

a. 在word2007里写下需要显示的字体,比如“博客园”

b.选择打印,选择micorsoft xps document writer, 保存为simHei.zip(默认是xps,其实它就是一个压缩包).

c. 解压缩,找到documents\1\resources\Fonts\FF697615-FEE6-422B-A2CD-8D419E91303E.odttf,改名为mySimHei.ttf,拷贝到工程目录.

改动fontUri="mySimHei.ttf"

<Glyphs
          FontUri = "mySimHei.ttf"
          FontRenderingEmSize = "100"
          UnicodeString       = "博客园"
          Fill                = "Yellow"
          OriginX             = "0"
          OriginY             = "100">
    </Glyphs>

d. 浏览,得到如下图,我们看到也显示正确

我们现在对比一下两个文件的大小,一个是746KB, 一个是9809KB,性能是显而易见的。

现在我们再做一个实验:

把要显示的字改为"博客园博客满园"

<Glyphs
          FontUri = "mySimHei.ttf"
          FontRenderingEmSize = "50"
          UnicodeString       = "博客园博客满园"
          Fill                = "Red"
          OriginX             = "0"
          OriginY             = "100">
    </Glyphs>

测试看到“满”字没有显示,原因很简单,就是我们没有在word里把要显示的“满”字打印出来。

(未完待续...)

祝大家编程愉快

转载于:https://www.cnblogs.com/cnblogsfans/archive/2008/02/18/1072285.html

SilverLight显示中文字(一)相关推荐

  1. html合并单元格怎么把字竖着,电脑excel单元格中文字如何在合并单元格后竖排显示...

    电脑excel单元格中文字如何在合并单元格后竖排显示 excel软件是我们现在经常使用的数据处理工具之一,接下来小编就教大家怎样在软件中设置合并单元格之后竖排显示文字. 具体如下: 1. 首先我们需要 ...

  2. 在Word2010文档中设置和显示隐藏文字

    用户在使用Word2010编辑文档的过程中,常常需要将Word文档中的特定文字设置为隐藏文字,以实现保密效果.本篇教程介绍在Word2010文档中设置和显示隐藏文字的方法. 1.设置隐藏文字 用户可以 ...

  3. revit中在三维视图下显示房间文字和“房间集成”

    revit中在三维视图下显示房间文字的"房间集成" 相信大家都会遇见在模型浏览的时候不知道自己所处的空间是什么位置问题,Revit中,如果建筑模型已经创建好"房间&quo ...

  4. Arduino Uno 驱动OLED进阶 显示中英文字

    之前已经学会如何接线,实现示例显示 这次就开始一些实际的应用 本示例还是使用IIC的接线方法,请参照第一篇 Arduino 驱动OLED屏幕IIC接线方式简单入门 实现文字的显示 这代码上实现在指定的 ...

  5. cocos2dx 字体外发光_《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字...

    在Cocos2d-x中要显示文字就需要用到Label控件.在3.x版本的Cocos2d中,舍弃了之前版本所使用的LabelTTF.LabelAtlas.LabelBMFont 3个用于显示文字的类,而 ...

  6. Windows系统中Word文档中文字后面的空格下的下划线不显示的解决办法

       笔者最近在做课程设计,需要写Word文档,在写文档的时候遇到了一堆bug,现在课程设计肝完了,终于有时间梳理梳理这些bug然后发布出来做个备忘录.    第一个bug是Windows系统中Wor ...

  7. 修改MFC中菜单显示的文字

    当需要在程序中动态修改菜单中显示的文字时,比如有的程序界面提供中英文显示切换的功能,可以通过以下方式进行. CMenu *cMenu = new CMenu(); cMenu->LoadMenu ...

  8. 中望cad文字显示问号怎么办_CAD中文字显示为问号怎样解决?

    CAD 中文字显示为问号怎样解决? 现在设计单位的交流越来越多,有单位内部的,也有单位之前 的交流,我们收到一张图纸打开后经常会因为没有字体而导致有些 字显示为?号,遇到此类问题如何解决呢 ? 要很好 ...

  9. 为什么文本框里的字只显示一半_Word文档中文字显示不全的解决方法有哪些

    在Word 文档中,如果把段落中的文字字号设置大一点的字体,可能会出现文字显示不全的情况;表格中也可能出现这种情况,文字显示一半或都显示不出来,是什么原因?以下是学习啦小编为您带来的关于Word文档中 ...

最新文章

  1. ubuntu 10.04源 更新源列表
  2. 一元多项式计算器 :加、减、乘运算【完整代码+运行截图+实验说明】
  3. win7,ubuntu双系统——重装win7后如何恢复ubuntu引导
  4. 计算机科学与技术学术报告,Dennis K. Peters学术报告
  5. CRM 702和CRM 712的区别
  6. Spring Boot和Thymeleaf:重新加载模板和静态资源,而无需重新启动应用程序
  7. 雷军的金山云D轮获3亿美元!投后估值达19亿美金
  8. cdr怎么做文字路径_整理128张图片,告诉你文字少的PPT应该怎么做?
  9. 使用fastjson工具类json字符串和对象之间的转换
  10. 移动国家号(MCC)
  11. LeetCode:二进制求和【67】
  12. android 图片任意拖拉,android 拖拉图片 Gallery 用SimpleAdater实现
  13. GhostScript 沙箱绕过命令执行漏洞
  14. Javaweb重要知识点总结(六)常见的前端框架
  15. 神州微型计算机,神舟笔记本序列号查维修-怎样根据神舟笔记本电脑的序列号查询...
  16. UFS系列三:UFS数据包UPIU
  17. python制作圣诞贺卡_用代码做圣诞节贺卡
  18. vue print 解决打印每页都有表头
  19. mind思维导图软件
  20. Spring boot Mybatis-Plus数据库单测实战(三种方式)

热门文章

  1. 华为云welink考试试题_华为内部开启WeLink项目,华为云是这样考虑的-通信/网络-与非网...
  2. 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
  3. php无限分类原理,php 递归无限级分类原理和实现代码
  4. python中列表的sort方法_python中列表的sort方法使用详解
  5. Apache Flink 零基础入门(十六)Flink DataStream transformation
  6. 新工具上线!只需2步助你轻松学爬虫!
  7. 你以为文言编程只是闹着玩?三个月后,人家IDE、教程、包管理器都有了
  8. 说说每月至少一次的那点事,文末有彩蛋!
  9. mysql数据记录更新版本问题_MySQL版本升级遇到的问题小结
  10. java动态规划算阶乘_动态规划算法