Silverlight 1.0 中文字显示解决方案

2007-11-01 15:12:47  来源:msdn中国 奚江华

WebjxCom提示:虽然 Silverlight 本身具备极为优越的 2D 向量文字、绘图与影音能力,但是若缺乏中文字显示的支援能力,对亚洲国家的使用者、程式设计人员乃至于企业端都会造成很大的困扰,故本文将针对如何让 Silverlight 可以正确 显示中文字型 而提供数种解决方案,然而这几种中文

  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 程式,执行画面如下图。

Silverlight 1.0 中文字显示解决方案_网页教学网webjx.com转载 

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

  警告:

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

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

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

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

更多