글꼴을 사용한 작업
Flash Player 10 이상, Adobe AIR 1.5 이상
FontDescription 객체는 ElementFormat과 함께 사용하여 글꼴을 식별하고 일부 특성을 정의합니다. 이러한 특성에는 글꼴 이름, 두께, 포스처, 렌더링 및 글꼴 검색 방법(장치 글꼴 또는 포함된 글꼴)이 포함됩니다.
참고: FTE는 Type 1 글꼴이나 Type 3, ATC, sfnt-wrapped CID 또는 Naked CID와 같은 비트맵 글꼴을 지원하지 않습니다.
글꼴 특성 정의(FontDescription 객체)
fontName 속성(FontDescription 객체)은 하나의 이름이거나 여러 이름의 쉼표로 분리된 목록일 수 있습니다. 예를 들어 "Arial, Helvetica, _sans"와 같은 목록에서 텍스트 엔진은 먼저 "Arial"을 검색한 다음 "Helvetica"를 검색하고 처음 두 글꼴을 모두 찾을 수 없는 경우 마지막으로 "_sans"를 검색합니다. 글꼴 이름 집합에는 “_sans”, “_serif”, “_typewriter” 등 세 가지 일반 장치 글꼴 이름이 포함됩니다. 이러한 이름은 재생 시스템에 따라 특정 장치 글꼴에 매핑됩니다. 장치 글꼴을 사용하는 모든 글꼴 설명에 이와 같은 기본 이름을 지정하는 것이 좋습니다. fontName을 지정하지 않은 경우 “_serif”가 기본값으로 사용됩니다.
fontPosture 속성은 기본값(FontPosture.NORMAL) 또는 기울임체(FontPosture.ITALIC)로 설정할 수 있습니다. fontWeight 속성은 기본값(FontWeight.NORMAL) 또는 굵게(FontWeight.BOLD)로 설정할 수 있습니다.
var fd1:FontDescription = new FontDescription();
fd1.fontName = "Arial, Helvetica, _sans";
fd1.fontPosture = FontPosture.NORMAL;
fd1.fontWeight = FontWeight.BOLD;
포함된 글꼴과 장치 글꼴
fontLookup 속성(FontDescription 객체)은 텍스트 엔진이 텍스트를 렌더링하기 위해 장치 글꼴을 검색할지 아니면 포함된 글꼴을 검색할지 지정합니다. 장치 글꼴(FontLookup.DEVICE)을 지정한 경우 런타임이 재생 시스템에서 해당 글꼴을 검색합니다. 포함된 글꼴(FontLookup.EMBEDDED_CFF)을 지정하면 SWF 파일에서 지정된 이름을 가진 포함된 글꼴을 검색합니다. 이 설정은 포함된 CFF(Compact Font Format) 글꼴에서만 사용할 수 있습니다. 지정된 글꼴을 찾을 수 없는 경우에는 대체 장치 글꼴이 사용됩니다.
장치 글꼴을 사용하면 SWF 파일 크기가 작아지고, 포함된 글꼴을 사용하면 모든 플랫폼에서 정확도가 향상됩니다.
var fd1:FontDescription = new FontDescription();
fd1.fontLookup = FontLookup.EMBEDDED_CFF;
fd1.fontName = "Garamond, _serif";
렌더링 모드 및 힌팅
CFF(Compact Font Format) 렌더링은 Flash Player 10 및 Adobe AIR 1.5부터 사용할 수 있습니다. 이 유형의 글꼴 렌더링을 사용하면 텍스트를 보다 쉽게 읽을 수 있고 작은 크기에서도 글꼴의 표시 품질이 향상됩니다. 이 설정은 포함된 글꼴에만 적용됩니다. FontDescription은 기본적으로 이 설정(RenderingMode.CFF)이 renderingMode 속성에 대해 지정됩니다. 이 속성을 Flash Player 7 또는 이전 버전에서 사용되는 렌더링 유형과 일치하도록 RenderingMode.NORMAL로 설정할 수 있습니다.
CFF 렌더링을 선택하는 경우 두 번째 속성 cffHinting이 글꼴의 가로 줄이 하위 픽셀 격자에 맞는 정도를 제어합니다. 기본값 CFFHinting.HORIZONTAL_STEM은 CFF 힌팅을 사용합니다. 이 속성을 CFFHinting.NONE으로 설정하면 힌팅이 제거되므로 애니메이션이나 큰 글꼴 크기에 적합합니다.
var fd1:FontDescription = new FontDescription();
fd1.renderingMode = RenderingMode.CFF;
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;
FontDescription 잠금 및 복제
FontDescription 객체가 ElementFormat에 할당되면 해당 locked 속성이 true로 자동 설정됩니다. 잠긴 FontDescription 객체를 수정하려고 하면 IllegalOperationError가 발생합니다. 따라서 이러한 객체를 완전히 정의한 후 ElementFormat에 할당하는 것이 가장 좋습니다.
기존 FontDescription을 수정하려면 먼저 locked 속성을 확인합니다. 해당 속성이 true인 경우 clone() 메서드를 사용하여 객체의 잠금 해제된 복사본을 만듭니다. 이 잠금 해제된 객체의 속성은 변경할 수 있으며, 그런 다음 ElementFormat에 할당할 수 있습니다. 이 TextElement에서 만든 모든 새 행에는 새 서식이 적용됩니다. 이 동일한 객체에서 만든 이전 행은 변경되지 않습니다.
package
{
import flash.display.Sprite;
import flash.text.*;
public class FontDescriptionCloneExample extends Sprite
{
private var tb:TextBlock = new TextBlock();
private var te:TextElement;
private var ef1:ElementFormat;
private var ef2:ElementFormat;
private var fd1:FontDescription = new FontDescription();
private var fd2:FontDescription;
public function FontDescriptionCloneExample()
{
fd1.fontName = "Garamond";
ef1 = new ElementFormat(fd);
var str:String = "This is flash text";
te = new TextElement(str, ef);
tb.content = te;
var tx1:TextLine = tb.createTextLine(null,600);
addChild(tx1);
fd2 = (fd1.locked) ? fd1.clone() : fd1;
fd2.fontName = "Arial";
ef2 = (ef1.locked) ? ef1.clone() : ef1;
ef2.fontDescription = fd2;
tb.content.elementFormat = ef2;
var tx2:TextLine = tb.createTextLine(null,600);
addChild(tx2);
}
}
}