Flex字体渲染差异从4.1到4.5

时间:2011-04-11 19:25:38

标签: flex flex4

我目前正在将应用从Flex 4.1升级到4.5

我们注意到,当小尺寸使用时,Arial字体在两个版本之间的呈现方式不同。

这是一个简单的应用示例:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
        @font-face { 
            src: url("/assets/fonts/ARIAL.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
        }
        @font-face { 
            src: url("/assets/fonts/ARIALBD.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
            font-weight: bold;
        }
        global
        {
            font-family: arial;
        }
    </fx:Style>
    <s:Label text="Hello world" fontWeight="bold" x="20" y="20"  />
</s:Application>

当针对2个不同的sdks运行时,这是我们得到的字体渲染图像:

Example of font issues

请注意,在4.5中,字体看起来有点压扁。

原因是什么,我们如何解决?

2 个答案:

答案 0 :(得分:3)

我最好的猜测是,与the changes that were made相关的是支持手持设备上的字体。要修复它,您可能需要稍微使用样式表设置。

  

CSS媒体查询
  您现在可以在样式表中使用@media规则   根据设备过滤CSS规则   DPI分类。那里有两个   您可以过滤的属性   目前,os-platform和   应用程序的DPI。这是一个例子   过滤它们以设置按钮字体   例如(来自Adobe的预发行版   文档):

@media (os-platform: "Android") and (application-dpi: 240) {
s|Button {
     fontSize: 10;
}

答案 1 :(得分:1)

暂时修复此问题只需在flex-config.xml

上指定SWF版本10即可
look for <swf-version>11</swf-version> and make that a 10

(the "target-player" tag remains as 10.2.0)

此配置允许您使用10.2新API但我想它会错过硬件优化(可能没有StageVideo ...警告:我不确定并且还没有测试过。我唯一做的就是检查10.2特定方法是否存在,如“requestSoftKeyboard”)

我想这个问题与新的“亚像素文本渲染”有关.Adobe在10.2版本中推广 OR 也许新播放器只是以不同的方式渲染文本。

顺便说一下,这个问题非常难看,小字体变得模糊,中等大小的字体明显被压扁了!

任何真实修复,允许我们定位SWF 11,请告诉我们。