Skip to content

feat: support \mathrel and \joinrel - #313

Open
Happypig375 wants to merge 3 commits into
fix/issue-182-control-word-boundaryfrom
issue-310-mathrel-joinrel
Open

feat: support \mathrel and \joinrel#313
Happypig375 wants to merge 3 commits into
fix/issue-182-control-word-boundaryfrom
issue-310-mathrel-joinrel

Conversation

@Happypig375

Copy link
Copy Markdown
Collaborator

Summary

  • add structural MathRel and JoinRel atoms with canonical parse/serialize support
  • apply relation-class outer spacing while preserving enclosed layout and scripts
  • implement active-style -3mu join advance without turning it into visible space
  • measure recursive ink separately from logical advance so boundary and wrapped joins do not clip
  • keep ink bookkeeping internal and align direct/aligned drawing to the same bounds

Stack

This is intentionally based on #276 (fix/issue-182-control-word-boundary) because the new control words rely on that parser-boundary fix. The #310 change itself is commit 9826ac14.

Validation

  • Core parser/typesetter focus: 351/351
  • prior full Core run on this implementation: 1543/1543
  • focused existing Rendering measure/forms: 11/11
  • inherited SkiaSharp join-rel raster cases: 4/4
  • inherited Avalonia join-rel raster cases: 4/4
  • direct tight/boundary Skia cases: 8/8
  • Core and Rendering Release builds: 0 warnings/errors
  • git diff --check

Closes #310

@Happypig375 Happypig375 added Type/Enhancement A concrete change to CSharpMath behavior or capability. Area/Parsing LaTeX tokenization, parsing, commands, and serialization. Area/Rendering Typesetting, measurement, fonts, text layout, and drawing. labels Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area/Parsing LaTeX tokenization, parsing, commands, and serialization. Area/Rendering Typesetting, measurement, fonts, text layout, and drawing. Type/Enhancement A concrete change to CSharpMath behavior or capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant