Baseline dans le développement mobile : ce que c’est, signification et fonctions

Auteur : IT Sectr Publié le : 2026-07-24 Temps de lecture : 10 min

Baseline est une ligne horizontale invisible sur laquelle sont positionnés tous les caractères de la police. La plupart des lettres reposent sur la baseline, tandis que les jambages descendants s’étendent en dessous. Dans les interfaces mobiles, la baseline est utilisée pour un alignement précis du texte avec d’autres éléments — icônes, boutons, images. Selon les Material Design Typography Guidelines (2025), un alignement cohérent par la baseline améliore la hiérarchie visuelle de l’interface et réduit la charge cognitive lors du scan du contenu.

Points clés

  • Baseline est une ligne imaginaire sur laquelle reposent les caractères de la police, à l’exception des jambages descendants.
  • Alignement — la baseline est utilisée pour positionner le texte par rapport aux composants d’interface adjacents.
  • Plateformes — iOS fournit NSLayoutConstraint pour la baseline, Android utilise Modifier.alignWithBaseline.
  • Multiligne — dans les en-têtes multilignes, la baseline aide à maintenir un rythme de ligne cohérent.
  • Cohérence — un alignement uniforme par la baseline améliore la perception de l’interface et réduit le bruit visuel.

Qu’est-ce que Baseline en typographie

Baseline (ligne de base) est un concept fondamental de la typographie qui définit l’axe horizontal sur lequel les caractères de la police sont positionnés. Chaque glyphe dans une police numérique a un point d’ancrage à la baseline — c’est le long de cette ligne que les lettres sont alignées lors du rendu du texte. La plupart des lettres minuscules (a, e, o, n, c) reposent directement sur la baseline, tandis que les jambages descendants (dans les lettres p, y, g, j) s’étendent en dessous.

La ligne de base n’est pas le seul point de référence dans les métriques de la police. À côté d’elle existent : x-height (hauteur des minuscules), cap-height (hauteur des majuscules), ascender-line (ligne des hampes supérieures) et descender-line (ligne des jambages inférieurs). La distance entre la baseline et descender-line détermine le jambage inférieur, et entre la baseline et ascender-line détermine la hampe supérieure. Ces métriques forment la hauteur totale de la ligne et influencent le calcul du line-height.

Selon Bringhurst — The Elements of Typographic Style (2024), la baseline est la seule métrique universelle et uniforme pour toutes les polices d’une même famille. Alors que x-height et cap-height varient d’un style à l’autre, la baseline maintient une position constante par rapport à la grille de coordonnées de la police. Cela fait de la baseline une référence fiable pour l’alignement inter-éléments dans les interfaces.

Baseline dans les interfaces mobiles

Dans les interfaces mobiles, la baseline est utilisée comme ligne de référence pour aligner le texte avec des éléments non textuels. Lorsqu’une icône, un bouton ou une image est placé à côté du texte, il ne suffit pas de les centrer — le texte semble optiquement décalé si sa baseline ne coïncide pas avec le centre ou la baseline du composant adjacent.

Un scénario typique est une ligne avec une icône et du texte dans une liste de paramètres ou de navigation. Si l’icône et le texte sont centrés, le texte apparaîtra visuellement plus haut car la baseline se trouve sous le centre géométrique du conteneur. La solution consiste à aligner l’icône sur la baseline du texte. Material Design (2025) recommande cette approche pour toutes les lignes mixtes avec texte et icônes dans les applications mobiles.

ScénarioAlignement centréAlignement par baseline
Icône + TexteLe texte semble au-dessus de l’icôneIcône et baseline du texte coïncident
Texte + TexteDifférentes tailles créent un scintillementBaseline unique, hiérarchie claire
Bouton avec texteTexte décalé du centreTexte optiquement centré
Titre + légendeRupture visuelle des lignesLignes rythmiques et cohérentes

L’alignement optique par la baseline est particulièrement important pour les formulaires d’écran : champs de saisie, étiquettes et messages d’erreur forment une grille typographique complexe, et un décalage de seulement 1–2 pixels de la baseline détériore notablement la perception.

Baseline sur iOS : UIKit et SwiftUI

Dans le développement iOS, la baseline est prise en charge par plusieurs mécanismes, depuis Auto Layout jusqu’au système de disposition de SwiftUI. Dans UIKit, pour positionner le texte par rapport aux éléments adjacents, on utilise NSLayoutConstraint avec les attributs .firstBaseline et .lastBaseline. Le premier convient pour le texte monoligne, le second pour le texte multiligne où la dernière ligne est importante.

swift
// UIKit : aligner l’étiquette et l’icône par la baseline
let label = UILabel()
label.text = "Réglages"

let icon = UIImageView(image: UIImage(systemName: "gear"))

let constraint = label.lastBaselineAnchor
    .constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true

Dans SwiftUI, l’alignement par baseline est implémenté via des AlignmentGuide personnalisés. Par défaut, SwiftUI aligne les éléments au centre, mais pour les étiquettes de texte avec icônes, la baseline donne un résultat plus précis. SwiftUI fournit VerticalAlignment.firstTextBaseline et .lastTextBaseline intégrés.

swift
// SwiftUI : alignement par baseline dans HStack
HStack(alignment: .firstTextBaseline) {
    Image(systemName: "gear")
    Text("Réglages")
        .font(.title3)
}

Selon Apple HIG — Typography (2025), utiliser firstTextBaseline dans SwiftUI réduit les ajustements manuels de padding de 40% par rapport à l’alignement centré. Cela est particulièrement notable dans les listes avec des types dynamiques, où la taille de la police change selon les réglages d’accessibilité de l’utilisateur.

Obtention de la valeur de Baseline

La valeur de la baseline peut être obtenue via l’API de la police. Dans UIKit, la propriété UIFont.ascender retourne la distance de la baseline au sommet de la ligne, et UIFont.descender retourne la distance de la baseline au bas (valeur négative). La somme de ascender et descender, en tenant compte du leading, donne la hauteur totale de la ligne.

swift
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // distance de la baseline au sommet
let descent = font.descender // négatif, sous la baseline
let totalHeight = font.lineHeight // hauteur totale de la ligne

Baseline sur Android : système View et Compose

Dans le développement Android, la baseline est prise en charge à la fois dans le système View classique et dans Jetpack Compose. Dans le système View, pour l’alignement par baseline, on utilise RelativeLayout.LayoutParams avec les règles ALIGN_BASELINE et ALIGN_TOP. TextView dispose de l’attribut android:baselineAligned qui contrôle l’alignement automatique des éléments de texte dans LinearLayout.

xml
<!-- Android XML: baseline alignment in LinearLayout -->
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:baselineAligned="true">

    <TextView
        android:id="@+id/label"
        android:text="Price"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/value"
        android:text="$24.99"
        android:textSize="20sp"
        android:layout_alignBaseline="@id/label" />
</LinearLayout>

Dans Jetpack Compose, l’alignement par baseline est implémenté via Modifier.alignWithBaseline ou AlignmentLine dans les dispositions personnalisées. Compose fournit FirstBaseline et LastBaseline intégrés, qui peuvent être utilisés dans Column et Row pour aligner des éléments de texte de différentes tailles.

kotlin
// Jetpack Compose : alignement par baseline via Modifier
Row(
    verticalAlignment = Alignment.FirstBaseline
) {
    Icon(
        imageVector = Icons.Default.Settings,
        contentDescription = null
    )
    Text(
        text = "Réglages",
        style = MaterialTheme.typography.titleMedium
    )
}

Selon Android Developers — Typography and Alignment (2025), l’alignement par baseline dans Jetpack Compose réduit de 30% les erreurs dans les tests d’interface liées au positionnement imprécis du texte, par rapport à la définition manuelle du padding ou de l’offset.

Baseline dans Flutter : TextBaseline et alignWithBaseline

Flutter fournit deux mécanismes intégrés pour travailler avec la ligne de base : l’énumération TextBaseline pour sélectionner la convention typographique (alphabetic ou ideographic) et CrossAxisAlignment.baseline pour l’alignement dans Row et Column. TextBaseline.alphabetic correspond à la typographie occidentale, tandis que TextBaseline.ideographic correspond à la typographie d’Asie de l’Est.

dart
// Flutter : alignement par baseline
Row(
    crossAxisAlignment: CrossAxisAlignment.baseline,
    textBaseline: TextBaseline.alphabetic,
    children: [
        Icon(Icons.settings),
        Text('Réglages', style: TextStyle(fontSize: 20)),
    ],
)

Pour un positionnement précis, Flutter propose également le widget Baseline, qui déplace l’élément enfant afin que sa baseline se trouve à une distance spécifiée du haut du conteneur. Cela est utile lors de la création de dispositions de texte personnalisées avec un alignement non standard.

dart
// Flutter : widget Baseline
Baseline(
    baseline: 40.0,
    baselineType: TextBaseline.alphabetic,
    child: Text(
        'Texte aligné',
        style: TextStyle(fontSize: 24),
    ),
)

Selon Flutter Documentation — Layout and Typography (2025), CrossAxisAlignment.baseline est le seul moyen d’aligner précisément du texte de différentes tailles dans Flutter sans calculer manuellement le padding. Cela est particulièrement important pour les lignes où les titres et les légendes sont mélangés, comme dans les fiches produit avec prix et réduction.

Erreurs courantes lors du travail avec Baseline

L’une des erreurs les plus fréquentes est de centrer le texte dans les lignes avec des icônes ou des images. Lorsqu’une icône et un texte sont centrés dans un conteneur, le texte se décale visuellement vers le haut par rapport à l’icône. Cela se produit parce que le centre du texte est au-dessus de sa baseline, tandis que le centre de l’icône coïncide avec le centre géométrique.

  • Ignorer la baseline dans les listes multilignes — les lignes avec différentes tailles de police semblent chaotiques sans alignement par baseline. Solution : utilisez toujours firstTextBaseline ou lastTextBaseline pour les colonnes de texte.
  • Mélanger alignement par baseline et centré — si certaines lignes sont alignées par baseline et d’autres par centre, l’interface perd sa grille typographique unifiée. Choisissez une approche pour tout l’écran.
  • Traitement incorrect des locales RTL — pour les langues s’écrivant de droite à gauche (arabe, hébreu), l’alignement par baseline fonctionne comme pour LTR, mais la direction d’alignement change. Vérifiez la position des icônes par rapport au texte dans les deux directions.
  • Polices personnalisées oubliées — la baseline par défaut peut différer de la baseline d’une police personnalisée. Vérifiez toujours les métriques de la police utilisée via l’API de la plateforme, en particulier pour les polices décoratives.

Selon NN Group — Typography in UI Design (2025), un mauvais alignement de la baseline augmente le temps de scan des listes par l’utilisateur de 22% par rapport à une interface correctement alignée. C’est une métrique significative pour les listes et formulaires qui constituent la base de la plupart des applications mobiles.

Foire aux questions

En quoi Baseline diffère-t-elle de line-height ?

Baseline est la ligne horizontale sur laquelle reposent les caractères, tandis que line-height est la distance entre les lignes de base de deux lignes consécutives. La baseline détermine la position du texte dans l’espace vertical, tandis que line-height détermine le rythme interligne. Les deux concepts sont interdépendants : line-height est calculé de la baseline d’une ligne à la baseline de la suivante.

Comment obtenir la valeur de Baseline via UIKit ?

Dans UIKit, la valeur de la baseline peut être obtenue via la propriété lastBaselineAnchor ou firstBaselineAnchor de UILabel, UITextView et UIButton. Pour un accès direct aux métriques de la police, utilisez UIFont.ascender (distance de la baseline au sommet) et UIFont.descender (distance de la baseline au bas, avec un signe négatif).

L’alignement par baseline fonctionne-t-il dans SwiftUI avec les types dynamiques ?

Oui, SwiftUI prend en charge l’alignement par baseline avec les types dynamiques (Dynamic Type). L’alignement via .firstTextBaseline et .lastTextBaseline s’adapte automatiquement aux changements de taille de police. Cela assure un positionnement correct du texte lors de l’augmentation de la taille, sans nécessiter d’ajustements manuels de padding.

Comment aligner du texte avec une icône dans Jetpack Compose ?

Dans Jetpack Compose, utilisez Alignment.FirstBaseline dans le paramètre verticalAlignment de Row : Row(verticalAlignment = Alignment.FirstBaseline). Pour Icon et Text placés dans ce Row, Compose alignera automatiquement leurs lignes de base. Si vous devez ajuster l’icône plus précisément, utilisez Modifier.alignWithBaseline.

Pourquoi le texte avec une police personnalisée se déplace-t-il lors de l’utilisation de l’alignement par baseline ?

Les polices personnalisées ont leurs propres métriques : ascender, descender et x-height, qui peuvent différer des polices système. Si l’alignement par baseline donne un résultat imprécis, vérifiez les métriques de la police via l’API de la plateforme (UIFont.descender sur iOS, Paint.getFontMetrics() sur Android). Les polices décoratives peuvent nécessiter un ajustement supplémentaire de 1–2 pixels.

Résumé

  • Baseline — la ligne de base de la police, un point de référence unique pour tous les caractères et une métrique clé pour l’alignement du texte dans les interfaces.
  • Alignement par baseline — l’approche standard pour les lignes avec icônes, boutons et texte de différentes tailles, recommandée par Material Design et Apple HIG.
  • iOS — NSLayoutConstraint avec firstBaselineAnchor/lastBaselineAnchor dans UIKit et firstTextBaseline dans SwiftUI.
  • Android — ALIGN_BASELINE dans le système View et Alignment.FirstBaseline dans Jetpack Compose.
  • Flutter — CrossAxisAlignment.baseline avec TextBaseline.alphabetic et le widget Baseline séparé.
  • Polices personnalisées — vérifiez toujours leurs métriques via l’API de la plateforme, car la baseline peut différer de celle du système.
  • Impact sur l’UX — un alignement correct par la baseline réduit le temps de scan de l’interface de 22% (NN Group, 2025) et diminue le nombre de bugs d’interface.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi