Flash Player 10 i nowsze wersje, Adobe AIR 1.5 i nowsze wersje
Obiekt
FontDescription
używany jest w połączeniu z obiektem
ElementFormat
do określania czcionki i definiowania niektórych z jej cech. Do tych cech należy nazwa, grubość, ustawienie, sposób renderowania czcionki i miejsce jej przechowywania (czcionka urządzenia/wbudowana).
Uwaga:
Mechanizm FTE nie obsługuje czcionek Type 1, ani czcionek bitmapowych np. Type 3, ATC, sfnt-wrapped CID czy Naked CID.
Definiowanie cech czcionki (obiekt FontDescription)
Właściwość
fontName
obiektu
FontDescription
może zawierać pojedynczą nazwę lub listę nazw rozdzielonych przecinkami. Na przykład w przypadku listy "Arial, Helvetica, _sans", mechanizm tekstowy będzie najpierw szukać czcionki Arial, następnie Helvetica, a gdy nie znajdzie żadnej z nich — czcionki _sans. Zestaw nazw czcionek obejmuje trzy ogólne nazwy czcionek urządzenia: "_sans", "_serif" i "_typewriter". Są one odwzorowywane na konkretne czcionki urządzenia w systemie, na którym plik jest odtwarzany. Dobrą praktyką jest podawanie nazw domyślnych, takich jak powyższe, we wszystkich opisach czcionek odwołujących się do czcionek urządzenia. Jeśli wartość właściwości
fontName
nie jest określona, domyślnie przyjmowana jest czcionka "_serif".
Właściwość
fontPosture
może mieć wartość domyślną (
FontPosture.NORMAL
) albo wartość określającą kursywę (
FontPosture.ITALIC
). Właściwości
fontWeight
można przypisać domyślną wartość (
FontWeight.NORMAL
) lub wartość określającą pogrubienie (
FontWeight.BOLD
).
var fd1:FontDescription = new FontDescription();
fd1.fontName = "Arial, Helvetica, _sans";
fd1.fontPosture = FontPosture.NORMAL;
fd1.fontWeight = FontWeight.BOLD;
Czcionki osadzone a czcionki urządzenia
Właściwość
fontLookup
obiektu
FontDescription
określa, czy w celu wyświetlenia tekstu będzie poszukiwać czcionki urządzenia, czy czcionki osadzonej. Jeśli wybrana jest czcionka urządzenia (
FontLookup.DEVICE
), środowisko wykonawcze poszukuje czcionki w systemie, w którym odtwarzany jest plik. Wybranie czcionki osadzonej (
FontLookup.EMBEDDED_CFF
) powoduje, że środowisko wykonawcze będzie poszukiwało czcionki osadzonej o określonej nazwie w pliku SWF. W przypadku tego ustawienia uwzględniane są tylko czcionki CFF (Compact Font Format). Jeśli określona czcionka nie zostanie znaleziona, używana będzie „rezerwowa” czcionka systemowa.
Użycie czcionek urządzenia powoduje, że plik SWF ma mniejszą objętość. Czcionki osadzone zapewniają większą spójność wyglądu aplikacji na różnych platformach.
var fd1:FontDescription = new FontDescription();
fd1.fontLookup = FontLookup.EMBEDDED_CFF;
fd1.fontName = "Garamond, _serif";
Tryb renderowania i przyciąganie
Renderowanie czcionek CFF (Compact Font Format) jest dostępne począwszy od wersji 10 programu Flash Player 10 i wersji 1.5 środowiska Adobe AIR. Ten sposób renderowania czcionek zapewnia większą czytelność tekstu i wyższą jakość wyświetlania tekstu o małych rozmiarach. Ustawienie to ma zastosowanie wyłącznie do czcionek osadzonych. W obiekcie
FontDescription
wartość
RenderingMode.CFF
jest domyślnie przypisywana właściwości
renderingMode
. Można przypisać tej właściwości wartość
RenderingMode.NORMAL
, aby uzyskać typ renderowania stosowany w programie Flash Player 7 i wcześniejszych wersjach.
Gdy wybrane jest renderowanie CFF, druga właściwość,
cffHinting
, steruje dopasowaniem poziomych elementów czcionki do siatki subpikselowej. Wartość domyślna,
CFFHinting.HORIZONTAL_STEM
, oznacza stosowanie przyciągania CFF. Nadanie tej właściwości wartości
CFFHinting.NONE
powoduje wyłączenie przyciągania, co ma uzasadnienie w przypadku animacji i dużych czcionek.
var fd1:FontDescription = new FontDescription();
fd1.renderingMode = RenderingMode.CFF;
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;
Blokowanie i klonowanie obiektu FontDescription
Gdy obiekt
FontDescription
zostanie przypisany do obiektu
ElementFormat
, jego właściwości
locked
automatycznie przypisywana jest wartość
true
. Próba zmodyfikowania zablokowanego w ten sposób obiektu
FontDescription
powoduje wygenerowanie błędu
IllegalOperationError
. Dobrą praktyką jest pełne zdefiniowanie takiego obiektu przed przypisaniem go do instancji klasy
ElementFormat
.
Chcąc zmodyfikować istniejącą instancję klasy
FontDescription
, należy najpierw sprawdzić jej właściwość
locked
. Jeśli ma wartość
true
, należy za pomocą metody
clone()
utworzyć niezablokowaną kopię obiektu. Właściwości tego niezablokowanego obiektu można zmieniać, a obiekt można przypisywać do instancji obiektu
ElementFormat
. Wszelkie nowe wiersze utworzone na podstawie tego obiektu
TextElement
będą sformatowane zgodnie z nowymi właściwościami. Poprzednie wiersze utworzone na podstawie tego samego obiektu pozostaną niezmienione.
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);
}
}
}
|
|
|