Renderização avançada de texto

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

O ActionScript 3.0 apresenta uma variedade de classes no pacote flash.text para controlar as propriedades do texto exibido, incluindo fontes incorporadas, configurações de suavização de serrilhado, controle de canal alfa e outras configurações específicas. A Referência do ActionScript 3.0 apresenta descrições detalhadas das classes e propriedades, incluindo as classes CSMSettings, Font e TextRenderer.

Uso de fontes incorporadas

Quando você especificar uma fonte específica para um TextField no aplicativo, o Flash Player ou AIR procurará uma fonte de dispositivo (uma fonte que reside no computador do usuário) com o mesmo nome. Se essa fonte não for localizada no sistema ou se o usuário tiver uma versão ligeiramente diferente de uma fonte com esse nome, a aparência da exibição do texto poderá ser bem diferente do que se pretende. Por padrão, o texto aparece em uma fonte Times Roman.

Para ter certeza de que o usuário verá exatamente a fonte correta, incorpore a fonte no arquivo SWF do aplicativo. As fontes incorporadas têm um número de benefícios:

  • Os caracteres de fonte incorporada têm suavização de serrilhado, o que faz com que as bordas sejam exibidas com mais suavidade, especialmente em um texto maior.

  • É possível girar texto que use fontes incorporadas.

  • Texto com fonte incorporada pode ser transparente ou semitransparente.

  • É possível usar o estilo CSS kerning com fontes incorporadas.

A maior limitação ao uso de fontes incorporadas é que elas aumentam o tamanho do arquivo ou do download do aplicativo.

O método exato a ser usado para incorporar um arquivo fonte no arquivo SWF do aplicativo varia de acordo com o ambiente de desenvolvimento.

Depois de incorporar uma fonte, é possível verificar se um TextField utilizará a fonte incorporada correta:

  • Defina a propriedade embedFonts do TextField como true .

  • Crie um objeto TextFormat, defina a propriedade fontFamily como o nome da fonte incorporada e aplique o objeto TextFormat ao TextField. Quando você especificar uma fonte incorporada, a propriedade fontFamily deverá conter apenas um único nome, e não poderá usar uma lista delimitada por vírgulas de vários nomes de fonte.

  • Se estiver usando os estilos CSS para definir fontes para os TextFields ou componentes, defina a propriedade das CSS font-family para o nome da fonte incorporada. A propriedade font-family deverá conter um único nome, não uma lista de nomes, se você desejar especificar uma fonte incorporada.

Incorporação de uma fonte no Flash

O Flash Professional permite que você incorpore qualquer fonte que possua ao sistema, incluindo as fontes True Type e Postscript Tipo 1.

É possível incorporar fontes em um aplicativo de muitos modos, incluindo:

  • Configurando as propriedades da fonte e do estilo de um TextField no Palco e clicando na caixa de seleção Fontes incorporadas

  • Criando e fazendo referência a um símbolo de fonte

  • Criando e usando uma biblioteca compartilhada de tempo de execução que contém símbolos de fonte incorporada

Para obter detalhes adicionais sobre como incorporar fontes em aplicativos, consulte "Fontes incorporadas para campos de texto dinâmicos ou de entrada" em Uso do Flash .

Incorporação de uma fonte no Flex

É possível incorporar fontes em um aplicativo Flex de muitos modos, incluindo:

  • Usar a tag de metadados [Embed] em um script

  • Usar a declaração de estilo @font-face

  • Estabeleça uma classe para a fonte e utilize a tag [Embed] para integrá-la.

Apenas fontes True Type podem ser diretamente incorporadas em um aplicativo Flex. Para fontes em outros formatos (como Postscript Tipo 1), é possível incorporá-las, primeiro, em um arquivo SWF e, depois, usando o Flash Professional, usar tal arquivo no seu aplicativo Flex. Para obter detalhes sobre como usar fontes incorporadas dos arquivos SWF no Flex, consulte "Incorporação de fontes de arquivos SWF" em Uso do Flex 4 .

Controle de nitidez, espessura e suavização de serrilhado

Por padrão, o Flash Player ou AIR determina as configurações dos controles de exibição de texto como nitidez, espessura e suavização de serrilhado à medida que o texto é redimensionado, muda de cor ou exibido em diversos fundos. Em alguns casos (por exemplo, quando se tem um texto muito pequeno, muito grande ou uma diversidade de fundos exclusivos), talvez você queira manter controle sobre essas configurações. É possível substituir as configurações do Flash Player ou AIR usando a classe flash.text.TextRenderer e suas classes associadas, como a classe CSMSettings. Essas classes concedem controle preciso sobre a renderização da qualidade do texto incorporado. Para obter informações adicionais sobre fontes incorporadas, consulte Uso de fontes incorporadas

Nota: A propriedade flash.text.TextField .antiAliasType deve ter o valor AntiAliasType.ADVANCED para configurar a nitidez, espessura ou propriedade gridFitType, ou usar o método TextRenderer.setAdvancedAntiAliasingTable() .

O exemplo a seguir aplica-se às propriedades e formatação da CSM (modulação de traçado contínuo) personalizadas para o texto exibido usando uma fonte incorporada denominada myFont . Quando o usuário clicar no texto exibido, o Flash Player ou o Adobe AIR aplicará as configurações personalizadas.

var format:TextFormat = new TextFormat(); 
format.color = 0x336699; 
format.size = 48; 
format.font = "myFont"; 
 
var myText:TextField = new TextField(); 
myText.embedFonts = true; 
myText.autoSize = TextFieldAutoSize.LEFT; 
myText.antiAliasType = AntiAliasType.ADVANCED; 
myText.defaultTextFormat = format; 
myText.selectable = false; 
myText.mouseEnabled = true; 
myText.text = "Hello World"; 
addChild(myText); 
myText.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(event:Event):void 
{ 
    var myAntiAliasSettings = new CSMSettings(48, 0.8, -0.8); 
    var myAliasTable:Array = new Array(myAntiAliasSettings); 
    TextRenderer.setAdvancedAntiAliasingTable("myFont", FontStyle.ITALIC, TextColorType.DARK_COLOR, myAliasTable); 
}