Trabalho com fontes

Flash Player 10 e posterior, Adobe AIR 1.5 e posterior

O objeto FontDescription é usado em conjunto com ElementFormat para identificar uma face de fonte e definir algumas de suas características. Essas características incluem o nome da fonte, peso, postura, renderização e como localizar a fonte (de dispositivo versus incorporada).

Nota: O FTE não oferece suporte a fontes de Tipo 1 ou fontes de bitmap, como Tipo 3, ATC, sfnt-wrapped CID ou Naked CID.

Definição das características da fonte (objeto FontDescription)

A propriedade fontName do objeto FontDescription pode ser um nome individual ou uma lista separada por vírgulas de nomes. Por exemplo, em uma lista como “Arial, Helvetica, _sans”, o mecanismo de texto procura, primeiro, “Arial”, em seguida, “Helvetica” e, finalmente, “_sans” se não for possível localizar as duas primeiras fontes. O conjunto de nomes de fontes inclui três nomes de fontes de dispositivo genéricos “_sans”, “_serif” e “_typewriter”. Eles mapeiam a fontes de dispositivos específicos, dependendo do sistema de reprodução. É prática recomendada especificar o nome padrão, por exemplo, os especificados em todas as descrições de fontes que usam fontes de dispositivo. Se nenhum fontName for especificado, “_serif” será usado como padrão.

A propriedade fontPosture pode ser definida como padrão ( FontPosture.NORMAL ) ou como itálico ( FontPosture.ITALIC ). A propriedade fontWeight pode ser definida como padrão ( FontWeight.NORMAL ) ou como negrito ( FontWeight.BOLD ).

var fd1:FontDescription = new FontDescription(); 
fd1.fontName = "Arial, Helvetica, _sans"; 
fd1.fontPosture = FontPosture.NORMAL; 
fd1.fontWeight = FontWeight.BOLD;

Fontes incorporadas versus de dispositivo

A propriedade fontLookup do objeto FontDescription especifica se o mecanismo de texto procura uma fonte de dispositivo ou fonte incorporada para renderizar o texto. Se uma fonte de dispositivo ( FontLookup.DEVICE ) for especificada, o tempo de execução procurará a fonte no sistema de reprodução. A especificação de uma fonte incorporada ( FontLookup.EMBEDDED_CFF ) faz com que o tempo de execução procure uma fonte incorporada com o nome especificado no arquivo SWF. Somente fontes CFF (Formato compacto de fonte) funcionam com essa configuração. Se a fonte especificada não for localizada, uma fonte do dispositivo de fallback será usada.

As fontes de dispositivo resultam em um tamanho de arquivo SWF menor. As fontes incorporadas concedem maior fidelidade entre plataformas.

var fd1:FontDescription = new FontDescription(); 
fd1.fontLookup = FontLookup.EMBEDDED_CFF; 
fd1.fontName = "Garamond, _serif";

Modo de renderização e instrução

A renderização de CFF (Formato compacto de fonte) está disponível a partir do Flash Player 10 e do Adobe AIR 1.5. Esse tipo de renderização de fonte torna o texto mais legível e permite maior qualidade de exibição para fontes em tamanhos menores. Essa configuração aplica-se apenas a fontes incorporadas. FontDescription é a definição padrão dessa definição ( RenderingMode.CFF ) para a propriedade renderingMode . É possível definir essa propriedade como RenderingMode.NORMAL a fim de corresponder o tipo de renderização usado pelo Flash Player 7 ou versões anteriores.

Quando a renderização de CFF for selecionada, uma segunda propriedade, cffHinting , controlará como as hastes horizontais se ajustam à grade de subpixels. O valor padrão, CFFHinting.HORIZONTAL_STEM , usa instrução de CFF. Definir essa propriedade como CFFHinting.NONE remove a instrução, que é apropriada para animação ou para tamanhos de fontes maiores.

var fd1:FontDescription = new FontDescription(); 
fd1.renderingMode = RenderingMode.CFF; 
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;

Bloqueio e clonagem de FontDescription

Quando um objeto FontDescription estiver atribuído a um ElementFormat , sua propriedade locked será automaticamente definida como true . A tentativa para modificar um objeto FontDescription bloqueado emitiu um IllegalOperationError . A prática recomendada é definir completamente tal objeto antes de atribuí-lo a uma instância do ElementFormat .

Para modificar uma instância da FontDescription existente, primeiro verifique sua propriedade locked . Se estiver definida como true , use o método clone() para criar uma cópia desbloqueada do objeto. As propriedades desse objeto desbloqueado podem ser alteradas e é possível atribuí-lo à instância do ElementFormat . Quaisquer linhas criadas a partir desse TextElement terão a nova formatação. As linhas desse mesmo objeto criadas anteriormente permanecerão inalteradas.

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