Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
8e886f3
Port iosMath 2026 commits to CSharpMath
Happypig375 Aug 23, 2026
c49c499
Regenerate QuarticSolutions rendering baselines
Happypig375 Aug 23, 2026
7517482
Fix whitespace formatting violation in LaTeXParserTest
Happypig375 Aug 23, 2026
063fead
Fix whitespace formatting in LaTeXParser and complete API list
Happypig375 Aug 23, 2026
ec12a7b
Fix whitespace formatting in RequiredArgument switch
Happypig375 Aug 23, 2026
b22fbb4
Fix Uno.Example NuGet audit failures breaking dotnet format CI
Happypig375 Aug 23, 2026
62c82b5
Exclude Uno.Example from dotnet format CI job
Happypig375 Aug 23, 2026
2b9251e
Remove Uno.Example from solution in format job instead of excluding
Happypig375 Aug 23, 2026
ec97697
Add ported symbols to PublicAPI.Unshipped and fix xUnit2013 warnings
Happypig375 Aug 23, 2026
b994e2e
Port iosMath b2b19a8 and 76fd773 follow-ups; regenerate goldens
Happypig375 Aug 24, 2026
4ada283
Add AddMacro and MacroDefinitionForCommand to PublicAPI.Unshipped
Happypig375 Aug 24, 2026
3d89af3
Fix ruled-array column alignment and pin it with a golden test
Happypig375 Aug 24, 2026
6448b73
Error on generalized fraction commands in one-char script slots
Happypig375 Aug 24, 2026
8463e7c
feat: complete iosMath 2026 port and reconcile master
Happypig375 Aug 27, 2026
f8fc599
fix: update ink-aware rendering baselines and API metadata
Happypig375 Aug 27, 2026
fe8ab56
fix: address Copilot layout review
Happypig375 Aug 27, 2026
957aedd
fix: harden iosmath port semantics and assemblies
Happypig375 Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/Format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,14 @@ jobs:
- uses: actions/checkout@v7
with:
submodules: recursive
- name: Remove Uno.Example from solution
# CSharpMath.Uno.Example must be removed rather than excluded: dotnet format's
# --exclude only skips formatting analysis, but the project is still restored
# and its Uno.Resizetizer splash-screen task crashes inside dotnet format due
# to a SkiaSharp assembly-version conflict (the tool hosts SkiaSharp 2.88
# while Uno.Resizetizer requires 3.x / native libSkiaSharp 116.0).
shell: bash
run:
dotnet sln CSharpMath.slnx remove CSharpMath.Uno.Example/CSharpMath.Uno.Example.csproj
- name: Check formatting (Fix with "dotnet format --exclude Typography" at repository root)
run: dotnet format --exclude Typography --verify-no-changes --verbosity diagnostic
46 changes: 25 additions & 21 deletions CSharpMath.Core.Example/BackEnd/JsonMathTable.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using CSharpMath.Atom;
using CSharpMath.Display;
using CSharpMath.Display.FrontEnd;
using Newtonsoft.Json.Linq;
Expand Down Expand Up @@ -138,27 +139,22 @@ public override float RadicalExtraAscender(TFont font) =>
private const string _extenderKey = "extender";
private const string _glyphKey = "glyph";
public override IEnumerable<GlyphPart<TGlyph>>? GetVerticalGlyphAssembly(TGlyph rawGlyph, TFont font) =>
_vAssemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts
? parts.Select(partInfo =>
new GlyphPart<TGlyph>(
GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value<string>()!),
FontUnitsToPt(font, partInfo[_advanceKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value<int>()),
partInfo[_extenderKey]!.Value<bool>()))
// Should have been defined, but let's return null
: null;
GetAssembly(_vAssemblyTable, rawGlyph, font);
public override IEnumerable<GlyphPart<TGlyph>>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) =>
_hAssemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts
? parts.Select(partInfo =>
new GlyphPart<TGlyph>(
GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value<string>()!),
FontUnitsToPt(font, partInfo[_advanceKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value<int>()),
partInfo[_extenderKey]!.Value<bool>()))
// Should have been defined, but let's return null
: null;
GetAssembly(_hAssemblyTable, rawGlyph, font);
private IEnumerable<GlyphPart<TGlyph>>? GetAssembly(JObject table, TGlyph rawGlyph, TFont font) {
if (table[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is not JArray parts)
return null; // Should have been defined, but let's return null
var assembly = parts.Select(partInfo => new GlyphPart<TGlyph>(
GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value<string>()!),
FontUnitsToPt(font, partInfo[_advanceKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value<int>()),
FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value<int>()),
partInfo[_extenderKey]!.Value<bool>())).ToList();
if (assembly.Any(part => part.IsExtender && !(part.FullAdvance > 0)))
throw new InvalidCodePathException("Glyph assembly extenders must have a positive full advance.");
return assembly;
}
public override float MinConnectorOverlap(TFont font) => ConstantFromTable(font, nameof(MinConnectorOverlap));

private const string VerticalVariantsKey = "v_variants";
Expand Down Expand Up @@ -205,6 +201,14 @@ public override float LowerLimitGapMin(TFont font) =>

public override float LowerLimitBaselineDropMin(TFont font) =>
ConstantFromTable(font, nameof(LowerLimitBaselineDropMin));
public override float StretchStackTopShiftUp(TFont font) =>
ConstantFromTable(font, nameof(StretchStackTopShiftUp));
public override float StretchStackBottomShiftDown(TFont font) =>
ConstantFromTable(font, nameof(StretchStackBottomShiftDown));
public override float StretchStackGapAboveMin(TFont font) =>
ConstantFromTable(font, nameof(StretchStackGapAboveMin));
public override float StretchStackGapBelowMin(TFont font) =>
ConstantFromTable(font, nameof(StretchStackGapBelowMin));
#region overline/underline
public override float UnderbarVerticalGap(TFont font) =>
ConstantFromTable(font, nameof(UnderbarVerticalGap));
Expand All @@ -231,4 +235,4 @@ public override float GetTopAccentAdjustment(TFont font, TGlyph glyph) {
}
}
}
}
}
Loading
Loading