Texto e tipografia no desenvolvimento móvel: o que é, quais ferramentas e como funciona

Autor: IT Sectr Publicado: 2026-08-04 Tempo de leitura: 10 min

Trabalhar com texto é uma tarefa fundamental ao criar interfaces de aplicativos móveis modernos. Da seleção de fontes ao ajuste do espaçamento entre caracteres — cada aspecto afeta a percepção do produto. De acordo com a Documentação Apple NSAttributedString, a formatação adequada do texto está diretamente relacionada à legibilidade e acessibilidade da interface.

Pontos principais

  • NSAttributedString — classe iOS para criar texto formatado com atributos de fonte, cor e espaçamento.
  • SpannableString — equivalente no Android que usa objetos Span para estilizar fragmentos de texto individuais.
  • UIFont e Typeface — principais classes de fontes no iOS e Android; fontes personalizadas são adicionadas via Info.plist e res/font.
  • Kerning e ligaduras — parâmetros tipográficos que controlam o espaçamento entre caracteres e sua fusão em um único glifo.
  • Variable Fonts — um único arquivo de fonte contém múltiplos estilos, reduzindo o tamanho do aplicativo.

Texto em aplicativos móveis: NSAttributedString no iOS

NSAttributedString é a classe fundamental do iOS para trabalhar com texto formatado. Ela permite aplicar atributos a caracteres ou intervalos individuais: fonte via UIFont, cor via UIColor, espaçamento entre caracteres via kern e espaçamento entre linhas via NSMutableParagraphStyle. Em aplicativos móveis, NSAttributedString é usado em toda parte — desde UILabel até UITextView complexo com suporte a edição.

UIFont e configuração de fonte

UIFont é a classe principal para trabalhar com fontes no iOS. Ela suporta tipos de letra do sistema, fontes personalizadas e Dynamic Type. UIFont(name:size:) carrega uma fonte pelo nome, UIFont.systemFont(ofSize:weight:) carrega a fonte do sistema. UIFontDescriptor permite modificar uma fonte existente: alterar tamanho, peso ou adicionar uma matriz de transformação. Para fontes personalizadas, o arquivo .ttf é adicionado ao projeto e registrado no Info.plist sob a chave Fonts provided by application.

swift
let attributes: [NSAttributedString.Key: Any] = [
    .font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
    .foregroundColor: UIColor.darkGray as Any,
    .kern: 1.5 as Any
]
let attributedString = NSAttributedString(
    string: "Форматированный текст",
    attributes: attributes
)
label.attributedText = attributedString

NSMutableParagraphStyle e formatação de parágrafos

NSMutableParagraphStyle é uma versão mutável de ParagraphStyle para configurar a exibição de parágrafos. Ele controla o alinhamento (alignment), o espaçamento entre linhas (lineSpacing), as margens (headIndent, tailIndent) e o modo de corte (lineBreakMode). ParagraphStyle é crítico para a legibilidade de textos longos em dispositivos móveis: um lineSpacing adequado evita a fusão de linhas, e lineBreakMode evita o corte de palavras. A configuração paragraphSpacing define o espaço entre parágrafos.

Texto em aplicativos móveis: SpannableString no Android

SpannableString é a principal ferramenta para formatação de texto no Android. Ela funciona através de um mecanismo de objetos Span, cada um responsável por um aspecto: StyleSpan para negrito ou itálico, ForegroundColorSpan para cor, URLSpan para links, UnderlineSpan para sublinhado. SpannableStringBuilder é o equivalente de NSMutableAttributedString, permitindo construir texto a partir de múltiplos fragmentos. Compreender SpannableString é essencial para criar interfaces flexíveis com texto formatado em aplicativos móveis.

Typeface e fontes personalizadas no Android

Typeface é a classe para trabalhar com fontes no Android. Ela suporta os tipos de letra do sistema Roboto e Noto, bem como fontes personalizadas. Typeface.createFromResource() carrega uma fonte de res/font/, Typeface.createFromAsset() carrega da pasta assets. Android 8.0+ suporta famílias de fontes em XML, combinando vários arquivos de fonte em um único recurso. Uma fonte personalizada para texto em aplicativos móveis no Android é definida através do atributo android:fontFamily ou programaticamente usando setTypeface().

TextMeasurer e medição de texto

TextMeasurer (API 29+) é uma ferramenta moderna para medir texto sem vincular a uma View. Ele calcula largura, altura e posições dos caracteres antes da renderização. Em APIs antigas, Paint.measureText() é usado para texto de linha única ou StaticLayout para texto multilinha. TextMeasurer é especialmente útil em Views personalizadas onde o texto é desenhado via Canvas.drawText(). A medição correta evita o corte de caracteres na interface.

kotlin
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
    StyleSpan(Typeface.BOLD),
    0, 6,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
    ForegroundColorSpan(Color.RED),
    14, 19,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable

Tipografia no desenvolvimento móvel: kerning, ligaduras e tracking

Tipografia em aplicativos móveis é uma configuração abrangente de fontes, espaçamento entre caracteres e entre linhas. A tipografia adequada no desenvolvimento móvel afeta diretamente a legibilidade do texto e a percepção visual da interface. Vamos analisar os principais parâmetros disponíveis em ambas as plataformas.

Kerning e Tracking

Kerning é o ajuste de espaço entre pares específicos de caracteres (AV, To, Wa). Tracking é o espaçamento uniforme entre caracteres para todo o texto ou parte dele. No iOS, o kerning é definido via NSKernAttributeName, no Android — através da propriedade letterSpacing de TextView. Valores negativos aproximam os caracteres, valores positivos os afastam. A tipografia no desenvolvimento móvel requer um ajuste cuidadoso desses parâmetros: para títulos grandes, o espaçamento entre caracteres geralmente é aumentado, para o texto do corpo permanece padrão.

ParâmetroiOSAndroid
String estilizadaNSAttributedStringSpannableString
FonteUIFont / CTFontTypeface
Espaçamento entre caracteresNSKernAttributeNameletterSpacing
Espaçamento entre linhaslineSpacinglineSpacingExtra
LigadurasNSLigatureAttributeNameRecursos OpenType
ElipselineBreakMode .byTruncatingTailandroid:ellipsize

Ligaduras

Ligaduras são glifos especiais que substituem combinações de dois ou mais caracteres: fi, fl, ffi. No iOS, as ligaduras são controladas via NSLigatureAttributeName: 0 — desativadas, 1 — padrão, 2 — todas disponíveis. No Android, as ligaduras são controladas no nível da fonte através de recursos OpenType. Ativar ligaduras melhora a aparência do texto, especialmente em tipos de letra com serifa. A tipografia no desenvolvimento móvel usa ligaduras principalmente para títulos e logotipos.

Fontes personalizadas em aplicativos móveis: carregamento e configuração

Fontes personalizadas são uma das principais ferramentas para criar um estilo visual único para um aplicativo. Elas ajudam a destacar a marca e melhorar a experiência do usuário. Em aplicativos móveis, fontes personalizadas são usadas para títulos, logotipos, elementos de destaque e identidade corporativa.

Variable Fonts

Variable Fonts é uma tecnologia moderna de fontes onde um único arquivo contém múltiplos estilos: de fino a extra-negrito, de estreito a largo. Isso reduz o tamanho do aplicativo substituindo vários arquivos de fonte por um. No iOS, Variable Fonts são suportadas via UIFont com o parâmetro weight. No Android — via Typeface.Builder especificando os eixos de variabilidade wght, wdth, slnt. Usar Variable Fonts simplifica a tipografia em aplicativos móveis: o desenvolvedor não precisa carregar arquivos separados para cada estilo.

swift
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
    .scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)

NSTextAttachment e ImageSpan

NSTextAttachment no iOS permite incorporar UIImage dentro de NSAttributedString — a imagem se alinha à linha de base e se move junto com o texto. No Android, o equivalente é ImageSpan dentro de SpannableString. Ambas as abordagens são úteis para chat com emojis, feeds de notícias com ícones e formulários com caixas de seleção personalizadas. É importante dimensionar corretamente a imagem para corresponder à altura da fonte para que o texto e os gráficos pareçam harmoniosos.

Efeitos de texto, alinhamento e elipse

Além da formatação básica, o texto em aplicativos móveis suporta efeitos visuais adicionais: sombras, contorno, tachado e sublinhado. Essas ferramentas expandem as possibilidades da tipografia, mas exigem aplicação cuidadosa para manter a legibilidade.

Sombra e contorno do texto

Sombra do texto no iOS é definida via NSShadow com offset, blurRadius e color. Contorno — via NSStrokeWidthAttributeName: valores negativos criam preenchimento com contorno, valores positivos criam apenas o contorno. Tachado — NSUnderlineStyle (.single, .thick, .double). No Android, a sombra de TextView é configurada via android:shadowRadius, android:shadowDx, android:shadowDy. SpannableString suporta StrikethroughSpan e UnderlineSpan. O contorno do texto no Android é implementado via OutlineSpan ou uma fonte personalizada.

Elipse e Marquee

Elipse é o truncamento de texto com reticências quando o contêiner transborda. No iOS, é configurado via lineBreakMode .byTruncatingTail e numberOfLines. No Android — via android:ellipsize="end" e android:maxLines. Marquee é uma animação de texto rolante disponível no Android via android:ellipsize="marquee". No iOS, não há equivalente nativo — a biblioteca MarqueeLabel é usada. A elipse é obrigatória para todos os textos de linha única em aplicativos móveis para evitar o corte de conteúdo.

Dynamic Type no iOS

Dynamic Type é um sistema de texto adaptativo no iOS que ajusta o tamanho da fonte com base nas configurações de Acessibilidade do usuário. Use UIFontMetrics para dimensionar fontes personalizadas. Dynamic Type é obrigatório para aplicativos compatíveis com Acessibilidade. No Android, o equivalente são unidades sp e scaledPixels, que se dimensionam de acordo com as configurações de tamanho de texto do sistema.

Perguntas frequentes

O que é NSAttributedString?

NSAttributedString é uma classe iOS para criar texto formatado com atributos de fonte, cor e estilo no nível de caracteres e intervalos.

O que é SpannableString no Android?

SpannableString é uma classe Android para marcação de texto através de objetos Span: ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan.

Como adicionar uma fonte personalizada no iOS?

Adicione o arquivo .ttf ao projeto, especifique-o no Info.plist sob a chave Fonts provided by application, depois use UIFont(name:).

Como carregar uma fonte personalizada no Android?

Coloque o arquivo .ttf em res/font/, crie uma família de fontes XML e especifique android:fontFamily ou use Typeface.createFromAsset().

O que são kerning e ligaduras?

Kerning é o espaço entre pares de caracteres. Ligaduras são glifos especiais para combinações de letras. Eles são controlados via NSKernAttributeName e NSLigatureAttributeName.

Resumo

  • NSAttributedString — a principal ferramenta de formatação de texto no iOS, suportando fontes, cores, espaçamento entre caracteres e estilos de parágrafo.
  • SpannableString — o equivalente no Android usando objetos Span: StyleSpan para peso, ForegroundColorSpan para cor, URLSpan para links.
  • UIFont e Typeface — classes de fonte no iOS e Android; fontes personalizadas são adicionadas via Info.plist e res/font respectivamente.
  • Kerning e Tracking — controlam o espaçamento entre caracteres; kerning para pares individuais, tracking uniformemente para todo o texto.
  • Ligaduras — substituem combinações de caracteres por glifos únicos; controladas via NSLigatureAttributeName no iOS e OpenType no Android.
  • Variable Fonts e Dynamic Type — tecnologias modernas: um arquivo para múltiplos estilos e adaptação automática às configurações do usuário.
  • Tipografia no desenvolvimento móvel abrange fontes, espaçamento entre linhas, ligaduras, sombras e elipse para garantir legibilidade.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto