解决Flex 4中,自定义字体时Alert或其它mx UI组件无法显示中文的问题

本以为要放弃Flex了 结果项目需要又要回到Flex,为了界面好看使用了自定义字体,结果报错 warning: incompatible embedded font 'WRYH' specified for mx.controls::Alert (Alert36) . This component requires that the embedded font be declared with embedAsCFF=false.

找了很多资料,都没解决我的问题, 最后通过 某个E国人的博文中找了问题所在,同时参考了Adobe 关于CFF的说明之后才恍然大雾

Flex 4.x 中  mx  与spark 是有很大的区别

因此spark中用了自定义字体后,不能用于mx中,因此需要将embedAsCFF设置为false;

所以为了解决这个问题,需要将一个字体申明两次(内存加倍)

@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace ml "com.maiyoule.exam.layout.*";


@font-face{
	fontFamily:"WRYH";
	src:url("../fonts/msyh.ttf");
	embedAsCFF: true;
}
@font-face{
	fontFamily:"WRYH_CLOSE"; /* <== 重新声明一个别名  */
	src:url("../fonts/msyh.ttf");
	embedAsCFF: false;  /* <===设置为False 用于mx组件 */
}

s|Application{
	fontFamily:"WRYH";
}

mx|Alert{
	fontFamily:"WRYH_CLOSE"; /* <==设置新申明的别名 */
}



到此问题解决。

你可能感兴趣的:(Flex,自定义字体,embedAsCFF)