How to Inspect and Control CSS font-variant-numeric in Safari Web Inspector

In financial web applications, analytical dashboards, data tables, and e-commerce checkouts, presenting numerical data clearly is just as critical as visual styling. By default, most modern proportional fonts render numbers with varying glyph widths—meaning the digit “1” is significantly narrower than the digit “8”. In financial tables and accounting ledgers, proportional numbers cause decimal points to drift and columns to misalign, making rapid visual comparison frustrating for users. The CSS Fonts Module Level 3 introduces font-variant-numeric, providing declarative control over OpenType numeric figure styles. WebKit in Safari includes full OpenType typography support and interactive font controls within Safari Web Inspector, allowing front-end engineers to audit tabular numbers, slashed zeros, and stacked fractions with typographic precision.

Understanding font-variant-numeric Properties and Values

The font-variant-numeric property enables fine-grained activation of numeric OpenType feature flags (such as tnum, lnum, onum, and zero) without requiring cryptic low-level font-feature-settings syntax:

  • Figure Width (Spacing):
    • normal: Default font behaviour (typically proportional figures).
    • proportional-nums: Digits occupy variable widths proportional to their glyph shapes (best for body copy).
    • tabular-nums (OpenType tnum): Enforces equal monospaced widths across all digits (0–9), ensuring numbers align perfectly in tables and vertical columns.
  • Figure Height (Alignment):
    • lining-nums (OpenType lnum): Numbers align uniformly along the baseline and match uppercase letter cap heights.
    • oldstyle-nums (OpenType onum): Numbers feature varying ascenders (like 6 and 8) and descenders (like 3, 4, 5, 7, and 9), blending harmoniously into editorial running text.
  • Disambiguation & Formats:
    • slashed-zero (OpenType zero): Replaces the standard oval digit “0” with a slashed zero to eliminate confusion with uppercase letter “O”.
    • diagonal-fractions (OpenType frac): Formats numbers separated by a slash (e.g. 1/2) into compact stacked diagonal fractions (½).
    • stacked-fractions (OpenType afrc): Renders fractions vertically with a horizontal bar.
    • ordinal (OpenType ordn): Typesets ordinal markers (such as 1st, 2nd, 3rd) with superscript glyphs.

Implementing Declarative CSS for Financial Tables and Dashboards

To ensure numerical consistency across financial tables, combine tabular figures, lining numbers, and slashed zeros into a cohesive utility class:

/* Financial and numerical data tables */
.financial-table td,
.metric-value,
.timer-display {
    font-variant-numeric: tabular-nums lining-nums slashed-zero;
}

/* Editorial book typography with oldstyle numerals */
.prose-editorial {
    font-variant-numeric: proportional-nums oldstyle-nums;
}

/* Recipe and specification measurements */
.recipe-measurements {
    font-variant-numeric: diagonal-fractions;
}

Because multiple keywords can be combined in a single declaration, tabular-nums lining-nums slashed-zero creates clean, accounting-grade column alignment without altering Latin letterforms.

Enabling Safari Web Inspector and Accessing Font Controls

To inspect OpenType typographic rendering in Safari:

  • Launch Safari on macOS.
  • Navigate to Safari > Settings > Advanced.
  • Tick the checkbox labelled Show features for web developers.
  • Right-click your numerical table or metric card and select Inspect Element.

Auditing Computed Numeric Features in Safari Web Inspector

In Web Inspector, examine how WebKit evaluates numerical typography:

  • Select the target numerical DOM node in the Elements tree.
  • Open the Styles panel on the right sidebar.
  • In the typography section of Web Inspector (or the Fonts panel), look for the OpenType Features or Numeric controls.
  • Observe how toggling Tabular Numbers dynamically inserts font-variant-numeric: tabular-nums into the CSS rule.
  • Switch to the Computed panel and verify that font-variant-numeric resolves to tabular-nums lining-nums slashed-zero.

Testing OpenType Font Support via Console

Not all fonts include complete OpenType layout tables. To test whether your active web font (such as Inter, SF Pro, Roboto, or custom brand typefaces) supports tabular numbers natively, test glyph widths programmatically in the Safari Console:

// Function to verify if tabular numbers actually produce equal widths
function testTabularSupport(fontFamily) {
    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');
    
    // Test width of "1111" vs "8888" under tabular-nums
    ctx.font = `24px ${fontFamily}`;
    ctx.canvas.style.fontVariantNumeric = 'tabular-nums';
    
    const widthOnes = ctx.measureText('1111').width;
    const widthEights = ctx.measureText('8888').width;
    
    console.log(`Testing font: ${fontFamily}`);
    console.log(`Width of 1111: ${widthOnes}px | Width of 8888: ${widthEights}px`);
    console.log(`Tabular Figures Supported: ${Math.abs(widthOnes - widthEights) < 0.01}`);
}

testTabularSupport('system-ui');

If the widths of “1111” and “8888” are identical, the font cleanly supports the OpenType tnum table in WebKit.

Fallback Strategies for Fonts Lacking OpenType Tables

If your primary branding font lacks native tabular figure glyphs, declare a robust fallback stack that gracefully cascades to system fonts with complete OpenType support:

.data-cell {
    font-family: "CustomBrandFont", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    font-variant-numeric: tabular-nums;
    /* Low-level fallback for legacy browsers */
    font-feature-settings: "tnum" 1, "lnum" 1, "zero" 1;
}

Deploying font-variant-numeric in Safari ensures numerical data renders with professional alignment, legible zeroes, and elegant typographic polish across macOS and iOS devices.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.