[BUG] Code-font ligatures render `<=`/`>=` as `≤`/`≥` in inline code (mobile app) — masks exact tokens
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
- Have the assistant emit, in inline code, the literal pair
<=or>=(e.g. `<=0,>=0`). - 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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗