[BUG] Code-font ligatures render `<=`/`>=` as `≤`/`≥` in inline code (mobile app) — masks exact tokens

Resolved 💬 1 comment Opened Jun 3, 2026 by occamsshavingkit Closed Jun 6, 2026

Summary

In the Claude mobile app, the code font applies programming-style ligatures that visually merge the ASCII operator pair <= into a single glyph (and >= into ). This happens inside inline-code and code-block spans, where exact characters are precisely what the user is reasoning about.

The underlying text is correct ASCII (<, =); only the rendering is transformed. But because the glyph is indistinguishable from U+2264 , it actively causes misunderstanding when the literal two-character token is what matters.

Where it happens

  • Surface: Claude mobile app, assistant-message rendering (markdown).
  • Affected spans include inline code (backticks). Ligature fires on glyph adjacency, so quoting/backticking the pair does not prevent it.

Repro

  1. Have the assistant emit, in inline code, the literal pair <= or >= (e.g. ` <=0 , >=0 `).
  2. View the message in the mobile app.

Expected: renders as the two ASCII characters <=0.
Actual: renders as ≤0 (a single ≤ glyph + 0). Likewise >=0≥0.

Other operator-ish sequences in the same line (==0, <>0, >0, <0) render correctly — only the pairs that have ligature glyphs in the bundled code font (<=, >=) are affected.

Why it matters

<= (two ASCII chars, U+003C U+003D) and (U+2264) are different tokens. In any context where users copy/paste, or reason about exact syntax — code, config, DSLs, programming-language operators — silently re-glyphing the operator is a correctness hazard, not just cosmetic. In my case the literal <=0 is a token in a language grammar; the ligature made it impossible to tell from the rendered text whether the assistant meant ASCII or the Unicode symbol, and the assistant's own clarification ("it's the literal <=, not ") also rendered as , defeating the clarification.

Suggested fix

Disable code-font ligatures (or use a no-ligature font / font-variant-ligatures: none / calt 0) inside inline-code and code-block spans. Optionally make ligatures an opt-in setting for prose, but code spans should preserve exact glyphs by default.

Environment

  • Claude mobile app (reproduced viewing a Claude Code session).
  • The same text is byte-correct ASCII at the source; this is purely a display-layer ligature.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗