당신은 플래시가 내장 된 TTF 폰트를 다루는 방법 방법에 연결되어보고있는 효과
: 해당 글꼴을 사용하여 텍스트가 완전히 Flash Player에서 렌더링됩니다. 특히 Flash Player 8에서 9 로의 변경으로 인해 텍스트 렌더링에 대한 많은 개선이있었습니다 (포함 된 글꼴의 향상된 앤티 앨리어싱, 마지막으로 문자 수정 기능).
표시되는 렌더링 텍스트의 차이는 Flash Player 9 이상에서 더 나은 앤티 앨리어싱이 원인 일 가능성이 큽니다. OpenLaszlo SWF9 + 텍스트 및 inputtext 구성 요소는 기본값으로 flash.text.AntiAliasType.ADVANCED
설정을 사용합니다. - 나는 사람이 FP9에서 이전 스타일 렌더링을 할 거라고 생각하지 않습니다
폰트 렌더링이 가능한 고품질이어야한다 :
여기 당신이보고있는 효과를 언급 discussion in the OpenLaszlo dev mailing list입니다 . 이 버그를 해결할 다른 방법이 없습니다 ?
런타임에서 완전한 글꼴 렌더링 일관성을 얻지 못할 것입니다. 장치 글꼴을 사용할 때 이미 일관성이 없습니다. 각각 브라우저/플레이어/OS 변형이 다르며 Flash 대 DHTML도 입니다.
제가 알고있는 바로는 설정을 수정하기위한 공식 API가 없습니다. 이 속성을 수정하면 텍스트 렌더링에 어떤 영향을 주는지 테스트 할 수있는 작은 응용 프로그램을 만들었습니다. 상위 두 개의 텍스트 항목은 Flash Player의 기본 글꼴을 사용하므로 앤티 앨리어싱 설정은 렌더링에 영향을주지 않습니다. 다음 4 개의 텍스트 항목은 모두 내장 TTF 글꼴을 사용하며 antiAliasingType
설정에 따라 차이점을 볼 수 있습니다.
다음과 같은 글꼴을 다운로드, 응용 프로그램을 컴파일하고 응용 프로그램 폴더에 넣어하려면 :
http://svn.openlaszlo.org/openlaszlo/trunk/laszlo-explorer/fonts/ariosob.ttf
https://github.com/w0ng/googlefontdirectory/raw/master/fonts/Amaranth-Regular.ttf
<canvas height="600">
<font name="amaranth" style="plain" src="Amaranth-Regular.ttf" />
<font name="arioso" src="ariosob.ttf" />
<class name="mytext" extends="text">
<passthrough when="$as3">
import flash.text.AntiAliasType;
</passthrough>
<attribute name="antialias" type="string" value="advanced" />
<handler name="oninit">
this.onantialias.sendEvent();
</handler>
<handler name="onantialias">
var t = this.getDisplayObject().textfield;
if (this.antialias == 'normal') {
t.antiAliasType = flash.text.AntiAliasType.NORMAL;
} else {
t.antiAliasType = flash.text.AntiAliasType.ADVANCED;
}
</handler>
<method name="toogleAntialias">
if (this.antialias == 'normal') this.setAttribute('antialias', 'advanced');
else this.setAttribute('antialias', 'normal');
</method>
</class>
<view>
<simplelayout axis="y" spacing="10" />
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="true" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="advanced"
fontsize="25">Default font (no embedded TTF)</mytext>
</view>
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="false" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="normal"
fontsize="25">Default font (no embedded TTF)</mytext>
</view>
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="true" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="advanced"
font="amaranth" fontsize="25">Amaranth Regular</mytext>
</view>
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="false" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="normal"
font="amaranth" fontsize="25">Amaranth Regular</mytext>
</view>
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="true" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="advanced"
font="arioso" fontsize="25">Amaranth Regular</mytext>
</view>
<view layout="axis:x; spacing:5">
<text valign="middle">Anti-alias advanced</text>
<checkbox value="false" y="10"
onvalue="if (parent.t) parent.t.toogleAntialias()" />
<view width="20" height="1" />
<mytext name="t"
antialias="normal"
font="arioso" fontsize="25">Amaranth Regular</mytext>
</view>
</view>
</canvas>
결과는 모든 동작에서 일치하지 않을 수 있습니다 운영 체제가 텍스트 렌더링을 최적화하기 위해 다른 접근법을 사용할 것이기 때문입니다. 위의 스크린 샷은 Linux에서 촬영되었습니다.
OpenLaszlo 버전 모두에서 텍스트 필드의 스크린 샷을 첨부하고 사용중인 글꼴을 나열하십시오. 아마도 글꼴과 관련이 있으며 OpenLaszlo 또는 Flash PLayer와 관련이 없을 수 있습니다. 새로운 Text Layout Framework 기반 API를 사용하고 있습니까? –
@Stevie : 스크린 샷으로 질문을 업데이트했습니다. 아니요, 어떤 프레임 워크도 사용하고 있지 않습니다. 이 텍스트를 검사 할 때 내 사용자 정의 글꼴 이름을 말하는 것이지만 여전히 눈에 띄는 차이가 있습니다. – karthick