很好玩的是看到了Silverlight目前在国内受到了很多开发者的热情拥护,“自由、创新、研究、探索”先生在Google Groups里面创建了一个讨论组,开张不到一个月,就有176名成员参与。而Silverlight中文社区也很快就开张了,当然,到现在为止,我还不知道站长是哪位,如果是您,请您在Comments里面说一声。嘿嘿,我还得向你收小道消息费用,估计你之所以抢注到这个名字,和我这个贴子还是有一些关系的。

8. Silverlight为什么不支持中文?有没有别的途径可以解决这个问题呢?

问题描述:我相信凡是准备采用Silverlight技术或者正在使用Silverlight构建应用程序的开发者,很多人已经开始怨声载道了,为什么Silverlight不支持中文(严格来说,是中日韩等字体)?其实原因很简单,这是一个法律范畴的问题,因为每个字库都有其版权信息,而且大部分字库是不允许转移使用的(比如常见的将Vista中的微软雅黑字体复制到XP或者手机上使用应该是非法的)。

解决方案一:请参见http://blog.joycode.com/joy/archive/2007/04/06/100553.aspx中的第二项解答,即使用Glyph来代替TextBlock;但这种解决方案存在很多问题,即Glyph本身不支持换行等操作,意味着你只能把它当作标签字体来使用,而无法用其来显示正文。另外,每次浏览这个页面时,都需要下载完整的字体文件,请注意,仅微软雅黑字体(不含粗体部分)就有15M左右大小。虽然现在使用宽带的人员越来越多,但仍然是一个非常大的负担。

解决方案二:使用ODTTF文件,所谓的ODTTF文件,其实是XPS所带的嵌入式字体文件,这种字体会自动从原字体文件中提取所需要的字样,而不是简单的拷贝原字体的所有字样。操作方法如下:

  • 首先使用Word或者写字板应用程序,使用您中意的字体输入你的Silverlight中所需要的文字;
  • 然后在Word或者写字板当中选择“打印”功能,打印机选择Microsoft XPS Document Writer(在您安装了.NET 3.0 Framework)后会自动增加;
  • XPS Document Writer本身是一个打印到文件功能,在其文件选择框中选择文件路径,并且给出相应的文件名;
  • 打印完成后,在文件浏览器中找到完成的XPS文件,并且将其后缀名由".xps"修改为".zip";(其实微软的好多文件格式目前都使用了ZIP格式,比如Office 2007中的DOCX、PPTX、XLSX等等,都可以将名字改为ZIP后缀名,并且使用WinZip或者其它文件压缩程序打开)
  • 直接找到这个压缩文件包中的“\documents\1\resources\fonts”中的文件,并且将其提取出来,这个文件名大部分为一个GUID加一个ODTTF后缀名;
  • 将提取出来的ODTTF文件再次使用ZIP格式打包成myfonts.zip文件,并且放在您的Silverlight应用程序的根目录中;
  • 假设您的XAML中的TextBlock的名字为textBlock1,那么在其后端所跟的JS文件中使用Downloader控件进行修改,大体如下:

function onLoaded(sender, eventArgs)
{
  var control = sender.getHost();

var downloader = control.createObject("downloader");

downloader.addEventListener("Completed", "onCompleted");

downloader.open("GET", "myfonts.zip", true);//注意此处的myfonts.zip,根据您的实际情况进行更改

downloader.send();

}
function onCompleted(sender, eventArgs)
{
var myTextBlock = sender.findName("textBlock1"); //此处是TextBlock的名称

myTextBlock.setFontSource(sender);

myTextBlock.fontFamily = "Microsoft Yahei" ;//注意此处的字体名称,我这儿是使用的“微软雅黑”字体,您可以根据实际情况使用

myTextBlock.text = myTextBlock.text;
}

总结一下,这样的解决方案在目前应该是最有效的解决中文显示问题的,当然,在您使用部分字体时,您必须要注意一下相关的法律问题,是否取得了所使用的字体文件的跨平台授权。(该解决方案对于动态显示文本仍然无效)。

解决方案三:Silverlight产品团队目前正在致力于该问题,解决此问题目前主要的困难并不是技术问题,而主要是法律上的一些issues.

我已经为解决方案二编写了一个小型的Demo,如果您感兴趣,可以在留言中留下您的邮件,我可以发送给您。(由于本人工作繁忙,无法全部发送,所以我只会发送给前五位留下邮件地址的朋友,后来的朋友可以给这五位朋友写邮件索要)。

参考信息

http://blogs.msdn.com/webnext/archive/2007/05/25/silverlight-font-embedding.aspx

http://wpf-e.spaces.live.com/blog/cns!2B248D261D0E0035!122.entry


WPF/E开发基础答疑(1)

2007-04-06 by 开心就好

很多朋友可能已经开始尝试使用WPF/E来在网络上制作一些动画,在其中可能遇到了一些问题。尤其是当前公开版本还是CTP,所以有一些东西在互联 …

read more

实时监测机场的起降情况

2007-03-29 by 开心就好

经常坐飞机,有时候就想能不能有一个系统能够让我了解我所乘坐的飞机的具体情况,以及机场的准确位置。当然,目前我 …

read more

互联网上的WPF实例

2007-01-31 by 开心就好

Windows Vista已经正式发布了,其实这也意味着.NET 3.0也正式发布了。只不过可能很多开发人员并没有真正意味到此种含义,现在已经到了使用.NET 3.0开发的时代了。我这儿还 …

read more

关于“单击此处以激活控件”

2007-01-19 by 开心就好

自从使用了Windows Vista上的IE7来浏览网站的时候(其实从IE6 SP2开始),经常会发现一些视频或者Flash网站出现了“单击此处以激活控件”的现象。现象就是在某些视频播放控件(Windows …

read more

将进酒,杯莫停

2006-11-25 by 开心就好

闲来无事,在CSDN上闲逛了一下,看到孟岩、韩磊两位老兄所写的《这一天终于来了》以及《“这一天终于来了”》,还有孙辉先生发表的《WPF,一次洗牌...》。顿 …

read more

Sidebar Gadget开发教程(4)

2006-11-21 by 开心就好

今天继续讲Sidebar Gadget的开发。此篇将是本教程的最后一篇,因为了解了Gadget的大体情况后,接下来就需要大家自己进行练习了。只有勤于练习,而不是安 …

read more

Sidebar Gadget开发教程(3)

2006-11-04 by 开心就好

话说从前,书接上回。开心已经向大家提出了一个需求,并且给出解决技术难题的思路,不知道有多少位朋友已经开始尝试 …

read more

Sidebar Gadget开发教程(2)

2006-11-01 by 开心就好

由于近期在努力学习Sidebar Gadget开发技术,并且也与中国汽车网合作做了一个Sidebar Gadget,所以耽误了一些时间,但同时,也通过这个机会加深了 …

read more

WPF, WPF/E释疑

2006-09-21 by 开心就好

什么是WPF,经常看博客堂以及博客园的朋友,我相信眼睛都快磨出茧子来了。WPF嘛,就是现在称之为Windows Presentation Foundation,小名叫Avalon的那个东东,为了更好 …

read more

SQL Server 2005之绝地任务

2005-11-09 by 开心就好

在浏览台湾微软主页时,不经意发现下面这个非常有意思的东东,共享一下,点击此处查看: 查看。另外,最新消息是:Windows Workflow Foundation已经发布面向Visual Studio …

read more

ASP.NET 2.0 Tips(1):跨页提交

2005-08-03 by 开心就好

在ASP.NET 1.x的时候,很多朋友可能需要进行跨页提交的处理,也就是从页面A能够提交到页面B,甚至不同的Control其目标处理页面也各不相同。尤其是从ASP/JSP/PHP转过来的开发人员,可能更有这种需求 …

read more

Visual Studio Express Edition Beta 2 中文版正式发布

2005-04-29 by 开心就好

今天,微软正式发布了Visual Studio Express Edition Beta 2中文版。目前发布的版本如下:

1. Visual Basic Express Edtion Beta 2 中文版

安装文件.http://download.microsoft.com/download/b/e/6/be660b65-3cdd-40fb-81cb-55144964e7cb/vbsetup.exe
镜 …

read more

MSF Agile Beta 汉化教程(二)

2005-02-18 by 开心就好

概览

那么什么是MSF Agile呢?MSF Agile就是一套为团队项目提供的流程指南,主要包括角色定义、行为定义、工作流程以及交付产品等概念。

每种软件过程方法理论都会包含 …

read more

MSF Agile Beta 汉化教程(一)

2005-02-18 by 开心就好

注:为了方便大家尽快了解如何利用Visual Studio Team System在自己的团队当中展开开发工作,本人现在开始进行MSF Agile Beta版文档的汉化工作,原始文档可以在<font face="Verdana" color="#3f3d3d" size="2">http://lab.msdn.microsoft.com/teamsystem …

read more

Visual Studio Team System 1204 CTP Extensibility Kit & MSF Agile 文档

2005-01-28 by 开心就好

目前开心的主要兴趣是在Visual Studio Team System当中,因为在一个软件开发团队当中,最重要的已经不只是开发工具本身了,而是包括需求 …

read more

关于Team System的进一步消息

2005-01-20 by 开心就好

Team System已经发布了DEC CTP版本,相信很多人已经下载并且在自己的团队当中做了简单应用。由于该CTP版本的VSTS当中仍然是使用了基于不同Framework构建的SQL Server 2005以及Visual Studio 2005专业版,所以需要装在两台机器上,而且Data …

read more

Smart Document开发

2004-12-28 by 开心就好

.

介绍智能文档

[Office XP]{lang="EN-US"}当中引入了一个新的概念,即智能标签,如果大家经常使用[Word]{lang="EN-US"}的话,可以发现,从[Word XP]{lang="EN-US"}开始 …

read more

CLR is everywhere

2004-12-09 by 开心就好

.NET在全世界的影响程序越来越高,InfoWorld所作的一个统计,编程时优先选择的API框架,Microsoft .NET占53%,而J2EE目前占47%(这是一个多选题)。仔细想一下,.NET概念提出来不超过四年,真正有实际产品也就是两年多一些 …

read more

Visual Studio Team System课程资料下载

2004-10-22 by 开心就好

由于昨天神州网讯的网络出现故障,VSTS课程准备在下周一上午十时进行重讲。为了避免届时网络出现问题,特提供以下资料(PPT+Video)供大家下载。

由于微软只在今年 …

read more

Team System Web Cast

2004-10-21 by 开心就好

MSDN Portal(http://www.microsoft.com/china/msdn) 提供了所有面向.NET开发人员的资料, 今年下半年,我们还率先提供了网络讲座形式为各位提供在线技术讲座,以便让全 …

read more

Smart Client In NASA

2004-10-13 by 开心就好

NASA,美国国家航空航天局,在其Word wind应用中使用了Smart Client技术,如果你对该应用的Smart Client特性好奇的话,可以阅读下面的文章及其评论:http://weblogs.asp.net/ssadasivuni/archive/2004/10/12/241179.aspx。当 …

read more

感冒之旅

2004-10-10 by 开心就好

国庆过后,一不小心感冒了,吃了三天药,现在稍微好一些,不过嗓子似乎有些哑了。不知道会不会影响今天下午开始的感冒 …

read more

微软Office技术专家俱乐部成立启事

2004-09-11 by 开心就好

相信在网络上已经有了很多Office相关技术的俱乐部及网站,但所有资料均只能从公开渠道获得。我的部门(信息管理系统专业解决方案部,IW SSU)准备成 …

read more

开心北京、广州告别MVP巡回演唱会即将举办

2004-09-02 by 开心就好

昨天上午,经过半个小时的面试,开心终于正式进入了Microsoft,抛掉了v-的帽子,同时,也彻底断了MVP之梦。今天下午,接上级通知,将分别于广州 …

read more

JoyReader For SmartPhone预览

2004-08-12 by 开心就好

看到mvm开发的财务管理软件,十分羡慕,可惜俺不是有钱人,而且一向对自己的财务粗心大意,所以只能动动代码的脑筋了。

正好前段时间,我的Moto手机寿终正寝了 …

read more

我的第一个Mono习作

2004-07-02 by 开心就好

虽然自己装了一个Redhat 9.0的虚机,可是安装Mono那些繁琐的步骤还是把我吓怕了,最终我的虚机上只装了一个金山的WPS For linux,测试了一把文字功能就删掉了。

还好,卢 …

read more

团队日历Web部件及MSN Messenger机器人

2004-06-02 by 开心就好

在使用Outlook/Exchange的时候,如果你使用日历来安排自己的日程,那么在通过Exchange就能够得到你自己的忙/闲信息,从而合理的安排时间,比如你的同事可能会根据你 …

read more

SharePoint Portal Server 2003的资料下载

2004-04-29 by 开心就好

下载地址: http://blog.joycode.com/sps.zip

说明:

  • 本压缩包包括一个Word文档以及一个Web Part的Package。
  • Word文档是讲述如何向外网发布SPS站点的内容,本文档不具备任何官方性质,即“以‘现状’提供且没有任何担保也没 …
read more

InfoPath,你不需要吗?

2004-04-28 by 开心就好

Microsoft Office以及Windows应该是微软的两个最大的盈利产品,所以它们的一举一动,最能牵扯广大最终用户的心。

Office System 2003的推出,让我们感受到其受为一个System的强大协作功能 …

read more

Microsoft SharePoint Portal Server做外网门户

2004-04-28 by 开心就好

SPS真的是一个非常好非常好的东西,不是吗?我相信N多人跟我一个想法。里面的很多概念都给微软的其它产品很多启发。比如Web Part的概念,就在Whidbey里面有了体现,当然,Whidbey更进一步,至少比SPS的Web Part有了可视化设计界面。在我看到的SPS Web …

read more

谈谈工作流引擎及面向服务编程

2004-04-27 by 开心就好

相信很多人对于BizTalk Server 2004(简称BTS)都有一种误解,认为这是微软出品的工作流引擎。包括我在内,从没有进入MS以来,一直在围绕着 …

read more

Whidbey抢先预览(视频)

2004-04-01 by 开心就好

.

为庆祝本人即将到来的二十八岁大寿(又要写二十八岁祭了),在征得微软中国开发合作部张炜先生的同意后,将其录制的 …

read more

Visual Studio 2005 Community Technology Preview (For MVP)

2004-03-26 by 开心就好

.

如果您是Whidbey的Fans,如果您是MVP,那么您现在可以使用MSDN宇宙版订阅权下载Visual Studio 2005 Community Technology Preview 了。

孙展波在上一个随笔中曾经提到过Whidbey将会被推迟到2005年发行,当时引用的是路透 …

read more

新浪短信Web Service

2004-03-23 by 开心就好

.上一篇文章中,提到了在我的流程监控系统中应用了新浪发送短信的Web Service,得到了大家的响应。很多人对此非常感兴趣 …

read more

工作流监控及短信子系统

2004-03-22 by 开心就好

.

周六接到任务,协助我们公司的几位同事开发一个POC(Proof of Concept)项目,给我们的开发时间是四天,使用BizTalk 04 & .NET来开发。而我们的对手已 …

read more

SharePoint Portal Server & Office Research Service

2004-03-15 by 开心就好

.自从得知Kaneboy兄编写了一个基于SPS的信息检索服务之后,就在大功完成的时候,看了一眼SPS的SDK,却发现这东西其实本来就已经有了。看来我又犯 …

read more

Whidbey & WhiteHorse & 博客堂清理帐号

2004-03-12 by 开心就好

.看到大家这两天都对SOA以及Whidbey非常感兴趣,讨论得热火朝天,其实,在Visual Studio.NET的下一版(Whidbey,或者是Visual Studio.NET 2005)当中,提供了一个SOA的设计工具,即WhiteHorse。

在PDC版本的Whidbey当中,应该没有提供WhiteHorse组件 …

read more

如何通过需要验证的邮件服务器发送邮件?

2004-01-14 by 开心就好
[![.](/Admin/resources/header_logo.gif){border="0"}](http://www.systemwebmail.com/faq/3.8.aspx){target="_blank"} 在.NET Framework 推出以后,大家一直在为这个问题而伤脑筋。的确,在1.0的时候,我们是不能实现此 …
read more

感冒了

2003-12-16 by 开心就好

今天是上班第二天,结果却感冒了,十分郁闷。明天还要去体检,不知道会出现什么危险症状不?太恼人了!

从今天开始,要对InfoPath …

read more

千元大奖,你有兴趣吗?

2003-12-06 by 开心就好

悬赏寻求问题解决方案,所有博客堂网友及访客均有权夺奖吐舌笑脸

博客堂以后会定期推出一些技术问题,寻找解决方案,而且奖 …

read more

一起来打太极(4)

2003-12-01 by 开心就好
![.](/static/joy/414/t_taiji.jpg) 遇到麻烦了! 嗯,让我先来整理一下思路,如何讲清楚这个问题。好的,就让我们这样来说吧,首先我们创建两个Project …
read more

一起来打太极(3)

2003-11-26 by 开心就好
![.](/static/joy/414/t_taiji.jpg)又到了我们的太极时间。这几天开心被关了禁闭了,不仅要入住公司安排的饭店,而且每天晚饭也不能出去吃 …
read more

一起来打太极(2)

2003-11-20 by 开心就好
![.](/static/joy/414/r_taiji.jpg){border="0"}``{=html}完``{=html}了,被锁住了,明天开始卷铺盖到该公司自己的饭店里面入住,要住一个月,一直跟到这个项目结束 …
read more

一起来打太极(1)

2003-11-19 by 开心就好

.

<font size="10"></font>斯林总会带来一些惊喜,在排版上一直比较前卫,相当于技术博客中的木子美吧咧嘴笑脸,(知道我为什么把他比喻为木 …

read more

熟悉Office System 2003及Biztalk的人站出来

2003-11-17 by 开心就好

.

现在有一个工作,使用Office System 2003及Biztalk进行开发工作流的项目,要求对微软的各种产品比较熟悉的人参与。

不过与我上次说的那个招聘一样,仍然需要在这 …

read more

冲刺,冲刺,最后冲刺!

2003-11-17 by 开心就好

.

今天完成了两个微软的项目,不过却有些后发先至的味道,呵呵。

本来在上周的时候就接了那个Windows Application项目,可是却一直没有完工 …

read more

一夜未睡

2003-11-14 by 开心就好

.

终于在四天内结束了这一阶段的开发。

九月份在微软做了一个Biztalk 2004的Demo,这几天又是在做Biztalk的Demo。说实话,虽然原来改编过一本Biztalk的书籍,但 …

read more

欢迎大家继续基于Office System 2003开发

2003-11-13 by 开心就好

.

看了Moslem的新闻检索系统,感觉他做得实在太棒了,我相信这儿大部分人都是这样的感觉吧?

而且最主要的是他提供了很多这 …

read more

在.NET中使用Internet Explorer Control的一个Bug

2003-11-06 by 开心就好

.

这两天在做一个项目,主要是在Windows Form中嵌一个IE,访问一个网站,基于某些理由,不允许用户下载、上传及打印。

关于禁止下载,我查看了一 …

read more