Silverlight 1.0 中文字显示解决方案
2007-11-01 15:12:47 来源:msdn中国 奚江华
Step 3:建立 Downloader 下载程式
请在 TextBlockDownloaderODTTF.xaml.js 程式中建立 Downloader 相关程式:
TextBlockDownloaderODTTF.xaml.js
| 以下是引用片段: var delegate1; var delegate2; // Loaded 事件的事件处理常式 function handleLoad(sender, eventArgs) { // 取得Silverlight Plugin的参考。 var slPlugin = sender.getHost(); // 建立Downloader 物件 var downloader = slPlugin.createObject("downloader"); // 建立DownloadProgressChanged 与Completed 事件委派。 delegate1 = downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged); delegate2 = downloader.addEventListener("completed", onCompleted); // 初始化下载要求 downloader.open("GET", "Fonts/EmbededChinese.zip"); // 开始传送下载 downloader.send(); } // Completed 事件处理常式 function onCompleted(sender, eventArgs) { // 取消DownloadProgressChanged 事件与其事件处理常式的委派关係 sender.removeEventListener("downloadProgressChanged", delegate1); // 取消Completed 事件与其事件处理常式的委派关係。 sender.removeEventListener("completed", delegate2); var textblock = sender.findName("myTextBlock"); textblock.setFontSource(sender); textblock.TextWrapping="Wrap"; textblock.fontFamily="Microsoft JhengHei"; // 将Downloader 物件设定成null sender = null; } // 负责更新进度列 function onDownloadProgressChanged(sender, eventArgs) { var progressText = sender.findName("progressText"); var progressRectangle = sender.findName("progressRectangle"); // 计算下载的百分比 var percentage = Math.floor(sender.downloadProgress * 100); // 更新进度列的Rectangle 与TextBlock 物件 progressText.text = percentage + "%"; progressRectangle.width = percentage * 2; } |
程式说明:
正黑体字型的英文名称为“Microsoft JhengHei”,在程式中指定正黑体时必须使用英文名称而非中文名称。完成后请执行 TextBlockDownloaderODTTF.html 程式,执行画面如下图。
图 8 TextBlock 显示部分嵌入 ODTTF 字型档
警告:
ODTTF 档的名称不可以任意做更改,否则便无法作用。
若要使用到的中文字都必须事先出现在 ODTTF 档之中,不可以临时使用未曾事先输入的中文字
ODTTF 字型档除了事先製作外,也可以动态产生,请参考另一位微软专家黄忠诚之专栏文章“Silverlight 完全中文解决方案”,网址如下:
http://www.microsoft.com/taiwan/msdn/columns/huang_jhong_cheng/Silverlight_cht_solutions.htm





文章评论
共有 0 位网友发表了评论 查看完整内容