Skip to content

Refine the scope and decision #6799

Description

@yunjungyeh

Refine the scope of the mobile-density line-height change and capture the resulting discussion and decisions in this ticket, so the parent work can proceed with an agreed direction.

Context
Salt typography targets a 1.3 line height multiplier, but exact multiplication often produces decimals (e.g. 16*1.3=20.8), so values were rounded to whole pixels. Sometimes down (Touch density: 20) and sometimes up (Mobile density: 21). Ideally we'd remove fixed values and derive line height globally as 1.3em of font size. Mobile density is the only one with an odd body line height (21 px), causing 1px height mismatches in Figma (Table, Banner, Menu etc.).

Decision

  • We keep fixed line height values for now: because current values are rounded, switching to exact 1.3em would visibly change text and component heights across whole screens as a breaking change visually. (Investigate replacing lineHeight values with universal rem value #4806)
  • Fix the mobile inconsistency by changing body line height 21 → 20 (Update LineHeight to 20 in Mobile Density Update LineHeight to 20 in Mobile Density #6796)

Consequences
Positive

  • No large scale breaking change for consumers teams, the em-based shift is deferred to v2.
  • Mobile body aligns with other densities, resolving the 1px mismatches.
    Negative / Trade-offs
  • Line height 21 → 20 change is visible — body copy becomes slightly more compact (1 px per line) and Figma and code need to update together. 
  • Line height values must be maintained per density rather than derived from one rule.

Compliance
New type styles should target 1.3 multiplier and round to an even whole-pixel value where possible, to avoid odd-number rendering issues.

Notes
@joshwooding investigated the em-based approach (in 2024 #4224) and confirmed the visual impact was too large to ship without a major version. 
The mobile line height issue surfaced while @yunjungyeh was working on Table in July 2026. @yunjungyeh and @pseys discussed the context.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Task.

    Projects

    Status
    Need Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions