Silverlight开发基础答疑(5)
2007-05-28 by 开心就好很好玩的是看到了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)
很多朋友可能已经开始尝试使用WPF/E来在网络上制作一些动画,在其中可能遇到了一些问题。尤其是当前公开版本还是CTP,所以有一些东西在互联 …
read more互联网上的WPF实例
Windows Vista已经正式发布了,其实这也意味着.NET 3.0也正式发布了。只不过可能很多开发人员并没有真正意味到此种含义,现在已经到了使用.NET 3.0开发的时代了。我这儿还 …
read more关于“单击此处以激活控件”
自从使用了Windows Vista上的IE7来浏览网站的时候(其实从IE6 SP2开始),经常会发现一些视频或者Flash网站出现了“单击此处以激活控件”的现象。现象就是在某些视频播放控件(Windows …
read more将进酒,杯莫停
闲来无事,在CSDN上闲逛了一下,看到孟岩、韩磊两位老兄所写的《这一天终于来了》以及《“这一天终于来了”》,还有孙辉先生发表的《WPF,一次洗牌...》。顿 …
read moreSidebar Gadget开发教程(4)
今天继续讲Sidebar Gadget的开发。此篇将是本教程的最后一篇,因为了解了Gadget的大体情况后,接下来就需要大家自己进行练习了。只有勤于练习,而不是安 …
read moreSidebar Gadget开发教程(3)
Sidebar Gadget开发教程(2)
WPF, WPF/E释疑
SQL Server 2005之绝地任务
ASP.NET 2.0 Tips(1):跨页提交
在ASP.NET 1.x的时候,很多朋友可能需要进行跨页提交的处理,也就是从页面A能够提交到页面B,甚至不同的Control其目标处理页面也各不相同。尤其是从ASP/JSP/PHP转过来的开发人员,可能更有这种需求 …
read moreVisual Studio Express Edition Beta 2 中文版正式发布
今天,微软正式发布了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
镜 …
MSF Agile Beta 汉化教程(二)
概览
那么什么是MSF Agile呢?MSF Agile就是一套为团队项目提供的流程指南,主要包括角色定义、行为定义、工作流程以及交付产品等概念。
每种软件过程方法理论都会包含 …
read moreMSF Agile Beta 汉化教程(一)
注:为了方便大家尽快了解如何利用Visual Studio Team System在自己的团队当中展开开发工作,本人现在开始进行MSF Agile Beta版文档的汉化工作,原始文档可以在<font face="Verdana" color="#3f3d3d" size="2">
http://lab.msdn.microsoft.com/teamsystem …
Visual Studio Team System 1204 CTP Extensibility Kit & MSF Agile 文档
目前开心的主要兴趣是在Visual Studio Team System当中,因为在一个软件开发团队当中,最重要的已经不只是开发工具本身了,而是包括需求 …
read more关于Team System的进一步消息
Team System已经发布了DEC CTP版本,相信很多人已经下载并且在自己的团队当中做了简单应用。由于该CTP版本的VSTS当中仍然是使用了基于不同Framework构建的SQL Server 2005以及Visual Studio 2005专业版,所以需要装在两台机器上,而且Data …
read moreSmart Document开发
介绍智能文档
[Office XP]{lang="EN-US"}当中引入了一个新的概念,即智能标签,如果大家经常使用[Word]{lang="EN-US"}的话,可以发现,从[Word XP]{lang="EN-US"}开始 …
read moreCLR is everywhere
Visual Studio Team System课程资料下载
Team System Web Cast
MSDN Portal(http://www.microsoft.com/china/msdn) 提供了所有面向.NET开发人员的资料, 今年下半年,我们还率先提供了网络讲座形式为各位提供在线技术讲座,以便让全 …
read moreSmart Client In NASA
NASA,美国国家航空航天局,在其Word wind应用中使用了Smart Client技术,如果你对该应用的Smart Client特性好奇的话,可以阅读下面的文章及其评论:http://weblogs.asp.net/ssadasivuni/archive/2004/10/12/241179.aspx。当 …
read more微软Office技术专家俱乐部成立启事
相信在网络上已经有了很多Office相关技术的俱乐部及网站,但所有资料均只能从公开渠道获得。我的部门(信息管理系统专业解决方案部,IW SSU)准备成 …
read more开心北京、广州告别MVP巡回演唱会即将举办
昨天上午,经过半个小时的面试,开心终于正式进入了Microsoft,抛掉了v-的帽子,同时,也彻底断了MVP之梦。今天下午,接上级通知,将分别于广州 …
read moreJoyReader For SmartPhone预览
我的第一个Mono习作
虽然自己装了一个Redhat 9.0的虚机,可是安装Mono那些繁琐的步骤还是把我吓怕了,最终我的虚机上只装了一个金山的WPS For linux,测试了一把文字功能就删掉了。
还好,卢 …
read more团队日历Web部件及MSN Messenger机器人
在使用Outlook/Exchange的时候,如果你使用日历来安排自己的日程,那么在通过Exchange就能够得到你自己的忙/闲信息,从而合理的安排时间,比如你的同事可能会根据你 …
read moreSharePoint Portal Server 2003的资料下载
下载地址: http://blog.joycode.com/sps.zip
说明:
- 本压缩包包括一个Word文档以及一个Web Part的Package。
- Word文档是讲述如何向外网发布SPS站点的内容,本文档不具备任何官方性质,即“以‘现状’提供且没有任何担保也没 …
InfoPath,你不需要吗?
Microsoft SharePoint Portal Server做外网门户
谈谈工作流引擎及面向服务编程
Whidbey抢先预览(视频)
Visual Studio 2005 Community Technology Preview (For MVP)
如果您是Whidbey的Fans,如果您是MVP,那么您现在可以使用MSDN宇宙版订阅权下载Visual Studio 2005 Community Technology Preview 了。
孙展波在上一个随笔中曾经提到过Whidbey将会被推迟到2005年发行,当时引用的是路透 …
read more新浪短信Web Service
工作流监控及短信子系统
周六接到任务,协助我们公司的几位同事开发一个POC(Proof of Concept)项目,给我们的开发时间是四天,使用BizTalk 04 & .NET来开发。而我们的对手已 …
read moreSharePoint Portal Server & Office Research Service
自从得知Kaneboy兄编写了一个基于SPS的信息检索服务之后,就在大功完成的时候,看了一眼SPS的SDK,却发现这东西其实本来就已经有了。看来我又犯 …
read moreWhidbey & WhiteHorse & 博客堂清理帐号
看到大家这两天都对SOA以及Whidbey非常感兴趣,讨论得热火朝天,其实,在Visual Studio.NET的下一版(Whidbey,或者是Visual Studio.NET 2005)当中,提供了一个SOA的设计工具,即WhiteHorse。
在PDC版本的Whidbey当中,应该没有提供WhiteHorse组件 …
read more如何通过需要验证的邮件服务器发送邮件?
一起来打太极(4)
一起来打太极(3)
一起来打太极(2)
一起来打太极(1)
<font size="10">
穆</font>
斯林总会带来一些惊喜,在排版上一直比较前卫,相当于技术博客中的木子美吧,(知道我为什么把他比喻为木 …