Flex 4.6 Spark Label无法正确显示泰语

时间:2012-07-12 11:55:26

标签: actionscript-3 flash flex unicode thai

我有一个使用itemrenderer的spark列表组件。这是一个头像(图像)和人名的列表。拉丁语和其他语言显示正确,但对于泰语,它只显示方框。请帮忙!

这是我使用的代码:

<?xml version="1.0" encoding="utf-8"?>
  <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:bd="com.bdement.imagecache.*"
    autoDrawBackground="false" width="270" height="45">
    <fx:Script>
      <![CDATA[
      override public function set data(object:Object):void {
        userName.text = "อีฟ จันทโรทัย";
      }
      ]]>
    </fx:Script>
    <s:HGroup click="onFriendClickReceived(event)" verticalAlign="middle"
      color.normal="#000000" horizontalAlign="left" width="270" height="45">
      <s:Spacer width="10"/>
      <bd:CachedImage id="userImage" cacheId="F32x32" width="32" height="32"
      left="8" verticalCenter="0"/>
      <s:Label id="userName" width="188" maxDisplayedLines="1" fontLookup="auto"
      fontFamily="Arial Unicode MS, Arial" verticalCenter="0" />
    </s:HGroup>
  </s:ItemRenderer>

1 个答案:

答案 0 :(得分:2)

您必须为您的语言定义fontFamily。获取一个支持泰语的字体,然后嵌入如下:

[Embed(source="font.ttf", mimeType="application/x-font", embedAsCFF="true", fontFamily="ThaiFontFamily")]
private var ThaiFont:Class;

然后在你的creationComplete处理程序中嵌入这样的字体:

Font.registerFont(ThaiFont);

在此之后,您可以自由地在CSS中使用fontFamily或直接在MXML中使用您的标签。像这样:

<s:Label id="userName" width="188" maxDisplayedLines="1" fontLookup="auto" fontFamily="ThaiFontFamily" verticalCenter="0" />