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); 
        } 
    } 
} 
           |  |  |