科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Silverlight 1.0 中文字显示解决方案

Silverlight 1.0 中文字显示解决方案

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将针对如何让 Silverlight 可以正确显示中文字型而提供数种解决方案,然而这几种中文字的显示方式各有其不同的特性与优缺点.

作者:奚江华 来源:msdn中国 2007年11月20日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
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 程式,执行画面如下图。

TextBlock 显示部分嵌入 ODTTF 字型档

图 8 TextBlock 显示部分嵌入 ODTTF 字型档

  警告:

  ODTTF 档的名称不可以任意做更改,否则便无法作用。

  若要使用到的中文字都必须事先出现在 ODTTF 档之中,不可以临时使用未曾事先输入的中文字

  ODTTF 字型档除了事先製作外,也可以动态产生,请参考另一位微软专家黄忠诚之专栏文章“Silverlight 完全中文解决方案”,网址如下:

  http://www.microsoft.com/taiwan/msdn/columns/huang_jhong_cheng/Silverlight_cht_solutions.htm

  (二)Path 向量绘图物件

  将中文字型转换成 Path 向量绘图物件,其原理是将中文字转换成大量的绘图座标资讯,并且透过 Path 几何绘图物件来显示这些座标资料。但是使用这个方法有一点要特别注意,一旦将文字转换成 Path 物件之后,它就是图形,无论它是不是向量与否,它已不再是文字了,因此不能被检索查询,也不能以字串的型式存入资料库,更不可被 Search Engine 搜寻引擎所爬文检索。故倘若您的网站很在意是否能被搜寻引擎爬文检索,进而影响您的网站或商品在搜寻引擎网站可以被使用者或顾客查询到,就要特别意识到避免使用这个方法。

  然而将中文字型转换成 Path 向量绘图物件有两个简单的基本型式,第一是使用像 Expression Blend 2 这类的工具将文字转换成 Path 物件,第二个方式是撰写一个 Web Services,透过程式呼叫 Web Services 将转换后的 Path 物件回传给 Silverlight 应用程式。

中文字型转换成 Path 向量图形

图 9 中文字型转换成 Path 向量图形

  范例五 使用 Blend 2 将中文字型转换成 Path 向量绘图物件

  本范例将示范使用 Blend 2 将中文字型转换成 Path 向量绘图物件,步骤说明如下:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章