我目前正在将应用从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运行时,这是我们得到的字体渲染图像:
请注意,在4.5中,字体看起来有点压扁。
原因是什么,我们如何解决?
答案 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,请告诉我们。