From 2bc6e7e73836d707457578c8931793e16bf196a5 Mon Sep 17 00:00:00 2001 From: hflex Date: Mon, 26 Jan 2026 23:56:48 +0400 Subject: [PATCH 01/29] updated gitignore to ignore .vscode folder --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8544c14b2..dc4eb3d0d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ CSharpMath.Xaml.Tests.NuGet/Test.*.png /.benchmarkresults /.nupkgs /.testcoverage - +/.vscode ## END Specifically added for CSharpMath ## Ignore Visual Studio temporary files, build results, and From ce02fc8646056728e150c3f07847edf19d952308 Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 27 Jan 2026 00:25:38 +0400 Subject: [PATCH 02/29] Created abstraction atom called UnderAnnotation for under annotations like underbrace --- CSharpMath/Atom/Atoms/UnderAnnotation.cs | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CSharpMath/Atom/Atoms/UnderAnnotation.cs diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs new file mode 100644 index 000000000..4f4357c99 --- /dev/null +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -0,0 +1,30 @@ +namespace CSharpMath.Atom.Atoms; +/// +/// Abstract name of under annotations implementation \underbrace, \underbracket etc.. +/// +public sealed class UnderAnnotation : MathAtom, IMathListContainer { + public UnderAnnotation(string value, MathList innerList, MathList? underList) : base(value) { + InnerList = innerList; + UnderList = underList; + } + + public MathList InnerList { get; } + public MathList? UnderList { get; } + + System.Collections.Generic.IEnumerable IMathListContainer.InnerLists => + new[] { InnerList }; + public new UnderAnnotation Clone(bool finalize) => (UnderAnnotation)base.Clone(finalize); + protected override MathAtom CloneInside(bool finalize) => + new UnderAnnotation(Nucleus, InnerList.Clone(finalize), UnderList?.Clone(finalize)); + public override bool ScriptsAllowed => true; + //depending on nucleus, DebugString will change to \underbrace , \underbracket etc.. + public override string DebugString => + new System.Text.StringBuilder(@"\underbrace") + .AppendInBracesOrLiteralNull(InnerList.DebugString) + .ToString(); + public bool EqualsUnderAnnotation(UnderAnnotation other) => + EqualsAtom(other) && InnerList.EqualsList(other.InnerList); + public override bool Equals(object obj) => + obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; + public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); +} \ No newline at end of file From d2eabcb3b5ce0acfe2bc93e7464e7909da9888bb Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 27 Jan 2026 02:51:28 +0400 Subject: [PATCH 03/29] Added basic latex parser for under annotation --- CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs | 28 ++++++++++++++ CSharpMath/Atom/Atoms/UnderAnnotation.cs | 2 +- CSharpMath/Atom/LaTeXParser.cs | 38 ++++++++++--------- CSharpMath/Atom/LaTeXSettings.cs | 3 ++ 4 files changed, 52 insertions(+), 19 deletions(-) diff --git a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs index bb66f9d3a..33bc17535 100644 --- a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs +++ b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs @@ -408,6 +408,34 @@ public void TestUnderline() { Assert.Equal(@"\underline{2}", LaTeXParser.MathListToLaTeX(list).ToString()); } + /// + /// Test underbrace without under + /// + [Fact] + public void TestUnderbrace() { + var list = ParseLaTeX(@"\underbrace{x}"); + + Assert.Collection(list, + CheckAtom("\u23df", underBrace => + Assert.Collection(underBrace.InnerList, CheckAtom("x")) + ) + ); + } + + /// + /// Test underbrace with under (not implemented yet) + /// + [Fact] + public void TestUnderbraceWithUnder() { + var list = ParseLaTeX(@"\underbrace{x}_{y}"); + + Assert.Collection(list, + CheckAtom("\u23df", underBrace => + Assert.Collection(underBrace.InnerList, CheckAtom("x")) + ) + ); + } + [Fact] public void TestAccent() { var list = ParseLaTeX(@"\bar x"); diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index 4f4357c99..d03deac3f 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -3,7 +3,7 @@ namespace CSharpMath.Atom.Atoms; /// Abstract name of under annotations implementation \underbrace, \underbracket etc.. /// public sealed class UnderAnnotation : MathAtom, IMathListContainer { - public UnderAnnotation(string value, MathList innerList, MathList? underList) : base(value) { + public UnderAnnotation(string value, MathList innerList, MathList? underList = null) : base(value) { InnerList = innerList; UnderList = underList; } diff --git a/CSharpMath/Atom/LaTeXParser.cs b/CSharpMath/Atom/LaTeXParser.cs index 74a4b288e..bd51a330a 100644 --- a/CSharpMath/Atom/LaTeXParser.cs +++ b/CSharpMath/Atom/LaTeXParser.cs @@ -77,7 +77,7 @@ private Result BuildInternal(bool oneCharOnly, char stopChar = '\0', M if (error != null) return error; switch (handlerResult) { - case ({ } /* dummy */, { } atoms): // Atoms producer (pre-styled) + case ( { } /* dummy */, { } atoms): // Atoms producer (pre-styled) r.Append(atoms); prevAtom = r.Atoms.LastOrDefault(); if (oneCharOnly) @@ -87,7 +87,7 @@ private Result BuildInternal(bool oneCharOnly, char stopChar = '\0', M return @return; case (null, null): // Atom modifier continue; - case ({ } resultAtom, null): // Atom producer + case ( { } resultAtom, null): // Atom producer atom = resultAtom; break; } @@ -98,8 +98,7 @@ private Result BuildInternal(bool oneCharOnly, char stopChar = '\0', M return r; // we consumed our character. } } - return stopChar switch - { + return stopChar switch { '\0' => r, '}' => "Missing closing brace", _ => "Expected character not found: " + stopChar.ToStringInvariant(), @@ -329,8 +328,7 @@ public Result ReadTable cell.Insert(0, style); } } - return delimiters switch - { + return delimiters switch { (var left, var right) => new Inner( new Boundary(left), new MathList(table), @@ -346,8 +344,7 @@ public Result ReadTable for (int i = 0, j = 0; i < arrayAlignments.Length && j < table.NColumns; i++, j++) { // TODO: vertical lines in array currently unsupported while (arrayAlignments[i] == '|') i++; - table.SetAlignment(arrayAlignments[i] switch - { + table.SetAlignment(arrayAlignments[i] switch { 'l' => ColumnAlignment.Left, 'c' => ColumnAlignment.Center, 'r' => ColumnAlignment.Right, @@ -520,12 +517,11 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, builder.Append('{'); MathListToLaTeX(fraction.Numerator, builder, currentFontStyle); builder.Append(@" \").Append( - (fraction.LeftDelimiter, fraction.RightDelimiter) switch - { - ({ Nucleus: null }, { Nucleus: null }) => "atop", - ({ Nucleus: "(" }, { Nucleus: ")" }) => "choose", - ({ Nucleus: "{" }, { Nucleus: "}" }) => "brace", - ({ Nucleus: "[" }, { Nucleus: "]" }) => "brack", + (fraction.LeftDelimiter, fraction.RightDelimiter) switch { + ( { Nucleus: null }, { Nucleus: null }) => "atop", + ( { Nucleus: "(" }, { Nucleus: ")" }) => "choose", + ( { Nucleus: "{" }, { Nucleus: "}" }) => "brace", + ( { Nucleus: "[" }, { Nucleus: "]" }) => "brack", (var left, var right) => $"atopwithdelims{BoundaryToLaTeX(left)}{BoundaryToLaTeX(right)}", }).Append(' '); MathListToLaTeX(fraction.Denominator, builder, currentFontStyle); @@ -568,8 +564,7 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, if (table.Environment == "array") { builder.Append('{'); foreach (var alignment in table.Alignments) - builder.Append(alignment switch - { + builder.Append(alignment switch { ColumnAlignment.Left => 'l', ColumnAlignment.Right => 'r', _ => 'c' @@ -586,8 +581,7 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, // remove the first atom. cell = cell.Slice(1, cell.Count - 1); } - if (table.Environment switch - { + if (table.Environment switch { "eqalign" => true, "aligned" => true, "split" => true, @@ -624,6 +618,14 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, builder.Append(@"\underline{"); MathListToLaTeX(under.InnerList, builder, currentFontStyle); builder.Append('}'); + break; + case UnderAnnotation underAnotation: + if (MathAtomToLaTeX(underAnotation, builder, out var underAnnotationCommand)) { + builder.Append(@$"\{underAnnotationCommand}{{"); + MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); + builder.Append('}'); + } + break; case Accent accent: MathAtomToLaTeX(accent, builder, out _); diff --git a/CSharpMath/Atom/LaTeXSettings.cs b/CSharpMath/Atom/LaTeXSettings.cs index 42b44347e..d4dcd3468 100644 --- a/CSharpMath/Atom/LaTeXSettings.cs +++ b/CSharpMath/Atom/LaTeXSettings.cs @@ -160,6 +160,9 @@ public static class LaTeXSettings { parser.ReadArgument().Bind(mathList => Ok(new Overline(mathList))) }, { @"\underline", (parser, accumulate, stopChar) => parser.ReadArgument().Bind(mathList => Ok(new Underline(mathList))) }, + { @"\underbrace", (parser, accumulate, stopChar) => + parser.ReadArgument().Bind(mathList => Ok(new UnderAnnotation("\u23df", mathList)))}, + //Adding under element should happen when adding sub script later or here? { @"\begin", (parser, accumulate, stopChar) => parser.ReadEnvironment().Bind(env => parser.ReadTable(env, null, false, stopChar)).Bind(Ok) }, From 1a6629be3b5f31d82edad964ee1957580e2336a0 Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 27 Jan 2026 00:25:38 +0400 Subject: [PATCH 04/29] Created abstraction atom called UnderAnnotation for under annotations like underbrace --- CSharpMath/Atom/Atoms/UnderAnnotation.cs | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CSharpMath/Atom/Atoms/UnderAnnotation.cs diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs new file mode 100644 index 000000000..4f4357c99 --- /dev/null +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -0,0 +1,30 @@ +namespace CSharpMath.Atom.Atoms; +/// +/// Abstract name of under annotations implementation \underbrace, \underbracket etc.. +/// +public sealed class UnderAnnotation : MathAtom, IMathListContainer { + public UnderAnnotation(string value, MathList innerList, MathList? underList) : base(value) { + InnerList = innerList; + UnderList = underList; + } + + public MathList InnerList { get; } + public MathList? UnderList { get; } + + System.Collections.Generic.IEnumerable IMathListContainer.InnerLists => + new[] { InnerList }; + public new UnderAnnotation Clone(bool finalize) => (UnderAnnotation)base.Clone(finalize); + protected override MathAtom CloneInside(bool finalize) => + new UnderAnnotation(Nucleus, InnerList.Clone(finalize), UnderList?.Clone(finalize)); + public override bool ScriptsAllowed => true; + //depending on nucleus, DebugString will change to \underbrace , \underbracket etc.. + public override string DebugString => + new System.Text.StringBuilder(@"\underbrace") + .AppendInBracesOrLiteralNull(InnerList.DebugString) + .ToString(); + public bool EqualsUnderAnnotation(UnderAnnotation other) => + EqualsAtom(other) && InnerList.EqualsList(other.InnerList); + public override bool Equals(object obj) => + obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; + public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); +} \ No newline at end of file From ddad85d4085d9de066f28652d1942c137f39553b Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 27 Jan 2026 02:51:28 +0400 Subject: [PATCH 05/29] Added basic latex parser for under annotation --- CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs | 28 +++++++++++++++++++ CSharpMath/Atom/Atoms/UnderAnnotation.cs | 2 +- CSharpMath/Atom/LaTeXParser.cs | 8 ++++++ CSharpMath/Atom/LaTeXSettings.cs | 3 ++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs index db9f31eef..6a52dc0b4 100644 --- a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs +++ b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs @@ -408,6 +408,34 @@ public void TestUnderline() { Assert.Equal(@"\underline{2}", LaTeXParser.MathListToLaTeX(list).ToString()); } + /// + /// Test underbrace without under + /// + [Fact] + public void TestUnderbrace() { + var list = ParseLaTeX(@"\underbrace{x}"); + + Assert.Collection(list, + CheckAtom("\u23df", underBrace => + Assert.Collection(underBrace.InnerList, CheckAtom("x")) + ) + ); + } + + /// + /// Test underbrace with under (not implemented yet) + /// + [Fact] + public void TestUnderbraceWithUnder() { + var list = ParseLaTeX(@"\underbrace{x}_{y}"); + + Assert.Collection(list, + CheckAtom("\u23df", underBrace => + Assert.Collection(underBrace.InnerList, CheckAtom("x")) + ) + ); + } + [Fact] public void TestAccent() { var list = ParseLaTeX(@"\bar x"); diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index 4f4357c99..d03deac3f 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -3,7 +3,7 @@ namespace CSharpMath.Atom.Atoms; /// Abstract name of under annotations implementation \underbrace, \underbracket etc.. /// public sealed class UnderAnnotation : MathAtom, IMathListContainer { - public UnderAnnotation(string value, MathList innerList, MathList? underList) : base(value) { + public UnderAnnotation(string value, MathList innerList, MathList? underList = null) : base(value) { InnerList = innerList; UnderList = underList; } diff --git a/CSharpMath/Atom/LaTeXParser.cs b/CSharpMath/Atom/LaTeXParser.cs index 2c74b71cd..dbc19a3c3 100644 --- a/CSharpMath/Atom/LaTeXParser.cs +++ b/CSharpMath/Atom/LaTeXParser.cs @@ -618,6 +618,14 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, builder.Append(@"\underline{"); MathListToLaTeX(under.InnerList, builder, currentFontStyle); builder.Append('}'); + break; + case UnderAnnotation underAnotation: + if (MathAtomToLaTeX(underAnotation, builder, out var underAnnotationCommand)) { + builder.Append(@$"\{underAnnotationCommand}{{"); + MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); + builder.Append('}'); + } + break; case Accent accent: MathAtomToLaTeX(accent, builder, out _); diff --git a/CSharpMath/Atom/LaTeXSettings.cs b/CSharpMath/Atom/LaTeXSettings.cs index aabd17ba0..881372969 100644 --- a/CSharpMath/Atom/LaTeXSettings.cs +++ b/CSharpMath/Atom/LaTeXSettings.cs @@ -160,6 +160,9 @@ public static class LaTeXSettings { parser.ReadArgument().Bind(mathList => Ok(new Overline(mathList))) }, { @"\underline", (parser, accumulate, stopChar) => parser.ReadArgument().Bind(mathList => Ok(new Underline(mathList))) }, + { @"\underbrace", (parser, accumulate, stopChar) => + parser.ReadArgument().Bind(mathList => Ok(new UnderAnnotation("\u23df", mathList)))}, + //Adding under element should happen when adding sub script later or here? { @"\begin", (parser, accumulate, stopChar) => parser.ReadEnvironment().Bind(env => parser.ReadTable(env, null, false, stopChar)).Bind(Ok) }, From 92a5fb3b808a357fb0ced68fbfbd22b11e5407de Mon Sep 17 00:00:00 2001 From: hflex Date: Wed, 28 Jan 2026 23:41:04 +0400 Subject: [PATCH 06/29] commented failing test --- CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs index 6a52dc0b4..e693b170a 100644 --- a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs +++ b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs @@ -425,16 +425,16 @@ public void TestUnderbrace() { /// /// Test underbrace with under (not implemented yet) /// - [Fact] - public void TestUnderbraceWithUnder() { - var list = ParseLaTeX(@"\underbrace{x}_{y}"); - - Assert.Collection(list, - CheckAtom("\u23df", underBrace => - Assert.Collection(underBrace.InnerList, CheckAtom("x")) - ) - ); - } + // [Fact] + // public void TestUnderbraceWithUnder() { + // var list = ParseLaTeX(@"\underbrace{x}_{y}"); + + // Assert.Collection(list, + // CheckAtom("\u23df", underBrace => + // Assert.Collection(underBrace.InnerList, CheckAtom("x")) + // ) + // ); + // } [Fact] public void TestAccent() { From 9227ea63e037be346ef009dc8af15adc4d7638bb Mon Sep 17 00:00:00 2001 From: hflex Date: Sun, 1 Feb 2026 17:09:04 +0400 Subject: [PATCH 07/29] basic display of underbrace --- .../BackEnd/JsonMathTable.cs | 2 + CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs | 5 +- CSharpMath.Maui.Example/ExamplesPage.xaml.cs | 29 +++- CSharpMath.Rendering/BackEnd/MathTable.cs | 12 ++ CSharpMath/Atom/Atoms/UnderAnnotation.cs | 2 +- CSharpMath/Atom/LaTeXParser.cs | 10 +- CSharpMath/Atom/LaTeXSettings.cs | 6 +- .../HorizontalGlyphConstructionDisplay.cs | 55 ++++++++ .../Displays/UnderAnnotationDisplay.cs | 48 +++++++ CSharpMath/Display/FrontEnd/FontMathTable.cs | 1 + CSharpMath/Display/Typesetter.cs | 126 ++++++++++++++++++ 11 files changed, 285 insertions(+), 11 deletions(-) create mode 100644 CSharpMath/Display/Displays/HorizontalGlyphConstructionDisplay.cs create mode 100644 CSharpMath/Display/Displays/UnderAnnotationDisplay.cs diff --git a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs index 38ce76c83..cd565008c 100644 --- a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs +++ b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs @@ -218,5 +218,7 @@ public override float GetTopAccentAdjustment(TFont font, TGlyph glyph) { return Total / 2; } } + + public override IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) => throw new System.NotImplementedException(); } } \ No newline at end of file diff --git a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs index e693b170a..dfb53dbc4 100644 --- a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs +++ b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs @@ -413,13 +413,16 @@ public void TestUnderline() { /// [Fact] public void TestUnderbrace() { - var list = ParseLaTeX(@"\underbrace{x}"); + var latexString = @"\underbrace {x}"; + var list = ParseLaTeX(latexString); Assert.Collection(list, CheckAtom("\u23df", underBrace => Assert.Collection(underBrace.InnerList, CheckAtom("x")) ) ); + + Assert.Equal(latexString, LaTeXParser.MathListToLaTeX(list).ToString()); } /// diff --git a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs index 94bf8fdd8..040f7a3cd 100644 --- a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs +++ b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs @@ -6,9 +6,12 @@ namespace CSharpMath.Maui.Example { public partial class ExamplesPage : ContentPage { static Dictionary demoLabels { get; } = new(); static Dictionary labels { get; } = new(); + static Dictionary testLabels { get; } = new(); public ExamplesPage() { InitializeComponent(); - var mathViews = demoLabels.Concat(labels).Select(p => p.Value); + //TODO: uncomment, before merging this branch with master + // var mathViews = demoLabels.Concat(labels).Select(p => p.Value); + var mathViews = testLabels.Select(p => p.Value); foreach (var view in mathViews) { view.ErrorFontSize = view.FontSize * 0.8f; Stack.Children.Add(view); @@ -47,6 +50,24 @@ static ExamplesPage() { // From https://github.com/kostub/iosMath/blob/master/iosMathExample/example/ViewController.m // Demo formulae + testLabels[0] = new MathView { + LaTeX = @"\underbrace{abcdefghklmnopqrst}", + HeightRequest = 112.5, + FontSize = 22.5f + }; + + testLabels[1] = new MathView { + LaTeX = @"\underbrace{abcd}", + HeightRequest = 112.5, + FontSize = 22.5f + }; + + // testLabels[2] = new MathView { + // LaTeX = @"\underbrace{\frac{abcd}{efgh} \int \limits _a^b f(x)dx}", + // HeightRequest = 112.5, + // FontSize = 22.5f + // }; + // Quadratic formula demoLabels[0] = new MathView { LaTeX = @"\text{ваш вопрос: }x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}", @@ -511,6 +532,12 @@ static ExamplesPage() { HeightRequest = 131.25, FontSize = 22.5f }; + + labels[48] = new MathView { + LaTeX = @"\underbrace{abc}", + HeightRequest = 131.25, + FontSize = 22.5f + }; } } } \ No newline at end of file diff --git a/CSharpMath.Rendering/BackEnd/MathTable.cs b/CSharpMath.Rendering/BackEnd/MathTable.cs index a22a88756..595c2913c 100644 --- a/CSharpMath.Rendering/BackEnd/MathTable.cs +++ b/CSharpMath.Rendering/BackEnd/MathTable.cs @@ -58,6 +58,18 @@ public override Glyph GetLargerGlyph(Fonts fonts, Glyph glyph) { record.EndConnectorLength * scale, record.IsExtender)); } + + public override IEnumerable>? GetHorizontalGlyphAssembly(Glyph rawGlyph, Fonts fonts) { + var scale = rawGlyph.Typeface.CalculateScaleToPixelFromPointSize(fonts.PointSize); + return + rawGlyph.Info.MathGlyphInfo?.HoriGlyphConstruction?.GlyphAsm_GlyphPartRecords.Select(record => + new GlyphPart( + new Glyph(rawGlyph.Typeface, rawGlyph.Typeface.GetGlyph(record.GlyphId)), + record.FullAdvance * scale, + record.StartConnectorLength * scale, + record.EndConnectorLength * scale, + record.IsExtender)); + } public override float LowerLimitBaselineDropMin(Fonts fonts) => ReadRecord(fonts.MathConsts.LowerLimitBaselineDropMin, fonts); public override float LowerLimitGapMin(Fonts fonts) => ReadRecord(fonts.MathConsts.LowerLimitGapMin, fonts); public override float MinConnectorOverlap(Fonts fonts) => diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index d03deac3f..d4a4af274 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -26,5 +26,5 @@ public bool EqualsUnderAnnotation(UnderAnnotation other) => EqualsAtom(other) && InnerList.EqualsList(other.InnerList); public override bool Equals(object obj) => obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; - public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); + // public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); } \ No newline at end of file diff --git a/CSharpMath/Atom/LaTeXParser.cs b/CSharpMath/Atom/LaTeXParser.cs index dbc19a3c3..924eb6d6d 100644 --- a/CSharpMath/Atom/LaTeXParser.cs +++ b/CSharpMath/Atom/LaTeXParser.cs @@ -620,12 +620,10 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, builder.Append('}'); break; case UnderAnnotation underAnotation: - if (MathAtomToLaTeX(underAnotation, builder, out var underAnnotationCommand)) { - builder.Append(@$"\{underAnnotationCommand}{{"); - MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); - builder.Append('}'); - } - + MathAtomToLaTeX(underAnotation, builder, out _); + builder.Append('{'); + MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); + builder.Append('}'); break; case Accent accent: MathAtomToLaTeX(accent, builder, out _); diff --git a/CSharpMath/Atom/LaTeXSettings.cs b/CSharpMath/Atom/LaTeXSettings.cs index 881372969..ca82d53a0 100644 --- a/CSharpMath/Atom/LaTeXSettings.cs +++ b/CSharpMath/Atom/LaTeXSettings.cs @@ -160,8 +160,8 @@ public static class LaTeXSettings { parser.ReadArgument().Bind(mathList => Ok(new Overline(mathList))) }, { @"\underline", (parser, accumulate, stopChar) => parser.ReadArgument().Bind(mathList => Ok(new Underline(mathList))) }, - { @"\underbrace", (parser, accumulate, stopChar) => - parser.ReadArgument().Bind(mathList => Ok(new UnderAnnotation("\u23df", mathList)))}, + // { @"\underbrace", (parser, accumulate, stopChar) => + // parser.ReadArgument().Bind(mathList => Ok(new UnderAnnotation("\u23df", mathList)))}, //Adding under element should happen when adding sub script later or here? { @"\begin", (parser, accumulate, stopChar) => parser.ReadEnvironment().Bind(env => @@ -433,6 +433,7 @@ public static StringBuilder ColorToString(Color color, StringBuilder sb) { Commands.Add(command, (parser, accumulate, stopChar) => atom is Accent accent ? parser.ReadArgument().Bind(accentee => Ok(new Accent(accent.Nucleus, accentee))) + : atom is UnderAnnotation underAnnotation ? parser.ReadArgument().Bind(inner => Ok(new UnderAnnotation(underAnnotation.Nucleus, inner))) : Ok(atom.Clone(false)))) { // Custom additions { @"\diameter", new Ordinary("\u2300") }, @@ -903,6 +904,7 @@ atom is Accent accent // Table 17: Some Other Constructions { @"\widehat", new Accent("\u0302") }, { @"\widetilde", new Accent("\u0303") }, + { @"\underbrace", new UnderAnnotation("\u23df", new MathList())}, // TODO: implement \overleftarrow, \overrightarrow, \overbrace, \underbrace // \overleftarrow{} // \overrightarrow{} diff --git a/CSharpMath/Display/Displays/HorizontalGlyphConstructionDisplay.cs b/CSharpMath/Display/Displays/HorizontalGlyphConstructionDisplay.cs new file mode 100644 index 000000000..99ebf2c46 --- /dev/null +++ b/CSharpMath/Display/Displays/HorizontalGlyphConstructionDisplay.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using CSharpMath.Atom; + +namespace CSharpMath.Display.Displays { + using FrontEnd; + public class HorizontalGlyphConstructionDisplay : IGlyphDisplay where TFont : IFont { + private readonly IReadOnlyList _glyphs; + private readonly IEnumerable _glyphPositions; + + public float ShiftDown { get; set; } + + readonly float _ascent; + readonly float _descent; + public float Ascent => _ascent - ShiftDown; + public float Descent => _descent + ShiftDown; + + public float Width { get; } + + public Range Range { get; set; } + + public PointF Position { get; set; } + + public void SetPosition(PointF position) => Position = position; + + public bool HasScript { get; set; } + + public HorizontalGlyphConstructionDisplay( + IReadOnlyList glyphs, IEnumerable offsets, TFont font, + float ascent, float descent, float width) { + _glyphs = glyphs; + _glyphPositions = offsets.Select(x => new PointF(x, 0)); + Font = font; + _ascent = ascent; + _descent = descent; + Width = width; + } + + public void Draw(IGraphicsContext context) { + this.DrawBackground(context); + context.SaveState(); + context.Translate(new PointF(Position.X, Position.Y - ShiftDown)); + context.SetTextPosition(new PointF()); + context.DrawGlyphsAtPoints(_glyphs, Font, _glyphPositions, TextColor); + context.RestoreState(); + } + + public TFont Font { get; } + + public Color? TextColor { get; set; } + public void SetTextColorRecursive(Color? textColor) => TextColor ??= textColor; + public Color? BackColor { get; set; } + } +} \ No newline at end of file diff --git a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs new file mode 100644 index 000000000..8b9d945ba --- /dev/null +++ b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs @@ -0,0 +1,48 @@ +using System.Drawing; +using CSharpMath.Atom; + +namespace CSharpMath.Display.Displays; + +using FrontEnd; +/// Creates underanotation display +public class UnderAnnotationDisplay : IDisplay + where TFont : IFont { + public UnderAnnotationDisplay(IDisplay inner, IDisplay? underList, IGlyphDisplay annotationGlyph, PointF position) { + Inner = inner; + UnderList = underList; + AnnotationGlyph = annotationGlyph; + _annotationGlyphHeight = AnnotationGlyph.Ascent + AnnotationGlyph.Descent; + Position = position; + } + + /// A display representing the inner list of annotation + /// Its position is relative to the parent. + public IDisplay Inner { get; } + public IDisplay? UnderList { get; } + public IGlyphDisplay AnnotationGlyph { get; } + + private readonly float _annotationGlyphHeight; + + public float Ascent => System.Math.Max(_annotationGlyphHeight, Inner.Ascent); + public float Descent => System.Math.Max(_annotationGlyphHeight, Inner.Descent) + _annotationGlyphHeight; + public float Width => Inner.Width; + public Range Range => Inner.Range; + public PointF Position { + get => Inner.Position; + set => Inner.Position = value; + } + public bool HasScript { get; set; } + public void Draw(IGraphicsContext context) { + this.DrawBackground(context); + Inner.Draw(context); + AnnotationGlyph.Draw(context); + } + public Color? TextColor { get; set; } + public void SetTextColorRecursive(Color? textColor) { + TextColor ??= textColor; + Inner.SetTextColorRecursive(textColor); + AnnotationGlyph?.SetTextColorRecursive(textColor); + } + public Color? BackColor { get; set; } + public override string ToString() => $@"\underannotation{{{Inner}}}"; +} \ No newline at end of file diff --git a/CSharpMath/Display/FrontEnd/FontMathTable.cs b/CSharpMath/Display/FrontEnd/FontMathTable.cs index 1b8e4b5bf..79a7e5106 100644 --- a/CSharpMath/Display/FrontEnd/FontMathTable.cs +++ b/CSharpMath/Display/FrontEnd/FontMathTable.cs @@ -68,6 +68,7 @@ public virtual float FractionDelimiterDisplayStyleSize(TFont font) => #endregion #region glyph assembly public abstract IEnumerable>? GetVerticalGlyphAssembly(TGlyph rawGlyph, TFont font); + public abstract IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font); public abstract float MinConnectorOverlap(TFont font); public abstract (IEnumerable variants, int count) GetVerticalVariantsForGlyph(TGlyph rawGlyph); public abstract (IEnumerable variants, int count) GetHorizontalVariantsForGlyph(TGlyph rawGlyph); diff --git a/CSharpMath/Display/Typesetter.cs b/CSharpMath/Display/Typesetter.cs index 280e86bcb..537327f2b 100644 --- a/CSharpMath/Display/Typesetter.cs +++ b/CSharpMath/Display/Typesetter.cs @@ -276,6 +276,19 @@ private void CreateDisplayAtoms(List preprocessedAtoms) { MakeScripts(atom, overlineDisplay, atom.IndexRange.Location, 0); } break; + case UnderAnnotation underAnnotation: + AddDisplayLine(false); + AddInterElementSpace(prevAtom, underAnnotation); + innerListDisplay = Typesetter.CreateLine + (underAnnotation.InnerList, _font, _context, _style, true); + var underAnnotationDisplay = MakeUnderAnnotation(underAnnotation, atom.IndexRange); + _displayAtoms.Add(underAnnotationDisplay); + _currentPosition.X += underAnnotationDisplay.Width; + // add super scripts || subscripts + if (atom.Subscript.IsNonEmpty() || atom.Superscript.IsNonEmpty()) { + MakeScripts(atom, underAnnotationDisplay, atom.IndexRange.Location, 0); + } + break; case Accent accent: AddDisplayLine(false); AddInterElementSpace(prevAtom, accent); @@ -725,6 +738,97 @@ private IGlyphDisplay FindGlyphForBoundary( return glyphDisplay; } + private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotation underAnnotation, Range range) { + + var innerListDisplay = CreateLine(underAnnotation.InnerList, _font, _context, _style, _cramped, true); + float axisHeight = _mathTable.AxisHeight(_styleFont); + + var annotationSingleGlyph = _context.GlyphFinder.FindGlyphForCharacterAtIndex(_font, 0, underAnnotation.Nucleus); + + var glyph = FindHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width, + out float glyphAscent, out float glyphDescent, out float glyphWidth); + + var glyphDisplay = + innerListDisplay.Width > glyphWidth ? ConstructHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width, glyphAscent, glyphDescent) as IGlyphDisplay + // ConstructHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width) is IGlyphDisplay constructed + // ? constructed + : + new GlyphDisplay + (glyph, Range.NotFound, _styleFont, glyphAscent, glyphDescent, glyphWidth); + // var annotationGlyphDisplay = FindGlyphForBoundary(left, glyphHeight); + // glyphDisplay!.Position = _currentPosition; + + var lineShiftUp = axisHeight; + glyphDisplay!.Position = new PointF(_currentPosition.X, glyphDisplay!.Position.Y - lineShiftUp); + + return new UnderAnnotationDisplay(innerListDisplay, null, glyphDisplay!, _currentPosition); + } + + private HorizontalGlyphConstructionDisplay? ConstructHorizontalGlyph(TGlyph glyph, float glyphWidth, float glyphAscent, float glyphDescent) { + var parts = _mathTable.GetHorizontalGlyphAssembly(glyph, _styleFont); + if (parts is null) return null; + var glyphs = new List(); + var offsets = new List(); + float width = ConstructHorizontalGlyphWithParts(parts, glyphWidth, glyphs, offsets); + using var singleGlyph = new RentedArray(glyphs[0]); + // descent:0 because it's up to the rendering to adjust the display glyph up or down by setting ShiftDown + return new HorizontalGlyphConstructionDisplay + (glyphs, offsets, _styleFont, glyphAscent, glyphDescent, width); + } + + private float ConstructHorizontalGlyphWithParts(IEnumerable> parts, + float glyphWidth, List glyphs, List offsets) { + for (int nExtenders = 0; ; nExtenders++) { + glyphs.Clear(); + offsets.Clear(); + GlyphPart? prevPart = null; + float minDistance = _mathTable.MinConnectorOverlap(_styleFont); + float minOffset = 0; + float maxDelta = float.MaxValue; + foreach (var part in parts) { + var repeats = 1; + if (part.IsExtender) { + repeats = nExtenders; + } + for (int i = 0; i < repeats; i++) { + glyphs.Add(part.Glyph); + if (prevPart != null) { + float maxOverlap = Math.Min(prevPart.EndConnectorLength, part.StartConnectorLength); + // the minimum amount we can add to the offset + float minOffsetDelta = prevPart.FullAdvance - maxOverlap; + // the maximum amount we can add to the offset + float maxOffsetDelta = prevPart.FullAdvance - minDistance; + maxDelta = Math.Min(maxDelta, maxOffsetDelta - minOffsetDelta); + minOffset += minOffsetDelta; + } + offsets.Add(minOffset); + prevPart = part; + } + } + if (prevPart == null) { + continue; // maybe only extenders + } + float minWidth = minOffset + prevPart.FullAdvance; + float maxWidth = minWidth + maxDelta * (glyphs.Count - 1); + if (minWidth >= maxWidth) { + // we are done + return minWidth; + } + if (glyphWidth <= maxWidth) { + // spread the delta equally among all the connecters + float delta = glyphWidth - minWidth; + float dDelta = delta / (glyphs.Count - 1); + float lastOffset = 0; + for (int i = 0; i < offsets.Count; i++) { + float offset = offsets[i] + i * dDelta; + offsets[i] = offset; + lastOffset = offset; + } + // we are done + return lastOffset + prevPart.FullAdvance; + } + } + } private GlyphConstructionDisplay? ConstructGlyph(TGlyph glyph, float glyphHeight) { var parts = _mathTable.GetVerticalGlyphAssembly(glyph, _styleFont); @@ -813,6 +917,28 @@ private TGlyph FindGlyph(TGlyph rawGlyph, float height, throw new InvalidCodePathException("glyphAscent, glyphDescent or glyphWidth is NaN."); return variants.Last(); } + + private TGlyph FindHorizontalGlyph(TGlyph rawGlyph, float width, + out float glyphAscent, out float glyphDescent, out float glyphWidth) { + // in iosMath. + glyphAscent = glyphDescent = glyphWidth = float.NaN; + var (variants, nVariants) = _mathTable.GetHorizontalVariantsForGlyph(rawGlyph); + var rects = + _context.GlyphBoundsProvider.GetBoundingRectsForGlyphs(_styleFont, variants, nVariants); + var advances = + _context.GlyphBoundsProvider.GetAdvancesForGlyphs(_styleFont, variants, nVariants).Advances; + foreach (var (rect, advance, variant) in rects.Zip(advances, variants, ValueTuple.Create)) { + rect.GetAscentDescentWidth(out glyphAscent, out glyphDescent, out glyphWidth); + if (glyphWidth >= width) { + glyphWidth = advance; + return variant; + } + } + if (glyphAscent is float.NaN || glyphDescent is float.NaN || glyphWidth is float.NaN) + throw new InvalidCodePathException("glyphAscent, glyphDescent or glyphWidth is NaN."); + return variants.Last(); + } + private List>> TypesetCells(Table table, float[] columnWidths) { var r = new List>>(); foreach (var row in table.Cells) { From 9c55b712ff603209c35a69ebc3f304783cbb0f87 Mon Sep 17 00:00:00 2001 From: hflex Date: Mon, 2 Feb 2026 08:49:48 +0400 Subject: [PATCH 08/29] add underbrace underlist to a latex parser --- CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs | 25 +++++++++++-------- CSharpMath.Maui.Example/ExamplesPage.xaml.cs | 10 ++++---- CSharpMath/Atom/Atoms/UnderAnnotation.cs | 20 ++++++++------- CSharpMath/Atom/LaTeXParser.cs | 6 +++++ CSharpMath/Atom/LaTeXSettings.cs | 4 +++ .../Displays/UnderAnnotationDisplay.cs | 4 +-- CSharpMath/Display/Typesetter.cs | 8 +++--- 7 files changed, 45 insertions(+), 32 deletions(-) diff --git a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs index dfb53dbc4..810476deb 100644 --- a/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs +++ b/CSharpMath.Core.Tests/Atom/LaTeXParserTest.cs @@ -426,18 +426,21 @@ public void TestUnderbrace() { } /// - /// Test underbrace with under (not implemented yet) + /// Test underbrace with under /// - // [Fact] - // public void TestUnderbraceWithUnder() { - // var list = ParseLaTeX(@"\underbrace{x}_{y}"); - - // Assert.Collection(list, - // CheckAtom("\u23df", underBrace => - // Assert.Collection(underBrace.InnerList, CheckAtom("x")) - // ) - // ); - // } + [Fact] + public void TestUnderbraceWithUnder() { + var latexString = @"\underbrace {x}_{y}"; + var list = ParseLaTeX(latexString); + + Assert.Collection(list, + CheckAtom("\u23df", underBrace => + Assert.Collection(underBrace.InnerList, CheckAtom("x")) + ) + ); + + Assert.Equal(latexString, LaTeXParser.MathListToLaTeX(list).ToString()); + } [Fact] public void TestAccent() { diff --git a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs index 040f7a3cd..d7bfc945f 100644 --- a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs +++ b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs @@ -62,11 +62,11 @@ static ExamplesPage() { FontSize = 22.5f }; - // testLabels[2] = new MathView { - // LaTeX = @"\underbrace{\frac{abcd}{efgh} \int \limits _a^b f(x)dx}", - // HeightRequest = 112.5, - // FontSize = 22.5f - // }; + testLabels[2] = new MathView { + LaTeX = @"\underbrace{\frac{abcd}{efgh} \int \limits _a^b f(x)dx}", + HeightRequest = 112.5, + FontSize = 22.5f + }; // Quadratic formula demoLabels[0] = new MathView { diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index d4a4af274..0c627ba5b 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -3,27 +3,29 @@ namespace CSharpMath.Atom.Atoms; /// Abstract name of under annotations implementation \underbrace, \underbracket etc.. /// public sealed class UnderAnnotation : MathAtom, IMathListContainer { - public UnderAnnotation(string value, MathList innerList, MathList? underList = null) : base(value) { - InnerList = innerList; - UnderList = underList; + public UnderAnnotation(string value, MathList? innerList = null, MathList? underList = null) : base(value) { + InnerList = innerList ?? new MathList(); + UnderList = underList ?? new MathList(); } - public MathList InnerList { get; } - public MathList? UnderList { get; } + public MathList InnerList { get; } = new MathList(); + public MathList? UnderList { get; set; } = new MathList(); System.Collections.Generic.IEnumerable IMathListContainer.InnerLists => - new[] { InnerList }; + [InnerList ?? new MathList()]; public new UnderAnnotation Clone(bool finalize) => (UnderAnnotation)base.Clone(finalize); protected override MathAtom CloneInside(bool finalize) => - new UnderAnnotation(Nucleus, InnerList.Clone(finalize), UnderList?.Clone(finalize)); + new UnderAnnotation(Nucleus, InnerList?.Clone(finalize), UnderList?.Clone(finalize)); public override bool ScriptsAllowed => true; //depending on nucleus, DebugString will change to \underbrace , \underbracket etc.. public override string DebugString => new System.Text.StringBuilder(@"\underbrace") - .AppendInBracesOrLiteralNull(InnerList.DebugString) + .AppendInBracesOrLiteralNull(InnerList?.DebugString) + .Append(UnderList is {Count: >0} ? $"_{{{UnderList?.DebugString}}}" : string.Empty) .ToString(); public bool EqualsUnderAnnotation(UnderAnnotation other) => - EqualsAtom(other) && InnerList.EqualsList(other.InnerList); + EqualsAtom(other) && InnerList.NullCheckingStructuralEquality(other.InnerList) + && UnderList.NullCheckingStructuralEquality(other.UnderList); public override bool Equals(object obj) => obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; // public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); diff --git a/CSharpMath/Atom/LaTeXParser.cs b/CSharpMath/Atom/LaTeXParser.cs index 924eb6d6d..50f3bfa0c 100644 --- a/CSharpMath/Atom/LaTeXParser.cs +++ b/CSharpMath/Atom/LaTeXParser.cs @@ -624,6 +624,12 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, builder.Append('{'); MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); builder.Append('}'); + + if (underAnotation.UnderList is {Count: >0}) { + builder.Append("_{"); + MathListToLaTeX(underAnotation.UnderList, builder, currentFontStyle); + builder.Append('}'); + } break; case Accent accent: MathAtomToLaTeX(accent, builder, out _); diff --git a/CSharpMath/Atom/LaTeXSettings.cs b/CSharpMath/Atom/LaTeXSettings.cs index ca82d53a0..3b4f86f08 100644 --- a/CSharpMath/Atom/LaTeXSettings.cs +++ b/CSharpMath/Atom/LaTeXSettings.cs @@ -225,6 +225,10 @@ public static class LaTeXSettings { prevAtom = new Ordinary(string.Empty); accumulate.Add(prevAtom); } + + if(prevAtom is UnderAnnotation underAnnotation) { + return parser.ReadArgument(underAnnotation.UnderList).Bind(_ => Ok(null)); + } // this is a subscript for the previous atom. // note, if the next char is StopChar, it will be consumed and doesn't count as stop. return parser.ReadArgument(prevAtom.Subscript).Bind(_ => Ok(null)); diff --git a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs index 8b9d945ba..90de542b9 100644 --- a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs +++ b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs @@ -23,8 +23,8 @@ public UnderAnnotationDisplay(IDisplay inner, IDisplay System.Math.Max(_annotationGlyphHeight, Inner.Ascent); - public float Descent => System.Math.Max(_annotationGlyphHeight, Inner.Descent) + _annotationGlyphHeight; + public float Ascent => System.Math.Max(AnnotationGlyph.Ascent, Inner.Ascent); + public float Descent => System.Math.Max(AnnotationGlyph.Descent, Inner.Descent); public float Width => Inner.Width; public Range Range => Inner.Range; public PointF Position { diff --git a/CSharpMath/Display/Typesetter.cs b/CSharpMath/Display/Typesetter.cs index 537327f2b..dbbebd80b 100644 --- a/CSharpMath/Display/Typesetter.cs +++ b/CSharpMath/Display/Typesetter.cs @@ -748,17 +748,15 @@ private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotatio var glyph = FindHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width, out float glyphAscent, out float glyphDescent, out float glyphWidth); + var lineShiftUp = innerListDisplay.Descent; + glyphDescent += lineShiftUp; + var glyphDisplay = innerListDisplay.Width > glyphWidth ? ConstructHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width, glyphAscent, glyphDescent) as IGlyphDisplay - // ConstructHorizontalGlyph(annotationSingleGlyph, innerListDisplay.Width) is IGlyphDisplay constructed - // ? constructed : new GlyphDisplay (glyph, Range.NotFound, _styleFont, glyphAscent, glyphDescent, glyphWidth); - // var annotationGlyphDisplay = FindGlyphForBoundary(left, glyphHeight); - // glyphDisplay!.Position = _currentPosition; - var lineShiftUp = axisHeight; glyphDisplay!.Position = new PointF(_currentPosition.X, glyphDisplay!.Position.Y - lineShiftUp); return new UnderAnnotationDisplay(innerListDisplay, null, glyphDisplay!, _currentPosition); From e981a2bb097cfb2b9069cd6b3de174a23ba36495 Mon Sep 17 00:00:00 2001 From: hflex Date: Mon, 2 Feb 2026 18:02:54 +0400 Subject: [PATCH 09/29] Finished implementation --- CSharpMath.Maui.Example/ExamplesPage.xaml.cs | 49 ++++++++++--------- .../Displays/UnderAnnotationDisplay.cs | 14 ++++-- CSharpMath/Display/Typesetter.cs | 21 +++++++- 3 files changed, 57 insertions(+), 27 deletions(-) diff --git a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs index d7bfc945f..c8afe7a7e 100644 --- a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs +++ b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs @@ -6,12 +6,10 @@ namespace CSharpMath.Maui.Example { public partial class ExamplesPage : ContentPage { static Dictionary demoLabels { get; } = new(); static Dictionary labels { get; } = new(); - static Dictionary testLabels { get; } = new(); public ExamplesPage() { InitializeComponent(); //TODO: uncomment, before merging this branch with master - // var mathViews = demoLabels.Concat(labels).Select(p => p.Value); - var mathViews = testLabels.Select(p => p.Value); + var mathViews = demoLabels.Concat(labels).Select(p => p.Value); foreach (var view in mathViews) { view.ErrorFontSize = view.FontSize * 0.8f; Stack.Children.Add(view); @@ -49,25 +47,6 @@ public ExamplesPage() { static ExamplesPage() { // From https://github.com/kostub/iosMath/blob/master/iosMathExample/example/ViewController.m // Demo formulae - - testLabels[0] = new MathView { - LaTeX = @"\underbrace{abcdefghklmnopqrst}", - HeightRequest = 112.5, - FontSize = 22.5f - }; - - testLabels[1] = new MathView { - LaTeX = @"\underbrace{abcd}", - HeightRequest = 112.5, - FontSize = 22.5f - }; - - testLabels[2] = new MathView { - LaTeX = @"\underbrace{\frac{abcd}{efgh} \int \limits _a^b f(x)dx}", - HeightRequest = 112.5, - FontSize = 22.5f - }; - // Quadratic formula demoLabels[0] = new MathView { LaTeX = @"\text{ваш вопрос: }x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}", @@ -538,6 +517,32 @@ static ExamplesPage() { HeightRequest = 131.25, FontSize = 22.5f }; + + //Annotations + + labels[49] = new MathView { + LaTeX = @"\underbrace{abcdefghklmnopqrst} _{eee}", + HeightRequest = 112.5, + FontSize = 22.5f + }; + + labels[50] = new MathView { + LaTeX = @"\underbrace{abcd}", + HeightRequest = 112.5, + FontSize = 22.5f + }; + + labels[51] = new MathView { + LaTeX = @"\underbrace{\frac{abcd}{efgh} \int \limits _a^b f(x)dx} _{\frac{abcd}{efgh} \int \limits _a^b f(x)dx}", + HeightRequest = 112.5, + FontSize = 22.5f + }; + + labels[52] = new MathView { + LaTeX = @"\underbrace{x} _ {y}", + HeightRequest = 112.5, + FontSize = 22.5f + }; } } } \ No newline at end of file diff --git a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs index 90de542b9..ce3e949c3 100644 --- a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs +++ b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs @@ -7,11 +7,15 @@ namespace CSharpMath.Display.Displays; /// Creates underanotation display public class UnderAnnotationDisplay : IDisplay where TFont : IFont { - public UnderAnnotationDisplay(IDisplay inner, IDisplay? underList, IGlyphDisplay annotationGlyph, PointF position) { + public UnderAnnotationDisplay(IDisplay inner, IDisplay? underList, + IGlyphDisplay annotationGlyph, + float underListBasedDescent, + PointF position) { Inner = inner; UnderList = underList; AnnotationGlyph = annotationGlyph; _annotationGlyphHeight = AnnotationGlyph.Ascent + AnnotationGlyph.Descent; + _underListBasedDescent = underListBasedDescent + (UnderList?.Descent ?? 0); Position = position; } @@ -22,19 +26,21 @@ public UnderAnnotationDisplay(IDisplay inner, IDisplay AnnotationGlyph { get; } private readonly float _annotationGlyphHeight; + private readonly float _underListBasedDescent; public float Ascent => System.Math.Max(AnnotationGlyph.Ascent, Inner.Ascent); - public float Descent => System.Math.Max(AnnotationGlyph.Descent, Inner.Descent); + public float Descent => System.Math.Max(AnnotationGlyph.Descent, Inner.Descent) + _underListBasedDescent; public float Width => Inner.Width; public Range Range => Inner.Range; public PointF Position { - get => Inner.Position; - set => Inner.Position = value; + get => field; + set => field = value; } public bool HasScript { get; set; } public void Draw(IGraphicsContext context) { this.DrawBackground(context); Inner.Draw(context); + UnderList?.Draw(context); AnnotationGlyph.Draw(context); } public Color? TextColor { get; set; } diff --git a/CSharpMath/Display/Typesetter.cs b/CSharpMath/Display/Typesetter.cs index dbbebd80b..b1319ed27 100644 --- a/CSharpMath/Display/Typesetter.cs +++ b/CSharpMath/Display/Typesetter.cs @@ -741,6 +741,12 @@ private IGlyphDisplay FindGlyphForBoundary( private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotation underAnnotation, Range range) { var innerListDisplay = CreateLine(underAnnotation.InnerList, _font, _context, _style, _cramped, true); + + ListDisplay? underListDisplay = null; + if (underAnnotation.UnderList is { Count: > 0 }) { + underListDisplay = CreateLine(underAnnotation.UnderList, _font, _context, _scriptStyle, _subscriptCramped, true); + } + float axisHeight = _mathTable.AxisHeight(_styleFont); var annotationSingleGlyph = _context.GlyphFinder.FindGlyphForCharacterAtIndex(_font, 0, underAnnotation.Nucleus); @@ -759,7 +765,20 @@ private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotatio glyphDisplay!.Position = new PointF(_currentPosition.X, glyphDisplay!.Position.Y - lineShiftUp); - return new UnderAnnotationDisplay(innerListDisplay, null, glyphDisplay!, _currentPosition); + var delta = (glyphDisplay.Width - innerListDisplay.Width)/2; + innerListDisplay.Position = new PointF(_currentPosition.X + delta, _currentPosition.Y); + + var glArray = new RentedArray(annotationSingleGlyph); + var boundingBox = _context.GlyphBoundsProvider.GetBoundingRectsForGlyphs(_styleFont, glArray.Result, 1).Single(); + + float underListBasedDescent = 0; + if (underListDisplay is not null) { + var delta1 = (glyphDisplay.Width - underListDisplay.Width) / 2; + underListBasedDescent = axisHeight + underListDisplay.Ascent + boundingBox.Height; + underListDisplay.Position = new PointF(_currentPosition.X + delta1, glyphDisplay!.Position.Y - underListBasedDescent); + } + + return new UnderAnnotationDisplay(innerListDisplay, underListDisplay, glyphDisplay!, underListBasedDescent, _currentPosition); } private HorizontalGlyphConstructionDisplay? ConstructHorizontalGlyph(TGlyph glyph, float glyphWidth, float glyphAscent, float glyphDescent) { From 06c19f8ecb136c32b192a558a5f0e58d0fb9ef7b Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 3 Feb 2026 09:52:47 +0400 Subject: [PATCH 10/29] Implemented GetHorizontalGlyphAssembly --- CSharpMath.Core.Example/BackEnd/JsonMathTable.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs index cd565008c..32220eefc 100644 --- a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs +++ b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs @@ -219,6 +219,15 @@ public override float GetTopAccentAdjustment(TFont font, TGlyph glyph) { } } - public override IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) => throw new System.NotImplementedException(); + public override IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) => _assemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts + ? parts.Select(partInfo => + new GlyphPart( + GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value()!), + FontUnitsToPt(font, partInfo[_advanceKey]!.Value()), + FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value()), + FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value()), + partInfo[_extenderKey]!.Value())) + // Should have been defined, but let's return null + : null; } } \ No newline at end of file From a0f06eff9d7fc4a6a117ac83935fdbbe08daf4f7 Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 3 Feb 2026 10:35:54 +0400 Subject: [PATCH 11/29] ran dotnet format with fixups --- CSharpMath.Evaluation.Tests/EvaluationTests.cs | 4 ++-- CSharpMath.Maui.Example/ExamplesPage.xaml.cs | 2 +- CSharpMath.Rendering.Tests/TestRenderingSharedData.cs | 3 ++- CSharpMath/Atom/Atoms/UnderAnnotation.cs | 6 ++++-- CSharpMath/Atom/LaTeXParser.cs | 2 +- CSharpMath/Atom/MathList.cs | 4 ++-- CSharpMath/Display/Displays/UnderAnnotationDisplay.cs | 2 +- CSharpMath/Display/Typesetter.cs | 2 +- 8 files changed, 14 insertions(+), 11 deletions(-) diff --git a/CSharpMath.Evaluation.Tests/EvaluationTests.cs b/CSharpMath.Evaluation.Tests/EvaluationTests.cs index a54906e7b..b990b006e 100644 --- a/CSharpMath.Evaluation.Tests/EvaluationTests.cs +++ b/CSharpMath.Evaluation.Tests/EvaluationTests.cs @@ -76,8 +76,8 @@ public void Numbers(string input, string converted, string output) => [InlineData(@"3\mathrm{aa}a", @"3\mathrm{aa}a", @"3a\mathrm{aa}")] [InlineData(@"3\mathrm{a}a", @"3aa", @"3a^2")] [InlineData(@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - @"abcd\mathrm{e}fgh\cdot \mathrm{i}jklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", - // i is considered as a number instead of a variable, unlike other alphabets, so it is sorted to the front + @"abcd\mathrm{e}fgh\cdot \mathrm{i}jklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", + // i is considered as a number instead of a variable, unlike other alphabets, so it is sorted to the front @"\mathrm{i}aAbBcCdD\mathrm{e}EfFgGhHIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ")] [InlineData(@"\alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\iota\kappa\varkappa" + @"\lambda\mu\nu\xi\omicron\pi\varpi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi\chi" + diff --git a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs index c8afe7a7e..33e3f34f9 100644 --- a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs +++ b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs @@ -520,7 +520,7 @@ static ExamplesPage() { //Annotations - labels[49] = new MathView { + labels[49] = new MathView { LaTeX = @"\underbrace{abcdefghklmnopqrst} _{eee}", HeightRequest = 112.5, FontSize = 22.5f diff --git a/CSharpMath.Rendering.Tests/TestRenderingSharedData.cs b/CSharpMath.Rendering.Tests/TestRenderingSharedData.cs index e9fcff56c..0ba0f08ea 100644 --- a/CSharpMath.Rendering.Tests/TestRenderingSharedData.cs +++ b/CSharpMath.Rendering.Tests/TestRenderingSharedData.cs @@ -1,10 +1,11 @@ using System.Collections; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; namespace CSharpMath.Rendering.Tests { - public abstract class TestRenderingSharedData : IEnumerable where TThis : TestRenderingSharedData { + public abstract class TestRenderingSharedData<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] TThis> : IEnumerable where TThis : TestRenderingSharedData { public static IReadOnlyDictionary AllConstants { get; } = typeof(TThis) .GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index 0c627ba5b..cce3d9efa 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -1,4 +1,4 @@ -namespace CSharpMath.Atom.Atoms; +namespace CSharpMath.Atom.Atoms; /// /// Abstract name of under annotations implementation \underbrace, \underbracket etc.. /// @@ -21,12 +21,14 @@ protected override MathAtom CloneInside(bool finalize) => public override string DebugString => new System.Text.StringBuilder(@"\underbrace") .AppendInBracesOrLiteralNull(InnerList?.DebugString) - .Append(UnderList is {Count: >0} ? $"_{{{UnderList?.DebugString}}}" : string.Empty) + .Append(UnderList is { Count: > 0 } ? $"_{{{UnderList?.DebugString}}}" : string.Empty) .ToString(); public bool EqualsUnderAnnotation(UnderAnnotation other) => EqualsAtom(other) && InnerList.NullCheckingStructuralEquality(other.InnerList) && UnderList.NullCheckingStructuralEquality(other.UnderList); public override bool Equals(object obj) => obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; + + public override int GetHashCode() => (base.GetHashCode(), InnerList, UnderList).GetHashCode(); // public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); } \ No newline at end of file diff --git a/CSharpMath/Atom/LaTeXParser.cs b/CSharpMath/Atom/LaTeXParser.cs index 50f3bfa0c..824185e84 100644 --- a/CSharpMath/Atom/LaTeXParser.cs +++ b/CSharpMath/Atom/LaTeXParser.cs @@ -625,7 +625,7 @@ static bool MathAtomToLaTeX(MathAtom atom, StringBuilder builder, MathListToLaTeX(underAnotation.InnerList, builder, currentFontStyle); builder.Append('}'); - if (underAnotation.UnderList is {Count: >0}) { + if (underAnotation.UnderList is { Count: > 0 }) { builder.Append("_{"); MathListToLaTeX(underAnotation.UnderList, builder, currentFontStyle); builder.Append('}'); diff --git a/CSharpMath/Atom/MathList.cs b/CSharpMath/Atom/MathList.cs index 2282e6fb3..bb5f23bc7 100644 --- a/CSharpMath/Atom/MathList.cs +++ b/CSharpMath/Atom/MathList.cs @@ -16,8 +16,8 @@ public class MathList : IMathObject, IList, IReadOnlyList, I public List Atoms { get; private set; } public MathList() => Atoms = new List(); public MathList(IEnumerable atoms) => Atoms = new List(atoms); - public MathList(params MathAtom[] atoms) => Atoms = new List(atoms); - + public MathList(params MathAtom[] atoms) => Atoms = new List(atoms); + /// The last that is not a , /// or when is empty. #if !NETSTANDARD2_0 && !NET45 diff --git a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs index ce3e949c3..92a20fc77 100644 --- a/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs +++ b/CSharpMath/Display/Displays/UnderAnnotationDisplay.cs @@ -8,7 +8,7 @@ namespace CSharpMath.Display.Displays; public class UnderAnnotationDisplay : IDisplay where TFont : IFont { public UnderAnnotationDisplay(IDisplay inner, IDisplay? underList, - IGlyphDisplay annotationGlyph, + IGlyphDisplay annotationGlyph, float underListBasedDescent, PointF position) { Inner = inner; diff --git a/CSharpMath/Display/Typesetter.cs b/CSharpMath/Display/Typesetter.cs index b1319ed27..ea0b4dae3 100644 --- a/CSharpMath/Display/Typesetter.cs +++ b/CSharpMath/Display/Typesetter.cs @@ -765,7 +765,7 @@ private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotatio glyphDisplay!.Position = new PointF(_currentPosition.X, glyphDisplay!.Position.Y - lineShiftUp); - var delta = (glyphDisplay.Width - innerListDisplay.Width)/2; + var delta = (glyphDisplay.Width - innerListDisplay.Width) / 2; innerListDisplay.Position = new PointF(_currentPosition.X + delta, _currentPosition.Y); var glArray = new RentedArray(annotationSingleGlyph); From 374a442d5363302c005522949bd46c25ad3fca50 Mon Sep 17 00:00:00 2001 From: hflex Date: Tue, 3 Feb 2026 10:55:54 +0400 Subject: [PATCH 12/29] fixed unittests --- CSharpMath/Atom/Atoms/UnderAnnotation.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CSharpMath/Atom/Atoms/UnderAnnotation.cs b/CSharpMath/Atom/Atoms/UnderAnnotation.cs index cce3d9efa..4783cb83b 100644 --- a/CSharpMath/Atom/Atoms/UnderAnnotation.cs +++ b/CSharpMath/Atom/Atoms/UnderAnnotation.cs @@ -26,9 +26,4 @@ protected override MathAtom CloneInside(bool finalize) => public bool EqualsUnderAnnotation(UnderAnnotation other) => EqualsAtom(other) && InnerList.NullCheckingStructuralEquality(other.InnerList) && UnderList.NullCheckingStructuralEquality(other.UnderList); - public override bool Equals(object obj) => - obj is UnderAnnotation u ? EqualsUnderAnnotation(u) : false; - - public override int GetHashCode() => (base.GetHashCode(), InnerList, UnderList).GetHashCode(); - // public override int GetHashCode() => (base.GetHashCode(), InnerList).GetHashCode(); } \ No newline at end of file From bf2e3cb0e8127661b6f9cbb2cad6be026376dd6e Mon Sep 17 00:00:00 2001 From: Happypig375 Date: Tue, 3 Feb 2026 15:50:26 +0800 Subject: [PATCH 13/29] Add Typesetter tests for UnderAnnotation --- .github/workflows/Nightly.yml | 1 + .../BackEnd/JsonMathTable.cs | 29 +- .../CSharpMath.Core.Example.csproj | 7 +- .../Resources/MathTableExport.py | 216 + .../Resources/latinmodern-math.json | 12798 +++++++++------- .../CSharpMath.Core.Tests.csproj | 2 +- .../Display/TypesetterTests.cs | 56 + CSharpMath/Display/Typesetter.cs | 2 +- 8 files changed, 7669 insertions(+), 5442 deletions(-) create mode 100644 CSharpMath.Core.Example/Resources/MathTableExport.py diff --git a/.github/workflows/Nightly.yml b/.github/workflows/Nightly.yml index 2e57d471e..d5f2268b8 100644 --- a/.github/workflows/Nightly.yml +++ b/.github/workflows/Nightly.yml @@ -7,6 +7,7 @@ jobs: runs-on: windows-latest permissions: contents: write + packages: write steps: - name: Update draft on GitHub Releases id: release_drafter diff --git a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs index 32220eefc..542cacff4 100644 --- a/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs +++ b/CSharpMath.Core.Example/BackEnd/JsonMathTable.cs @@ -14,7 +14,7 @@ public class JsonMathTable : FontMathTable { /// typically loaded from a .json file. private readonly JToken _mathTable; private readonly JObject _constantsDictionary; - private readonly JObject _assemblyTable; + private readonly JObject _vAssemblyTable, _hAssemblyTable; private readonly JObject _italicTable; public TestFontMeasurer FontMeasurer { get; } public TestGlyphNameProvider GlyphNameProvider { get; } @@ -41,7 +41,8 @@ JObject GetTable(string name) => GlyphBoundsProvider = glyphBoundsProvider; _mathTable = mathTable; _constantsDictionary = GetTable("constants"); - _assemblyTable = GetTable("v_assembly"); + _vAssemblyTable = GetTable("v_assembly"); + _hAssemblyTable = GetTable("h_assembly"); _italicTable = GetTable("italic"); } // different from _ConstantFromTable in that the _ConstantFromTable requires @@ -137,7 +138,18 @@ public override float RadicalExtraAscender(TFont font) => private const string _extenderKey = "extender"; private const string _glyphKey = "glyph"; public override IEnumerable>? GetVerticalGlyphAssembly(TGlyph rawGlyph, TFont font) => - _assemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts + _vAssemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts + ? parts.Select(partInfo => + new GlyphPart( + GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value()!), + FontUnitsToPt(font, partInfo[_advanceKey]!.Value()), + FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value()), + FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value()), + partInfo[_extenderKey]!.Value())) + // Should have been defined, but let's return null + : null; + public override IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) => + _hAssemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts ? parts.Select(partInfo => new GlyphPart( GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value()!), @@ -218,16 +230,5 @@ public override float GetTopAccentAdjustment(TFont font, TGlyph glyph) { return Total / 2; } } - - public override IEnumerable>? GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) => _assemblyTable[GlyphNameProvider.GetGlyphName(rawGlyph)]?[_assemblyPartsKey] is JArray parts - ? parts.Select(partInfo => - new GlyphPart( - GlyphNameProvider.GetGlyph(partInfo[_glyphKey]!.Value()!), - FontUnitsToPt(font, partInfo[_advanceKey]!.Value()), - FontUnitsToPt(font, partInfo[_startConnectorKey]!.Value()), - FontUnitsToPt(font, partInfo[_endConnectorKey]!.Value()), - partInfo[_extenderKey]!.Value())) - // Should have been defined, but let's return null - : null; } } \ No newline at end of file diff --git a/CSharpMath.Core.Example/CSharpMath.Core.Example.csproj b/CSharpMath.Core.Example/CSharpMath.Core.Example.csproj index 111ba1572..bd7ff6f02 100644 --- a/CSharpMath.Core.Example/CSharpMath.Core.Example.csproj +++ b/CSharpMath.Core.Example/CSharpMath.Core.Example.csproj @@ -5,8 +5,9 @@ CSharpMath.Core.Checker - - - + + + + diff --git a/CSharpMath.Core.Example/Resources/MathTableExport.py b/CSharpMath.Core.Example/Resources/MathTableExport.py new file mode 100644 index 000000000..28e5b3b56 --- /dev/null +++ b/CSharpMath.Core.Example/Resources/MathTableExport.py @@ -0,0 +1,216 @@ +# Based on https://github.com/kostub/iosMath/blob/master/fonts/math_table_to_plist.py +# Added: get_h_assembly (version 1.3 -> 1.4) + +import sys +import json +from fontTools.ttLib import TTFont + +def process_font(font_file, out_file): + font = TTFont(font_file) + math_table = font['MATH'].table + constants = get_constants(math_table) + italic_c = get_italic_correction(math_table) + v_variants = get_v_variants(math_table) + h_variants = get_h_variants(math_table) + v_assembly = get_v_assembly(math_table) + h_assembly = get_h_assembly(math_table) + accents = get_accent_attachments(math_table) + pl = { + "version" : "1.4", + "constants": constants, + "v_variants" : v_variants, + "h_variants" : h_variants, + "italic" : italic_c, + "accents" : accents, + "v_assembly" : v_assembly, + "h_assembly" : h_assembly } + ofile = open(out_file, 'w') + json.dump(pl, ofile) + ofile.close() + +def get_constants(math_table): + constants = math_table.MathConstants + if constants is None: + raise 'Cannot find MathConstants in MATH table' + + int_consts = [ 'ScriptPercentScaleDown', + 'ScriptScriptPercentScaleDown', + 'DelimitedSubFormulaMinHeight', + 'DisplayOperatorMinHeight', + 'RadicalDegreeBottomRaisePercent'] + consts = { c : getattr(constants, c) for c in int_consts } + + record_consts = [ 'MathLeading', + 'AxisHeight', + 'AccentBaseHeight', + 'FlattenedAccentBaseHeight', + 'SubscriptShiftDown', + 'SubscriptTopMax', + 'SubscriptBaselineDropMin', + 'SuperscriptShiftUp', + 'SuperscriptShiftUpCramped', + 'SuperscriptBottomMin', + 'SuperscriptBaselineDropMax', + 'SubSuperscriptGapMin', + 'SuperscriptBottomMaxWithSubscript', + 'SpaceAfterScript', + 'UpperLimitGapMin', + 'UpperLimitBaselineRiseMin', + 'LowerLimitGapMin', + 'LowerLimitBaselineDropMin', + 'StackTopShiftUp', + 'StackTopDisplayStyleShiftUp', + 'StackBottomShiftDown', + 'StackBottomDisplayStyleShiftDown', + 'StackGapMin', + 'StackDisplayStyleGapMin', + 'StretchStackTopShiftUp', + 'StretchStackBottomShiftDown', + 'StretchStackGapAboveMin', + 'StretchStackGapBelowMin', + 'FractionNumeratorShiftUp', + 'FractionNumeratorDisplayStyleShiftUp', + 'FractionDenominatorShiftDown', + 'FractionDenominatorDisplayStyleShiftDown', + 'FractionNumeratorGapMin', + 'FractionNumDisplayStyleGapMin', + 'FractionRuleThickness', + 'FractionDenominatorGapMin', + 'FractionDenomDisplayStyleGapMin', + 'SkewedFractionHorizontalGap', + 'SkewedFractionVerticalGap', + 'OverbarVerticalGap', + 'OverbarRuleThickness', + 'OverbarExtraAscender', + 'UnderbarVerticalGap', + 'UnderbarRuleThickness', + 'UnderbarExtraDescender', + 'RadicalVerticalGap', + 'RadicalDisplayStyleVerticalGap', + 'RadicalRuleThickness', + 'RadicalExtraAscender', + 'RadicalKernBeforeDegree', + 'RadicalKernAfterDegree', + ] + consts_2 = { c : getattr(constants, c).Value for c in record_consts } + consts.update(consts_2) + + variants = math_table.MathVariants + consts['MinConnectorOverlap'] = variants.MinConnectorOverlap + return consts + +def get_italic_correction(math_table): + glyph_info = math_table.MathGlyphInfo + if glyph_info is None: + raise "Cannot find MathGlyphInfo in MATH table." + italic = glyph_info.MathItalicsCorrectionInfo + if italic is None: + raise "Cannot find Italic Correction in GlyphInfo" + + glyphs = italic.Coverage.glyphs + count = italic.ItalicsCorrectionCount + records = italic.ItalicsCorrection + italic_dict = {} + for i in range(count): + name = glyphs[i] + record = records[i] + if record.DeviceTable is not None: + raise "Don't know how to process device table for italic correction." + italic_dict[name] = record.Value + return italic_dict + +def get_accent_attachments(math_table): + glyph_info = math_table.MathGlyphInfo + if glyph_info is None: + raise "Cannot find MathGlyphInfo in MATH table." + attach = glyph_info.MathTopAccentAttachment + if attach is None: + raise "Cannot find Top Accent Attachment in GlyphInfo" + + glyphs = attach.TopAccentCoverage.glyphs + count = attach.TopAccentAttachmentCount + records = attach.TopAccentAttachment + attach_dict = {} + for i in range(count): + name = glyphs[i] + record = records[i] + if record.DeviceTable is not None: + raise "Don't know how to process device table for accent attachment." + attach_dict[name] = record.Value + return attach_dict + +def get_v_variants(math_table): + variants = math_table.MathVariants + vglyphs = variants.VertGlyphCoverage.glyphs + vconstruction = variants.VertGlyphConstruction + count = variants.VertGlyphCount + variant_dict = {} + for i in range(count): + name = vglyphs[i] + record = vconstruction[i] + glyph_variants = [x.VariantGlyph for x in + record.MathGlyphVariantRecord] + variant_dict[name] = glyph_variants + return variant_dict + +def get_h_variants(math_table): + variants = math_table.MathVariants + hglyphs = variants.HorizGlyphCoverage.glyphs + hconstruction = variants.HorizGlyphConstruction + count = variants.HorizGlyphCount + variant_dict = {} + for i in range(count): + name = hglyphs[i] + record = hconstruction[i] + glyph_variants = [x.VariantGlyph for x in + record.MathGlyphVariantRecord] + variant_dict[name] = glyph_variants + return variant_dict + +def get_v_assembly(math_table): + variants = math_table.MathVariants + vglyphs = variants.VertGlyphCoverage.glyphs + vconstruction = variants.VertGlyphConstruction + count = variants.VertGlyphCount + assembly_dict = {} + for i in range(count): + name = vglyphs[i] + record = vconstruction[i] + assembly = record.GlyphAssembly + if assembly is not None: + # There is an assembly for this glyph + italic = assembly.ItalicsCorrection.Value + parts = [part_dict(part) for part in assembly.PartRecords] + assembly_dict[name] = { + "italic" : assembly.ItalicsCorrection.Value, + "parts" : parts } + return assembly_dict + +def get_h_assembly(math_table): + variants = math_table.MathVariants + hglyphs = variants.HorizGlyphCoverage.glyphs + hconstruction = variants.HorizGlyphConstruction + count = variants.HorizGlyphCount + assembly_dict = {} + for i in range(count): + name = hglyphs[i] + record = hconstruction[i] + assembly = record.GlyphAssembly + if assembly is not None: + # There is an assembly for this glyph + italic = assembly.ItalicsCorrection.Value + parts = [part_dict(part) for part in assembly.PartRecords] + assembly_dict[name] = { + "italic" : assembly.ItalicsCorrection.Value, + "parts" : parts } + return assembly_dict + +def part_dict(part): + return { + "glyph": part.glyph, + "startConnector" : part.StartConnectorLength, + "endConnector" : part.EndConnectorLength, + "advance" : part.FullAdvance, + "extender" : (part.PartFlags == 1) } + +process_font('../../CSharpMath.Rendering/Reference Fonts/latinmodern-math.otf', 'latinmodern-math.json') \ No newline at end of file diff --git a/CSharpMath.Core.Example/Resources/latinmodern-math.json b/CSharpMath.Core.Example/Resources/latinmodern-math.json index f1db31b53..8b7bda7fe 100644 --- a/CSharpMath.Core.Example/Resources/latinmodern-math.json +++ b/CSharpMath.Core.Example/Resources/latinmodern-math.json @@ -1,1036 +1,66 @@ { - "italic" : { - "uni23DE.h3" : 28, - "u1D72C.sts" : 151, - "udieresis" : 7, - "u1D71B" : 17, - "uhungarumlaut" : 7, - "uni2231" : 361, - "u1D44C.st" : 209, - "u1D62B" : 84, - "acircumflextilde.st" : 3, - "uni2A11.v1" : 591, - "u1D44B" : 51, - "u1D738" : 55, - "uhorntilde.st" : 37, - "shade" : 28, - "u1D44D.st" : 47, - "u1D720" : 43, - "u1D648" : 76, - "u1D744.st" : 3, - "uni23E1.h1" : 28, - "acircumflexdotbelow.st" : 3, - "u1D630" : 50, - "Uhorn" : 4, - "u1D5B7" : 13, - "u1D69F" : 3, - "alpha.st" : 8, - "u1D6FE" : 53, - "bracketleft" : 6, - "u1D56E.st" : 3, - "u1D7C5" : 52, - "Uhornhookabove" : 4, - "u1D450" : 25, - "uhornacute.sts" : 10, - "u1D586" : 13, - "u1D441.sts" : 41, - "u1D580.st" : 17, - "Racute.st" : 16, - "u1D50E" : 50, - "u1D794" : 105, - "ncaron" : 7, - "u1D449.sts" : 200, - "Uhorntilde" : 4, - "aring" : 11, - "registered.sts" : 28, - "uni23DF.h6" : 28, - "u1D44A.sts" : 98, - "u1D62C" : 82, - "u1D746.st" : 4, - "uni23B4.h5" : 28, - "aogonek" : 11, - "u1D44C" : 209, - "u1D513" : 9, - "u1D475.sts" : 60, - "u1D46A.sts" : 18, - "u1D65A" : 59, - "u1D739" : 19, - "u1D747.st" : 50, - "u1D721" : 60, - "u1D481.sts" : 14, - "u1D649" : 76, - "u1D73B.st" : 18, - "u1D631" : 46, - "dcaron" : 46, - "u1D47A" : 49, - "u1D5B8" : 24, - "u1D47E.sts" : 136, - "u1D6FF" : 36, - "uhornhookabove.sts" : 10, - "u1D469" : 16, - "u1D7C6" : 59, - "u1D451" : 24, - "u1D677" : 5, - "uni23DF.h1" : 28, - "u1D73C.st" : 10, - "u1D50F" : 7, - "u1D795" : 106, - "Chi" : 4, - "uni2232" : 350, - "u1D41F" : 114, - "iota" : 24, - "emdash.alt" : 27, - "u1D71D" : 16, - "u1D749.st" : 100, - "uni23DC.h4" : 28, - "u1D62D" : 93, - "u1D509.st" : 12, - "u1D604" : 3, - "u1D44D" : 68, - "uni22C4" : 8, - "copyleft.sts" : 28, - "u1D65B" : 217, - "u1D424" : 8, - "mu.st" : 8, - "u1D722" : 73, - "u1D632" : 42, - "u1D47B" : 163, - "Yacute" : 16, - "f_f" : 73, - "u1D7C7" : 27, - "u1D6CA.sts" : 6, - "Ygrave.st" : 3, - "u1D660" : 72, - "uni222C" : 332, - "uhorngrave.sts" : 10, - "u1D466.st" : 9, - "u1D796" : 76, - "u1D6F5.sts" : 123, - "u1D6EA.sts" : 11, - "itilde.st" : 51, - "u1D480" : 228, - "u1D70F.sts" : 39, - "u1D71E" : 148, - "uni23B5.h3" : 28, - "copyright" : 28, - "u1D62E" : 17, - "uni23DD.h7" : 28, - "acircumflex.st" : 3, - "u1D6FE.sts" : 4, - "Uhornacute" : 4, - "u1D467.st" : 3, - "u1D72F.sts" : 163, - "f_k" : 3, - "u1D7AB" : 42, - "yen.st" : 3, - "u1D65C" : 99, - "integralbt" : 591, - "u1D723" : 5, - "u1D56C" : 8, - "uni212D" : 29, - "icircumflex.st" : 19, - "amacron.st" : 3, - "u1D633" : 110, - "u1D5CB" : 13, - "u1D47C" : 105, - "lcaron.st" : 47, - "u1D74F.sts" : 38, - "uni27E6.v5" : 5, - "u1D68A" : 22, - "bracketleft.v4" : 4, - "u1D7C8" : 29, - "uni23E0.h5" : 28, - "u1D453" : 90, - "recipe" : 24, - "u1D59A" : 44, - "u1D6D8" : 29, - "u1D7B0" : 41, - "uni23DD.h2" : 28, - "u1D661" : 106, - "u1D7D5.st" : 5, - "u1D571" : 41, - "u1D797" : 53, - "u1D5D0" : 13, - "u1D754.st" : 4, - "asciitilde.st" : 27, - "uni2233" : 350, - "u1D481" : 60, - "iota.st" : 7, - "adieresis" : 11, - "u1D62F" : 16, - "bracketleft.v6" : 9, - "dotlessi.ssbo" : 56, - "q.st" : 9, - "ohorntilde.st" : 7, - "u1D45E.st" : 15, - "u1D44F" : 14, - "u1D74D" : 3, - "u1D7AC" : 67, - "gbreve.st" : 4, - "u1D65D" : 42, - "utilde" : 7, - "uni00B5" : 6, - "u1D426" : 5, - "u1D724" : 83, - "u1D470.st" : 61, - "u1D57F.st" : 6, - "u1D5CC" : 5, - "u1D634" : 79, - "chi.st" : 8, - "u1D47D" : 235, - "u1D45F.st" : 10, - "dkshade" : 28, - "u1D470.sts" : 22, - "uni2231.v1" : 591, - "u1D7C9" : 57, - "u1D6EA" : 85, - "u1D454" : 25, - "u1D46D.sts" : 146, - "u1D7B1" : 66, - "endash" : 27, - "u1D662" : 42, - "u1D471.st" : 77, - "uni222D" : 332, - "u1D798" : 76, - "chi" : 24, - "u1D5D1" : 27, - "Itilde.st" : 6, - "uni23DE.h5" : 28, - "u1D690" : 12, - "u1D517.st" : 8, - "underscore" : 28, - "f_f.sts" : 59, - "u1D472.st" : 46, - "asciicircum.sts" : 33, - "u1D7AD" : 53, - "u1D517" : 35, - "u1D65E" : 109, - "u1D518.st" : 23, - "u1D427" : 4, - "u1D725" : 60, - "u1D56E" : 34, - "uni23E1.h3" : 28, - "atilde" : 11, - "SF010000" : 48, - "u1D635" : 77, - "u1D47E" : 142, - "itilde.sts" : 34, - "ordmasculine" : 5, - "lcaron.sts" : 24, - "uhorngrave" : 43, - "u1D6EB" : 68, - "u1D7B2" : 5, - "Yacute.st" : 3, - "u1D474.st" : 84, - "u1D663" : 42, - "u1D6C2" : 30, - "abrevedotbelow" : 11, - "u1D799" : 104, - "f_f.st" : 65, - "u1D5D2" : 13, - "uni222F.v1" : 591, - "u1D483" : 13, - "SF080000" : 48, - "u1D6D8.sts" : 5, - "u1D6CD.sts" : 6, - "u1D691" : 15, - "u1D475.st" : 91, - "u1D6F0" : 5, - "abrevegrave.st" : 3, - "u1D6E4.sts" : 106, - "u1D50E.st" : 24, - "lambda.st" : 38, - "u1D715.sts" : 21, - "uni23B4.h7" : 28, - "u1D74F.st" : 54, - "u1D74F" : 57, - "uni22C6" : 25, - "u1D721.sts" : 14, - "u1D6ED.sts" : 35, - "u1D518" : 49, - "u1D7AE" : 31, - "u1D65F" : 102, - "u1D71E.sts" : 146, - "u1D46A.st" : 51, - "u1D6C2.st" : 26, - "u1D636" : 40, - "u1D47F" : 34, - "gcommaaccent.st" : 4, - "u1D68D" : 15, - "married.sts" : 99, - "u1D749.sts" : 67, - "nacute" : 7, - "u1D477.st" : 160, - "u1D59D" : 19, - "u1D754" : 13, - "u1D7B3" : 4, - "u1D664" : 53, - "uni23DF.h3" : 28, - "uni23B4.h2" : 28, - "yen" : 16, - "u1D484" : 26, - "iacute" : 13, - "uni23DC.h6" : 28, - "uni2A11" : 361, - "u1D70A" : 12, - "u1D6F1" : 77, - "u1D46C.st" : 27, - "u1D61A" : 79, - "threequartersemdash" : 27, - "u1D609" : 57, - "u1D52A" : 19, - "u1D599.st" : 11, - "u1D7AF" : 24, - "u1D519" : 23, - "u1D479.st" : 37, - "u1D46D.st" : 154, - "u1D727" : 102, - "uni03F5" : 35, - "abrevetilde" : 11, - "u1D5CF" : 13, - "u1D411" : 23, - "u1D637" : 107, - "uni2A0C.v1" : 591, - "u1D447.sts" : 123, - "u1D43C.sts" : 11, - "leaf" : 39, - "u1D453.sts" : 36, - "u1D6ED" : 102, - "uni23DC.h1" : 28, - "u1D457" : 13, - "u1D755" : 8, - "u1D665" : 50, - "u1D485" : 22, - "u1D480.st" : 239, - "udotbelow" : 7, - "uni23B5.h5" : 28, - "u1D46F.st" : 55, - "acircumflexhookabove.st" : 3, - "u1D6F2" : 140, - "u1D70B" : 25, - "u1D487.sts" : 51, - "u1D47C.sts" : 60, - "u1D61B" : 137, - "u1D52B" : 23, - "u1D481.st" : 47, - "u1D51A.st" : 11, - "abrevedotbelow.st" : 3, - "u1D43B" : 78, - "umacron" : 7, - "u1D728" : 105, - "asciitilde.sts" : 27, - "u1D710" : 12, - "u1D638" : 107, - "uni23E0" : 28, - "uni27E6.v7" : 6, - "u1D620" : 172, - "u1D6EE" : 106, - "uni23E0.h7" : 28, - "u1D458" : 15, - "endash.st" : 19, - "u1D7B5" : 4, - "uni222F" : 332, - "u1D440" : 102, - "u1D666" : 58, - "uni23DD.h4" : 28, - "Rcommaaccent" : 24, - "u1D576" : 52, - "u1D483.st" : 4, - "u1D694" : 11, - "u1D70C" : 13, - "u1D6F3" : 5, - "dotlessi.sso" : 39, - "u1D61C" : 81, - "uni27E6.v2" : 6, - "u1D484.st" : 20, - "copyleft.st" : 28, - "u1D43C" : 85, - "SF020000" : 48, - "uni23E0.h2" : 28, - "u1D729" : 54, - "u1D64A" : 54, - "uni2581" : 28, - "u1D639" : 104, - "contourintegral.v1" : 591, - "u1D70D.sts" : 4, - "u1D485.st" : 18, - "u1D621" : 119, - "u1D46A" : 66, - "u1D724.sts" : 22, - "u1D6EF" : 63, - "u1D531" : 44, - "dcaron.sts" : 16, - "u1D7B6" : 59, - "u1D730.sts" : 158, - "published.st" : 28, - "u1D441" : 106, - "u1D667" : 108, - "abrevehookabove" : 11, - "abrevetilde.st" : 3, - "u1D5FF" : 12, - "Ygrave" : 16, - "abrevegrave" : 11, - "u1D577" : 6, - "asciitilde" : 27, - "u1D59A.st" : 13, - "u1D738.sts" : 28, - "uni23DE.h7" : 28, - "u1D47A.st" : 34, - "u1D487" : 86, - "uni2A0C" : 332, - "uogonek" : 27, - "u1D70D" : 74, - "ydieresis" : 8, - "u1D6F4" : 54, - "u1D531.st" : 18, - "u1D61D" : 161, - "emdash" : 27, - "u1D487.st" : 78, - "u1D411.st" : 19, - "u1D47B.st" : 169, - "u1D43D" : 106, - "u1D73B" : 42, - "u1D504" : 20, - "u1D64B" : 75, - "uhorn.st" : 37, - "uni23E1" : 28, - "uni23E1.h5" : 28, - "u1D488.st" : 4, - "ahookabove.st" : 3, - "u1D622" : 21, - "u1D46B" : 5, - "u1D41F.sts" : 115, - "u1D47C.st" : 90, - "uni23DE.h2" : 28, - "u1D532" : 25, - "yhookabove" : 8, - "u1D436.sts" : 7, - "lambda" : 54, - "u1D442" : 5, - "u1D668" : 75, - "u1D650" : 76, - "u1D578" : 21, - "u1D47D.st" : 249, - "atilde.st" : 3, - "u1D488" : 17, - "u1D470" : 83, - "lacute.st" : 17, - "u1D696" : 19, - "u1D6F5" : 148, - "R.st" : 16, - "registered.st" : 28, - "u1D70E" : 24, - "u1D61E" : 161, - "u1D45F.sts" : 9, - "u1D47E.st" : 145, - "u1D6CA.st" : 25, - "u1D43E" : 68, - "u1D73C" : 22, - "yacute" : 8, - "u1D64C" : 54, - "u1D490.st" : 3, - "u1D713" : 12, - "uni2232.v1" : 591, - "dcaron.st" : 39, - "u1D47F.st" : 11, - "u1D623" : 46, - "integral" : 332, - "u1D46C" : 43, - "u1D6CB.st" : 25, - "u1D7B8" : 29, - "uni23DF.h5" : 28, - "u1D443" : 140, - "u1D669" : 70, - "u1D491.st" : 4, - "u1D7A0" : 75, - "u1D651" : 143, - "u1D579" : 14, - "u1D49A" : 20, - "uni222C.v1" : 591, - "u1D6D8.st" : 25, - "u1D701.st" : 34, - "uni23B4.h4" : 28, - "u1D6CC.st" : 65, - "u1D5C0" : 13, - "Ydieresis" : 16, - "u1D471" : 91, - "u1D697" : 15, - "u1D70F" : 102, - "divorced.st" : 230, - "u1D6F6" : 146, - "adotbelow" : 11, - "u1D492.st" : 16, - "u1D61F" : 119, - "Itilde" : 15, - "u1D52F" : 34, - "u1D702.st" : 6, - "u1D6CD.st" : 25, - "u1D73D" : 13, - "uni2111" : 7, - "u1D6C2.sts" : 6, - "u1D64D" : 77, - "u1D416" : 3, - "u1D714" : 10, - "u1D624" : 83, - "u1D6CB.sts" : 6, - "u1D46D" : 148, - "abrevehookabove.st" : 3, - "uni23DC.h3" : 28, - "u1D7B9" : 57, - "u1D742" : 54, - "registered" : 28, - "u1D58B" : 28, - "ohorndotbelow.st" : 7, - "u1D5EA" : 3, - "u1D7A1" : 53, - "u1D652" : 145, - "u1D6F6.sts" : 116, - "u1D49B" : 11, - "asciicircum.st" : 33, - "kappa" : 23, - "u1D727.sts" : 47, - "idieresis.st" : 13, - "u1D472" : 60, - "uhorntilde" : 43, - "uni2145" : 15, - "u1D6F7" : 4, - "Rcaron" : 24, - "u1D733.sts" : 73, - "uni23B5.h7" : 28, - "f.sts" : 58, - "uni03D1" : 21, - "SF100000" : 48, - "u1D747.sts" : 14, - "uni23DC" : 28, - "u1D420.st" : 5, - "u1D64E" : 68, - "emdash.st" : 11, - "asciitilde.low" : 27, - "u1D52F.st" : 7, - "u1D715" : 63, - "u1D625" : 93, - "longs.st" : 72, - "aogonek.st" : 7, - "u1D411.sts" : 7, - "u1D535" : 10, - "u1D67C" : 10, - "uni23B5.h2" : 28, - "uni20EB" : 31, - "u1D445" : 24, - "u1D743" : 11, - "u1D7A2" : 106, - "uni23DD.h6" : 28, - "u1D653" : 88, - "u1D41A.sts" : 6, - "Imacron.st" : 21, - "u1D439.sts" : 107, - "u1D6F8" : 51, - "seven" : 13, - "u1D6E4.st" : 128, - "u1D681" : 25, - "u1D708.st" : 42, - "u1D591" : 7, - "uni27E6.v4" : 5, - "leaf.st" : 34, - "integral.v1" : 591, - "uni23E0.h4" : 28, - "uhorndotbelow.sts" : 10, - "u1D508" : 7, - "ohorngrave" : 16, - "u1D64F" : 126, - "u1D418" : 8, - "u1D709.st" : 4, - "uni23DD.h1" : 28, - "u1D471.sts" : 50, - "abreveacute" : 11, - "u1D626" : 55, - "u1D46F" : 73, - "uhornacute.st" : 37, - "u1D479.sts" : 15, - "u1D6DC" : 27, - "u1D446" : 60, - "u1D6E6.st" : 30, - "u1D744" : 12, - "u1D7A3" : 126, - "u1D5EC" : 3, - "u1D654" : 147, - "u1D79B" : 76, - "uhorngrave.st" : 37, - "uni03F5.st" : 18, - "uni2146" : 75, - "acircumflexacute.st" : 3, - "u1D474" : 102, - "u1D6F9" : 109, - "u1D6E7.st" : 47, - "u1D592" : 7, - "u1D60A" : 107, - "uhornacute" : 43, - "uni23DD" : 28, - "u1D51A" : 37, - "u1D509" : 38, - "u1D41A.st" : 18, - "u1D42A" : 22, - "u1D6E8.st" : 52, - "u1D6DC.st" : 17, - "R" : 24, - "Y.st" : 3, - "uni23E1.h7" : 28, - "u1D5BF" : 69, - "u1D627" : 217, - "uni23DE.h4" : 28, - "V" : 8, - "u1D6DD" : 22, - "W" : 9, - "u1D447" : 148, - "X" : 4, - "u1D6DD.st" : 13, - "u1D58E" : 24, - "Y" : 16, - "u1D745" : 14, - "u1D655" : 106, - "u1D7A4" : 88, - "u1D79C" : 76, - "u1D5C4" : 10, - "u1D475" : 105, - "u1D6F1.sts" : 6, - "uni23E1.h2" : 28, - "a" : 11, - "u1D60B" : 52, - "u1D6F9.sts" : 54, - "u1D6EE.sts" : 41, - "u1D722.sts" : 19, - "u1D51B" : 18, - "uni2113" : 9, - "uhorndotbelow.st" : 37, - "f" : 79, - "u1D72B.sts" : 17, - "g" : 13, - "Ytilde" : 16, - "abreve.st" : 3, - "h" : 7, - "u1D742.sts" : 17, - "u1D628" : 99, - "k" : 11, - "u1D610" : 81, - "u1D6F1.st" : 51, - "l" : 5, - "u1D715.st" : 52, - "m" : 8, - "u1D448" : 105, - "u1D746" : 13, - "n" : 7, - "u1D7A5" : 46, - "uni23DF.h7" : 28, - "uogonek.st" : 7, - "u1D656" : 49, - "u1D79D" : 114, - "uacute" : 7, - "q" : 27, - "ohorn.st" : 7, - "lcaron" : 52, - "u1D49A.st" : 7, - "u1D6F2.st" : 135, - "uni2147" : 17, - "u1D41F.st" : 120, - "u1D476" : 6, - "uni23B4.h6" : 28, - "u" : 7, - "u1D684" : 23, - "bracketleft.v5" : 7, - "ohorngrave.st" : 7, - "u1D6E3" : 25, - "Ytilde.st" : 3, - "adieresis.st" : 3, - "u1D60C" : 118, - "v" : 8, - "u1D5F3" : 73, - "uni23DE" : 28, - "w" : 9, - "x" : 16, - "y" : 8, - "u1D440.sts" : 35, - "u1D70B.st" : 4, - "u1D72A" : 6, - "uni23DF.h2" : 28, - "u1D719" : 5, - "u1D63A" : 107, - "u1D448.sts" : 41, - "star.alt" : 23, - "u1D43D.sts" : 46, - "u1D701" : 64, - "u1D629" : 16, - "married" : 105, - "uni23B4.h1" : 28, - "u1D6F4.st" : 31, - "bracketleft.v7" : 8, - "u1D611" : 92, - "uni23DC.h5" : 28, - "published.sts" : 28, - "u1D449" : 214, - "u1D747" : 66, - "u1D7A6" : 71, - "adotbelow.st" : 3, - "u1D431" : 6, - "u1D657" : 50, - "u1D474.sts" : 47, - "u1D79E" : 54, - "u1D6F5.st" : 143, - "u1D480.sts" : 236, - "iacute.st" : 4, - "dotlessi.fra" : 17, - "aacute" : 11, - "u1D477" : 154, - "dotlessj.ssbo" : 56, - "u1D70D.st" : 52, - "acircumflextilde" : 11, - "u1D47D.sts" : 253, - "u1D685" : 9, - "ydotbelow" : 8, - "u1D6E4" : 134, - "acircumflex" : 11, - "u1D60D" : 132, - "u1D5F4" : 12, - "u1D6F6.st" : 140, - "uni2233.v1" : 591, - "u1D6EA.st" : 58, - "u1D70E.st" : 4, - "u1D72B" : 72, - "seven.st" : 4, - "ohornacute.st" : 7, - "u1D63B" : 87, - "block" : 28, - "emdash.alt.st" : 11, - "u1D702" : 27, - "u1D720.st" : 27, - "u1D612" : 119, - "u1D6EB.st" : 47, - "ygrave" : 8, - "u1D70F.st" : 83, - "uni222D.v1" : 591, - "uni23B5.h4" : 28, - "u1D748" : 13, - "u1D7A7" : 91, - "kappa.st" : 7, - "copyright.st" : 28, - "u1D658" : 80, - "u1D436.st" : 52, - "Racute" : 24, - "u1D42A.st" : 8, - "u1D6F8.st" : 24, - "u1D640" : 105, - "u1D721.st" : 47, - "asciitilde.low.st" : 27, - "imacron" : 70, - "u1D730" : 159, - "u1D79F" : 75, - "uni2148" : 80, - "leaf.sts" : 16, - "u1D7D5" : 11, - "integraltp" : 591, - "u1D686" : 16, - "icircumflex" : 41, - "u1D60E" : 90, - "uni23DF" : 28, - "u1D6F9.st" : 93, - "u1D722.st" : 55, - "uni27E6.v6" : 6, - "u1D6ED.st" : 79, - "u1D51E" : 25, - "contourintegral" : 332, - "u1D6E8.sts" : 7, - "u1D42E" : 4, - "u1D72C" : 154, - "uni23E0.h6" : 28, - "u1D438.st" : 30, - "uni23DD.h3" : 28, - "u1D703" : 14, - "u1D725.sts" : 12, - "u1D6EE.st" : 83, - "aring.st" : 3, - "u1D45C" : 12, - "u1D523" : 23, - "u1D749" : 111, - "u1D66A" : 57, - "u1D7A8" : 70, - "u1D439.st" : 128, - "abreve" : 11, - "Rcaron.st" : 16, - "u1D659" : 106, - "ncommaaccent" : 7, - "u1D724.st" : 61, - "u1D641" : 120, - "u1D6EF.st" : 40, - "u1D6A0" : 11, - "uni27E6.v1" : 6, - "uhornhookabove.st" : 37, - "u1D479" : 37, - "Uhorngrave" : 4, - "uni23E0.h1" : 28, - "Ydotbelow" : 16, - "u1D6E6" : 54, - "u1D597" : 22, - "u1D60F" : 81, - "u1D725.st" : 46, - "abreveacute.st" : 3, - "Imacron.sts" : 6, - "u1D72D" : 5, - "u1D440.st" : 79, - "u1D63D" : 49, - "a.st" : 3, - "ntilde" : 7, - "iogonek" : 3, - "u1D614" : 75, - "u1D45D" : 15, - "u1D7BA" : 28, - "ucircumflex" : 7, - "u1D443.sts" : 110, - "u1D441.st" : 83, - "u1D66B" : 93, - "Imacron" : 29, - "u1D6CA" : 30, - "u1D7A9" : 38, - "u1D732" : 34, - "uni03D1.st" : 3, - "u1D727.st" : 84, - "uni23DE.h6" : 28, - "SF050000" : 48, - "itilde" : 56, - "u1D642" : 81, - "u1D44C.sts" : 193, - "alpha" : 24, - "longs" : 79, - "u1D48B" : 7, - "uni2149" : 80, - "u1D688" : 8, - "u1D6E7" : 68, - "u1D728.st" : 91, - "uni23E1.h4" : 28, - "u1D477.sts" : 151, - "agrave.st" : 3, - "uhorntilde.sts" : 10, - "dotlessj.sso" : 39, - "u1D580" : 49, - "Uhorndotbelow" : 4, - "threequartersemdash.st" : 16, - "uni23DE.h1" : 29, - "Ydieresis.st" : 3, - "acircumflexdotbelow" : 11, - "u1D490" : 12, - "u1D443.st" : 135, - "u1D72E" : 44, - "u1D63E" : 98, - "u1D729.st" : 38, - "uni211C" : 26, - "kcommaaccent" : 11, - "u1D615" : 79, - "u1D45E" : 34, - "u1D7BB" : 5, - "published" : 28, - "u1D66C" : 94, - "u1D6CB" : 30, - "longs.sts" : 58, - "u1D435" : 25, - "ohorntilde" : 16, - "u1D6FA.st" : 20, - "u1D71E.st" : 154, - "u1D733" : 106, - "uhorndotbelow" : 43, - "u1D643" : 76, - "Rcommaaccent.st" : 16, - "u1D6A2" : 3, - "Ydotbelow.st" : 3, - "uhorn.sts" : 10, - "u1D69A" : 40, - "u1D445.st" : 16, - "u1D463" : 11, - "u1D730.st" : 164, - "u1D6E8" : 78, - "lcommaaccent" : 5, - "u1D599" : 42, - "u1D581" : 13, - "u1D446.st" : 36, - "u1D491" : 13, - "u1D72F" : 163, - "uni23DF.h4" : 28, - "u1D63F" : 52, - "u1D6CC.sts" : 37, - "uni23B4.h3" : 28, - "u1D616" : 54, - "acircumflexacute" : 11, - "u1D45F" : 13, - "u1D447.st" : 143, - "lacute" : 26, - "u1D7BC" : 58, - "u1D43B.st" : 52, - "u1D526" : 17, - "u1D66D" : 77, - "u1D732.st" : 11, - "u1D6CC" : 73, - "ahookabove" : 11, - "u1D436" : 73, - "asciicircum" : 33, - "u1D57D" : 28, - "Yhookabove.st" : 3, - "u1D6FD.st" : 12, - "ohornhookabove.st" : 7, - "u1D644" : 76, - "u1D728.sts" : 60, - "u1D734" : 35, - "uni23DC.h7" : 28, - "u1D448.st" : 83, - "u1D43C.st" : 58, - "ltshade" : 28, - "u1D6FA" : 42, - "u1D464" : 3, - "u1D6FE.st" : 39, - "u1D733.st" : 98, - "u1D6E9" : 5, - "u1D7C1" : 36, - "underscore.st" : 28, - "uring" : 7, - "u1D582" : 33, - "u1D449.st" : 214, - "u1D492" : 29, - "u1D43D.st" : 85, - "u1D734.st" : 20, - "married.st" : 107, - "u1D6FF.st" : 10, - "uni23DC.h2" : 28, - "u1D41A" : 22, - "copyright.sts" : 28, - "u1D617" : 79, - "f.st" : 72, - "u1D43E.st" : 47, - "u1D7BD" : 57, - "uni23B4" : 28, - "u1D66E" : 93, - "uni23B5.h6" : 28, - "u1D6CD" : 30, - "u1D437" : 4, - "u1D645" : 76, - "u1D450.st" : 12, - "ohornacute" : 16, - "ohorn" : 16, - "u1D43B.sts" : 7, - "u1D7C2" : 36, - "u1D571.st" : 10, - "ugrave" : 7, - "underscore.sts" : 28, - "acircumflexgrave" : 11, - "aacute.st" : 3, - "u1D451.st" : 8, - "idieresis" : 27, - "u1D583" : 14, - "uni2230.v1" : 591, - "g.st" : 4, - "u1D493" : 4, - "divorced" : 216, - "u1D72B.st" : 53, - "u1D791" : 49, - "uni23B5.h1" : 28, - "u1D472.sts" : 12, - "uni2230" : 332, - "u1D708" : 58, - "gcommaaccent" : 13, - "asciitilde.low.sts" : 27, - "u1D46F.sts" : 19, - "uni23DD.h5" : 28, - "recipe.st" : 16, - "u1D618" : 54, - "u1D47B.sts" : 163, - "u1D738.st" : 49, - "u1D7BE" : 36, - "u1D72C.st" : 160, - "u1D66F" : 79, - "SF060000" : 48, - "gbreve" : 13, - "u1D438" : 54, - "u1D510" : 28, - "u1D57F" : 37, - "u1D420" : 11, - "u1D646" : 104, - "u1D453.st" : 75, - "u1D6A5" : 5, - "uni27E6.v3" : 5, - "divorced.sts" : 238, - "u1D5B5" : 13, - "uni23E0.h3" : 28, - "u1D466" : 28, - "Yhookabove" : 16, - "u1D7C3" : 48, - "u1D674" : 5, - "uhornhookabove" : 43, - "u1D454.st" : 7, - "copyleft" : 28, - "agrave" : 11, - "ytilde" : 8, - "ohornhookabove" : 16, - "acircumflexhookabove" : 11, - "u1D72E.st" : 28, - "u1D792" : 120, - "uhorn" : 43, - "u1D71A" : 13, - "mu" : 23, - "u1D709" : 36, - "u1D62A" : 92, - "u1D619" : 82, - "uni27E6" : 6, - "ohorndotbelow" : 16, - "u1D72F.st" : 169, - "dotlessi.frab" : 24, - "u1D529" : 26, - "u1D44A" : 132, - "u1D7BF" : 30, - "u1D576.st" : 21, - "uni23B5" : 28, - "u1D511" : 26, - "u1D439" : 134, - "u1D737" : 6, - "u1D421" : 4, - "u1D44A.st" : 125, - "imacron.st" : 66, - "uhookabove" : 7, - "u1D557" : 27, - "u1D5B6" : 13, - "u1D69E" : 15, - "amacron" : 11, - "u1D6F2.sts" : 110, - "u1D467" : 30, - "u1D6FD" : 36, - "acircumflexgrave.st" : 3, - "imacron.sts" : 51, - "uni23E1.h6" : 28, - "u1D44B.st" : 24, - "u1D742.st" : 44 + "version": "1.4", + "constants": { + "ScriptPercentScaleDown": 70, + "ScriptScriptPercentScaleDown": 50, + "DelimitedSubFormulaMinHeight": 1300, + "DisplayOperatorMinHeight": 1300, + "RadicalDegreeBottomRaisePercent": 60, + "MathLeading": 154, + "AxisHeight": 250, + "AccentBaseHeight": 450, + "FlattenedAccentBaseHeight": 664, + "SubscriptShiftDown": 247, + "SubscriptTopMax": 344, + "SubscriptBaselineDropMin": 200, + "SuperscriptShiftUp": 363, + "SuperscriptShiftUpCramped": 289, + "SuperscriptBottomMin": 108, + "SuperscriptBaselineDropMax": 250, + "SubSuperscriptGapMin": 160, + "SuperscriptBottomMaxWithSubscript": 344, + "SpaceAfterScript": 56, + "UpperLimitGapMin": 200, + "UpperLimitBaselineRiseMin": 111, + "LowerLimitGapMin": 167, + "LowerLimitBaselineDropMin": 600, + "StackTopShiftUp": 444, + "StackTopDisplayStyleShiftUp": 677, + "StackBottomShiftDown": 345, + "StackBottomDisplayStyleShiftDown": 686, + "StackGapMin": 120, + "StackDisplayStyleGapMin": 280, + "StretchStackTopShiftUp": 111, + "StretchStackBottomShiftDown": 600, + "StretchStackGapAboveMin": 200, + "StretchStackGapBelowMin": 167, + "FractionNumeratorShiftUp": 394, + "FractionNumeratorDisplayStyleShiftUp": 677, + "FractionDenominatorShiftDown": 345, + "FractionDenominatorDisplayStyleShiftDown": 686, + "FractionNumeratorGapMin": 40, + "FractionNumDisplayStyleGapMin": 120, + "FractionRuleThickness": 40, + "FractionDenominatorGapMin": 40, + "FractionDenomDisplayStyleGapMin": 120, + "SkewedFractionHorizontalGap": 350, + "SkewedFractionVerticalGap": 96, + "OverbarVerticalGap": 120, + "OverbarRuleThickness": 40, + "OverbarExtraAscender": 40, + "UnderbarVerticalGap": 120, + "UnderbarRuleThickness": 40, + "UnderbarExtraDescender": 40, + "RadicalVerticalGap": 50, + "RadicalDisplayStyleVerticalGap": 148, + "RadicalRuleThickness": 40, + "RadicalExtraAscender": 40, + "RadicalKernBeforeDegree": 278, + "RadicalKernAfterDegree": -556, + "MinConnectorOverlap": 20 }, - "v_variants" : { - "uni21A1" : [ - "uni21A1", - "uni21A1.v1" - ], - "uni230A" : [ - "uni230A", - "uni230A.v1", - "uni230A.v2", - "uni230A.v3", - "uni230A.v4", - "uni230A.v5", - "uni230A.v6", - "uni230A.v7" - ], - "uni22A4" : [ - "uni22A4", - "uni27D9" - ], - "uni2A02" : [ - "uni2A02", - "uni2A02.v1" - ], - "uni21A7" : [ - "uni21A7", - "uni21A7.v1" - ], - "parenleft" : [ + "v_variants": { + "parenleft": [ "parenleft", "parenleft.v1", "parenleft.v2", @@ -1040,114 +70,17 @@ "parenleft.v6", "parenleft.v7" ], - "uni2A05" : [ - "uni2A05", - "uni2A05.v1" - ], - "arrowdown" : [ - "arrowdown", - "arrowdown.v1" - ], - "uni21BE" : [ - "uni21BE", - "uni21BE.v1" - ], - "uni27E8" : [ - "uni27E8", - "uni27E8.v1", - "uni27E8.v2", - "uni27E8.v3", - "uni27E8.v4", - "uni27E8.v5", - "uni27E8.v6", - "uni27E8.v7" - ], - "uni21D6" : [ - "uni21D6", - "uni21D6.v1" - ], - "uni2210" : [ - "uni2210", - "uni2210.v1" - ], - "uni2198" : [ - "uni2198", - "uni2198.v1" - ], - "angleleft" : [ - "angleleft", - "uni27E8.v1", - "uni27E8.v2", - "uni27E8.v3", - "uni27E8.v4", - "uni27E8.v5", - "uni27E8.v6", - "uni27E8.v7" - ], - "uni21D9" : [ - "uni21D9", - "uni21D9.v1" - ], - "uni22C1" : [ - "uni22C1", - "uni22C1.v1" - ], - "radical" : [ - "radical", - "radical.v1", - "radical.v2", - "radical.v3", - "radical.v4" - ], - "uni27EA" : [ - "uni27EA", - "uni27EA.v1", - "uni27EA.v2", - "uni27EA.v3", - "uni27EA.v4", - "uni27EA.v5", - "uni27EA.v6", - "uni27EA.v7" - ], - "uni222D" : [ - "uni222D", - "uni222D.v1" - ], - "uni2B0D" : [ - "uni2B0D", - "uni2B0D.v1" - ], - "uni21F3" : [ - "uni21F3", - "uni21F3.v1" - ], - "arrowdblup" : [ - "arrowdblup", - "arrowdblup.v1" - ], - "uni21B2" : [ - "uni21B2", - "uni21B2.v1" - ], - "uni2230" : [ - "uni2230", - "uni2230.v1" - ], - "bracketright" : [ - "bracketright", - "bracketright.v1", - "bracketright.v2", - "bracketright.v3", - "bracketright.v4", - "bracketright.v5", - "bracketright.v6", - "bracketright.v7" - ], - "integral" : [ - "integral", - "integral.v1" + "parenright": [ + "parenright", + "parenright.v1", + "parenright.v2", + "parenright.v3", + "parenright.v4", + "parenright.v5", + "parenright.v6", + "parenright.v7" ], - "slash" : [ + "slash": [ "slash", "slash.v1", "slash.v2", @@ -1157,23 +90,17 @@ "slash.v6", "slash.v7" ], - "uni2233" : [ - "uni2233", - "uni2233.v1" - ], - "uni21E7" : [ - "uni21E7", - "uni21E7.v1" - ], - "uni22A3" : [ - "uni22A3", - "uni27DE" - ], - "uni2A01" : [ - "uni2A01", - "uni2A01.v1" + "bracketleft": [ + "bracketleft", + "bracketleft.v1", + "bracketleft.v2", + "bracketleft.v3", + "bracketleft.v4", + "bracketleft.v5", + "bracketleft.v6", + "bracketleft.v7" ], - "backslash" : [ + "backslash": [ "backslash", "backslash.v1", "backslash.v2", @@ -1183,121 +110,231 @@ "backslash.v6", "backslash.v7" ], - "uni2A04" : [ - "uni2A04", - "uni2A04.v1" + "bracketright": [ + "bracketright", + "bracketright.v1", + "bracketright.v2", + "bracketright.v3", + "bracketright.v4", + "bracketright.v5", + "bracketright.v6", + "bracketright.v7" ], - "uni27E7" : [ - "uni27E7", - "uni27E7.v1", - "uni27E7.v2", - "uni27E7.v3", - "uni27E7.v4", - "uni27E7.v5", - "uni27E7.v6", - "uni27E7.v7" + "braceleft": [ + "braceleft", + "braceleft.v1", + "braceleft.v2", + "braceleft.v3", + "braceleft.v4", + "braceleft.v5", + "braceleft.v6", + "braceleft.v7" ], - "uni21D5" : [ - "uni21D5", - "uni21D5.v1" + "bar": [ + "bar", + "divides.v1", + "divides.v2", + "divides.v3", + "divides.v4", + "divides.v5", + "divides.v6", + "divides.v7" ], - "uni2B07" : [ - "uni2B07", - "uni2B07.v1" + "braceright": [ + "braceright", + "braceright.v1", + "braceright.v2", + "braceright.v3", + "braceright.v4", + "braceright.v5", + "braceright.v6", + "braceright.v7" ], - "uni2197" : [ - "uni2197", - "uni2197.v1" + "fraction": [ + "fraction", + "fraction.v1", + "fraction.v2", + "fraction.v3", + "fraction.v4", + "fraction.v5", + "fraction.v6", + "fraction.v7" ], - "angleright" : [ - "angleright", - "uni27E9.v1", - "uni27E9.v2", - "uni27E9.v3", - "uni27E9.v4", - "uni27E9.v5", - "uni27E9.v6", - "uni27E9.v7" + "arrowup": [ + "arrowup", + "arrowup.v1" ], - "uni21D8" : [ - "uni21D8", - "uni21D8.v1" + "arrowdown": [ + "arrowdown", + "arrowdown.v1" ], - "uni22C0" : [ - "uni22C0", - "uni22C0.v1" + "arrowupdn": [ + "arrowupdn", + "arrowupdn.v1" ], - "contourintegral" : [ - "contourintegral", - "contourintegral.v1" + "uni2196": [ + "uni2196", + "uni2196.v1" ], - "parallel" : [ - "parallel", - "parallel.v1", - "parallel.v2", - "parallel.v3", - "parallel.v4", - "parallel.v5", - "parallel.v6", - "parallel.v7" + "uni2199": [ + "uni2199", + "uni2199.v1" ], - "uni21C3" : [ - "uni21C3", - "uni21C3.v1" + "uni2197": [ + "uni2197", + "uni2197.v1" ], - "uni22C3" : [ - "uni22C3", - "uni22C3.v1" + "uni2198": [ + "uni2198", + "uni2198.v1" ], - "uni222C" : [ - "uni222C", - "uni222C.v1" + "uni219F": [ + "uni219F", + "uni219F.v1" ], - "bracketleft" : [ - "bracketleft", - "bracketleft.v1", - "bracketleft.v2", - "bracketleft.v3", - "bracketleft.v4", - "bracketleft.v5", - "bracketleft.v6", - "bracketleft.v7" + "uni21A1": [ + "uni21A1", + "uni21A1.v1" ], - "uni2A0C" : [ - "uni2A0C", - "uni2A0C.v1" + "uni21A5": [ + "uni21A5", + "uni21A5.v1" ], - "uni27EF" : [ - "uni27EF", - "uni27EF.v1", - "uni27EF.v2", - "uni27EF.v3", - "uni27EF.v4", - "uni27EF.v5", - "uni27EF.v6", - "uni27EF.v7" + "uni21A7": [ + "uni21A7", + "uni21A7.v1" ], - "uni222F" : [ - "uni222F", - "uni222F.v1" + "uni21B0": [ + "uni21B0", + "uni21B0.v1" ], - "uni219F" : [ - "uni219F", - "uni219F.v1" + "uni21B2": [ + "uni21B2", + "uni21B2.v1" ], - "uni21B1" : [ + "uni21B1": [ "uni21B1", "uni21B1.v1" ], - "uni21F5" : [ + "uni21B3": [ + "uni21B3", + "uni21B3.v1" + ], + "uni21BE": [ + "uni21BE", + "uni21BE.v1" + ], + "uni21C2": [ + "uni21C2", + "uni21C2.v1" + ], + "uni21BF": [ + "uni21BF", + "uni21BF.v1" + ], + "uni21C3": [ + "uni21C3", + "uni21C3.v1" + ], + "uni21C5": [ + "uni21C5", + "uni21C5.v1" + ], + "uni21F5": [ "uni21F5", "uni21F5.v1" ], - "uni2232" : [ - "uni2232", - "uni2232.v1" + "uni21C8": [ + "uni21C8", + "uni21C8.v1" + ], + "uni21CA": [ + "uni21CA", + "uni21CA.v1" + ], + "arrowdblup": [ + "arrowdblup", + "arrowdblup.v1" + ], + "arrowdbldown": [ + "arrowdbldown", + "arrowdbldown.v1" + ], + "uni21D5": [ + "uni21D5", + "uni21D5.v1" + ], + "uni21D6": [ + "uni21D6", + "uni21D6.v1" + ], + "uni21D9": [ + "uni21D9", + "uni21D9.v1" + ], + "uni21D7": [ + "uni21D7", + "uni21D7.v1" + ], + "uni21D8": [ + "uni21D8", + "uni21D8.v1" + ], + "uni21E7": [ + "uni21E7", + "uni21E7.v1" + ], + "uni21E9": [ + "uni21E9", + "uni21E9.v1" + ], + "uni21F3": [ + "uni21F3", + "uni21F3.v1" + ], + "uni2B06": [ + "uni2B06", + "uni2B06.v1" + ], + "uni2B07": [ + "uni2B07", + "uni2B07.v1" + ], + "uni2B0D": [ + "uni2B0D", + "uni2B0D.v1" + ], + "uni27EE": [ + "uni27EE", + "uni27EE.v1", + "uni27EE.v2", + "uni27EE.v3", + "uni27EE.v4", + "uni27EE.v5", + "uni27EE.v6", + "uni27EE.v7" + ], + "uni27EF": [ + "uni27EF", + "uni27EF.v1", + "uni27EF.v2", + "uni27EF.v3", + "uni27EF.v4", + "uni27EF.v5", + "uni27EF.v6", + "uni27EF.v7" + ], + "uni2308": [ + "uni2308", + "uni2308.v1", + "uni2308.v2", + "uni2308.v3", + "uni2308.v4", + "uni2308.v5", + "uni2308.v6", + "uni2308.v7" ], - "uni2309" : [ + "uni2309": [ "uni2309", "uni2309.v1", "uni2309.v2", @@ -1307,37 +344,17 @@ "uni2309.v6", "uni2309.v7" ], - "parenright" : [ - "parenright", - "parenright.v1", - "parenright.v2", - "parenright.v3", - "parenright.v4", - "parenright.v5", - "parenright.v6", - "parenright.v7" - ], - "arrowdbldown" : [ - "arrowdbldown", - "arrowdbldown.v1" - ], - "arrowupdn" : [ - "arrowupdn", - "arrowupdn.v1" - ], - "uni22A2" : [ - "uni22A2", - "uni27DD" - ], - "uni2A00" : [ - "uni2A00", - "uni2A00.v1" - ], - "uni21A5" : [ - "uni21A5", - "uni21A5.v1" + "uni230A": [ + "uni230A", + "uni230A.v1", + "uni230A.v2", + "uni230A.v3", + "uni230A.v4", + "uni230A.v5", + "uni230A.v6", + "uni230A.v7" ], - "uni230B" : [ + "uni230B": [ "uni230B", "uni230B.v1", "uni230B.v2", @@ -1347,19 +364,7 @@ "uni230B.v6", "uni230B.v7" ], - "uni22A5" : [ - "uni22A5", - "uni27D8" - ], - "uni21E9" : [ - "uni21E9", - "uni21E9.v1" - ], - "uni2A03" : [ - "uni2A03", - "uni2A03.v1" - ], - "uni27E6" : [ + "uni27E6": [ "uni27E6", "uni27E6.v1", "uni27E6.v2", @@ -1369,23 +374,27 @@ "uni27E6.v6", "uni27E6.v7" ], - "uni2A06" : [ - "uni2A06", - "uni2A06.v1" - ], - "uni21BF" : [ - "uni21BF", - "uni21BF.v1" - ], - "uni2B06" : [ - "uni2B06", - "uni2B06.v1" + "uni27E7": [ + "uni27E7", + "uni27E7.v1", + "uni27E7.v2", + "uni27E7.v3", + "uni27E7.v4", + "uni27E7.v5", + "uni27E7.v6", + "uni27E7.v7" ], - "uni2196" : [ - "uni2196", - "uni2196.v1" + "uni27E8": [ + "uni27E8", + "uni27E8.v1", + "uni27E8.v2", + "uni27E8.v3", + "uni27E8.v4", + "uni27E8.v5", + "uni27E8.v6", + "uni27E8.v7" ], - "uni27E9" : [ + "uni27E9": [ "uni27E9", "uni27E9.v1", "uni27E9.v2", @@ -1395,55 +404,17 @@ "uni27E9.v6", "uni27E9.v7" ], - "summation" : [ - "summation", - "summation.v1" - ], - "braceleft" : [ - "braceleft", - "braceleft.v1", - "braceleft.v2", - "braceleft.v3", - "braceleft.v4", - "braceleft.v5", - "braceleft.v6", - "braceleft.v7" - ], - "uni21D7" : [ - "uni21D7", - "uni21D7.v1" - ], - "uni2199" : [ - "uni2199", - "uni2199.v1" - ], - "fraction" : [ - "fraction", - "fraction.v1", - "fraction.v2", - "fraction.v3", - "fraction.v4", - "fraction.v5", - "fraction.v6", - "fraction.v7" - ], - "uni2A09" : [ - "uni2A09", - "uni2A09.v1" - ], - "product" : [ - "product", - "product.v1" - ], - "uni21C2" : [ - "uni21C2", - "uni21C2.v1" - ], - "uni22C2" : [ - "uni22C2", - "uni22C2.v1" + "uni27EA": [ + "uni27EA", + "uni27EA.v1", + "uni27EA.v2", + "uni27EA.v3", + "uni27EA.v4", + "uni27EA.v5", + "uni27EA.v6", + "uni27EA.v7" ], - "uni27EB" : [ + "uni27EB": [ "uni27EB", "uni27EB.v1", "uni27EB.v2", @@ -1453,47 +424,51 @@ "uni27EB.v6", "uni27EB.v7" ], - "uni21C5" : [ - "uni21C5", - "uni21C5.v1" - ], - "uni27EE" : [ - "uni27EE", - "uni27EE.v1", - "uni27EE.v2", - "uni27EE.v3", - "uni27EE.v4", - "uni27EE.v5", - "uni27EE.v6", - "uni27EE.v7" + "angleleft": [ + "angleleft", + "uni27E8.v1", + "uni27E8.v2", + "uni27E8.v3", + "uni27E8.v4", + "uni27E8.v5", + "uni27E8.v6", + "uni27E8.v7" ], - "uni21C8" : [ - "uni21C8", - "uni21C8.v1" + "angleright": [ + "angleright", + "uni27E9.v1", + "uni27E9.v2", + "uni27E9.v3", + "uni27E9.v4", + "uni27E9.v5", + "uni27E9.v6", + "uni27E9.v7" ], - "uni21B0" : [ - "uni21B0", - "uni21B0.v1" + "uni2A09": [ + "uni2A09", + "uni2A09.v1" ], - "arrowup" : [ - "arrowup", - "arrowup.v1" + "divides": [ + "divides", + "divides.v1", + "divides.v2", + "divides.v3", + "divides.v4", + "divides.v5", + "divides.v6", + "divides.v7" ], - "braceright" : [ - "braceright", - "braceright.v1", - "braceright.v2", - "braceright.v3", - "braceright.v4", - "braceright.v5", - "braceright.v6", - "braceright.v7" - ], - "uni21B3" : [ - "uni21B3", - "uni21B3.v1" + "parallel": [ + "parallel", + "parallel.v1", + "parallel.v2", + "parallel.v3", + "parallel.v4", + "parallel.v5", + "parallel.v6", + "parallel.v7" ], - "dblverticalbar" : [ + "dblverticalbar": [ "dblverticalbar", "parallel.v1", "parallel.v2", @@ -1503,4070 +478,475 @@ "parallel.v6", "parallel.v7" ], - "uni2231" : [ + "uni22A5": [ + "uni22A5", + "uni27D8" + ], + "uni22A4": [ + "uni22A4", + "uni27D9" + ], + "uni22A2": [ + "uni22A2", + "uni27DD" + ], + "uni22A3": [ + "uni22A3", + "uni27DE" + ], + "uni22C2": [ + "uni22C2", + "uni22C2.v1" + ], + "uni22C3": [ + "uni22C3", + "uni22C3.v1" + ], + "uni22C0": [ + "uni22C0", + "uni22C0.v1" + ], + "uni22C1": [ + "uni22C1", + "uni22C1.v1" + ], + "uni2A05": [ + "uni2A05", + "uni2A05.v1" + ], + "uni2A06": [ + "uni2A06", + "uni2A06.v1" + ], + "uni2A03": [ + "uni2A03", + "uni2A03.v1" + ], + "uni2A04": [ + "uni2A04", + "uni2A04.v1" + ], + "uni2A00": [ + "uni2A00", + "uni2A00.v1" + ], + "uni2A01": [ + "uni2A01", + "uni2A01.v1" + ], + "uni2A02": [ + "uni2A02", + "uni2A02.v1" + ], + "integral": [ + "integral", + "integral.v1" + ], + "uni222C": [ + "uni222C", + "uni222C.v1" + ], + "uni222D": [ + "uni222D", + "uni222D.v1" + ], + "uni2A0C": [ + "uni2A0C", + "uni2A0C.v1" + ], + "contourintegral": [ + "contourintegral", + "contourintegral.v1" + ], + "uni222F": [ + "uni222F", + "uni222F.v1" + ], + "uni2230": [ + "uni2230", + "uni2230.v1" + ], + "uni2231": [ "uni2231", "uni2231.v1" ], - "uni2A11" : [ + "uni2A11": [ "uni2A11", "uni2A11.v1" ], - "uni2308" : [ - "uni2308", - "uni2308.v1", - "uni2308.v2", - "uni2308.v3", - "uni2308.v4", - "uni2308.v5", - "uni2308.v6", - "uni2308.v7" + "uni2232": [ + "uni2232", + "uni2232.v1" ], - "uni21CA" : [ - "uni21CA", - "uni21CA.v1" + "uni2233": [ + "uni2233", + "uni2233.v1" ], - "bar" : [ - "bar", - "divides.v1", - "divides.v2", - "divides.v3", - "divides.v4", - "divides.v5", - "divides.v6", - "divides.v7" + "summation": [ + "summation", + "summation.v1" ], - "divides" : [ - "divides", - "divides.v1", - "divides.v2", - "divides.v3", - "divides.v4", - "divides.v5", - "divides.v6", - "divides.v7" + "product": [ + "product", + "product.v1" + ], + "uni2210": [ + "uni2210", + "uni2210.v1" + ], + "radical": [ + "radical", + "radical.v1", + "radical.v2", + "radical.v3", + "radical.v4" ] }, - "accents" : { - "u1D688" : 262, - "u1D753.sts" : 599, - "u1D726" : 570, - "u1D430.st" : 465, - "u1D403" : 283, - "u1D570" : 598, - "u1D537.sts" : 319, - "J.st" : 363, - "u1D7CE" : 287, - "u1D429.sts" : 339, - "u1D4AB" : 480, - "u1D76F" : 458, - "u1D44C" : 399, - "u1D4E6.st" : 671, - "Mu.sts" : 594, - "u1D5A5" : 310, - "u1D40C.st" : 607, - "u1D6AA.st" : 371, - "u1D526.st" : 187, - "u1D435.sts" : 543, - "u1D546" : 333, - "u1D70E.sts" : 408, - "u1D749.st" : 362, - "u1D751" : 465, - "u1D7B0" : 459, - "Rho" : 283, - "u1D49F.st" : 532, - "u1D5EE" : 264, - "u1D6CE.sts" : 360, - "u1D58F" : 159, - "uni20ED" : -264, - "u1D71A.sts" : 469, - "u1D441.sts" : 684, - "u1D62D" : 267, - "u1D79A" : 474, - "u1D451.st" : 496, - "u1D6E8" : 542, - "u1D689" : 268, - "zeta.st" : 270, - "u1D6DA.sts" : 508, - "u1D727" : 711, - "u1D5D0" : 341, - "u1D59D.sts" : 385, - "u1D404" : 350, - "u1D571" : 292, - "u1D48F.sts" : 428, - "u1D7CF" : 295, - "u1D50A.sts" : 719, - "u1D4AC" : 482, - "u1D6CB.st" : 318, - "u1D42D.st" : 214, - "u1D44D" : 485, - "u1D739.sts" : 460, - "uni03F1" : 249, - "u1D49B.sts" : 472, - "u1D70B.st" : 384, - "u1D5A6" : 407, - "u1D7B1" : 423, - "u1D6F9.sts" : 536, - "u1D752" : 415, - "u1D57B.st" : 544, - "acute.st" : 319, - "u1D745.sts" : 527, - "u1D472.st" : 663, - "M.sts" : 594, - "u1D5EF" : 128, - "r.st" : 213, - "u1D7FA" : 323, - "u1D6B8.st" : 375, - "u1D529.sts" : 330, - "u1D62E" : 454, - "u1D750.st" : 352, - "u1D79B" : 627, - "u1D6E9" : 498, - "u1D751.sts" : 612, - "u1D4E9.sts" : 575, - "u1D5D1" : 225, - "u1D728" : 615, - "omicron.st" : 285, - "u1D535.sts" : 342, - "u1D405" : 342, - "u1D44E.st" : 325, - "Z.sts" : 424, - "u1D572" : 633, - "u1D610" : 287, - "u1D427.sts" : 354, - "u1D6EC.st" : 568, - "u1D72C.st" : 545, - "uni2131.st" : 785, - "u1D7CE.sts" : 379, - "u1D44E" : 287, - "u1D400.st" : 484, - "Mu" : 458, - "uni2128.st" : 211, - "Zeta" : 316, - "u1D59C.st" : 197, - "u1D433.sts" : 343, - "u1D5A7" : 354, - "u1D70C.sts" : 467, - "u1D493.st" : 337, - "u1D7B2" : 231, - "g.sts" : 441, - "u1D753" : 482, - "u1D6D9.st" : 458, - "u1D6CC.sts" : 187, - "u1D430" : 415, - "u1D58F.sts" : 280, - "eight" : 261, - "u1D719.st" : 471, - "u1D7FB" : 262, - "uni20EE" : -264, - "u1D62F" : 315, - "u1D79C" : 535, - "u1D46F.st" : 671, - "u1D59B.sts" : 282, - "u1D589.st" : 225, - "Theta.sts" : 513, - "uni2017" : 252, - "t.sts" : 225, - "u1D5D2" : 230, - "u1D48D.sts" : 241, - "u1D729" : 544, - "u1D74D.st" : 592, - "u1D406" : 579, - "u1D52A.st" : 389, - "u1D573" : 496, - "u1D611" : 493, - "u1D421.st" : 158, - "caron.st" : 285, - "u1D4AE" : 451, - "u1D737.sts" : 575, - "u1D44F" : 165, - "Phi.st" : 404, - "u1D65A" : 365, - "u1D4D7.st" : 814, - "u1D5A8" : 139, - "u1D6F7.sts" : 553, - "hungarumlaut.sts" : 370, - "u1D743.sts" : 409, - "u1D7B3" : 369, - "u1D754" : 400, - "u1D517.st" : 756, - "u1D431" : 296, - "u1D527.sts" : 253, - "u1D7FC" : 317, - "u1D419.sts" : 475, - "u1D79D" : 503, - "u1D47A" : 561, - "Q.st" : 438, - "u1D4E7.sts" : 663, - "dotlessj.fra" : 135, - "u1D442.st" : 552, - "u1D6E0.st" : 335, - "u1D533.sts" : 258, - "u1D5D3" : 221, - "u1D407" : 450, - "u1D574" : 400, - "u1D425.sts" : 200, - "u1D720.st" : 562, - "u1D612" : 515, - "uni03C2" : 237, - "uni2111.st" : 399, - "rho.sts" : 371, - "u1D4AF" : 500, - "u1D6BE.sts" : 537, - "u1D590.st" : 251, - "u1D6BA" : 401, - "u1D70A.sts" : 352, - "u1D431.sts" : 392, - "u1D6BC.st" : 501, - "u1D41E.st" : 309, - "u1D65B" : 437, - "u1D7D6.st" : 331, - "uni2124" : 333, - "u1D5A9" : 345, - "u1D7B4" : 307, - "u1D6CA.sts" : 181, - "u1D755" : 530, - "u1D58D.sts" : 336, - "u1D432" : 303, - "e.st" : 272, - "u1D47F.sts" : 718, - "u1D56C.st" : 547, - "uni20EF" : -264, - "u1D4AE.sts" : 502, - "space_uni0326.sts" : 332, - "u1D463.st" : 337, - "u1D7FD" : 78, - "u1D79E" : 536, - "u1D4DA" : 745, - "uni03D6.st" : 471, - "u1D47B" : 434, - "u1D6A9.st" : 378, - "u1D729.sts" : 672, - "u1D741.st" : 430, - "u1D48B.sts" : 486, - "u1D5D4" : 366, - "u1D408" : 218, - "u1D575" : 267, - "space_uni0323" : 138, - "u1D6E9.sts" : 634, - "u1D613" : 287, - "u1D780" : 283, - "u1D735.sts" : 640, - "u1D6DD.st" : 391, - "u1D43F.st" : 395, - "grave.st" : 250, - "u1D6BB" : 400, - "u1D71D.st" : 552, - "u1D519.sts" : 619, - "u1D65C" : 437, - "dotlessj.frab" : 150, - "u1D6F5.sts" : 539, - "u1D741.sts" : 485, - "y.st" : 300, - "u1D7B5" : 362, - "u1D58D.st" : 247, - "u1D4D9.sts" : 698, - "u1D484.st" : 404, - "u1D756" : 366, - "u1D525.sts" : 299, - "u1D433" : 259, - "u1D417.sts" : 537, - "u1D7FE" : 262, - "u1D79F" : 535, - "u1D4DB" : 689, - "u1D4E5.sts" : 472, - "u1D47C" : 473, - "u1D531.sts" : 372, - "u1D51A" : 540, - "u1D423.sts" : 268, - "u1D5D5" : 297, - "u1D4DB.st" : 722, - "circumflexbelowcmb" : -264, - "u1D6FE.st" : 300, - "u1D409" : 348, - "u1D576" : 538, - "u1D7E0" : 277, - "u1D614" : 585, - "u1D73E.st" : 216, - "eight.sts" : 354, - "u1D51B.st" : 468, - "u1D6BC.sts" : 581, - "u1D781" : 278, - "u1D6B0.st" : 240, - "u1D412.st" : 417, - "u1D57F.sts" : 715, - "nabla.sts" : 577, - "u1D6BC" : 447, - "u1D65D" : 273, - "dbloverlinecmb" : -264, - "u1D58B.sts" : 398, - "u1D7B6" : 376, - "Omicron" : 389, - "u1D757" : 327, - "u1D47D.sts" : 628, - "dotlessi.sso" : 211, - "u1D4AC.sts" : 536, - "u1D434" : 550, - "alpha" : 356, - "u1D508.st" : 594, - "u1D7FF" : 262, - "u1D4DC" : 757, - "u1D727.sts" : 876, - "D.st" : 282, - "u1D47D" : 476, - "I.sts" : 247, - "u1D51B" : 408, - "u1D5D6" : 433, - "u1D6E7.sts" : 616, - "u1D6D1.st" : 379, - "u1D433.st" : 291, - "u1D577" : 519, - "u1D733.sts" : 585, - "u1D7E1" : 276, - "u1D615" : 502, - "u1D782" : 375, - "u1D711.st" : 405, - "Delta.st" : 469, - "uni211A" : 333, - "u1D517.sts" : 903, - "u1D6BD" : 410, - "V.sts" : 490, - "u1D6F3.sts" : 634, - "uni03F4" : 389, - "u1D4E9.st" : 556, - "u1D581.st" : 542, - "u1D409.sts" : 477, - "u1D65E" : 269, - "u1D6AD.st" : 409, - "u1D40F.st" : 334, - "u1D4D7.sts" : 848, - "u1D529.st" : 251, - "u1D7B7" : 406, - "u1D523.sts" : 363, - "u1D758" : 313, - "u1D415.sts" : 557, - "X.st" : 406, - "u1D435" : 420, - "uni20D0" : -264, - "u1D640" : 481, - "brevebelowcmb" : -264, - "u1D4E3.sts" : 651, - "c.sts" : 358, - "partialdiff" : 291, - "u1D4DD" : 686, - "u1D6AE.sts" : 577, - "u1D6F2.st" : 504, - "dotlessi.mrmb" : 160, - "u1D47E" : 637, - "Sigma" : 350, - "u1D421.sts" : 196, - "dotlessi.mitb.sts" : 277, - "u1D51C" : 406, - "u1D454.st" : 361, - "zeta.sts" : 346, - "u1D5D7" : 301, - "u1D732.st" : 634, - "u1D578" : 658, - "mu.sts" : 358, - "u1D7E2" : 256, - "u1D6BA.sts" : 525, - "u1D616" : 519, - "u1D57D.sts" : 655, - "u1D783" : 387, - "u1D460" : 296, - "p.sts" : 289, - "u1D46F.sts" : 758, - "Psi.sts" : 510, - "u1D6CE.st" : 296, - "u1D6BE" : 418, - "pi.st" : 333, - "u1D4AB.st" : 516, - "u1D65F" : 292, - "uni2126" : 360, - "Alpha.st" : 421, - "l.st" : 131, - "u1D70E.st" : 331, - "u1D719.sts" : 550, - "u1D7B8" : 391, - "u1D47B.sts" : 569, - "uni03F1.st" : 292, - "u1D759" : 458, - "u1D4AA.sts" : 586, - "u1D57E.st" : 532, - "u1D436" : 596, - "tilde.st" : 285, - "dotlessj.frab.sts" : 270, - "u1D475.st" : 670, - "u1D641" : 473, - "Iota.sts" : 247, - "mu" : 237, - "u1D6A0" : 262, - "u1D6D9.sts" : 545, - "u1D725.sts" : 749, - "u1D4DE" : 594, - "u1D753.st" : 526, - "u1D530.st" : 282, - "u1D47F" : 584, - "u1D509.sts" : 402, - "u1D68A" : 215, - "u1D6E5.sts" : 746, - "u1D5D8" : 336, - "u1D731.sts" : 594, - "six.st" : 360, - "u1D579" : 515, - "u1D6EF.st" : 545, - "u1D7E3" : 260, - "u1D617" : 406, - "u1D784" : 376, - "u1D461" : 225, - "u1D6F1.sts" : 682, - "uni211B" : 532, - "u1D72F.st" : 481, - "u1D407.sts" : 577, - "u1D6BF" : 442, - "uni03F5" : 242, - "Nu.sts" : 490, - "u1D403.st" : 324, - "u1D4D5.sts" : 713, - "u1D59F.st" : 266, - "u1D521.sts" : 295, - "u1D496.st" : 391, - "u1D7B9" : 506, - "u1D413.sts" : 521, - "u1D437" : 427, - "u1D6A1" : 258, - "uni20D1" : -264, - "u1D4E1.sts" : 644, - "u1D642" : 575, - "uni210C.sts" : 604, - "u1D6AC.sts" : 471, - "u1D56F.sts" : 618, - "u1D4DF" : 566, - "dotlessj.mitb" : 282, - "u1D6EA" : 347, - "u1D51E" : 329, - "u1D68B" : 90, - "u1D5D9" : 328, - "Phi" : 358, - "u1D57B.sts" : 657, - "u1D7E4" : 242, - "u1D52D.st" : 175, - "Xi" : 333, - "u1D618" : 519, - "u1D6C2.st" : 343, - "u1D46D.sts" : 630, - "u1D424.st" : 149, - "Kappa" : 378, - "u1D462" : 305, - "u1D785" : 337, - "uni2130.sts" : 503, - "Tau.sts" : 479, - "u1D702.st" : 318, - "uni2127" : 362, - "dotlessi.st" : 162, - "u1D717.sts" : 558, - "uni03D1.st" : 338, - "u1D572.st" : 677, - "u1D6D7.sts" : 470, - "K.st" : 430, - "u1D438" : 483, - "u1D6A2" : 263, - "u1D723.sts" : 677, - "u1D643" : 543, - "u1D507.sts" : 585, - "u1D6E3.sts" : 588, - "u1D6EB" : 545, - "u1D51F" : 189, - "u1D68C" : 306, - "u1D6E3.st" : 508, - "u1D445.st" : 444, - "u1D498.sts" : 598, - "u1D72A" : 529, - "phi.st" : 356, - "u1D7E5" : 243, - "u1D513.sts" : 620, - "u1D619" : 404, - "u1D723.st" : 598, - "u1D786" : 395, - "u1D463" : 294, - "u1D405.sts" : 457, - "uni211C" : 430, - "three.sts" : 322, - "u1D593.st" : 292, - "u1D4D3.sts" : 592, - "u1D6BF.st" : 494, - "hungarumlaut" : 274, - "u1D411.sts" : 378, - "u1D54A" : 291, - "breve.sts" : 340, - "circumflex" : 250, - "u1D439" : 475, - "u1D6A3" : 260, - "uni20D2" : -264, - "u1D6AA.sts" : 441, - "u1D644" : 312, - "u1D56D.sts" : 680, - "u1D56F.st" : 499, - "u1D466.st" : 340, - "u1D45F.sts" : 382, - "u1D4E1.st" : 622, - "u1D6EC" : 517, - "u1D68D" : 351, - "u1D744.st" : 329, - "u1D521.st" : 216, - "macron" : 251, - "u1D72B" : 614, - "two" : 240, - "u1D709.sts" : 384, - "uni211C.st" : 486, - "u1D7E6" : 323, - "acute.sts" : 379, - "u1D49A.st" : 391, - "u1D46B.sts" : 588, - "E.sts" : 426, - "u1D787" : 500, - "u1D7D7.sts" : 349, - "s.st" : 264, - "u1D464" : 405, - "u1D6C9.sts" : 396, - "u1D715.sts" : 482, - "uni2128" : 164, - "u1D5AA" : 367, - "u1D54B" : 305, - "u1D6D5.sts" : 372, - "R.sts" : 323, - "u1D598.sts" : 397, - "u1D721.sts" : 656, - "u1D487.st" : 553, - "u1D6A4" : 168, - "u1D645" : 501, - "uni03D1.sts" : 433, - "u1D505.sts" : 627, - "u1D6E1.sts" : 634, - "u1D6ED" : 625, - "u1D496.sts" : 465, - "u1D68E" : 271, - "u1D72C" : 495, - "u1D511.sts" : 640, - "u1D4DE.st" : 625, - "u1D7E7" : 249, - "u1D403.sts" : 389, - "u1D788" : 366, - "u1D465" : 329, - "u1D51E.st" : 390, - "uni211D" : 247, - "u1D4D1.sts" : 604, - "u1D670" : 262, - "u1D6B3.st" : 607, - "breve.st" : 285, - "u1D415.st" : 484, - "nabla" : 416, - "dotlessj.tt" : 263, - "l.sts" : 167, - "u1D5AB" : 139, - "u1D54C" : 361, - "u1D6A5" : 275, - "uni20D3" : -264, - "u1D646" : 543, - "u1D45D.sts" : 362, - "u1D490" : 367, - "u1D6EE" : 542, - "y.sts" : 357, - "u1D68F" : 340, - "u1D707.sts" : 454, - "u1D72D" : 542, - "dotlessi.fra.st" : 174, - "u1D40A" : 438, - "u1D436.st" : 661, - "u1D4B1.st" : 438, - "u1D6D4.st" : 397, - "u1D789" : 290, - "u1D7D5.sts" : 185, - "u1D6C7.sts" : 387, - "u1D7E8" : 334, - "Upsilon" : 389, - "u1D466" : 304, - "u1D6D0" : 288, - "u1D713.sts" : 623, - "u1D504" : 443, - "u1D671" : 189, - "u1D714.st" : 394, - "R.st" : 271, - "u1D46A.st" : 723, - "u1D584.st" : 531, - "u1D5AC" : 437, - "u1D6D3.sts" : 386, - "u1D596.sts" : 555, - "u1D54D" : 305, - "u1D488.sts" : 444, - "u1D647" : 311, - "u1D491" : 296, - "A" : 375, - "u1D494.sts" : 422, - "B" : 256, - "u1D6EF" : 494, - "C" : 507, - "u1D457.st" : 398, - "u1D4D2.st" : 548, - "D" : 243, - "u1D6F5.st" : 447, - "E" : 315, - "u1D72E" : 565, - "F" : 308, - "u1D735.st" : 543, - "u1D401.sts" : 408, - "kappa.sts" : 370, - "G" : 507, - "u1D512.st" : 393, - "H" : 375, - "u1D40B" : 232, - "f.st" : 293, - "I" : 181, - "dotlessi.fra.sts" : 241, - "eta" : 218, - "u1D467" : 336, - "J" : 317, - "u1D48B.st" : 433, - "K" : 378, - "u1D505" : 442, - "u1D672" : 362, - "L" : 193, - "u1D6D1" : 329, - "u1D710" : 306, - "M" : 458, - "u1D4AE.st" : 484, - "u1D44F.sts" : 230, - "N" : 375, - "u1D7E9" : 250, - "uni030A" : -264, - "O" : 388, - "u1D5AD" : 354, - "P" : 250, - "u1D54E" : 416, - "Q" : 388, - "R" : 234, - "S" : 330, - "uni20D4" : -264, - "u1D45B.sts" : 398, - "T" : 361, - "Alpha.sts" : 490, - "u1D648" : 635, - "U" : 375, - "u1D478.st" : 582, - "V" : 375, - "u1D492" : 410, - "u1D6B9.sts" : 580, - "W" : 514, - "u1D530" : 223, - "X" : 361, - "gamma.sts" : 428, - "u1D533.st" : 180, - "Y" : 375, - "u1D705.sts" : 445, - "u1D7D1.st" : 319, - "Z" : 317, - "z.st" : 258, - "u1D72F" : 430, - "u1D7D3.sts" : 376, - "u1D40C" : 546, - "u1D6C5.sts" : 362, - "u1D588.sts" : 448, - "u1D711.sts" : 484, - "u1D468" : 608, - "u1D6D2" : 284, - "u1D673" : 165, - "a" : 214, - "u1D4A9.sts" : 708, - "u1D50F.st" : 502, - "b" : 100, - "u1D711" : 355, - "u1D6A4.st" : 188, - "c" : 249, - "Omega.sts" : 478, - "u1D594.sts" : 473, - "d" : 377, - "u1D406.st" : 644, - "e" : 236, - "u1D5AE" : 367, - "u1D486.sts" : 471, - "u1D54F" : 333, - "f" : 262, - "u1D499.st" : 393, - "u1D4B5.sts" : 434, - "grave.sts" : 302, - "g" : 332, - "h" : 104, - "Mu.st" : 514, - "beta" : 280, - "u1D6A8" : 433, - "i" : 138, - "u1D43A.st" : 661, - "j" : 156, - "u1D649" : 543, - "u1D6D1.sts" : 453, - "k" : 100, - "u1D75A" : 336, - "u1D492.sts" : 519, - "u1D493" : 282, - "l" : 105, - "xi" : 196, - "m" : 350, - "u1D531" : 229, - "n" : 211, - "o" : 249, - "chi" : 267, - "p" : 202, - "theta.st" : 291, - "q" : 318, - "nu.sts" : 328, - "r" : 181, - "u1D57A" : 401, - "u1D40D" : 450, - "s" : 232, - "u1D7CE.st" : 323, - "t" : 161, - "u1D6C5.st" : 301, - "u1D427.st" : 291, - "u1D469" : 477, - "u" : 245, - "u1D4A2.st" : 544, - "delta" : 232, - "u1D507" : 407, - "u1D674" : 254, - "A.sts" : 489, - "three.st" : 282, - "E.st" : 362, - "u1D44D.sts" : 620, - "u1D6D3" : 276, - "u1D705.st" : 371, - "u1D712" : 331, - "uni030B" : -240, - "uni2127.st" : 409, - "u1D5AF" : 259, - "dotlessi.ssbo" : 223, - "uni2130.st" : 484, - "u1D45B.st" : 313, - "u1D7BA" : 373, - "u1D575.st" : 305, - "uni03D6.sts" : 572, - "v" : 264, - "u1D75B" : 343, - "w" : 361, - "x" : 258, - "uni20D5" : -264, - "uni210E.st" : 238, - "u1D6A9" : 334, - "y" : 264, - "z" : 226, - "Iota.st" : 207, - "u1D6B7.sts" : 577, - "N.sts" : 490, - "u1D494" : 324, - "u1D703.sts" : 422, - "u1D532" : 268, - "Epsilon.st" : 365, - "u1D7D1.sts" : 375, - "uni03F5.st" : 291, - "u1D6E6.st" : 536, - "u1D6C3.sts" : 432, - "u1D5DA" : 428, - "u1D448.st" : 469, - "u1D586.sts" : 531, - "u1D57B" : 502, - "u1D40E" : 431, - "Y.st" : 421, - "u1D478.sts" : 670, - "u1D726.st" : 618, - "u1D6D4" : 348, - "u1D508" : 524, - "u1D675" : 260, - "u1D47C.st" : 521, - "u1D592.sts" : 550, - "nine" : 242, - "u1D596.st" : 449, - "u1D713" : 469, - "u1D484.sts" : 467, - "u1D4B3.sts" : 627, - "Eta.st" : 421, - "u1D7BB" : 370, - "u1D75C" : 397, - "uni212D.sts" : 693, - "h.sts" : 166, - "u1D490.sts" : 475, - "asteriskmath" : 250, - "u1D495" : 254, - "u1D469.st" : 526, - "u1D4E4.st" : 523, - "u1D533" : 134, - "m.st" : 403, - "u1D43F.sts" : 455, - "u1D40A.st" : 492, - "u1D747.st" : 247, - "u1D524.st" : 404, - "u1D5DB" : 397, - "two.sts" : 328, - "u1D57C" : 401, - "u.sts" : 341, - "u1D40F" : 293, - "beta.sts" : 407, - "u1D61A" : 442, - "uni2110.st" : 505, - "u1D6D5" : 272, - "u1D44B.sts" : 667, - "u1D509" : 254, - "u1D676" : 335, - "u1D714" : 345, - "u1D6A9.sts" : 450, - "uni2130" : 450, - "u1D7BC" : 462, - "u1D75D" : 429, - "uni20D6" : -264, - "three" : 258, - "u1D43A" : 596, - "u1D6B5.sts" : 500, - "dotaccent.sts" : 201, - "u1D578.sts" : 829, - "u1D701.sts" : 419, - "u1D496" : 345, - "u1D42B.st" : 242, - "u1D534" : 127, - "dieresis" : 253, - "uni03D5.st" : 374, - "u1D6C1.sts" : 637, - "u1D584.sts" : 644, - "u1D5DC" : 166, - "u1D74F.sts" : 524, - "u1D476.sts" : 670, - "u1D57D" : 500, - "u1D4A5.sts" : 636, - "u1D61B" : 484, - "u1D470.st" : 407, - "u1D6D6" : 288, - "u1D590.sts" : 341, - "u1D677" : 262, - "u1D6B6.st" : 483, - "u1D418.st" : 484, - "u1D482.sts" : 433, - "u1D715" : 361, - "u1D4B1.sts" : 461, - "Tau" : 361, - "u1D7BD" : 475, - "u1D75E" : 166, - "u1D6EA.st" : 381, - "u1D44C.st" : 456, - "uni211C.sts" : 613, - "u1D43B" : 542, - "u1D72A.st" : 584, - "u1D497" : 332, - "ring.sts" : 489, - "u1D535" : 204, - "u1D43D.sts" : 627, - "u1D740" : 263, - "u1D59A.st" : 355, - "u1D491.st" : 354, - "u1D5DD" : 356, - "u1D57E" : 490, - "L.st" : 220, - "u1D6D7.st" : 402, - "u1D439.st" : 528, - "u1D4B4.st" : 418, - "u1D61C" : 490, - "u1D6D7" : 356, - "u1D717.st" : 461, - "u1D678" : 263, - "sigma.st" : 351, - "u1D716" : 269, - "u1D46D.st" : 555, - "u1D560" : 235, - "u1D587.st" : 336, - "dieresis.st" : 285, - "gamma" : 293, - "uni2131" : 718, - "u1D7BE" : 468, - "u1D74B.st" : 447, - "u1D75F" : 394, - "u1D6B3.sts" : 697, - "uni20D7" : -264, - "u1D576.sts" : 697, - "u1D43C" : 347, - "u1D468.sts" : 748, - "dotlessi.ds" : 139, - "u1D498" : 460, - "u1D536" : 128, - "dotlessj.ss" : 147, - "u1D7A0" : 457, - "u1D582.sts" : 812, - "u1D741" : 396, - "u1D6F8.st" : 580, - "u1D4D5.st" : 686, - "u1D74D.sts" : 688, - "u1D474.sts" : 878, - "u1D5DE" : 398, - "u1D57F" : 554, - "u1D738.st" : 334, - "Nu" : 375, - "u1D61D" : 481, - "u1D78A" : 269, - "u1D6D8" : 311, - "u1D48E.st" : 543, - "dotlessi.ssb" : 128, - "u1D679" : 347, - "u1D480.sts" : 606, - "u1D717" : 411, - "u1D5C0" : 324, - "u1D561" : 391, - "u1D440.st" : 688, - "u1D7BF" : 428, - "u1D42F.sts" : 400, - "u1D43D" : 487, - "t.st" : 184, - "uni210B.sts" : 795, - "Theta" : 389, - "u1D499" : 359, - "u1D43B.sts" : 684, - "u1D537" : 185, - "u1D7A1" : 573, - "u1D6BA.st" : 450, - "u1D41C.st" : 357, - "u1D742" : 336, - "u1D536.st" : 174, - "u1D7D4.st" : 374, - "J.sts" : 432, - "u1D5DF" : 165, - "u1D7EA" : 249, - "u1D61E" : 620, - "u1D78B" : 475, - "u1D6D9" : 403, - "u1D6A5.sts" : 346, - "u1D461.st" : 260, - "u1D718" : 365, - "u1D5C1" : 119, - "W.sts" : 664, - "u1D409.st" : 399, - "overlinecmb" : -264, - "u1D562" : 236, - "u1D600" : 226, - "u1D6B1.sts" : 574, - "Kappa.st" : 430, - "u1D574.sts" : 545, - "uni03F0.st" : 350, - "uni20D8" : -264, - "u1D73F.sts" : 460, - "u1D466.sts" : 420, - "u1D43E" : 545, - "u1D6DB.st" : 389, - "u1D43D.st" : 539, - "breveinvertedcmb" : -264, - "gamma.st" : 344, - "u1D580.sts" : 704, - "u1D538" : 305, - "d.sts" : 506, - "u1D6FF.sts" : 437, - "u1D71B.st" : 522, - "u1D472.sts" : 751, - "u1D743" : 315, - "u1D74B.sts" : 512, - "u1D7A2" : 535, - "u1D420" : 358, - "u1D58B.st" : 303, - "lambda.sts" : 177, - "u1D52F.sts" : 337, - "u1D482.st" : 373, - "u1D7EB" : 244, - "uni2102" : 335, - "u1D61F" : 467, - "u1D6C8.st" : 303, - "u1D4A5.st" : 613, - "q.sts" : 424, - "u1D719" : 423, - "u1D5C2" : 120, - "u1D708.st" : 338, - "u1D563" : 346, - "u1D42D.sts" : 244, - "u1D601" : 155, - "u1D6FC.st" : 446, - "u1D45E.st" : 396, - "u1D578.st" : 703, - "u1D43F" : 360, - "u1D73C.st" : 374, - "u1D64A" : 546, - "six.sts" : 428, - "u1D410.st" : 483, - "u1D539" : 247, - "S.st" : 372, - "u1D7A3" : 501, - "space_uni0331.st" : 285, - "u1D744" : 293, - "u1D421" : 134, - "u1D6E9.st" : 539, - "uni03D1" : 291, - "u1D7EC" : 275, - "u1D78D" : 365, - "uni030F" : -288, - "u1D729.st" : 593, - "u1D46A" : 658, - "u1D458.sts" : 283, - "Omega.st" : 407, - "u1D47F.st" : 636, - "u1D5C3" : 140, - "u1D599.st" : 330, - "uni2133" : 702, - "u1D564" : 187, - "u1D572.sts" : 799, - "u1D602" : 281, - "chi.sts" : 397, - "four" : 353, - "u1D464.sts" : 542, - "u1D431.st" : 334, - "u1D73D.sts" : 449, - "g.st" : 374, - "u1D6AA" : 327, - "u1D64B" : 434, - "u1D6FD.sts" : 549, - "dotlessi.mitb.st" : 221, - "u1D470.sts" : 456, - "u1D7A4" : 570, - "u1D4E7.st" : 638, - "u1D745" : 387, - "u1D422" : 160, - "u1D6AB.st" : 536, - "u1D52D.sts" : 250, - "u1D527.st" : 189, - "u1D40D.st" : 501, - "u1D7ED" : 282, - "u1D41F.sts" : 404, - "u1D78E" : 283, - "eta.st" : 263, - "u1D46B" : 465, - "dieresis.sts" : 340, - "dotlessi.frab" : 141, - "Chi.st" : 406, - "Omicron.st" : 438, - "u1D5C4" : 120, - "u1D42B.sts" : 290, - "u1D452.st" : 340, - "u1D6F0.st" : 539, - "u1D565" : 139, - "tilde" : 251, - "u1D603" : 250, - "u1D770" : 388, - "u1D730.st" : 497, - "dotaccent.st" : 162, - "dotlessi.mrmb.st" : 182, - "u1D6AB" : 479, - "u1D64C" : 546, - "u1D6CC.st" : 144, - "u1D42E.st" : 338, - "u1D7A5" : 532, - "u1D746" : 406, - "u1D70C.st" : 397, - "uni211B.st" : 575, - "four.st" : 394, - "u1D423" : 189, - "u1D590" : 215, - "u1D7EE" : 259, - "u1D57C.st" : 441, - "u1D78F" : 566, - "u1D72F.sts" : 564, - "u1D456.sts" : 351, - "u1D46C" : 515, - "u1D473.st" : 421, - "u1D50A" : 518, - "Psi.st" : 435, - "u1D6B9.st" : 500, - "u1D751.st" : 523, - "u1D5C5" : 119, - "u1D570.sts" : 762, - "u1D6EF.sts" : 632, - "u1D566" : 263, - "u1D7D0" : 277, - "u1D73B.sts" : 450, - "u1D462.sts" : 421, - "u1D604" : 372, - "u1D771" : 306, - "u1D6ED.st" : 688, - "u1D44F.st" : 189, - "u1D51F.sts" : 324, - "u1D6AC" : 351, - "u1D6FB.sts" : 579, - "u1D64D" : 441, - "u1D72D.st" : 598, - "u1D50A.st" : 586, - "F.st" : 354, - "u1D7A6" : 514, - "u1D4DF.sts" : 613, - "u1D401.st" : 340, - "u1D747" : 212, - "u1D5F0" : 285, - "u1D52B.sts" : 368, - "u1D59D.st" : 292, - "u1D424" : 126, - "u1D591" : 293, - "u1D494.st" : 386, - "u1D41D.sts" : 585, - "u1D7EF" : 279, - "F.sts" : 417, - "u1D46D" : 507, - "u1D5C6" : 359, - "hungarumlaut.st" : 310, - "u1D567" : 235, - "u1D7D1" : 282, - "nu" : 209, - "u1D605" : 244, - "u1D772" : 395, - "psi" : 348, - "u1D74E.st" : 447, - "Z.st" : 359, - "u1D52B.st" : 279, - "S.sts" : 439, - "u1D6AD" : 364, - "u1D6C0.st" : 465, - "u1D422.st" : 182, - "u1D64E" : 460, - "u1D700.st" : 325, - "u1D448.sts" : 552, - "u1D7A7" : 571, - "u1D748" : 343, - "u1D5F1" : 433, - "u1D425" : 136, - "u1D570.st" : 642, - "u1D592" : 405, - "u1D4D8.st" : 581, - "u1D630" : 345, - "dotlessj.fra.sts" : 259, - "beta.st" : 331, - "u1D454.sts" : 419, - "u1D518.st" : 453, - "one" : 257, - "u1D72D.sts" : 677, - "tilde.sts" : 340, - "u1D46E" : 658, - "Beta" : 286, - "u1D6ED.sts" : 787, - "u1D5C7" : 220, - "n.st" : 249, - "u1D460.sts" : 404, - "u1D568" : 333, - "u1D7D2" : 414, - "u1D606" : 251, - "u1D443.st" : 462, - "u1D6E1.st" : 540, - "m.sts" : 476, - "u1D773" : 269, - "u1D450" : 317, - "grave" : 219, - "u1D721.st" : 579, - "u1D6AE" : 450, - "space_uni030F" : 226, - "u1D40F.sts" : 398, - "sigma.sts" : 437, - "u1D64F" : 511, - "u1D4DD.sts" : 748, - "u1D591.st" : 330, - "u1D7A8" : 535, - "u1D6BD.st" : 459, - "u1D5F2" : 266, - "u1D41B.sts" : 183, - "u1D41F.st" : 347, - "u1D749" : 318, - "u1D426" : 418, - "u1D593" : 255, - "u1D7D7.st" : 310, - "z.sts" : 309, - "u1D631" : 322, - "space_uni0331.sts" : 340, - "circumflexcmb" : -264, - "u1D46F" : 616, - "uni212A" : 378, - "u1D56D.st" : 566, - "eta.sts" : 339, - "u1D50D" : 222, - "u1D67A" : 255, - "u1D464.st" : 461, - "u1D5C8" : 249, - "Phi.sts" : 475, - "u1D569" : 236, - "u1D7D3" : 290, - "u1D742.st" : 373, - "u1D607" : 242, - "u1D4B0" : 432, - "u1D774" : 272, - "uni03D5.sts" : 462, - "u1D451" : 442, - "u1D6AF" : 445, - "dotlessi.mitb" : 185, - "u1D6DE.st" : 395, - "u1D71F.sts" : 800, - "u1D446.sts" : 635, - "u1D49A" : 345, - "uni212D.st" : 567, - "u1D7A9" : 529, - "u1D71E.st" : 536, - "u1D5F3" : 289, - "u1D6DF.sts" : 505, - "u1D427" : 257, - "u1D594" : 334, - "u1D72B.sts" : 754, - "u1D632" : 395, - "u1D452.sts" : 415, - "u1D58E.st" : 202, - "u1D485.st" : 565, - "uni03C2.st" : 282, - "u1D50F.sts" : 622, - "u1D6DA" : 373, - "u1D6EB.sts" : 695, - "u1D50E" : 465, - "u1D67B" : 153, - "u1D5C9" : 228, - "u1D7D4" : 335, - "u1D608" : 481, - "u1D51B.sts" : 587, - "u1D4B1" : 397, - "u1D775" : 297, - "u1D6FF.st" : 373, - "u1D452" : 300, - "M.st" : 514, - "u1D4DC.st" : 795, - "u1D40D.sts" : 577, - "dotlessj.fra.st" : 195, - "uni212C.sts" : 532, - "u1D73F.st" : 395, - "u1D4DB.sts" : 751, - "u1D51C.st" : 464, - "u1D6B1.st" : 492, - "u1D49B" : 379, - "u1D413.st" : 448, - "u1D5F4" : 340, - "u1D428" : 287, - "Tau.st" : 407, - "u1D595" : 177, - "u1D633" : 301, - "uni2112.sts" : 720, - "u1D6DB" : 339, - "u1D509.st" : 305, - "u1D50F" : 437, - "u1D67C" : 262, - "five.sts" : 347, - "a.st" : 244, - "one.sts" : 352, - "u1D71A" : 361, - "u1D438.sts" : 621, - "u1D7D5" : 124, - "uni2126.st" : 407, - "u1D609" : 403, - "u1D4B2" : 549, - "u1D776" : 369, - "u1D453" : 464, - "u1D6D2.st" : 329, - "eight.st" : 296, - "u1D434.st" : 604, - "uni20E1" : -264, - "u1D71D.sts" : 629, - "Nu.st" : 421, - "u1D444.sts" : 648, - "tildebelowcmb" : -264, - "u1D712.st" : 367, - "u1D49C" : 702, - "u1D6DD.sts" : 469, - "u1D5F5" : 127, - "u1D582.st" : 687, - "u1D450.sts" : 437, - "Epsilon" : 318, - "u1D429" : 241, - "u1D6AE.st" : 501, - "u1D596" : 409, - "u1D634" : 310, - "uni03D5" : 320, - "uni03F4.st" : 438, - "u.st" : 285, - "u1D50D.sts" : 363, - "u1D6DC" : 295, - "macron.st" : 285, - "u1D67D" : 262, - "u1D49E.sts" : 523, - "Kappa.sts" : 500, - "four.sts" : 462, - "u1D71B" : 453, - "uni0323" : -265, - "B.sts" : 351, - "u1D6F3.st" : 539, - "u1D4D0.st" : 807, - "u1D7D6" : 299, - "u1D777" : 283, - "u1D4B3" : 556, - "u1D40B.sts" : 289, - "u1D748.sts" : 454, - "u1D454" : 316, - "u1D733.st" : 498, - "u1D510.st" : 624, - "uni211B.sts" : 598, - "u1D754.sts" : 486, - "u1D6CF.st" : 278, - "O.sts" : 514, - "u1D53B" : 247, - "u1D4AC.st" : 516, - "u1D5F6" : 128, - "u1D597" : 242, - "u1D70F.st" : 314, - "chi.st" : 314, - "u1D635" : 260, - "omicron.sts" : 341, - "Gamma.sts" : 402, - "u1D57F.st" : 597, - "delta.sts" : 348, - "uni212C" : 479, - "u1D6DD" : 340, - "u1D476.st" : 582, - "u1D67E" : 262, - "u1D70F.sts" : 391, - "u1D436.sts" : 768, - "u1D71C" : 609, - "u1D754.st" : 452, - "u1D531.st" : 289, - "u1D7D7" : 281, - "u1D778" : 141, - "u1D4B4" : 397, - "u1D6CF.sts" : 347, - "uni03F1.sts" : 372, - "u1D71B.sts" : 625, - "u1D660" : 274, - "u1D442.sts" : 648, - "i.sts" : 201, - "u1D49E" : 462, - "u1D6DB.sts" : 469, - "u1D50D.st" : 275, - "u1D53C" : 334, - "u1D59E.sts" : 289, - "uni2128.sts" : 294, - "u1D404.st" : 396, - "u1D5F7" : 151, - "uni03D6" : 404, - "psi.st" : 405, - "u1D598" : 266, - "u1D497.st" : 364, - "u1D636" : 351, - "u1D480" : 460, - "v.sts" : 357, - "u1D49C.sts" : 806, - "u1D6DE" : 344, - "u1D67F" : 193, - "T.st" : 407, - "space_uni0326" : 246, - "u1D71D" : 502, - "u1D7D8" : 277, - "u1D746.sts" : 485, - "u1D779" : 278, - "u1D4B5" : 396, - "u1D456" : 247, - "lambda.st" : 121, - "u1D6C0" : 415, - "u1D661" : 274, - "u1D52E.st" : 397, - "u1D6C3.st" : 360, - "u1D425.st" : 161, - "dotlessi.sts" : 202, - "u1D752.sts" : 546, - "sigma" : 300, - "u1D49F" : 496, - "u1D53D" : 334, - "u1D703.st" : 349, - "u1D536.sts" : 251, - "u1D5F8" : 128, - "u1D599" : 292, - "u1D428.sts" : 378, - "u1D573.st" : 539, - "u1D637" : 324, - "u1D4E0" : 557, - "u1D7CF.sts" : 392, - "h.st" : 129, - "u1D481" : 533, - "uni212D" : 497, - "u1D6DF" : 371, - "u1D70D.sts" : 289, - "u1D434.sts" : 693, - "u1D71E" : 490, - "dotlessj.mrmb.sts" : 238, - "u1D7D9" : 277, - "u1D6CD.sts" : 382, - "u1D6E4.st" : 512, - "u1D446.st" : 547, - "u1D440.sts" : 788, - "u1D457" : 359, - "u1D6C1" : 479, - "space_uni0326.st" : 278, - "u1D662" : 503, - "u1D724.st" : 406, - "u1D700" : 284, - "seven.sts" : 158, - "u1D59C.sts" : 283, - "seven.st" : 123, - "u1D47A.st" : 610, - "u1D594.st" : 373, - "u1D53E" : 335, - "u1D48E.sts" : 630, - "u1D5F9" : 128, - "u1D638" : 435, - "u1D4E1" : 594, - "five.st" : 291, - "u1D738.sts" : 399, - "u1D482" : 336, - "u1D49A.sts" : 464, - "u1D520" : 269, - "u1D6F8.sts" : 666, - "u1D467.st" : 376, - "u1D4E2.st" : 523, - "u1D71F" : 647, - "u1D744.sts" : 390, - "upsilon.sts" : 367, - "u1D745.st" : 444, - "u1D522.st" : 301, - "u1D528.sts" : 317, - "u1D458" : 213, - "u1D6C2" : 392, - "u1D663" : 350, - "u1D49B.st" : 415, - "u1D750.sts" : 408, - "u1D701" : 313, - "u1D4E8.sts" : 476, - "u1D534.sts" : 250, - "u1D426.sts" : 556, - "u1D74A" : 353, - "u1D639" : 319, - "kappa" : 247, - "u1D4E2" : 502, - "u1D6BF.sts" : 573, - "u1D483" : 225, - "u1D488.st" : 379, - "u1D70B.sts" : 462, - "u1D521" : 165, - "u1D432.sts" : 402, - "Omega" : 360, - "G.st" : 568, - "u1D6CB.sts" : 388, - "u1D56A" : 235, - "u1D58E.sts" : 288, - "Zeta.st" : 358, - "u1D459" : 184, - "u1D6C3" : 329, - "u1D4AF.sts" : 566, - "u1D4DF.st" : 591, - "u1D664" : 373, - "omicron" : 250, - "space_uni0323.st" : 162, - "u1D702" : 272, - "u1D59A.sts" : 453, - "u1D51F.st" : 239, - "u1D48C.sts" : 282, - "u1D6B4.st" : 501, - "u1D416.st" : 661, - "u1D7AA" : 478, - "u1D74B" : 406, - "u1D736.sts" : 451, - "u1D4E3" : 599, - "K.sts" : 500, - "u1D44A.st" : 625, - "u1D484" : 365, - "u1D522" : 243, - "u1D6F6.sts" : 535, - "u1D742.sts" : 432, - "uni0326" : -268, - "u1D5CA" : 299, - "u1D56B" : 236, - "u1D526.sts" : 255, - "X.sts" : 473, - "circumflex.st" : 285, - "u1D418.sts" : 557, - "u1D6C4" : 340, - "u1D665" : 335, - "Xi.st" : 377, - "u1D4B2.st" : 609, - "u1D437.st" : 477, - "u1D4E6.sts" : 704, - "dotlessj.sso" : 239, - "dotlessj.mitb.st" : 304, - "dotlessi.frab.sts" : 260, - "u1D532.sts" : 419, - "tau.st" : 275, - "delta.st" : 275, - "u1D6D5.st" : 311, - "u1D703" : 310, - "u1D715.st" : 405, - "u1D424.sts" : 183, - "u1D7AB" : 446, - "o.st" : 284, - "u1D74C" : 370, - "u1D46B.st" : 509, - "u1D585.st" : 230, - "e.sts" : 329, - "dotlessi.tt" : 263, - "u1D6BD.sts" : 533, - "u1D4E4" : 497, - "Eta" : 375, - "u1D430.sts" : 541, - "u1D485" : 512, - "u1D690" : 332, - "u1D523" : 222, - "psi.sts" : 498, - "u1D58C.sts" : 554, - "u1D5CB" : 205, - "epsilon.sts" : 373, - "r.sts" : 260, - "u1D56C" : 505, - "u1D47E.sts" : 829, - "u1D458.st" : 238, - "u1D4D3.st" : 573, - "u1D60A" : 559, - "dotlessj.mrmb.st" : 200, - "dotlessi.fra" : 120, - "u1D6F6.st" : 443, - "u1D6C5" : 264, - "uni20E5" : -263, - "u1D736.st" : 385, - "u1D666" : 440, - "u1D513.st" : 494, - "u1D728.sts" : 756, - "u1D704" : 184, - "u1D48A.sts" : 383, - "u1D48C.st" : 248, - "u1D7AC" : 489, - "u1D6E8.sts" : 683, - "u1D4AF.st" : 541, - "u1D74D" : 530, - "alpha.st" : 416, - "u1D734.sts" : 710, - "u1D42A" : 369, - "uni2133.sts" : 802, - "u1D4E5" : 427, - "u1D518.sts" : 566, - "u1D486" : 340, - "u1D6F0" : 498, - "u1D6F4.sts" : 656, - "u1D691" : 90, - "u1D524" : 339, - "u1D740.sts" : 321, - "iota.sts" : 184, - "u1D479.st" : 499, - "u1D4D8.sts" : 602, - "u1D5CC" : 214, - "u1D524.sts" : 504, - "u1D41A.st" : 264, - "u1D56D" : 523, - "u1D534.st" : 161, - "u1D7D2.st" : 451, - "u1D416.sts" : 759, - "space_uni0309.st" : 290, - "u1D60B" : 400, - "u1D6C6" : 273, - "u1D4E4.sts" : 548, - "u1D667" : 313, - "partialdiff.st" : 343, - "u1D6AF.sts" : 580, - "u1D530.sts" : 364, - "u1D705" : 331, - "u1D422.sts" : 218, - "Rho.sts" : 384, - "dotlessi" : 139, - "uni2133.st" : 766, - "u1D7AD" : 415, - "u1D6A5.st" : 289, - "u1D407.st" : 501, - "u1D74E" : 398, - "Chi" : 361, - "u1D6BB.sts" : 521, - "u1D57E.sts" : 644, - "u1D42B" : 216, - "N.st" : 421, - "u1D4E6" : 632, - "six" : 318, - "u1D487" : 516, - "u1D6F1" : 541, - "Lambda" : 347, - "u1D692" : 263, - "u1D525" : 168, - "u1D43B.st" : 596, - "u1D730" : 443, - "u1D58A.sts" : 416, - "tau.sts" : 350, - "u1D5CD" : 141, - "u1D47C.sts" : 599, - "uni2140" : 333, - "u1D56E" : 584, - "u1D4AB.sts" : 535, - "u1D60C" : 464, - "u1D6C7" : 267, - "u1D726.sts" : 699, - "uni20E6" : -264, - "u1D480.st" : 518, - "u1D668" : 325, - "caronbelowcmb" : -264, - "u1D7CF.st" : 332, - "u1D706" : 238, - "u1D6C6.st" : 314, - "u1D428.st" : 323, - "u1D550" : 305, - "u1D6E6.sts" : 620, - "b.st" : 124, - "u1D732.sts" : 716, - "u1D7AE" : 365, - "u1D706.st" : 266, - "u1D74F" : 415, - "u1D42C" : 265, - "u1D6FA.st" : 588, - "u1D45C.st" : 356, - "u1D516.sts" : 583, - "u1D4E7" : 610, - "u1D576.st" : 581, - "u1D6F2.sts" : 583, - "uni2110" : 469, - "u1D488" : 339, - "u1D408.sts" : 275, - "u1D6F2" : 454, - "u1D73A.st" : 356, - "u1D693" : 319, - "u1D526" : 132, - "u1D4D6.sts" : 617, - "u1D731" : 463, - "u1D522.sts" : 388, - "u1D5CE" : 258, - "u1D414.sts" : 567, - "u1D56F" : 458, - "uni20DB" : -264, - "u1D60D" : 457, - "breveinvertedbelowcmb" : -264, - "u1D77A" : 169, - "u1D4E2.sts" : 542, - "u1D6E7.st" : 531, - "u1D449.st" : 471, - "u1D6C8" : 256, - "u1D6AD.sts" : 476, - "u1D669" : 278, - "v.st" : 300, - "u1D420.sts" : 481, - "u1D5B0" : 367, - "u1D707" : 349, - "u1D504.st" : 507, - "u1D727.st" : 776, - "u1D47D.st" : 536, - "u1D7AF" : 447, - "u1D597.st" : 279, - "u1D57C.sts" : 546, - "u1D42D" : 194, - "u1D46E.sts" : 825, - "u1D59A" : 317, - "u1D4E8" : 448, - "dotlessi.frab.st" : 176, - "u1D489" : 228, - "u1D6F3" : 498, - "u1D527" : 130, - "u1D694" : 94, - "u1D718.sts" : 491, - "u1D732" : 584, - "G.sts" : 658, - "u1D47A.sts" : 692, - "u1D5CF" : 230, - "u1D4E5.st" : 451, - "u1D7DA" : 287, - "u1D6D8.sts" : 429, - "mu.st" : 281, - "u1D60E" : 554, - "u1D724.sts" : 454, - "u1D40B.st" : 253, - "u1D748.st" : 386, - "u1D525.st" : 216, - "u1D6C9" : 275, - "u1D77B" : 271, - "u1D49E.st" : 503, - "u1D508.sts" : 726, - "u1D5B1" : 257, - "u1D6E4.sts" : 594, - "T.sts" : 479, - "u1D708" : 297, - "u1D552" : 236, - "u1D730.sts" : 580, - "u1D499.sts" : 449, - "u1D450.st" : 364, - "u1D5FA" : 406, - "u1D514.sts" : 502, - "u1D42E" : 296, - "u1D59B" : 160, - "A.st" : 421, - "Zeta.sts" : 424, - "u1D406.sts" : 738, - "u1D4E9" : 533, - "u1D6F0.sts" : 634, - "uni2111" : 337, - "seven" : 103, - "u1D6F4" : 514, - "uni2111.sts" : 501, - "u1D4D4.sts" : 546, - "u1D528" : 183, - "u1D695" : 178, - "a.sts" : 284, - "u1D520.sts" : 419, - "rho" : 243, - "space_uni0309.sts" : 339, - "u1D733" : 444, - "u1D6CA.st" : 140, - "u1D410" : 431, - "u1D412.sts" : 484, - "u1D42C.st" : 287, - "uni20DC" : -264, - "u1D7DB" : 289, - "u1D4E0.sts" : 601, - "u1D70A.st" : 282, - "u1D60F" : 502, - "u1D77C" : 285, - "u1D6AB.sts" : 621, - "u1D56E.sts" : 747, - "macron.sts" : 340, - "n.sts" : 296, - "u1D57A.st" : 441, - "u1D709" : 285, - "u1D5B2" : 293, - "dotlessj" : 153, - "u1D471.st" : 570, - "u1D553" : 139, - "uni212C.st" : 514, - "U.st" : 421, - "u1D57A.sts" : 546, - "u1D419.st" : 408, - "u1D6B7.st" : 501, - "u1D5FB" : 253, - "u1D46C.sts" : 640, - "u1D59C" : 162, - "u1D42F" : 303, - "u1D63A" : 324, - "u1D6EB.st" : 605, - "u1D44D.st" : 534, - "u1D6F5" : 394, - "u1D716.sts" : 380, - "u1D529" : 195, - "u1D696" : 210, - "u1D734" : 580, - "upsilon" : 251, - "u1D72B.st" : 667, - "u1D411" : 281, - "u1D6D6.sts" : 384, - "u1D599.sts" : 427, - "u1D722.sts" : 756, - "u1D7DC" : 396, - "u1D59B.st" : 196, - "dotlessj.mitb.sts" : 347, - "u1D77D" : 256, - "u1D492.st" : 452, - "asterisk" : 398, - "u1D45A" : 404, - "uni20E8" : -264, - "i.st" : 162, - "u1D6E2.sts" : 696, - "u1D6D8.st" : 358, - "u1D4B5.st" : 421, - "u1D5B3" : 340, - "u1D554" : 238, - "u1D497.sts" : 436, - "u1D718.st" : 418, - "u1D512.sts" : 505, - "u1D5FC" : 274, - "u1D46E.st" : 723, - "u1D404.sts" : 467, - "u1D59D" : 255, - "u1D588.st" : 350, - "u1D63B" : 314, - "uni2112" : 634, - "u1D4D2.sts" : 571, - "u1D74C.st" : 409, - "u1D6F6" : 385, - "u1D697" : 191, - "u1D420.st" : 419, - "u1D410.sts" : 561, - "u1D735" : 483, - "u1D412" : 374, - "u1D7DD" : 278, - "u1D6F9.st" : 446, - "u1D56C.sts" : 661, - "u1D4D6.st" : 596, - "u1D77E" : 299, - "uni03F0.sts" : 422, - "u1D45B" : 265, - "u1D45E.sts" : 474, - "u1D739.st" : 407, - "u1D516.st" : 461, - "u1D5B4" : 344, - "uni210C.st" : 487, - "u1D555" : 424, - "u1D48F.st" : 365, - "u1D708.sts" : 405, - "u1D760" : 336, - "uni2127.sts" : 480, - "u1D46A.sts" : 825, - "u1D7D6.sts" : 393, - "u1D5FD" : 237, - "Sigma.sts" : 464, - "u1D59E" : 168, - "u1D441.st" : 596, - "u1D6C8.sts" : 369, - "u1D63C" : 511, - "u1D714.sts" : 484, - "u1D6F7" : 415, - "u1D698" : 262, - "u1D736" : 439, - "u1D6D4.sts" : 476, - "u1D597.sts" : 371, - "u1D413" : 400, - "Lambda.sts" : 455, - "u1D580" : 545, - "u1D720.sts" : 640, - "Alpha" : 374, - "u1D489.sts" : 282, - "u1D6BB.st" : 448, - "u1D41D.st" : 502, - "dotlessi.ss" : 119, - "u1D537.st" : 244, - "u1D77F" : 418, - "u1D7D5.st" : 146, - "u1D7DE" : 266, - "u1D504.sts" : 629, - "uni20E9" : -264, - "u1D45C" : 315, - "u1D6E0.sts" : 380, - "u1D495.sts" : 336, - "u1D5B5" : 333, - "u1D556" : 236, - "H.st" : 421, - "u1D7C0" : 487, - "u1D510.sts" : 776, - "u1D462.st" : 340, - "u1D761" : 489, - "u1D402.sts" : 738, - "u1D5FE" : 342, - "u1D6A8.st" : 484, - "u1D740.st" : 284, - "u1D59F" : 229, - "u1D4D0.sts" : 842, - "u1D63D" : 443, - "u1D6F8" : 528, - "u1D699" : 188, - "u1D6DC.st" : 339, - "u1D43E.st" : 606, - "u1D5E0" : 489, - "u1D737" : 483, - "u1D414" : 442, - "u1D581" : 500, - "caron" : 250, - "u1D71C.st" : 664, - "u1D7DF" : 277, - "u1D45C.sts" : 433, - "C.sts" : 659, - "tildecomb" : -264, - "u1D45D" : 246, - "u1D58C.st" : 449, - "u1D483.st" : 242, - "u1D5B6" : 472, - "u1D706.sts" : 317, - "u1D6C9.st" : 328, - "iota.st" : 128, - "u1D4A6.st" : 730, - "u1D557" : 225, - "u1D762" : 397, - "u1D7C1" : 643, - "u1D7D4.sts" : 465, - "lambda" : 86, - "u1D709.st" : 321, - "u1D5FF" : 216, - "P.sts" : 344, - "u1D589.sts" : 313, - "u1D6C6.sts" : 386, - "u1D712.sts" : 438, - "Pi.st" : 421, - "u1D45F.st" : 290, - "u1D63E" : 580, - "u1D579.st" : 557, - "u1D4DA.st" : 783, - "u1D6F9" : 392, - "u1D6FD.st" : 480, - "u1D6D2.sts" : 380, - "u1D73D.st" : 391, - "u1D51A.st" : 597, - "u1D595.sts" : 299, - "u1D5E1" : 397, - "u1D738" : 295, - "u1D411.st" : 317, - "u1D487.sts" : 608, - "u1D415" : 434, - "p.st" : 238, - "u1D582" : 643, - "u1D620" : 481, - "u1D45E" : 349, - "theta" : 247, - "u1D493.sts" : 395, - "u1D5B7" : 319, - "u1D507.st" : 465, - "u1D558" : 236, - "u1D7C2" : 472, - "u1D400.sts" : 557, - "j.sts" : 233, - "u1D763" : 366, - "u1D440" : 625, - "u1D63F" : 447, - "uni0300" : -295, - "u1D6D0.st" : 324, - "u1D432.st" : 341, - "u1D44E.sts" : 397, - "u1D710.st" : 353, - "u1D5E2" : 395, - "u1D739" : 376, - "w.sts" : 479, - "u1D416" : 594, - "u1D583" : 488, - "u1D621" : 458, - "u1D4E8.st" : 464, - "u1D580.st" : 588, - "u1D45A.sts" : 572, - "u1D6AC.st" : 397, - "u1D40E.st" : 483, - "u1D45F" : 247, - "u1D528.st" : 238, - "u1D6B8.sts" : 444, - "zero.sts" : 340, - "u1D66A" : 376, - "u1D704.sts" : 260, - "u1D5B8" : 333, - "Pi.sts" : 490, - "u1D559" : 139, - "u1D7C3" : 411, - "u1D7D2.sts" : 494, - "u1D764" : 394, - "u1D6C4.sts" : 466, - "u1D587.sts" : 432, - "u1D441" : 542, - "two.st" : 273, - "u1D453.st" : 506, - "u1D6F1.st" : 595, - "u1D710.sts" : 425, - "u1D479.sts" : 570, - "u1D731.st" : 513, - "nine.sts" : 335, - "u1D48A" : 282, - "u1D6D0.sts" : 379, - "u1D593.sts" : 386, - "u1D485.sts" : 642, - "u1D5E3" : 288, - "u1D4B4.sts" : 430, - "u1D417" : 418, - "u1D584" : 490, - "u1D42F.st" : 341, - "u1D4AA.st" : 562, - "u1D622" : 324, - "u1D6CD.st" : 315, - "uni0331" : -263, - "uni03F5.sts" : 371, - "Delta.sts" : 548, - "u1D70D.st" : 220, - "u1D491.sts" : 400, - "O.st" : 438, - "u1D6CA" : 115, - "u1D66B" : 343, - "u1D57D.st" : 542, - "u1D5B9" : 312, - "u1D474.st" : 777, - "caroncmb" : -264, - "u1D7C4" : 358, - "u1D765" : 397, - "u1D752.st" : 467, - "u1D442" : 495, - "uni2115" : 361, - "u1D44C.sts" : 548, - "uni0301" : -233, - "u1D48B" : 398, - "u1D6EE.st" : 596, - "u1D5E4" : 395, - "c.st" : 295, - "u1D418" : 434, - "u1D585" : 194, - "u1D72E.st" : 616, - "dotlessj.st" : 177, - "u1D402.st" : 644, - "u1D623" : 268, - "u1D790" : 513, - "uni210E.sts" : 283, - "u1D6B6.sts" : 561, - "u1D59E.st" : 203, - "u1D579.sts" : 672, - "u1D6CB" : 277, - "Psi" : 386, - "u1D495.st" : 282, - "u1D702.sts" : 397, - "u1D66C" : 466, - "Xi.sts" : 444, - "uni20F0" : -264, - "u1D70A" : 243, - "u1D7D0.sts" : 354, - "space_uni0323.sts" : 201, - "u1D7C5" : 615, - "u1D6C2.sts" : 420, - "u1D585.sts" : 319, - "Lambda.st" : 391, - "u1D4A2" : 506, - "u1D766" : 318, - "u1D443" : 416, - "u1D477.sts" : 570, - "u1D4A6.sts" : 763, - "Theta.st" : 438, - "u1D591.sts" : 427, - "w.st" : 407, - "u1D48C" : 228, - "u1D74F.st" : 456, - "u1D52C.st" : 316, - "u1D483.sts" : 273, - "u1D52A" : 337, - "u1D6C1.st" : 540, - "u1D423.st" : 222, - "u1D4B2.sts" : 643, - "u1D5E5" : 296, - "theta.sts" : 373, - "u1D419" : 364, - "u1D586" : 388, - "u1D701.st" : 352, - "u1D7F0" : 343, - "u1D624" : 359, - "u1D791" : 465, - "circumflex.sts" : 340, - "u1D4D9.st" : 674, - "u1D571.st" : 330, - "u1D6CC" : 118, - "phi" : 302, - "u1D66D" : 339, - "u1D519.st" : 492, - "u1D70B" : 328, - "u1D43E.sts" : 695, - "five" : 256, - "u1D767" : 429, - "u1D444" : 495, - "iota" : 98, - "u1D44A.sts" : 739, - "u1D6E2.st" : 606, - "u1D444.st" : 552, - "u1D48D" : 196, - "u1D6A8.sts" : 555, - "L.sts" : 261, - "u1D722.st" : 669, - "u1D52B" : 226, - "u1D5E6" : 310, - "dotlessj.ssb" : 158, - "u1D587" : 298, - "u1D7F1" : 269, - "u1D592.st" : 445, - "u1D625" : 544, - "u1D792" : 451, - "u1D6B4.sts" : 577, - "u1D6BE.st" : 465, - "u1D577.sts" : 676, - "u1D700.sts" : 397, - "B.st" : 296, - "u1D469.sts" : 599, - "u1D6CD" : 274, - "Y.sts" : 490, - "u1D66E" : 345, - "u1D70C" : 354, - "u1D6C0.sts" : 540, - "u1D583.sts" : 641, - "space_uni030F.st" : 260, - "u1D7C7" : 508, - "u1D56E.st" : 627, - "u1D74E.sts" : 525, - "u1D475.sts" : 757, - "nine.st" : 286, - "u1D465.st" : 359, - "u1D4E0.st" : 581, - "u1D768" : 397, - "u1D445" : 398, - "uni210B" : 695, - "u1D650" : 528, - "u1D743.st" : 350, - "u1D520.st" : 329, - "kappa.st" : 292, - "f.sts" : 358, - "u1D481.sts" : 662, - "u1D48E" : 478, - "u1D4B0.sts" : 501, - "u1D52C" : 258, - "Beta.sts" : 388, - "u1D5E7" : 367, - "V.st" : 421, - "u1D6DF.st" : 423, - "u1D588" : 312, - "u1D7F2" : 331, - "u1D626" : 333, - "u1D793" : 597, - "dbllowlinecmb" : -264, - "u1D71F.st" : 707, - "u1D470" : 383, - "s.sts" : 316, - "dotlessj.mrmb" : 176, - "u1D6CE" : 252, - "u1D58F.st" : 194, - "u1D66F" : 336, - "u1D43C.sts" : 441, - "u1D486.st" : 377, - "u1D70D" : 182, - "u1D7C8" : 373, - "u1D4A9.st" : 678, - "u1D4A5" : 568, - "u1D769" : 366, - "u1D446" : 498, - "u1D6B0" : 218, - "Rho.st" : 325, - "u1D651" : 511, - "j.st" : 186, - "u1D4DD.st" : 720, - "u1D48F" : 318, - "uni213C" : 258, - "u1D52D" : 128, - "u1D69A" : 316, - "u1D5E8" : 382, - "u1D6B2.st" : 449, - "u1D414.st" : 492, - "u1D6B2.sts" : 517, - "u1D589" : 189, - "u1D575.sts" : 399, - "u1D627" : 428, - "u1D4D0" : 768, - "u1D794" : 474, - "u1D7F3" : 275, - "u1D471" : 516, - "u1D467.sts" : 449, - "u1D6CF" : 235, - "u1D581.sts" : 655, - "u1D70E" : 286, - "u1D74C.sts" : 469, - "u1D473.sts" : 470, - "u1D7C9" : 672, - "u1D4A2.sts" : 564, - "omega.st" : 375, - "u1D4A6" : 668, - "uni210C" : 422, - "u1D447" : 398, - "u1D6B1" : 438, - "u1D652" : 663, - "dotlessj.frab.st" : 185, - "uni2110.sts" : 524, - "u1D6D3.st" : 317, - "u1D435.st" : 468, - "u1D4B0.st" : 476, - "u1D6FA" : 533, - "u1D52E" : 333, - "u1D69B" : 245, - "u1D5E9" : 366, - "u1D42E.sts" : 401, - "u1D713.st" : 527, - "u1D7F4" : 277, - "u1D628" : 419, - "u1D4D1" : 559, - "Sigma.st" : 395, - "u1D795" : 482, - "uni03C2.sts" : 359, - "u1D472" : 604, - "u1D583.st" : 529, - "u1D510" : 566, - "u1D43A.sts" : 767, - "u1D6AF.st" : 500, - "ring.st" : 421, - "u1D70F" : 269, - "uni2112.st" : 690, - "one.st" : 295, - "u1D448" : 421, - "u1D6B2" : 403, - "u1D6F4.st" : 566, - "u1D653" : 497, - "u1D4D1.st" : 584, - "u1D6A4.sts" : 249, - "u1D456.st" : 284, - "Delta" : 416, - "uni0304" : -263, - "u1D734.st" : 636, - "u1D459.sts" : 248, - "u1D511.st" : 511, - "u1D6FB" : 420, - "uni213D" : 236, - "u1D52F" : 200, - "u1D69C" : 302, - "I.st" : 207, - "u1D6B0.sts" : 275, - "u1D48A.st" : 323, - "u1D573.sts" : 651, - "u1D73A" : 322, - "u1D7F5" : 259, - "zeta" : 224, - "u1D73E.sts" : 253, - "u1D465.sts" : 431, - "pi.sts" : 410, - "u1D4D2" : 523, - "u1D629" : 267, - "u1D796" : 535, - "u1D473" : 396, - "breve" : 251, - "u1D511" : 453, - "u1D6FE.sts" : 374, - "u1D74A.sts" : 465, - "u1D471.sts" : 658, - "u1D55A" : 139, - "u1D477.st" : 499, - "u1D52E.sts" : 496, - "uni210D" : 361, - "u1D449" : 413, - "u1D6B3" : 546, - "u1D755.st" : 604, - "u1D532.st" : 324, - "u1D654" : 511, - "u1D7D0.st" : 295, - "u1D6FC" : 392, - "u1D69D" : 188, - "u1D42C.sts" : 338, - "u1D73B" : 347, - "u1D7F6" : 262, - "H.sts" : 490, - "u1D50E.st" : 531, - "u1D4D3" : 549, - "u1D797" : 573, - "u1D405.st" : 387, - "u1D474" : 712, - "u1D512" : 340, - "nu.st" : 255, - "u1D498.st" : 506, - "u1D5BA" : 228, - "Pi" : 375, - "u1D55B" : 249, - "ring" : 375, - "uni2126.sts" : 478, - "q.st" : 360, - "U.sts" : 490, - "u1D4A9" : 625, - "zero.st" : 286, - "Gamma.st" : 342, - "u1D6B4" : 450, - "u1D655" : 489, - "uni2119" : 247, - "u1D457.sts" : 464, - "space_uni0309" : 251, - "uni213E" : 333, - "u1D6FD" : 437, - "u1D52F.st" : 255, - "u1D69E" : 220, - "u1D571.sts" : 419, - "u1D6C4.st" : 388, - "u1D426.st" : 468, - "b.sts" : 160, - "u1D73C" : 319, - "u1D73C.sts" : 451, - "u1D463.sts" : 404, - "u1D7F7" : 277, - "xi.sts" : 311, - "u1D704.st" : 208, - "u1D4D4" : 504, - "u1D798" : 304, - "u1D475" : 616, - "u1D6FC.sts" : 531, - "u1D680" : 262, - "u1D45A.st" : 465, - "u1D513" : 436, - "u1D574.st" : 440, - "u1D5BB" : 120, - "o.sts" : 340, - "u1D55C" : 139, - "u1D52C.sts" : 407, - "uni210E" : 213, - "u1D41E.sts" : 358, - "u1D6B5" : 383, - "u1D656" : 363, - "u1D6E5.st" : 646, - "u1D447.st" : 452, - "u1D42A.sts" : 472, - "u1D6FE" : 259, - "Omicron.sts" : 513, - "upsilon.st" : 296, - "u1D69F" : 262, - "u1D725.st" : 661, - "u1D73D" : 343, - "u1D41A" : 231, - "u1D7F8" : 251, - "u1D47B.st" : 486, - "u1D595.st" : 213, - "u1D4D5" : 654, - "u1D799" : 534, - "phi.sts" : 441, - "u1D476" : 528, - "u1D6E0" : 278, - "u1D681" : 166, - "u1D514" : 338, - "u1D449.sts" : 565, - "u1D5BC" : 264, - "uni210B.st" : 761, - "u1D55D" : 139, - "brevecmb" : -264, - "u1D468.st" : 660, - "u1D4E3.st" : 627, - "u1D6B6" : 430, - "u1D72E.sts" : 700, - "u1D657" : 274, - "P.st" : 290, - "u1D746.st" : 444, - "u1D523.st" : 282, - "Chi.sts" : 473, - "uni213F" : 333, - "u1D6FF" : 335, - "Gamma" : 297, - "u1D6EE.sts" : 683, - "u1D49C.st" : 769, - "dotaccent" : 138, - "epsilon.st" : 292, - "u1D461.sts" : 324, - "u1D73A.sts" : 418, - "u1D73E" : 197, - "u1D41B" : 126, - "u1D7F9" : 248, - "u1D51E.sts" : 492, - "u1D4D6" : 572, - "u1D6FA.sts" : 684, - "u1D477" : 468, - "u1D6E1" : 473, - "u1D682" : 309, - "u1D720" : 514, - "u1D4DE.sts" : 650, - "u1D52A.sts" : 502, - "u1D489.st" : 248, - "u1D5BD" : 397, - "u1D55E" : 420, - "u1D41C.sts" : 417, - "d.st" : 431, - "u1D42A.st" : 411, - "u1D6B7" : 450, - "u1D658" : 384, - "u1D540" : 167, - "u1D73F" : 359, - "Upsilon.st" : 438, - "u1D41C" : 298, - "partialdiff.sts" : 430, - "u1D6B5.st" : 430, - "u1D417.st" : 465, - "uni20EA" : -264, - "u1D4D7" : 774, - "u1D478" : 528, - "u1D6E2" : 552, - "u1D516" : 405, - "u1D683" : 262, - "x.st" : 293, - "u1D721" : 528, - "u1D447.sts" : 544, - "rho.st" : 292, - "u1D44B.st" : 580, - "u1D5BE" : 238, - "dotlessj.ds" : 249, - "u1D55F" : 346, - "u1D76A" : 428, - "u1D72C.sts" : 623, - "u1D453.sts" : 576, - "u1D6B8" : 330, - "u1D659" : 578, - "uni0307" : -265, - "space_uni030F.sts" : 312, - "tau" : 232, - "u1D5A0" : 333, - "epsilon" : 244, - "u1D490.st" : 407, - "u1D6EC.sts" : 654, - "u1D541" : 471, - "u1D6D6.st" : 319, - "u1D438.st" : 536, - "u1D4B3.st" : 602, - "uni03F4.sts" : 513, - "u1D716.st" : 310, - "u1D58A" : 283, - "u1D51C.sts" : 585, - "u1D41D" : 444, - "u1D4D8" : 556, - "u1D40E.sts" : 561, - "u1D479" : 457, - "Upsilon.sts" : 514, - "u1D586.st" : 427, - "u1D46C.st" : 564, - "u1D517" : 672, - "u1D684" : 262, - "u1D4DC.sts" : 828, - "u1D6E3" : 457, - "D.sts" : 336, - "u1D722" : 615, - "u1D74A.st" : 389, - "u1D41A.sts" : 312, - "u1D5BF" : 280, - "u1D76B" : 394, - "u1D6B9" : 445, - "acute" : 281, - "C.st" : 567, - "u1D459.st" : 207, - "u1D4D4.st" : 528, - "u1D6F7.st" : 466, - "u1D5A1" : 256, - "Q.sts" : 514, - "u1D542" : 333, - "omega" : 322, - "dotlessj.ssbo" : 253, - "u1D737.st" : 507, - "u1D514.st" : 389, - "uni0338" : -263, - "u1D439.sts" : 612, - "u1D5EA" : 519, - "u1D48D.st" : 212, - "u1D58B" : 266, - "u1D41E" : 281, - "uni20EB" : -264, - "u1D4D9" : 645, - "u1D6E4" : 461, - "u1D71E.sts" : 609, - "u1D518" : 391, - "u1D685" : 262, - "u1D445.sts" : 515, - "u1D723" : 542, - "Beta.st" : 330, - "u1D400" : 434, - "u1D6DE.sts" : 474, - "W.st" : 575, - "u1D72A.sts" : 674, - "u1D451.sts" : 577, - "u1D76C" : 352, - "uni2131.sts" : 822, - "k.sts" : 160, - "u1D41B.st" : 149, - "u1D7D3.st" : 323, - "u1D50E.sts" : 654, - "alpha.sts" : 509, - "u1D535.st" : 262, - "u1D6EA.sts" : 441, - "u1D5A2" : 411, - "uni0308" : -261, - "pi" : 279, - "u1D543" : 167, - "u1D49F.sts" : 552, - "u1D51A.sts" : 745, - "u1D5EB" : 351, - "u1D460.st" : 334, - "u1D58C" : 408, - "u1D40C.sts" : 697, - "u1D41F" : 309, - "u1D62A" : 258, - "u1D749.sts" : 433, - "x.sts" : 350, - "dotlessi.mrmb.sts" : 218, - "u1D408.st" : 240, - "u1D4DA.sts" : 816, - "u1D6E5" : 586, - "xi.st" : 238, - "u1D519" : 435, - "u1D686" : 262, - "Iota" : 181, - "nabla.st" : 477, - "k.st" : 124, - "u1D724" : 382, - "u1D755.sts" : 708, - "u1D401" : 300, - "zero" : 254, - "omega.sts" : 469, - "u1D6DA.st" : 427, - "u1D43C.st" : 382, - "Eta.sts" : 490, - "u1D76D" : 425, - "u1D44A" : 552, - "u1D71A.st" : 398, - "u1D5A3" : 252, - "u1D58A.st" : 321, - "u1D544" : 361, - "u1D481.st" : 582, - "u1D437.sts" : 551, - "u1D6C7.st" : 313, - "u1D5EC" : 366, - "u1D429.st" : 280, - "u1D58D" : 211, - "uni20EC" : -264, - "space_uni0331" : 251, - "Epsilon.sts" : 428, - "u1D62B" : 278, - "u1D707.st" : 386, - "u1D71C.sts" : 752, - "u1D443.sts" : 535, - "u1D6E6" : 482, - "u1D687" : 253, - "u1D6FB.st" : 480, - "caron.sts" : 340, - "u1D45D.st" : 296, - "u1D577.st" : 562, - "u1D725" : 603, - "u1D6DC.sts" : 405, - "u1D402" : 580, - "u1D59F.sts" : 357, - "u1D73B.st" : 385, - "dotlessj.sts" : 219, - "lowlinecmb" : -264, - "u1D76E" : 392, - "u1D4AA" : 515, - "u1D44B" : 528, - "uni0309" : -263, - "uni03F0" : 297, - "u1D5A4" : 317, - "u1D6E8.st" : 596, - "u1D750" : 316, - "u1D728.st" : 669, - "u1D505.st" : 498, - "u1D5ED" : 344, - "u1D40A.sts" : 574, - "u1D747.sts" : 308, - "u1D58E" : 166, - "u1D47E.st" : 713, - "u1D62C" : 268, - "u1D598.st" : 303, - "u1D6E7" : 481 - }, - "v_assembly" : { - "divides" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "divides.bt", - "endConnector" : 601, - "startConnector" : 0, - "advance" : 1202, - "extender" : false - }, - { - "glyph" : "divides.ex", - "endConnector" : 1202, - "startConnector" : 1202, - "advance" : 1202, - "extender" : true - }, - { - "glyph" : "divides.tp", - "endConnector" : 0, - "startConnector" : 601, - "advance" : 1202, - "extender" : false - } - ] - }, - "uni230B" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A6", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "uni23A5", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - } - ] - }, - "uni21A7" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21A7.bt", - "endConnector" : 166, - "startConnector" : 0, - "advance" : 498, - "extender" : false - }, - { - "glyph" : "uni21A7.ex", - "endConnector" : 332, - "startConnector" : 332, - "advance" : 332, - "extender" : true - }, - { - "glyph" : "uni21A7.tp", - "endConnector" : 0, - "startConnector" : 166, - "advance" : 498, - "extender" : false - } - ] - }, - "bracketright" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A6", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "uni23A5", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni23A4", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1500, - "extender" : false - } - ] - }, - "uni2B06" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni2B06.bt", - "endConnector" : 164, - "startConnector" : 0, - "advance" : 492, - "extender" : false - }, - { - "glyph" : "uni2B06.ex", - "endConnector" : 327, - "startConnector" : 327, - "advance" : 327, - "extender" : true - }, - { - "glyph" : "uni2B06.tp", - "endConnector" : 0, - "startConnector" : 164, - "advance" : 492, - "extender" : false - } - ] - }, - "arrowup" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "arrowup.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 506, - "extender" : false - }, - { - "glyph" : "arrowup.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "arrowup.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 505, - "extender" : false - } - ] - }, - "uni21CA" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21CA.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 505, - "extender" : false - }, - { - "glyph" : "uni21CA.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "uni21CA.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 506, - "extender" : false - } - ] - }, - "uni21F5" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21F5.bt", - "endConnector" : 172, - "startConnector" : 0, - "advance" : 514, - "extender" : false - }, - { - "glyph" : "uni21F5.ex", - "endConnector" : 343, - "startConnector" : 343, - "advance" : 343, - "extender" : true - }, - { - "glyph" : "uni21F5.tp", - "endConnector" : 0, - "startConnector" : 172, - "advance" : 515, - "extender" : false - } - ] - }, - "dblverticalbar" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "parallel.bt", - "endConnector" : 601, - "startConnector" : 0, - "advance" : 1202, - "extender" : false - }, - { - "glyph" : "parallel.ex", - "endConnector" : 1202, - "startConnector" : 1202, - "advance" : 1202, - "extender" : true - }, - { - "glyph" : "parallel.tp", - "endConnector" : 0, - "startConnector" : 601, - "advance" : 1202, - "extender" : false - } - ] - }, - "uni21A1" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21A1.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 505, - "extender" : false - }, - { - "glyph" : "uni21A1.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "uni21A1.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 506, - "extender" : false - } - ] - }, - "uni27E6" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni27E6.bt", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1000, - "extender" : false - }, - { - "glyph" : "uni27E6.ex", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni27E6.tp", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1000, - "extender" : false - } - ] - }, - "uni27EF" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni27EF.bt", - "endConnector" : 499, - "startConnector" : 0, - "advance" : 1526, - "extender" : false - }, - { - "glyph" : "uni27EF.ex", - "endConnector" : 998, - "startConnector" : 998, - "advance" : 998, - "extender" : true - }, - { - "glyph" : "uni27EF.tp", - "endConnector" : 0, - "startConnector" : 499, - "advance" : 1526, - "extender" : false - } - ] - }, - "braceleft" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A9", - "endConnector" : 374, - "startConnector" : 0, - "advance" : 750, - "extender" : false - }, - { - "glyph" : "braceleft.ex", - "endConnector" : 748, - "startConnector" : 748, - "advance" : 748, - "extender" : true - }, - { - "glyph" : "uni23A8", - "endConnector" : 374, - "startConnector" : 374, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "braceleft.ex", - "endConnector" : 748, - "startConnector" : 748, - "advance" : 748, - "extender" : true - }, - { - "glyph" : "uni23A7", - "endConnector" : 0, - "startConnector" : 374, - "advance" : 750, - "extender" : false - } - ] - }, - "radical" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23B7", - "endConnector" : 320, - "startConnector" : 0, - "advance" : 1820, - "extender" : false - }, - { - "glyph" : "radical.ex", - "endConnector" : 640, - "startConnector" : 640, - "advance" : 640, - "extender" : true - }, - { - "glyph" : "radical.tp", - "endConnector" : 0, - "startConnector" : 320, - "advance" : 620, - "extender" : false - } - ] - }, - "uni21D5" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21D5.bt", - "endConnector" : 178, - "startConnector" : 0, - "advance" : 533, - "extender" : false - }, - { - "glyph" : "uni21D5.ex", - "endConnector" : 356, - "startConnector" : 356, - "advance" : 356, - "extender" : true - }, - { - "glyph" : "uni21D5.tp", - "endConnector" : 0, - "startConnector" : 178, - "advance" : 533, - "extender" : false - } - ] - }, - "uni21BF" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21BF.bt", - "endConnector" : 171, - "startConnector" : 0, - "advance" : 512, - "extender" : false - }, - { - "glyph" : "uni21BF.ex", - "endConnector" : 341, - "startConnector" : 341, - "advance" : 341, - "extender" : true - }, - { - "glyph" : "uni21BF.tp", - "endConnector" : 0, - "startConnector" : 171, - "advance" : 513, - "extender" : false - } - ] - }, - "uni230A" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A3", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "uni23A2", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - } - ] - }, - "arrowdown" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "arrowdown.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 505, - "extender" : false - }, - { - "glyph" : "arrowdown.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "arrowdown.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 506, - "extender" : false - } - ] - }, - "uni21C5" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21C5.bt", - "endConnector" : 172, - "startConnector" : 0, - "advance" : 515, - "extender" : false - }, - { - "glyph" : "uni21C5.ex", - "endConnector" : 343, - "startConnector" : 343, - "advance" : 343, - "extender" : true - }, - { - "glyph" : "uni21C5.tp", - "endConnector" : 0, - "startConnector" : 172, - "advance" : 514, - "extender" : false - } - ] - }, - "uni27EE" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni27EE.bt", - "endConnector" : 499, - "startConnector" : 0, - "advance" : 1526, - "extender" : false - }, - { - "glyph" : "uni27EE.ex", - "endConnector" : 998, - "startConnector" : 998, - "advance" : 998, - "extender" : true - }, - { - "glyph" : "uni27EE.tp", - "endConnector" : 0, - "startConnector" : 499, - "advance" : 1526, - "extender" : false - } - ] - }, - "bar" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "divides.bt", - "endConnector" : 601, - "startConnector" : 0, - "advance" : 1202, - "extender" : false - }, - { - "glyph" : "divides.ex", - "endConnector" : 1202, - "startConnector" : 1202, - "advance" : 1202, - "extender" : true - }, - { - "glyph" : "divides.tp", - "endConnector" : 0, - "startConnector" : 601, - "advance" : 1202, - "extender" : false - } - ] - }, - "uni21A5" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21A5.bt", - "endConnector" : 166, - "startConnector" : 0, - "advance" : 498, - "extender" : false - }, - { - "glyph" : "uni21A5.ex", - "endConnector" : 332, - "startConnector" : 332, - "advance" : 332, - "extender" : true - }, - { - "glyph" : "uni21A5.tp", - "endConnector" : 0, - "startConnector" : 166, - "advance" : 498, - "extender" : false - } - ] - }, - "uni21BE" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21BE.bt", - "endConnector" : 171, - "startConnector" : 0, - "advance" : 512, - "extender" : false - }, - { - "glyph" : "uni21BE.ex", - "endConnector" : 341, - "startConnector" : 341, - "advance" : 341, - "extender" : true - }, - { - "glyph" : "uni21BE.tp", - "endConnector" : 0, - "startConnector" : 171, - "advance" : 513, - "extender" : false - } - ] - }, - "parallel" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "parallel.bt", - "endConnector" : 601, - "startConnector" : 0, - "advance" : 1202, - "extender" : false - }, - { - "glyph" : "parallel.ex", - "endConnector" : 1202, - "startConnector" : 1202, - "advance" : 1202, - "extender" : true - }, - { - "glyph" : "parallel.tp", - "endConnector" : 0, - "startConnector" : 601, - "advance" : 1202, - "extender" : false - } - ] - }, - "uni21E9" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21E9.bt", - "endConnector" : 173, - "startConnector" : 0, - "advance" : 519, - "extender" : false - }, - { - "glyph" : "uni21E9.ex", - "endConnector" : 346, - "startConnector" : 346, - "advance" : 346, - "extender" : true - }, - { - "glyph" : "uni21E9.tp", - "endConnector" : 0, - "startConnector" : 173, - "advance" : 519, - "extender" : false - } - ] - }, - "braceright" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23AD", - "endConnector" : 374, - "startConnector" : 0, - "advance" : 750, - "extender" : false - }, - { - "glyph" : "braceright.ex", - "endConnector" : 748, - "startConnector" : 748, - "advance" : 748, - "extender" : true - }, - { - "glyph" : "uni23AC", - "endConnector" : 374, - "startConnector" : 374, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "braceright.ex", - "endConnector" : 748, - "startConnector" : 748, - "advance" : 748, - "extender" : true - }, - { - "glyph" : "uni23AB", - "endConnector" : 0, - "startConnector" : 374, - "advance" : 750, - "extender" : false - } - ] - }, - "uni2B0D" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni2B0D.bt", - "endConnector" : 161, - "startConnector" : 0, - "advance" : 484, - "extender" : false - }, - { - "glyph" : "uni2B0D.ex", - "endConnector" : 322, - "startConnector" : 322, - "advance" : 322, - "extender" : true - }, - { - "glyph" : "uni2B0D.tp", - "endConnector" : 0, - "startConnector" : 161, - "advance" : 484, - "extender" : false - } - ] - }, - "uni21F3" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21F3.bt", - "endConnector" : 175, - "startConnector" : 0, - "advance" : 524, - "extender" : false - }, - { - "glyph" : "uni21F3.ex", - "endConnector" : 349, - "startConnector" : 349, - "advance" : 349, - "extender" : true - }, - { - "glyph" : "uni21F3.tp", - "endConnector" : 0, - "startConnector" : 175, - "advance" : 523, - "extender" : false - } - ] - }, - "uni21C3" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21C3.bt", - "endConnector" : 171, - "startConnector" : 0, - "advance" : 513, - "extender" : false - }, - { - "glyph" : "uni21C3.ex", - "endConnector" : 341, - "startConnector" : 341, - "advance" : 341, - "extender" : true - }, - { - "glyph" : "uni21C3.tp", - "endConnector" : 0, - "startConnector" : 171, - "advance" : 512, - "extender" : false - } - ] - }, - "arrowdblup" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "arrowdblup.bt", - "endConnector" : 168, - "startConnector" : 0, - "advance" : 505, - "extender" : false - }, - { - "glyph" : "arrowdblup.ex", - "endConnector" : 336, - "startConnector" : 336, - "advance" : 336, - "extender" : true - }, - { - "glyph" : "arrowdblup.tp", - "endConnector" : 0, - "startConnector" : 168, - "advance" : 504, - "extender" : false - } - ] - }, - "uni2309" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A5", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni23A4", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1500, - "extender" : false - } - ] - }, - "uni219F" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni219F.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 506, - "extender" : false - }, - { - "glyph" : "uni219F.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "uni219F.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 505, - "extender" : false - } - ] - }, - "uni21C8" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21C8.bt", - "endConnector" : 169, - "startConnector" : 0, - "advance" : 506, - "extender" : false - }, - { - "glyph" : "uni21C8.ex", - "endConnector" : 337, - "startConnector" : 337, - "advance" : 337, - "extender" : true - }, - { - "glyph" : "uni21C8.tp", - "endConnector" : 0, - "startConnector" : 169, - "advance" : 505, - "extender" : false - } - ] - }, - "parenright" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A0", - "endConnector" : 249, - "startConnector" : 0, - "advance" : 1495, - "extender" : false - }, - { - "glyph" : "uni239F", - "endConnector" : 498, - "startConnector" : 498, - "advance" : 498, - "extender" : true - }, - { - "glyph" : "uni239E", - "endConnector" : 0, - "startConnector" : 249, - "advance" : 1495, - "extender" : false - } - ] - }, - "parenleft" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni239D", - "endConnector" : 249, - "startConnector" : 0, - "advance" : 1495, - "extender" : false - }, - { - "glyph" : "uni239C", - "endConnector" : 498, - "startConnector" : 498, - "advance" : 498, - "extender" : true - }, - { - "glyph" : "uni239B", - "endConnector" : 0, - "startConnector" : 249, - "advance" : 1495, - "extender" : false - } - ] - }, - "uni21E7" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21E7.bt", - "endConnector" : 173, - "startConnector" : 0, - "advance" : 519, - "extender" : false - }, - { - "glyph" : "uni21E7.ex", - "endConnector" : 346, - "startConnector" : 346, - "advance" : 346, - "extender" : true - }, - { - "glyph" : "uni21E7.tp", - "endConnector" : 0, - "startConnector" : 173, - "advance" : 519, - "extender" : false - } - ] - }, - "uni21C2" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni21C2.bt", - "endConnector" : 171, - "startConnector" : 0, - "advance" : 513, - "extender" : false - }, - { - "glyph" : "uni21C2.ex", - "endConnector" : 341, - "startConnector" : 341, - "advance" : 341, - "extender" : true - }, - { - "glyph" : "uni21C2.tp", - "endConnector" : 0, - "startConnector" : 171, - "advance" : 512, - "extender" : false - } - ] - }, - "uni2308" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A2", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni23A1", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1500, - "extender" : false - } - ] - }, - "arrowupdn" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "arrowupdn.bt", - "endConnector" : 127, - "startConnector" : 0, - "advance" : 380, - "extender" : false - }, - { - "glyph" : "arrowupdn.ex", - "endConnector" : 254, - "startConnector" : 254, - "advance" : 254, - "extender" : true - }, - { - "glyph" : "arrowupdn.tp", - "endConnector" : 0, - "startConnector" : 127, - "advance" : 380, - "extender" : false - } - ] - }, - "uni2B07" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni2B07.bt", - "endConnector" : 164, - "startConnector" : 0, - "advance" : 492, - "extender" : false - }, - { - "glyph" : "uni2B07.ex", - "endConnector" : 327, - "startConnector" : 327, - "advance" : 327, - "extender" : true - }, - { - "glyph" : "uni2B07.tp", - "endConnector" : 0, - "startConnector" : 164, - "advance" : 492, - "extender" : false - } - ] - }, - "bracketleft" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni23A3", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1500, - "extender" : false - }, - { - "glyph" : "uni23A2", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni23A1", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1500, - "extender" : false - } - ] - }, - "arrowdbldown" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "arrowdbldown.bt", - "endConnector" : 168, - "startConnector" : 0, - "advance" : 504, - "extender" : false - }, - { - "glyph" : "arrowdbldown.ex", - "endConnector" : 336, - "startConnector" : 336, - "advance" : 336, - "extender" : true - }, - { - "glyph" : "arrowdbldown.tp", - "endConnector" : 0, - "startConnector" : 168, - "advance" : 505, - "extender" : false - } - ] - }, - "uni27E7" : { - "italic" : 0, - "parts" : [ - { - "glyph" : "uni27E7.bt", - "endConnector" : 500, - "startConnector" : 0, - "advance" : 1000, - "extender" : false - }, - { - "glyph" : "uni27E7.ex", - "endConnector" : 1000, - "startConnector" : 1000, - "advance" : 1000, - "extender" : true - }, - { - "glyph" : "uni27E7.tp", - "endConnector" : 0, - "startConnector" : 500, - "advance" : 1000, - "extender" : false - } - ] - } - }, - "h_variants" : { - "uni21CD" : [ - "uni21CD", - "uni21CD.h1" - ], - "uni2263" : [ - - ], - "caronbelowcmb" : [ - "caronbelowcmb", - "caronbelowcmb.h1", - "caronbelowcmb.h2", - "caronbelowcmb.h3", - "caronbelowcmb.h4", - "caronbelowcmb.h5", - "caronbelowcmb.h6", - "caronbelowcmb.h7" - ], - "uni21A4" : [ - "uni21A4", - "uni27FB" - ], - "uni20D0" : [ + "h_variants": { + "equal": [], + "uni20D0": [ "uni20D0", "uni20D0.h1" ], - "caroncmb" : [ - "caroncmb", - "caroncmb.h1", - "caroncmb.h2", - "caroncmb.h3", - "caroncmb.h4", - "caroncmb.h5", - "caroncmb.h6", - "caroncmb.h7" - ], - "uni21E8" : [ - "uni21E8", - "uni21E8.h1" - ], - "uni27A1" : [ - "uni27A1", - "uni27A1.h1" - ], - "uni2B05" : [ - "uni2B05", - "uni2B05.h1" + "uni20D1": [ + "uni20D1", + "uni20D1.h1" ], - "uni20D6" : [ + "uni20D6": [ "uni20D6", "uni20D6.h1" ], - "uni2B31" : [ - "uni2B31", - "uni2B31.h1" + "uni20D7": [ + "uni20D7", + "uni20D7.h1" ], - "overlinecmb" : [ - "overlinecmb", - "overlinecmb.h1" + "uni20E1": [ + "uni20E1", + "uni20E1.h1" ], - "uni20ED" : [ + "uni20EC": [ + "uni20EC", + "uni20EC.h1" + ], + "uni20ED": [ "uni20ED", "uni20ED.h1" ], - "uni21C1" : [ - "uni21C1", - "uni21C1.h1" + "uni20EE": [ + "uni20EE", + "uni20EE.h1" ], - "uni21AC" : [ - "uni21AC", - "uni21AC.h1" + "uni20EF": [ + "uni20EF", + "uni20EF.h1" ], - "circumflexbelowcmb" : [ - "circumflexbelowcmb", - "circumflexbelowcmb.h1", - "circumflexbelowcmb.h2", - "circumflexbelowcmb.h3", - "circumflexbelowcmb.h4", - "circumflexbelowcmb.h5", - "circumflexbelowcmb.h6", - "circumflexbelowcmb.h7" + "uni034D": [ + "uni034D", + "uni034D.h1" ], - "uni21C4" : [ - "uni21C4", - "uni21C4.h1" + "arrowleft": [ + "arrowleft", + "uni27F5" + ], + "arrowright": [ + "arrowright", + "uni27F6" ], - "uni219A" : [ + "uni219A": [ "uni219A", "uni219A.h1" ], - "lowlinecmb" : [ - "lowlinecmb", - "lowlinecmb.h1" - ], - "uni21DB" : [ - "uni21DB", - "uni21DB.h1" - ], - "uni21C7" : [ - "uni21C7", - "uni21C7.h1" - ], - "brevebelowcmb" : [ - "brevebelowcmb", - "brevebelowcmb.h1", - "brevebelowcmb.h2", - "brevebelowcmb.h3", - "brevebelowcmb.h4", - "brevebelowcmb.h5", - "brevebelowcmb.h6", - "brevebelowcmb.h7" - ], - "dbloverlinecmb" : [ - "dbloverlinecmb", - "dbloverlinecmb.h1" - ], - "uni23DE" : [ - "uni23DE", - "uni23DE.h1", - "uni23DE.h2", - "uni23DE.h3", - "uni23DE.h4", - "uni23DE.h5", - "uni23DE.h6", - "uni23DE.h7" - ], - "uni21F6" : [ - "uni21F6", - "uni21F6.h1" - ], - "circumflexcmb" : [ - "circumflexcmb", - "circumflexcmb.h1", - "circumflexcmb.h2", - "circumflexcmb.h3", - "circumflexcmb.h4", - "circumflexcmb.h5", - "circumflexcmb.h6", - "circumflexcmb.h7" - ], - "uni20E1" : [ - "uni20E1", - "uni20E1.h1" + "uni219B": [ + "uni219B", + "uni219B.h1" ], - "uni23B5" : [ - "uni23B5", - "uni23B5.h1", - "uni23B5.h2", - "uni23B5.h3", - "uni23B5.h4", - "uni23B5.h5", - "uni23B5.h6", - "uni23B5.h7" + "arrowboth": [ + "arrowboth", + "uni27F7" ], - "uni21CC" : [ - "uni21CC", - "uni21CC.h1" + "uni21AE": [ + "uni21AE", + "uni21AE.h1" ], - "uni23E1" : [ - "uni23E1", - "uni23E1.h1", - "uni23E1.h2", - "uni23E1.h3", - "uni23E1.h4", - "uni23E1.h5", - "uni23E1.h6", - "uni23E1.h7" + "uni219E": [ + "uni219E", + "uni219E.h1" ], - "uni21A0" : [ + "uni21A0": [ "uni21A0", "uni21A0.h1" ], - "uni21CF" : [ - "uni21CF", - "uni21CF.h1" - ], - "uni2907" : [ - "uni2907", - "uni27FE" + "uni21A2": [ + "uni21A2", + "uni21A2.h1" ], - "uni21A3" : [ + "uni21A3": [ "uni21A3", "uni21A3.h1" ], - "brevecmb" : [ - "brevecmb", - "brevecmb.h1", - "brevecmb.h2", - "brevecmb.h3", - "brevecmb.h4", - "brevecmb.h5", - "brevecmb.h6", - "brevecmb.h7" + "uni21A4": [ + "uni21A4", + "uni27FB" ], - "uni21A6" : [ + "uni21A6": [ "uni21A6", "uni27FC" ], - "arrowleft" : [ - "arrowleft", - "uni27F5" + "uni21AA": [ + "uni21AA", + "uni21AA.h1" ], - "uni21A9" : [ + "uni21A9": [ "uni21A9", "uni21A9.h1" ], - "uni21BD" : [ - "uni21BD", - "uni21BD.h1" - ], - "uni2B04" : [ - "uni2B04", - "uni2B04.h1" - ], - "arrowright" : [ - "arrowright", - "uni27F6" + "uni21AC": [ + "uni21AC", + "uni21AC.h1" ], - "breveinvertedcmb" : [ - "breveinvertedcmb", - "breveinvertedcmb.h1", - "breveinvertedcmb.h2", - "breveinvertedcmb.h3", - "breveinvertedcmb.h4", - "breveinvertedcmb.h5", - "breveinvertedcmb.h6", - "breveinvertedcmb.h7" + "uni21AB": [ + "uni21AB", + "uni21AB.h1" ], - "uni20EC" : [ - "uni20EC", - "uni20EC.h1" + "uni21B6": [ + "uni21B6", + "uni21B6.h1" ], - "minus" : [ - + "uni21B7": [ + "uni21B7", + "uni21B7.h1" ], - "arrowdblleft" : [ - "arrowdblleft", - "uni27F8" + "uni21BC": [ + "uni21BC", + "uni21BC.h1" ], - "uni21C0" : [ + "uni21C0": [ "uni21C0", "uni21C0.h1" ], - "uni21AB" : [ - "uni21AB", - "uni21AB.h1" + "uni21BD": [ + "uni21BD", + "uni21BD.h1" ], - "uni20EF" : [ - "uni20EF", - "uni20EF.h1" + "uni21C1": [ + "uni21C1", + "uni21C1.h1" ], - "uni21AE" : [ - "uni21AE", - "uni21AE.h1" + "uni21C4": [ + "uni21C4", + "uni21C4.h1" ], - "uni21C6" : [ + "uni21C6": [ "uni21C6", "uni21C6.h1" ], - "uni21DA" : [ - "uni21DA", - "uni21DA.h1" - ], - "uni2B0C" : [ - "uni2B0C", - "uni2B0C.h1" - ], - "breveinvertedbelowcmb" : [ - "breveinvertedbelowcmb", - "breveinvertedbelowcmb.h1", - "breveinvertedbelowcmb.h2", - "breveinvertedbelowcmb.h3", - "breveinvertedbelowcmb.h4", - "breveinvertedbelowcmb.h5", - "breveinvertedbelowcmb.h6", - "breveinvertedbelowcmb.h7" + "uni21C7": [ + "uni21C7", + "uni21C7.h1" ], - "uni21C9" : [ + "uni21C9": [ "uni21C9", "uni21C9.h1" ], - "uni21DD" : [ - "uni21DD", - "uni27FF" + "uni21F6": [ + "uni21F6", + "uni21F6.h1" ], - "uni23DD" : [ - "uni23DD", - "uni23DD.h1", - "uni23DD.h2", - "uni23DD.h3", - "uni23DD.h4", - "uni23DD.h5", - "uni23DD.h6", - "uni23DD.h7" + "uni2B31": [ + "uni2B31", + "uni2B31.h1" ], - "tildecomb" : [ - "tildecomb", - "tildecomb.h1", - "tildecomb.h2", - "tildecomb.h3", - "tildecomb.h4", - "tildecomb.h5", - "tildecomb.h6", - "tildecomb.h7" + "uni21CB": [ + "uni21CB", + "uni21CB.h1" ], - "uni23B4" : [ - "uni23B4", - "uni23B4.h1", - "uni23B4.h2", - "uni23B4.h3", - "uni23B4.h4", - "uni23B4.h5", - "uni23B4.h6", - "uni23B4.h7" + "uni21CC": [ + "uni21CC", + "uni21CC.h1" ], - "uni21B7" : [ - "uni21B7", - "uni21B7.h1" + "arrowdblleft": [ + "arrowdblleft", + "uni27F8" ], - "uni21CB" : [ - "uni21CB", - "uni21CB.h1" + "arrowdblright": [ + "arrowdblright", + "uni27F9" ], - "uni23E0" : [ - "uni23E0", - "uni23E0.h1", - "uni23E0.h2", - "uni23E0.h3", - "uni23E0.h4", - "uni23E0.h5", - "uni23E0.h6", - "uni23E0.h7" + "arrowdblboth": [ + "arrowdblboth", + "uni27FA" + ], + "uni21CD": [ + "uni21CD", + "uni21CD.h1" ], - "uni21CE" : [ + "uni21CF": [ + "uni21CF", + "uni21CF.h1" + ], + "uni21CE": [ "uni21CE", "uni21CE.h1" ], - "uni2906" : [ + "uni2906": [ "uni2906", "uni27FD" ], - "uni21A2" : [ - "uni21A2", - "uni21A2.h1" - ], - "dbllowlinecmb" : [ - "dbllowlinecmb", - "dbllowlinecmb.h1" + "uni2907": [ + "uni2907", + "uni27FE" ], - "uni21E6" : [ - "uni21E6", - "uni21E6.h1" + "uni21DA": [ + "uni21DA", + "uni21DA.h1" ], - "uni20E9" : [ - "uni20E9", - "uni23B4.h1", - "uni23B4.h2", - "uni23B4.h3", - "uni23B4.h4", - "uni23B4.h5", - "uni23B4.h6", - "uni23B4.h7" + "uni21DB": [ + "uni21DB", + "uni21DB.h1" ], - "uni20D1" : [ - "uni20D1", - "uni20D1.h1" + "uni21DD": [ + "uni21DD", + "uni27FF" ], - "arrowdblright" : [ - "arrowdblright", - "uni27F9" + "uni21DC": [ + "uni21DC", + "uni2B33" ], - "uni21BC" : [ - "uni21BC", - "uni21BC.h1" + "uni21AD": [ + "uni21AD", + "uni21AD.h1" ], - "uni20D7" : [ - "uni20D7", - "uni20D7.h1" + "uni21E6": [ + "uni21E6", + "uni21E6.h1" ], - "uni20EE" : [ - "uni20EE", - "uni20EE.h1" + "uni21E8": [ + "uni21E8", + "uni21E8.h1" ], - "uni21AA" : [ - "uni21AA", - "uni21AA.h1" + "uni2B04": [ + "uni2B04", + "uni2B04.h1" ], - "uni21AD" : [ - "uni21AD", - "uni21AD.h1" + "uni2B05": [ + "uni2B05", + "uni2B05.h1" ], - "uni219B" : [ - "uni219B", - "uni219B.h1" + "uni27A1": [ + "uni27A1", + "uni27A1.h1" ], - "equal" : [ - + "uni2B0C": [ + "uni2B0C", + "uni2B0C.h1" ], - "uni21DC" : [ - "uni21DC", - "uni2B33" + "lowlinecmb": [ + "lowlinecmb", + "lowlinecmb.h1" ], - "equivalence" : [ - + "dbllowlinecmb": [ + "dbllowlinecmb", + "dbllowlinecmb.h1" ], - "uni219E" : [ - "uni219E", - "uni219E.h1" + "overlinecmb": [ + "overlinecmb", + "overlinecmb.h1" ], - "arrowdblboth" : [ - "arrowdblboth", - "uni27FA" + "dbloverlinecmb": [ + "dbloverlinecmb", + "dbloverlinecmb.h1" ], - "uni23DC" : [ - "uni23DC", - "uni23DC.h1", - "uni23DC.h2", - "uni23DC.h3", - "uni23DC.h4", - "uni23DC.h5", - "uni23DC.h6", - "uni23DC.h7" + "brevecmb": [ + "brevecmb", + "brevecmb.h1", + "brevecmb.h2", + "brevecmb.h3", + "brevecmb.h4", + "brevecmb.h5", + "brevecmb.h6", + "brevecmb.h7" + ], + "brevebelowcmb": [ + "brevebelowcmb", + "brevebelowcmb.h1", + "brevebelowcmb.h2", + "brevebelowcmb.h3", + "brevebelowcmb.h4", + "brevebelowcmb.h5", + "brevebelowcmb.h6", + "brevebelowcmb.h7" + ], + "breveinvertedcmb": [ + "breveinvertedcmb", + "breveinvertedcmb.h1", + "breveinvertedcmb.h2", + "breveinvertedcmb.h3", + "breveinvertedcmb.h4", + "breveinvertedcmb.h5", + "breveinvertedcmb.h6", + "breveinvertedcmb.h7" + ], + "breveinvertedbelowcmb": [ + "breveinvertedbelowcmb", + "breveinvertedbelowcmb.h1", + "breveinvertedbelowcmb.h2", + "breveinvertedbelowcmb.h3", + "breveinvertedbelowcmb.h4", + "breveinvertedbelowcmb.h5", + "breveinvertedbelowcmb.h6", + "breveinvertedbelowcmb.h7" + ], + "caroncmb": [ + "caroncmb", + "caroncmb.h1", + "caroncmb.h2", + "caroncmb.h3", + "caroncmb.h4", + "caroncmb.h5", + "caroncmb.h6", + "caroncmb.h7" + ], + "caronbelowcmb": [ + "caronbelowcmb", + "caronbelowcmb.h1", + "caronbelowcmb.h2", + "caronbelowcmb.h3", + "caronbelowcmb.h4", + "caronbelowcmb.h5", + "caronbelowcmb.h6", + "caronbelowcmb.h7" + ], + "circumflexcmb": [ + "circumflexcmb", + "circumflexcmb.h1", + "circumflexcmb.h2", + "circumflexcmb.h3", + "circumflexcmb.h4", + "circumflexcmb.h5", + "circumflexcmb.h6", + "circumflexcmb.h7" + ], + "circumflexbelowcmb": [ + "circumflexbelowcmb", + "circumflexbelowcmb.h1", + "circumflexbelowcmb.h2", + "circumflexbelowcmb.h3", + "circumflexbelowcmb.h4", + "circumflexbelowcmb.h5", + "circumflexbelowcmb.h6", + "circumflexbelowcmb.h7" + ], + "tildecomb": [ + "tildecomb", + "tildecomb.h1", + "tildecomb.h2", + "tildecomb.h3", + "tildecomb.h4", + "tildecomb.h5", + "tildecomb.h6", + "tildecomb.h7" ], - "tildebelowcmb" : [ + "tildebelowcmb": [ "tildebelowcmb", "tildebelowcmb.h1", "tildebelowcmb.h2", @@ -5576,7 +956,17 @@ "tildebelowcmb.h6", "tildebelowcmb.h7" ], - "uni23DF" : [ + "uni23DE": [ + "uni23DE", + "uni23DE.h1", + "uni23DE.h2", + "uni23DE.h3", + "uni23DE.h4", + "uni23DE.h5", + "uni23DE.h6", + "uni23DE.h7" + ], + "uni23DF": [ "uni23DF", "uni23DF.h1", "uni23DF.h2", @@ -5586,77 +976,6639 @@ "uni23DF.h6", "uni23DF.h7" ], - "arrowboth" : [ - "arrowboth", - "uni27F7" + "uni23DC": [ + "uni23DC", + "uni23DC.h1", + "uni23DC.h2", + "uni23DC.h3", + "uni23DC.h4", + "uni23DC.h5", + "uni23DC.h6", + "uni23DC.h7" ], - "uni21B6" : [ - "uni21B6", - "uni21B6.h1" + "uni23DD": [ + "uni23DD", + "uni23DD.h1", + "uni23DD.h2", + "uni23DD.h3", + "uni23DD.h4", + "uni23DD.h5", + "uni23DD.h6", + "uni23DD.h7" ], - "uni034D" : [ - "uni034D", - "uni034D.h1" - ] + "uni23B4": [ + "uni23B4", + "uni23B4.h1", + "uni23B4.h2", + "uni23B4.h3", + "uni23B4.h4", + "uni23B4.h5", + "uni23B4.h6", + "uni23B4.h7" + ], + "uni23B5": [ + "uni23B5", + "uni23B5.h1", + "uni23B5.h2", + "uni23B5.h3", + "uni23B5.h4", + "uni23B5.h5", + "uni23B5.h6", + "uni23B5.h7" + ], + "uni23E0": [ + "uni23E0", + "uni23E0.h1", + "uni23E0.h2", + "uni23E0.h3", + "uni23E0.h4", + "uni23E0.h5", + "uni23E0.h6", + "uni23E0.h7" + ], + "uni23E1": [ + "uni23E1", + "uni23E1.h1", + "uni23E1.h2", + "uni23E1.h3", + "uni23E1.h4", + "uni23E1.h5", + "uni23E1.h6", + "uni23E1.h7" + ], + "uni20E9": [ + "uni20E9", + "uni23B4.h1", + "uni23B4.h2", + "uni23B4.h3", + "uni23B4.h4", + "uni23B4.h5", + "uni23B4.h6", + "uni23B4.h7" + ], + "minus": [], + "equivalence": [], + "uni2263": [] + }, + "italic": { + "seven": 13, + "R": 24, + "V": 8, + "W": 9, + "X": 4, + "Y": 16, + "bracketleft": 6, + "asciicircum": 33, + "underscore": 28, + "a": 11, + "f": 79, + "g": 13, + "h": 7, + "k": 11, + "l": 5, + "m": 8, + "n": 7, + "q": 27, + "u": 7, + "v": 8, + "w": 9, + "x": 16, + "y": 8, + "asciitilde": 27, + "yen": 16, + "endash": 27, + "emdash": 27, + "ordmasculine": 5, + "aogonek": 11, + "star.alt": 23, + "copyleft": 28, + "copyright": 28, + "divorced": 216, + "f_k": 3, + "f_f": 73, + "iogonek": 3, + "leaf": 39, + "longs": 79, + "married": 105, + "uni00B5": 6, + "ohorn": 16, + "published": 28, + "recipe": 24, + "registered": 28, + "threequartersemdash": 27, + "asciitilde.low": 27, + "emdash.alt": 27, + "Uhorn": 4, + "uhorn": 43, + "uogonek": 27, + "aacute": 11, + "abreve": 11, + "abreveacute": 11, + "abrevedotbelow": 11, + "abrevegrave": 11, + "abrevehookabove": 11, + "abrevetilde": 11, + "acircumflex": 11, + "acircumflexacute": 11, + "acircumflexdotbelow": 11, + "acircumflexgrave": 11, + "acircumflexhookabove": 11, + "acircumflextilde": 11, + "adieresis": 11, + "adotbelow": 11, + "agrave": 11, + "ahookabove": 11, + "amacron": 11, + "aring": 11, + "atilde": 11, + "dcaron": 46, + "gbreve": 13, + "gcommaaccent": 13, + "iacute": 13, + "icircumflex": 41, + "idieresis": 27, + "Imacron": 29, + "imacron": 70, + "Itilde": 15, + "itilde": 56, + "kcommaaccent": 11, + "lacute": 26, + "lcaron": 52, + "lcommaaccent": 5, + "nacute": 7, + "ncaron": 7, + "ncommaaccent": 7, + "ntilde": 7, + "ohornacute": 16, + "ohorndotbelow": 16, + "ohorngrave": 16, + "ohornhookabove": 16, + "ohorntilde": 16, + "Racute": 24, + "Rcaron": 24, + "Rcommaaccent": 24, + "uacute": 7, + "ucircumflex": 7, + "udieresis": 7, + "udotbelow": 7, + "ugrave": 7, + "uhookabove": 7, + "Uhornacute": 4, + "uhornacute": 43, + "Uhorndotbelow": 4, + "uhorndotbelow": 43, + "Uhorngrave": 4, + "uhorngrave": 43, + "Uhornhookabove": 4, + "uhornhookabove": 43, + "Uhorntilde": 4, + "uhorntilde": 43, + "uhungarumlaut": 7, + "umacron": 7, + "uring": 7, + "utilde": 7, + "Yacute": 16, + "yacute": 8, + "Ydieresis": 16, + "ydieresis": 8, + "Ydotbelow": 16, + "ydotbelow": 8, + "Ygrave": 16, + "ygrave": 8, + "Yhookabove": 16, + "yhookabove": 8, + "Ytilde": 16, + "ytilde": 8, + "asciicircum.sts": 33, + "asciitilde.sts": 27, + "copyleft.sts": 28, + "copyright.sts": 28, + "divorced.sts": 238, + "f.sts": 58, + "f_f.sts": 59, + "leaf.sts": 16, + "longs.sts": 58, + "married.sts": 99, + "published.sts": 28, + "registered.sts": 28, + "asciitilde.low.sts": 27, + "uhorn.sts": 10, + "underscore.sts": 28, + "dcaron.sts": 16, + "Imacron.sts": 6, + "imacron.sts": 51, + "itilde.sts": 34, + "lcaron.sts": 24, + "uhornacute.sts": 10, + "uhorndotbelow.sts": 10, + "uhorngrave.sts": 10, + "uhornhookabove.sts": 10, + "uhorntilde.sts": 10, + "a.st": 3, + "aogonek.st": 7, + "asciicircum.st": 33, + "asciitilde.st": 27, + "copyleft.st": 28, + "copyright.st": 28, + "divorced.st": 230, + "emdash.st": 11, + "endash.st": 19, + "f.st": 72, + "f_f.st": 65, + "g.st": 4, + "leaf.st": 34, + "longs.st": 72, + "married.st": 107, + "ohorn.st": 7, + "published.st": 28, + "q.st": 9, + "R.st": 16, + "recipe.st": 16, + "registered.st": 28, + "seven.st": 4, + "threequartersemdash.st": 16, + "asciitilde.low.st": 27, + "emdash.alt.st": 11, + "uhorn.st": 37, + "underscore.st": 28, + "uogonek.st": 7, + "Y.st": 3, + "yen.st": 3, + "aacute.st": 3, + "abreve.st": 3, + "abreveacute.st": 3, + "abrevedotbelow.st": 3, + "abrevegrave.st": 3, + "abrevehookabove.st": 3, + "abrevetilde.st": 3, + "acircumflex.st": 3, + "acircumflexacute.st": 3, + "acircumflexdotbelow.st": 3, + "acircumflexgrave.st": 3, + "acircumflexhookabove.st": 3, + "acircumflextilde.st": 3, + "adieresis.st": 3, + "adotbelow.st": 3, + "agrave.st": 3, + "ahookabove.st": 3, + "amacron.st": 3, + "aring.st": 3, + "atilde.st": 3, + "dcaron.st": 39, + "gbreve.st": 4, + "gcommaaccent.st": 4, + "iacute.st": 4, + "icircumflex.st": 19, + "idieresis.st": 13, + "Imacron.st": 21, + "imacron.st": 66, + "Itilde.st": 6, + "itilde.st": 51, + "lacute.st": 17, + "lcaron.st": 47, + "ohornacute.st": 7, + "ohorndotbelow.st": 7, + "ohorngrave.st": 7, + "ohornhookabove.st": 7, + "ohorntilde.st": 7, + "Racute.st": 16, + "Rcaron.st": 16, + "Rcommaaccent.st": 16, + "uhornacute.st": 37, + "uhorndotbelow.st": 37, + "uhorngrave.st": 37, + "uhornhookabove.st": 37, + "uhorntilde.st": 37, + "Yacute.st": 3, + "Ydieresis.st": 3, + "Ydotbelow.st": 3, + "Ygrave.st": 3, + "Yhookabove.st": 3, + "Ytilde.st": 3, + "uni2113": 9, + "u1D435": 25, + "u1D436": 73, + "u1D437": 4, + "u1D438": 54, + "u1D439": 134, + "u1D43B": 78, + "u1D43C": 85, + "u1D43D": 106, + "u1D43E": 68, + "u1D440": 102, + "u1D441": 106, + "u1D442": 5, + "u1D443": 140, + "u1D445": 24, + "u1D446": 60, + "u1D447": 148, + "u1D448": 105, + "u1D449": 214, + "u1D44A": 132, + "u1D44B": 51, + "u1D44C": 209, + "u1D44D": 68, + "u1D44F": 14, + "u1D450": 25, + "u1D451": 24, + "u1D453": 90, + "u1D454": 25, + "u1D457": 13, + "u1D458": 15, + "u1D45C": 12, + "u1D45D": 15, + "u1D45E": 34, + "u1D45F": 13, + "u1D463": 11, + "u1D464": 3, + "u1D466": 28, + "u1D467": 30, + "u1D6A5": 5, + "u1D436.sts": 7, + "u1D439.sts": 107, + "u1D43B.sts": 7, + "u1D43C.sts": 11, + "u1D43D.sts": 46, + "u1D440.sts": 35, + "u1D441.sts": 41, + "u1D443.sts": 110, + "u1D447.sts": 123, + "u1D448.sts": 41, + "u1D449.sts": 200, + "u1D44A.sts": 98, + "u1D44C.sts": 193, + "u1D453.sts": 36, + "u1D45F.sts": 9, + "u1D436.st": 52, + "u1D438.st": 30, + "u1D439.st": 128, + "u1D43B.st": 52, + "u1D43C.st": 58, + "u1D43D.st": 85, + "u1D43E.st": 47, + "u1D440.st": 79, + "u1D441.st": 83, + "u1D443.st": 135, + "u1D445.st": 16, + "u1D446.st": 36, + "u1D447.st": 143, + "u1D448.st": 83, + "u1D449.st": 214, + "u1D44A.st": 125, + "u1D44B.st": 24, + "u1D44C.st": 209, + "u1D44D.st": 47, + "u1D450.st": 12, + "u1D451.st": 8, + "u1D453.st": 75, + "u1D454.st": 7, + "u1D45E.st": 15, + "u1D45F.st": 10, + "u1D466.st": 9, + "u1D467.st": 3, + "u1D41A": 22, + "u1D41F": 114, + "u1D420": 11, + "u1D421": 4, + "u1D424": 8, + "u1D426": 5, + "u1D427": 4, + "u1D42A": 22, + "u1D411": 23, + "u1D7D5": 11, + "u1D42E": 4, + "u1D416": 3, + "u1D431": 6, + "u1D418": 8, + "u1D41A.sts": 6, + "u1D41F.sts": 115, + "u1D411.sts": 7, + "u1D41A.st": 18, + "u1D41F.st": 120, + "u1D420.st": 5, + "u1D42A.st": 8, + "u1D411.st": 19, + "u1D7D5.st": 5, + "u1D469": 16, + "u1D46A": 66, + "u1D46B": 5, + "u1D46C": 43, + "u1D46D": 148, + "u1D46F": 73, + "u1D470": 83, + "u1D471": 91, + "u1D472": 60, + "u1D474": 102, + "u1D475": 105, + "u1D476": 6, + "u1D477": 154, + "u1D479": 37, + "u1D47A": 49, + "u1D47B": 163, + "u1D47C": 105, + "u1D47D": 235, + "u1D47E": 142, + "u1D47F": 34, + "u1D480": 228, + "u1D481": 60, + "u1D483": 13, + "u1D484": 26, + "u1D485": 22, + "u1D487": 86, + "u1D488": 17, + "u1D48B": 7, + "u1D490": 12, + "u1D491": 13, + "u1D492": 29, + "u1D493": 4, + "u1D49A": 20, + "u1D49B": 11, + "u1D46A.sts": 18, + "u1D46D.sts": 146, + "u1D46F.sts": 19, + "u1D470.sts": 22, + "u1D471.sts": 50, + "u1D472.sts": 12, + "u1D474.sts": 47, + "u1D475.sts": 60, + "u1D477.sts": 151, + "u1D479.sts": 15, + "u1D47B.sts": 163, + "u1D47C.sts": 60, + "u1D47D.sts": 253, + "u1D47E.sts": 136, + "u1D480.sts": 236, + "u1D481.sts": 14, + "u1D487.sts": 51, + "u1D46A.st": 51, + "u1D46C.st": 27, + "u1D46D.st": 154, + "u1D46F.st": 55, + "u1D470.st": 61, + "u1D471.st": 77, + "u1D472.st": 46, + "u1D474.st": 84, + "u1D475.st": 91, + "u1D477.st": 160, + "u1D479.st": 37, + "u1D47A.st": 34, + "u1D47B.st": 169, + "u1D47C.st": 90, + "u1D47D.st": 249, + "u1D47E.st": 145, + "u1D47F.st": 11, + "u1D480.st": 239, + "u1D481.st": 47, + "u1D483.st": 4, + "u1D484.st": 20, + "u1D485.st": 18, + "u1D487.st": 78, + "u1D488.st": 4, + "u1D490.st": 3, + "u1D491.st": 4, + "u1D492.st": 16, + "u1D49A.st": 7, + "uni27E6": 6, + "uni23DE": 28, + "uni23DF": 28, + "uni23DC": 28, + "uni23DD": 28, + "uni23B4": 28, + "uni23B5": 28, + "uni23E0": 28, + "uni23E1": 28, + "uni27E6.v1": 6, + "uni23DE.h1": 29, + "uni23DF.h1": 28, + "uni23DC.h1": 28, + "uni23DD.h1": 28, + "uni23B4.h1": 28, + "uni23B5.h1": 28, + "uni23E0.h1": 28, + "uni23E1.h1": 28, + "uni27E6.v2": 6, + "uni23DE.h2": 28, + "uni23DF.h2": 28, + "uni23DC.h2": 28, + "uni23DD.h2": 28, + "uni23B4.h2": 28, + "uni23B5.h2": 28, + "uni23E0.h2": 28, + "uni23E1.h2": 28, + "uni27E6.v3": 5, + "uni23DE.h3": 28, + "uni23DF.h3": 28, + "uni23DC.h3": 28, + "uni23DD.h3": 28, + "uni23B4.h3": 28, + "uni23B5.h3": 28, + "uni23E0.h3": 28, + "uni23E1.h3": 28, + "bracketleft.v4": 4, + "uni27E6.v4": 5, + "uni23DE.h4": 28, + "uni23DF.h4": 28, + "uni23DC.h4": 28, + "uni23DD.h4": 28, + "uni23B4.h4": 28, + "uni23B5.h4": 28, + "uni23E0.h4": 28, + "uni23E1.h4": 28, + "bracketleft.v5": 7, + "uni27E6.v5": 5, + "uni23DE.h5": 28, + "uni23DF.h5": 28, + "uni23DC.h5": 28, + "uni23DD.h5": 28, + "uni23B4.h5": 28, + "uni23B5.h5": 28, + "uni23E0.h5": 28, + "uni23E1.h5": 28, + "bracketleft.v6": 9, + "uni27E6.v6": 6, + "uni23DE.h6": 28, + "uni23DF.h6": 28, + "uni23DC.h6": 28, + "uni23DD.h6": 28, + "uni23B4.h6": 28, + "uni23B5.h6": 28, + "uni23E0.h6": 28, + "uni23E1.h6": 28, + "bracketleft.v7": 8, + "uni27E6.v7": 6, + "uni23DE.h7": 28, + "uni23DF.h7": 28, + "uni23DC.h7": 28, + "uni23DD.h7": 28, + "uni23B4.h7": 28, + "uni23B5.h7": 28, + "uni23E0.h7": 28, + "uni23E1.h7": 28, + "uni22C4": 8, + "uni22C6": 25, + "uni20EB": 31, + "shade": 28, + "ltshade": 28, + "dkshade": 28, + "uni2581": 28, + "block": 28, + "SF100000": 48, + "SF010000": 48, + "SF020000": 48, + "SF080000": 48, + "SF060000": 48, + "SF050000": 48, + "integral": 332, + "uni222C": 332, + "uni222D": 332, + "uni2A0C": 332, + "contourintegral": 332, + "uni222F": 332, + "uni2230": 332, + "uni2231": 361, + "uni2A11": 361, + "uni2232": 350, + "uni2233": 350, + "integral.v1": 591, + "uni222C.v1": 591, + "uni222D.v1": 591, + "uni2A0C.v1": 591, + "contourintegral.v1": 591, + "uni222F.v1": 591, + "uni2230.v1": 591, + "uni2231.v1": 591, + "uni2A11.v1": 591, + "uni2232.v1": 591, + "uni2233.v1": 591, + "integraltp": 591, + "integralbt": 591, + "u1D5BF": 69, + "u1D5C0": 13, + "u1D5C4": 10, + "u1D5CB": 13, + "u1D5CC": 5, + "u1D5B5": 13, + "u1D5CF": 13, + "u1D5B6": 13, + "u1D5D0": 13, + "u1D5B7": 13, + "u1D5D1": 27, + "u1D5B8": 24, + "u1D5D2": 13, + "u1D622": 21, + "u1D609": 57, + "u1D623": 46, + "u1D60A": 107, + "u1D624": 83, + "u1D60B": 52, + "u1D625": 93, + "u1D60C": 118, + "u1D626": 55, + "u1D60D": 132, + "u1D627": 217, + "u1D60E": 90, + "u1D628": 99, + "u1D60F": 81, + "u1D629": 16, + "u1D610": 81, + "u1D611": 92, + "u1D612": 119, + "u1D62C": 82, + "u1D62D": 93, + "u1D614": 75, + "u1D62E": 17, + "u1D615": 79, + "u1D62F": 16, + "u1D616": 54, + "u1D630": 50, + "u1D617": 79, + "u1D631": 46, + "u1D618": 54, + "u1D632": 42, + "u1D619": 82, + "u1D633": 110, + "u1D61A": 79, + "u1D634": 79, + "u1D61B": 137, + "u1D635": 77, + "u1D61C": 81, + "u1D636": 40, + "u1D61D": 161, + "u1D637": 107, + "u1D61E": 161, + "u1D638": 107, + "u1D61F": 119, + "u1D639": 104, + "u1D620": 172, + "u1D63A": 107, + "u1D621": 119, + "u1D63B": 87, + "u1D62A": 92, + "u1D62B": 84, + "u1D5EA": 3, + "u1D5EC": 3, + "u1D5F3": 73, + "u1D5F4": 12, + "u1D5FF": 12, + "u1D604": 3, + "u1D63D": 49, + "u1D63E": 98, + "u1D63F": 52, + "u1D640": 105, + "u1D641": 120, + "u1D642": 81, + "u1D643": 76, + "u1D644": 76, + "u1D645": 76, + "u1D646": 104, + "u1D648": 76, + "u1D649": 76, + "u1D64A": 54, + "u1D64B": 75, + "u1D64C": 54, + "u1D64D": 77, + "u1D64E": 68, + "u1D64F": 126, + "u1D650": 76, + "u1D651": 143, + "u1D652": 145, + "u1D653": 88, + "u1D654": 147, + "u1D655": 106, + "u1D656": 49, + "u1D657": 50, + "u1D658": 80, + "u1D659": 106, + "u1D65A": 59, + "u1D65B": 217, + "u1D65C": 99, + "u1D65D": 42, + "u1D65E": 109, + "u1D65F": 102, + "u1D660": 72, + "u1D661": 106, + "u1D662": 42, + "u1D663": 42, + "u1D664": 53, + "u1D665": 50, + "u1D666": 58, + "u1D667": 108, + "u1D668": 75, + "u1D669": 70, + "u1D66A": 57, + "u1D66B": 93, + "u1D66C": 94, + "u1D66D": 77, + "u1D66E": 93, + "u1D66F": 79, + "u1D7C6": 59, + "u1D7C3": 48, + "u1D792": 120, + "u1D797": 53, + "u1D7A4": 88, + "u1D79D": 114, + "u1D7B5": 4, + "u1D7B0": 41, + "u1D7AC": 67, + "u1D7B3": 4, + "u1D7AB": 42, + "u1D7AD": 53, + "u1D7B9": 57, + "u1D79F": 75, + "u1D7A2": 106, + "u1D7A8": 70, + "u1D7C2": 36, + "u1D7C9": 57, + "u1D7C7": 27, + "u1D7BC": 58, + "u1D7BB": 5, + "u1D7AF": 24, + "u1D7B1": 66, + "u1D7BA": 28, + "u1D7C8": 29, + "u1D7BE": 36, + "u1D7B6": 59, + "u1D7C1": 36, + "u1D7C5": 52, + "u1D7BF": 30, + "u1D7AE": 31, + "u1D7B2": 5, + "u1D7BD": 57, + "u1D7A5": 46, + "u1D7A7": 91, + "u1D7B8": 29, + "u1D791": 49, + "u1D794": 105, + "u1D795": 106, + "u1D796": 76, + "u1D798": 76, + "u1D799": 104, + "u1D79B": 76, + "u1D79C": 76, + "u1D79E": 54, + "u1D7A0": 75, + "u1D7A3": 126, + "u1D7A6": 71, + "u1D7A9": 38, + "dotlessi.sso": 39, + "dotlessj.sso": 39, + "dotlessi.ssbo": 56, + "dotlessj.ssbo": 56, + "u1D7A1": 53, + "u1D557": 27, + "uni2145": 15, + "uni2146": 75, + "uni2147": 17, + "uni2148": 80, + "uni2149": 80, + "u1D504": 20, + "uni212D": 29, + "u1D508": 7, + "u1D509": 38, + "uni2111": 7, + "u1D50E": 50, + "u1D50F": 7, + "u1D510": 28, + "u1D511": 26, + "u1D513": 9, + "uni211C": 26, + "u1D517": 35, + "u1D518": 49, + "u1D519": 23, + "u1D51A": 37, + "u1D51B": 18, + "u1D51E": 25, + "u1D523": 23, + "u1D526": 17, + "u1D529": 26, + "u1D52A": 19, + "u1D52B": 23, + "u1D52F": 34, + "u1D531": 44, + "u1D532": 25, + "u1D535": 10, + "u1D509.st": 12, + "u1D50E.st": 24, + "u1D517.st": 8, + "u1D518.st": 23, + "u1D51A.st": 11, + "u1D52F.st": 7, + "u1D531.st": 18, + "dotlessi.fra": 17, + "u1D56C": 8, + "u1D56E": 34, + "u1D571": 41, + "u1D576": 52, + "u1D577": 6, + "u1D578": 21, + "u1D579": 14, + "u1D57D": 28, + "u1D57F": 37, + "u1D580": 49, + "u1D581": 13, + "u1D582": 33, + "u1D583": 14, + "u1D586": 13, + "u1D58B": 28, + "u1D58E": 24, + "u1D591": 7, + "u1D592": 7, + "u1D597": 22, + "u1D599": 42, + "u1D59A": 44, + "u1D59D": 19, + "u1D56E.st": 3, + "u1D571.st": 10, + "u1D576.st": 21, + "u1D57F.st": 6, + "u1D580.st": 17, + "u1D599.st": 11, + "u1D59A.st": 13, + "dotlessi.frab": 24, + "u1D68A": 22, + "u1D68D": 15, + "u1D674": 5, + "u1D690": 12, + "u1D677": 5, + "u1D691": 15, + "u1D694": 11, + "u1D67C": 10, + "u1D696": 19, + "u1D697": 15, + "u1D69A": 40, + "u1D681": 25, + "u1D684": 23, + "u1D69E": 15, + "u1D685": 9, + "u1D69F": 3, + "u1D686": 16, + "u1D6A0": 11, + "u1D688": 8, + "u1D6A2": 3, + "Chi": 4, + "alpha": 24, + "uni03F5": 35, + "iota": 24, + "kappa": 23, + "lambda": 54, + "mu": 23, + "chi": 24, + "uni03D1": 21, + "alpha.st": 8, + "uni03F5.st": 18, + "iota.st": 7, + "kappa.st": 7, + "lambda.st": 38, + "mu.st": 8, + "chi.st": 8, + "uni03D1.st": 3, + "u1D6C2": 30, + "u1D6DC": 27, + "u1D6CA": 30, + "u1D6CB": 30, + "u1D6CC": 73, + "u1D6CD": 30, + "u1D6D8": 29, + "u1D6DD": 22, + "u1D6C2.sts": 6, + "u1D6CA.sts": 6, + "u1D6CB.sts": 6, + "u1D6CC.sts": 37, + "u1D6CD.sts": 6, + "u1D6D8.sts": 5, + "u1D6C2.st": 26, + "u1D6DC.st": 17, + "u1D6CA.st": 25, + "u1D6CB.st": 25, + "u1D6CC.st": 65, + "u1D6CD.st": 25, + "u1D6D8.st": 25, + "u1D6DD.st": 13, + "u1D6E4": 134, + "u1D6E9": 5, + "u1D6EF": 63, + "u1D6F1": 77, + "u1D6F4": 54, + "u1D6F6": 146, + "u1D6F7": 4, + "u1D6F9": 109, + "u1D6FA": 42, + "u1D6FD": 36, + "u1D6FE": 53, + "u1D6FF": 36, + "u1D701": 64, + "u1D702": 27, + "u1D703": 14, + "u1D708": 58, + "u1D709": 36, + "u1D70B": 25, + "u1D70C": 13, + "u1D70E": 24, + "u1D70F": 102, + "u1D710": 12, + "u1D719": 5, + "u1D713": 12, + "u1D714": 10, + "u1D71B": 17, + "u1D71A": 13, + "u1D70D": 74, + "u1D715": 63, + "u1D6E4.sts": 106, + "u1D6F1.sts": 6, + "u1D6F6.sts": 116, + "u1D6F9.sts": 54, + "u1D6FE.sts": 4, + "u1D70F.sts": 39, + "u1D70D.sts": 4, + "u1D715.sts": 21, + "u1D6E4.st": 128, + "u1D6EF.st": 40, + "u1D6F1.st": 51, + "u1D6F4.st": 31, + "u1D6F6.st": 140, + "u1D6F9.st": 93, + "u1D6FA.st": 20, + "u1D6FD.st": 12, + "u1D6FE.st": 39, + "u1D6FF.st": 10, + "u1D701.st": 34, + "u1D702.st": 6, + "u1D708.st": 42, + "u1D709.st": 4, + "u1D70B.st": 4, + "u1D70E.st": 4, + "u1D70F.st": 83, + "u1D70D.st": 52, + "u1D715.st": 52, + "u1D6E3": 25, + "u1D6E6": 54, + "u1D6E7": 68, + "u1D6E8": 78, + "u1D6EA": 85, + "u1D6EB": 68, + "u1D6ED": 102, + "u1D6EE": 106, + "u1D70A": 12, + "u1D6F0": 5, + "u1D6F2": 140, + "u1D6F5": 148, + "u1D6F8": 51, + "u1D6E6.st": 30, + "u1D6E7.st": 47, + "u1D6E8.st": 52, + "u1D6EA.st": 58, + "u1D6EB.st": 47, + "u1D6ED.st": 79, + "u1D6EE.st": 83, + "u1D6F2.st": 135, + "u1D6F5.st": 143, + "u1D6F8.st": 24, + "u1D6E8.sts": 7, + "u1D6EA.sts": 11, + "u1D6ED.sts": 35, + "u1D6EE.sts": 41, + "u1D6F2.sts": 110, + "u1D6F5.sts": 123, + "u1D71E": 148, + "u1D723": 5, + "u1D729": 54, + "u1D72B": 72, + "u1D72E": 44, + "u1D730": 159, + "u1D733": 106, + "u1D734": 35, + "u1D737": 6, + "u1D738": 55, + "u1D739": 19, + "u1D73B": 42, + "u1D73C": 22, + "u1D73D": 13, + "u1D742": 54, + "u1D743": 11, + "u1D745": 14, + "u1D746": 13, + "u1D748": 13, + "u1D749": 111, + "u1D74D": 3, + "u1D755": 8, + "u1D754": 13, + "u1D747": 66, + "u1D74F": 57, + "u1D71E.sts": 146, + "u1D72B.sts": 17, + "u1D730.sts": 158, + "u1D733.sts": 73, + "u1D738.sts": 28, + "u1D742.sts": 17, + "u1D749.sts": 67, + "u1D747.sts": 14, + "u1D74F.sts": 38, + "u1D71E.st": 154, + "u1D729.st": 38, + "u1D72B.st": 53, + "u1D72E.st": 28, + "u1D730.st": 164, + "u1D733.st": 98, + "u1D734.st": 20, + "u1D738.st": 49, + "u1D73B.st": 18, + "u1D73C.st": 10, + "u1D742.st": 44, + "u1D746.st": 4, + "u1D749.st": 100, + "u1D754.st": 4, + "u1D747.st": 50, + "u1D74F.st": 54, + "u1D71D": 16, + "u1D720": 43, + "u1D721": 60, + "u1D722": 73, + "u1D724": 83, + "u1D725": 60, + "u1D727": 102, + "u1D728": 105, + "u1D744": 12, + "u1D72A": 6, + "u1D72C": 154, + "u1D72F": 163, + "u1D732": 34, + "u1D720.st": 27, + "u1D721.st": 47, + "u1D722.st": 55, + "u1D724.st": 61, + "u1D725.st": 46, + "u1D727.st": 84, + "u1D728.st": 91, + "u1D744.st": 3, + "u1D72C.st": 160, + "u1D72F.st": 169, + "u1D732.st": 11, + "u1D721.sts": 14, + "u1D722.sts": 19, + "u1D724.sts": 22, + "u1D725.sts": 12, + "u1D727.sts": 47, + "u1D728.sts": 60, + "u1D72C.sts": 151, + "u1D72F.sts": 163, + "u1D6F3": 5, + "u1D72D": 5 }, - "version" : "1.3", - "constants" : { - "FlattenedAccentBaseHeight" : 664, - "UpperLimitBaselineRiseMin" : 111, - "SubSuperscriptGapMin" : 160, - "OverbarExtraAscender" : 40, - "RadicalExtraAscender" : 40, - "FractionRuleThickness" : 40, - "DisplayOperatorMinHeight" : 1300, - "StackGapMin" : 120, - "LowerLimitBaselineDropMin" : 600, - "StretchStackGapBelowMin" : 167, - "FractionNumeratorDisplayStyleShiftUp" : 677, - "StretchStackGapAboveMin" : 200, - "FractionNumeratorShiftUp" : 394, - "AccentBaseHeight" : 450, - "SkewedFractionVerticalGap" : 96, - "FractionDenominatorDisplayStyleShiftDown" : 686, - "LowerLimitGapMin" : 167, - "MinConnectorOverlap" : 20, - "AxisHeight" : 250, - "SuperscriptBottomMin" : 108, - "RadicalKernBeforeDegree" : 278, - "StretchStackTopShiftUp" : 111, - "RadicalDisplayStyleVerticalGap" : 148, - "StackBottomDisplayStyleShiftDown" : 686, - "RadicalVerticalGap" : 50, - "RadicalKernAfterDegree" : -556, - "ScriptScriptPercentScaleDown" : 50, - "MathLeading" : 154, - "StretchStackBottomShiftDown" : 600, - "RadicalDegreeBottomRaisePercent" : 60, - "UnderbarExtraDescender" : 40, - "StackTopShiftUp" : 444, - "DelimitedSubFormulaMinHeight" : 1300, - "StackDisplayStyleGapMin" : 280, - "SubscriptTopMax" : 344, - "SuperscriptShiftUp" : 363, - "SuperscriptBottomMaxWithSubscript" : 344, - "ScriptPercentScaleDown" : 70, - "UnderbarVerticalGap" : 120, - "SpaceAfterScript" : 56, - "StackTopDisplayStyleShiftUp" : 677, - "FractionDenomDisplayStyleGapMin" : 120, - "UpperLimitGapMin" : 200, - "SuperscriptShiftUpCramped" : 289, - "SubscriptShiftDown" : 247, - "SuperscriptBaselineDropMax" : 250, - "OverbarVerticalGap" : 120, - "FractionNumeratorGapMin" : 40, - "SkewedFractionHorizontalGap" : 350, - "FractionDenominatorGapMin" : 40, - "UnderbarRuleThickness" : 40, - "SubscriptBaselineDropMin" : 200, - "OverbarRuleThickness" : 40, - "FractionNumDisplayStyleGapMin" : 120, - "FractionDenominatorShiftDown" : 345, - "RadicalRuleThickness" : 40, - "StackBottomShiftDown" : 345 + "accents": { + "asterisk": 398, + "zero": 254, + "one": 257, + "two": 240, + "three": 258, + "four": 353, + "five": 256, + "six": 318, + "seven": 103, + "eight": 261, + "nine": 242, + "A": 375, + "B": 256, + "C": 507, + "D": 243, + "E": 315, + "F": 308, + "G": 507, + "H": 375, + "I": 181, + "J": 317, + "K": 378, + "L": 193, + "M": 458, + "N": 375, + "O": 388, + "P": 250, + "Q": 388, + "R": 234, + "S": 330, + "T": 361, + "U": 375, + "V": 375, + "W": 514, + "X": 361, + "Y": 375, + "Z": 317, + "a": 214, + "b": 100, + "c": 249, + "d": 377, + "e": 236, + "f": 262, + "g": 332, + "h": 104, + "i": 138, + "j": 156, + "k": 100, + "l": 105, + "m": 350, + "n": 211, + "o": 249, + "p": 202, + "q": 318, + "r": 181, + "s": 232, + "t": 161, + "u": 245, + "v": 264, + "w": 361, + "x": 258, + "y": 264, + "z": 226, + "grave": 219, + "acute": 281, + "circumflex": 250, + "tilde": 251, + "macron": 251, + "breve": 251, + "dotaccent": 138, + "dieresis": 253, + "ring": 375, + "hungarumlaut": 274, + "caron": 250, + "dotlessi": 139, + "space_uni0326": 246, + "space_uni030F": 226, + "space_uni0323": 138, + "dotlessj": 153, + "space_uni0309": 251, + "space_uni0331": 251, + "A.sts": 489, + "a.sts": 284, + "acute.sts": 379, + "B.sts": 351, + "b.sts": 160, + "breve.sts": 340, + "C.sts": 659, + "c.sts": 358, + "caron.sts": 340, + "circumflex.sts": 340, + "space_uni0326.sts": 332, + "D.sts": 336, + "d.sts": 506, + "space_uni030F.sts": 312, + "dieresis.sts": 340, + "dotaccent.sts": 201, + "space_uni0323.sts": 201, + "dotlessi.sts": 202, + "dotlessj.sts": 219, + "E.sts": 426, + "e.sts": 329, + "eight.sts": 354, + "F.sts": 417, + "f.sts": 358, + "five.sts": 347, + "four.sts": 462, + "G.sts": 658, + "g.sts": 441, + "grave.sts": 302, + "H.sts": 490, + "h.sts": 166, + "space_uni0309.sts": 339, + "hungarumlaut.sts": 370, + "I.sts": 247, + "J.sts": 432, + "K.sts": 500, + "k.sts": 160, + "L.sts": 261, + "l.sts": 167, + "M.sts": 594, + "m.sts": 476, + "macron.sts": 340, + "N.sts": 490, + "n.sts": 296, + "nine.sts": 335, + "O.sts": 514, + "o.sts": 340, + "one.sts": 352, + "P.sts": 344, + "p.sts": 289, + "Q.sts": 514, + "q.sts": 424, + "R.sts": 323, + "r.sts": 260, + "ring.sts": 489, + "S.sts": 439, + "s.sts": 316, + "seven.sts": 158, + "six.sts": 428, + "T.sts": 479, + "t.sts": 225, + "three.sts": 322, + "tilde.sts": 340, + "two.sts": 328, + "U.sts": 490, + "u.sts": 341, + "V.sts": 490, + "v.sts": 357, + "W.sts": 664, + "w.sts": 479, + "X.sts": 473, + "x.sts": 350, + "Y.sts": 490, + "y.sts": 357, + "Z.sts": 424, + "z.sts": 309, + "zero.sts": 340, + "i.sts": 201, + "j.sts": 233, + "space_uni0331.sts": 340, + "A.st": 421, + "a.st": 244, + "acute.st": 319, + "B.st": 296, + "b.st": 124, + "breve.st": 285, + "C.st": 567, + "c.st": 295, + "caron.st": 285, + "circumflex.st": 285, + "space_uni0326.st": 278, + "D.st": 282, + "d.st": 431, + "space_uni030F.st": 260, + "dieresis.st": 285, + "dotaccent.st": 162, + "space_uni0323.st": 162, + "dotlessi.st": 162, + "dotlessj.st": 177, + "E.st": 362, + "e.st": 272, + "eight.st": 296, + "F.st": 354, + "f.st": 293, + "five.st": 291, + "four.st": 394, + "G.st": 568, + "g.st": 374, + "grave.st": 250, + "H.st": 421, + "h.st": 129, + "space_uni0309.st": 290, + "hungarumlaut.st": 310, + "I.st": 207, + "J.st": 363, + "K.st": 430, + "k.st": 124, + "L.st": 220, + "l.st": 131, + "M.st": 514, + "m.st": 403, + "macron.st": 285, + "N.st": 421, + "n.st": 249, + "nine.st": 286, + "O.st": 438, + "o.st": 284, + "one.st": 295, + "P.st": 290, + "p.st": 238, + "Q.st": 438, + "q.st": 360, + "R.st": 271, + "r.st": 213, + "ring.st": 421, + "S.st": 372, + "s.st": 264, + "seven.st": 123, + "six.st": 360, + "T.st": 407, + "t.st": 184, + "three.st": 282, + "tilde.st": 285, + "two.st": 273, + "U.st": 421, + "u.st": 285, + "V.st": 421, + "v.st": 300, + "W.st": 575, + "w.st": 407, + "X.st": 406, + "x.st": 293, + "Y.st": 421, + "y.st": 300, + "Z.st": 359, + "z.st": 258, + "zero.st": 286, + "i.st": 162, + "j.st": 186, + "space_uni0331.st": 285, + "u1D434": 550, + "u1D435": 420, + "u1D436": 596, + "u1D437": 427, + "u1D438": 483, + "u1D439": 475, + "u1D43A": 596, + "u1D43B": 542, + "u1D43C": 347, + "u1D43D": 487, + "u1D43E": 545, + "u1D43F": 360, + "u1D440": 625, + "u1D441": 542, + "u1D442": 495, + "u1D443": 416, + "u1D444": 495, + "u1D445": 398, + "u1D446": 498, + "u1D447": 398, + "u1D448": 421, + "u1D449": 413, + "u1D44A": 552, + "u1D44B": 528, + "u1D44C": 399, + "u1D44D": 485, + "u1D44E": 287, + "u1D44F": 165, + "u1D450": 317, + "u1D451": 442, + "u1D452": 300, + "u1D453": 464, + "u1D454": 316, + "uni210E": 213, + "u1D456": 247, + "u1D457": 359, + "u1D458": 213, + "u1D459": 184, + "u1D45A": 404, + "u1D45B": 265, + "u1D45C": 315, + "u1D45D": 246, + "u1D45E": 349, + "u1D45F": 247, + "u1D460": 296, + "u1D461": 225, + "u1D462": 305, + "u1D463": 294, + "u1D464": 405, + "u1D465": 329, + "u1D466": 304, + "u1D467": 336, + "u1D6A4": 168, + "u1D6A5": 275, + "u1D434.sts": 693, + "u1D435.sts": 543, + "u1D436.sts": 768, + "u1D437.sts": 551, + "u1D438.sts": 621, + "u1D439.sts": 612, + "u1D43A.sts": 767, + "u1D43B.sts": 684, + "u1D43C.sts": 441, + "u1D43D.sts": 627, + "u1D43E.sts": 695, + "u1D43F.sts": 455, + "u1D440.sts": 788, + "u1D441.sts": 684, + "u1D442.sts": 648, + "u1D443.sts": 535, + "u1D444.sts": 648, + "u1D445.sts": 515, + "u1D446.sts": 635, + "u1D447.sts": 544, + "u1D448.sts": 552, + "u1D449.sts": 565, + "u1D44A.sts": 739, + "u1D44B.sts": 667, + "u1D44C.sts": 548, + "u1D44D.sts": 620, + "u1D44E.sts": 397, + "u1D44F.sts": 230, + "u1D450.sts": 437, + "u1D451.sts": 577, + "u1D452.sts": 415, + "u1D453.sts": 576, + "u1D454.sts": 419, + "uni210E.sts": 283, + "u1D456.sts": 351, + "u1D457.sts": 464, + "u1D458.sts": 283, + "u1D459.sts": 248, + "u1D45A.sts": 572, + "u1D45B.sts": 398, + "u1D45C.sts": 433, + "u1D45D.sts": 362, + "u1D45E.sts": 474, + "u1D45F.sts": 382, + "u1D460.sts": 404, + "u1D461.sts": 324, + "u1D462.sts": 421, + "u1D463.sts": 404, + "u1D464.sts": 542, + "u1D465.sts": 431, + "u1D466.sts": 420, + "u1D467.sts": 449, + "u1D6A4.sts": 249, + "u1D6A5.sts": 346, + "u1D434.st": 604, + "u1D435.st": 468, + "u1D436.st": 661, + "u1D437.st": 477, + "u1D438.st": 536, + "u1D439.st": 528, + "u1D43A.st": 661, + "u1D43B.st": 596, + "u1D43C.st": 382, + "u1D43D.st": 539, + "u1D43E.st": 606, + "u1D43F.st": 395, + "u1D440.st": 688, + "u1D441.st": 596, + "u1D442.st": 552, + "u1D443.st": 462, + "u1D444.st": 552, + "u1D445.st": 444, + "u1D446.st": 547, + "u1D447.st": 452, + "u1D448.st": 469, + "u1D449.st": 471, + "u1D44A.st": 625, + "u1D44B.st": 580, + "u1D44C.st": 456, + "u1D44D.st": 534, + "u1D44E.st": 325, + "u1D44F.st": 189, + "u1D450.st": 364, + "u1D451.st": 496, + "u1D452.st": 340, + "u1D453.st": 506, + "u1D454.st": 361, + "uni210E.st": 238, + "u1D456.st": 284, + "u1D457.st": 398, + "u1D458.st": 238, + "u1D459.st": 207, + "u1D45A.st": 465, + "u1D45B.st": 313, + "u1D45C.st": 356, + "u1D45D.st": 296, + "u1D45E.st": 396, + "u1D45F.st": 290, + "u1D460.st": 334, + "u1D461.st": 260, + "u1D462.st": 340, + "u1D463.st": 337, + "u1D464.st": 461, + "u1D465.st": 359, + "u1D466.st": 340, + "u1D467.st": 376, + "u1D6A4.st": 188, + "u1D6A5.st": 289, + "u1D400": 434, + "u1D41A": 231, + "u1D401": 300, + "u1D41B": 126, + "u1D402": 580, + "u1D41C": 298, + "u1D403": 283, + "u1D41D": 444, + "dotlessi.mrmb": 160, + "dotlessj.mrmb": 176, + "u1D404": 350, + "u1D41E": 281, + "u1D7D6": 299, + "u1D405": 342, + "u1D41F": 309, + "u1D7D3": 290, + "u1D7D2": 414, + "u1D406": 579, + "u1D420": 358, + "u1D407": 450, + "u1D421": 134, + "u1D408": 218, + "u1D409": 348, + "u1D40A": 438, + "u1D424": 126, + "u1D40B": 232, + "u1D425": 136, + "u1D40C": 546, + "u1D426": 418, + "u1D40D": 450, + "u1D427": 257, + "u1D7D7": 281, + "u1D40E": 431, + "u1D428": 287, + "u1D7CF": 295, + "u1D40F": 293, + "u1D429": 241, + "u1D410": 431, + "u1D42A": 369, + "u1D411": 281, + "u1D42B": 216, + "u1D412": 374, + "u1D42C": 265, + "u1D7D5": 124, + "u1D7D4": 335, + "u1D413": 400, + "u1D42D": 194, + "u1D7D1": 282, + "u1D7D0": 277, + "u1D414": 442, + "u1D42E": 296, + "u1D415": 434, + "u1D42F": 303, + "u1D416": 594, + "u1D430": 415, + "u1D417": 418, + "u1D431": 296, + "u1D418": 434, + "u1D432": 303, + "u1D419": 364, + "u1D433": 259, + "u1D7CE": 287, + "u1D422": 160, + "u1D423": 189, + "u1D400.sts": 557, + "u1D41A.sts": 312, + "u1D401.sts": 408, + "u1D41B.sts": 183, + "u1D402.sts": 738, + "u1D41C.sts": 417, + "u1D403.sts": 389, + "u1D41D.sts": 585, + "dotlessi.mrmb.sts": 218, + "dotlessj.mrmb.sts": 238, + "u1D404.sts": 467, + "u1D41E.sts": 358, + "u1D7D6.sts": 393, + "u1D405.sts": 457, + "u1D41F.sts": 404, + "u1D7D3.sts": 376, + "u1D7D2.sts": 494, + "u1D406.sts": 738, + "u1D420.sts": 481, + "u1D407.sts": 577, + "u1D421.sts": 196, + "u1D408.sts": 275, + "u1D409.sts": 477, + "u1D40A.sts": 574, + "u1D424.sts": 183, + "u1D40B.sts": 289, + "u1D425.sts": 200, + "u1D40C.sts": 697, + "u1D426.sts": 556, + "u1D40D.sts": 577, + "u1D427.sts": 354, + "u1D7D7.sts": 349, + "u1D40E.sts": 561, + "u1D428.sts": 378, + "u1D7CF.sts": 392, + "u1D40F.sts": 398, + "u1D429.sts": 339, + "u1D410.sts": 561, + "u1D42A.sts": 472, + "u1D411.sts": 378, + "u1D42B.sts": 290, + "u1D412.sts": 484, + "u1D42C.sts": 338, + "u1D7D5.sts": 185, + "u1D7D4.sts": 465, + "u1D413.sts": 521, + "u1D42D.sts": 244, + "u1D7D1.sts": 375, + "u1D7D0.sts": 354, + "u1D414.sts": 567, + "u1D42E.sts": 401, + "u1D415.sts": 557, + "u1D42F.sts": 400, + "u1D416.sts": 759, + "u1D430.sts": 541, + "u1D417.sts": 537, + "u1D431.sts": 392, + "u1D418.sts": 557, + "u1D432.sts": 402, + "u1D419.sts": 475, + "u1D433.sts": 343, + "u1D7CE.sts": 379, + "u1D422.sts": 218, + "u1D423.sts": 268, + "u1D400.st": 484, + "u1D41A.st": 264, + "u1D401.st": 340, + "u1D41B.st": 149, + "u1D402.st": 644, + "u1D41C.st": 357, + "u1D403.st": 324, + "u1D41D.st": 502, + "dotlessi.mrmb.st": 182, + "dotlessj.mrmb.st": 200, + "u1D404.st": 396, + "u1D41E.st": 309, + "u1D7D6.st": 331, + "u1D405.st": 387, + "u1D41F.st": 347, + "u1D7D3.st": 323, + "u1D7D2.st": 451, + "u1D406.st": 644, + "u1D420.st": 419, + "u1D407.st": 501, + "u1D421.st": 158, + "u1D408.st": 240, + "u1D409.st": 399, + "u1D40A.st": 492, + "u1D424.st": 149, + "u1D40B.st": 253, + "u1D425.st": 161, + "u1D40C.st": 607, + "u1D426.st": 468, + "u1D40D.st": 501, + "u1D427.st": 291, + "u1D7D7.st": 310, + "u1D40E.st": 483, + "u1D428.st": 323, + "u1D7CF.st": 332, + "u1D40F.st": 334, + "u1D429.st": 280, + "u1D410.st": 483, + "u1D42A.st": 411, + "u1D411.st": 317, + "u1D42B.st": 242, + "u1D412.st": 417, + "u1D42C.st": 287, + "u1D7D5.st": 146, + "u1D7D4.st": 374, + "u1D413.st": 448, + "u1D42D.st": 214, + "u1D7D1.st": 319, + "u1D7D0.st": 295, + "u1D414.st": 492, + "u1D42E.st": 338, + "u1D415.st": 484, + "u1D42F.st": 341, + "u1D416.st": 661, + "u1D430.st": 465, + "u1D417.st": 465, + "u1D431.st": 334, + "u1D418.st": 484, + "u1D432.st": 341, + "u1D419.st": 408, + "u1D433.st": 291, + "u1D7CE.st": 323, + "u1D422.st": 182, + "u1D423.st": 222, + "u1D468": 608, + "u1D469": 477, + "u1D46A": 658, + "u1D46B": 465, + "u1D46C": 515, + "u1D46D": 507, + "u1D46E": 658, + "u1D46F": 616, + "u1D470": 383, + "u1D471": 516, + "u1D472": 604, + "u1D473": 396, + "u1D474": 712, + "u1D475": 616, + "u1D476": 528, + "u1D477": 468, + "u1D478": 528, + "u1D479": 457, + "u1D47A": 561, + "u1D47B": 434, + "u1D47C": 473, + "u1D47D": 476, + "u1D47E": 637, + "u1D47F": 584, + "u1D480": 460, + "u1D481": 533, + "u1D482": 336, + "u1D483": 225, + "u1D484": 365, + "u1D485": 512, + "u1D486": 340, + "u1D487": 516, + "u1D488": 339, + "u1D489": 228, + "u1D48A": 282, + "u1D48B": 398, + "u1D48C": 228, + "u1D48D": 196, + "u1D48E": 478, + "u1D48F": 318, + "u1D490": 367, + "u1D491": 296, + "u1D492": 410, + "u1D493": 282, + "u1D494": 324, + "u1D495": 254, + "u1D496": 345, + "u1D497": 332, + "u1D498": 460, + "u1D499": 359, + "u1D49A": 345, + "u1D49B": 379, + "dotlessi.mitb": 185, + "dotlessj.mitb": 282, + "u1D468.sts": 748, + "u1D469.sts": 599, + "u1D46A.sts": 825, + "u1D46B.sts": 588, + "u1D46C.sts": 640, + "u1D46D.sts": 630, + "u1D46E.sts": 825, + "u1D46F.sts": 758, + "u1D470.sts": 456, + "u1D471.sts": 658, + "u1D472.sts": 751, + "u1D473.sts": 470, + "u1D474.sts": 878, + "u1D475.sts": 757, + "u1D476.sts": 670, + "u1D477.sts": 570, + "u1D478.sts": 670, + "u1D479.sts": 570, + "u1D47A.sts": 692, + "u1D47B.sts": 569, + "u1D47C.sts": 599, + "u1D47D.sts": 628, + "u1D47E.sts": 829, + "u1D47F.sts": 718, + "u1D480.sts": 606, + "u1D481.sts": 662, + "u1D482.sts": 433, + "u1D483.sts": 273, + "u1D484.sts": 467, + "u1D485.sts": 642, + "u1D486.sts": 471, + "u1D487.sts": 608, + "u1D488.sts": 444, + "u1D489.sts": 282, + "u1D48A.sts": 383, + "u1D48B.sts": 486, + "u1D48C.sts": 282, + "u1D48D.sts": 241, + "u1D48E.sts": 630, + "u1D48F.sts": 428, + "u1D490.sts": 475, + "u1D491.sts": 400, + "u1D492.sts": 519, + "u1D493.sts": 395, + "u1D494.sts": 422, + "u1D495.sts": 336, + "u1D496.sts": 465, + "u1D497.sts": 436, + "u1D498.sts": 598, + "u1D499.sts": 449, + "u1D49A.sts": 464, + "u1D49B.sts": 472, + "dotlessi.mitb.sts": 277, + "dotlessj.mitb.sts": 347, + "u1D468.st": 660, + "u1D469.st": 526, + "u1D46A.st": 723, + "u1D46B.st": 509, + "u1D46C.st": 564, + "u1D46D.st": 555, + "u1D46E.st": 723, + "u1D46F.st": 671, + "u1D470.st": 407, + "u1D471.st": 570, + "u1D472.st": 663, + "u1D473.st": 421, + "u1D474.st": 777, + "u1D475.st": 670, + "u1D476.st": 582, + "u1D477.st": 499, + "u1D478.st": 582, + "u1D479.st": 499, + "u1D47A.st": 610, + "u1D47B.st": 486, + "u1D47C.st": 521, + "u1D47D.st": 536, + "u1D47E.st": 713, + "u1D47F.st": 636, + "u1D480.st": 518, + "u1D481.st": 582, + "u1D482.st": 373, + "u1D483.st": 242, + "u1D484.st": 404, + "u1D485.st": 565, + "u1D486.st": 377, + "u1D487.st": 553, + "u1D488.st": 379, + "u1D489.st": 248, + "u1D48A.st": 323, + "u1D48B.st": 433, + "u1D48C.st": 248, + "u1D48D.st": 212, + "u1D48E.st": 543, + "u1D48F.st": 365, + "u1D490.st": 407, + "u1D491.st": 354, + "u1D492.st": 452, + "u1D493.st": 337, + "u1D494.st": 386, + "u1D495.st": 282, + "u1D496.st": 391, + "u1D497.st": 364, + "u1D498.st": 506, + "u1D499.st": 393, + "u1D49A.st": 391, + "u1D49B.st": 415, + "dotlessi.mitb.st": 221, + "dotlessj.mitb.st": 304, + "uni212A": 378, + "uni0304": -263, + "uni0307": -265, + "uni0308": -261, + "uni0309": -263, + "uni030A": -264, + "uni0323": -265, + "uni0326": -268, + "uni0331": -263, + "uni0300": -295, + "uni0301": -233, + "uni030B": -240, + "uni030F": -288, + "uni20D0": -264, + "uni20D1": -264, + "uni20D4": -264, + "uni20D5": -264, + "uni20D6": -264, + "uni20D7": -264, + "uni20E1": -264, + "uni20EA": -264, + "uni20EC": -264, + "uni20ED": -264, + "uni20EE": -264, + "uni20EF": -264, + "uni20DB": -264, + "uni20DC": -264, + "uni20E8": -264, + "lowlinecmb": -264, + "dbllowlinecmb": -264, + "overlinecmb": -264, + "dbloverlinecmb": -264, + "brevecmb": -264, + "brevebelowcmb": -264, + "breveinvertedcmb": -264, + "breveinvertedbelowcmb": -264, + "caroncmb": -264, + "caronbelowcmb": -264, + "circumflexcmb": -264, + "circumflexbelowcmb": -264, + "tildecomb": -264, + "tildebelowcmb": -264, + "uni2017": 252, + "uni20E9": -264, + "uni20D8": -264, + "asteriskmath": 250, + "uni0338": -263, + "uni20EB": -264, + "uni20E5": -263, + "uni20D2": -264, + "uni20E6": -264, + "uni20D3": -264, + "uni20F0": -264, + "u1D5A0": 333, + "u1D5BA": 228, + "u1D5A1": 256, + "u1D5BB": 120, + "u1D5A2": 411, + "u1D5BC": 264, + "u1D5A3": 252, + "u1D5BD": 397, + "u1D5A4": 317, + "u1D5BE": 238, + "u1D7EA": 249, + "u1D5A5": 310, + "u1D5BF": 280, + "u1D7E7": 249, + "u1D7E6": 323, + "u1D5A6": 407, + "u1D5C0": 324, + "u1D5A7": 354, + "u1D5C1": 119, + "u1D5A8": 139, + "u1D5A9": 345, + "u1D5AA": 367, + "u1D5C4": 120, + "u1D5AB": 139, + "u1D5C5": 119, + "u1D5AC": 437, + "u1D5C6": 359, + "u1D5AD": 354, + "u1D5C7": 220, + "u1D7EB": 244, + "u1D5AE": 367, + "u1D5C8": 249, + "u1D7E3": 260, + "u1D5AF": 259, + "u1D5C9": 228, + "u1D5B0": 367, + "u1D5CA": 299, + "u1D5B1": 257, + "u1D5CB": 205, + "u1D5B2": 293, + "u1D5CC": 214, + "u1D7E9": 250, + "u1D7E8": 334, + "u1D5B3": 340, + "u1D5CD": 141, + "u1D7E5": 243, + "u1D7E4": 242, + "u1D5B4": 344, + "u1D5CE": 258, + "u1D5B5": 333, + "u1D5CF": 230, + "u1D5B6": 472, + "u1D5D0": 341, + "u1D5B7": 319, + "u1D5D1": 225, + "u1D5B8": 333, + "u1D5D2": 230, + "u1D5B9": 312, + "u1D5D3": 221, + "u1D7E2": 256, + "u1D5C2": 120, + "u1D5C3": 140, + "u1D608": 481, + "u1D622": 324, + "u1D609": 403, + "u1D623": 268, + "u1D60A": 559, + "u1D624": 359, + "u1D60B": 400, + "u1D625": 544, + "u1D60C": 464, + "u1D626": 333, + "u1D60D": 457, + "u1D627": 428, + "u1D60E": 554, + "u1D628": 419, + "u1D60F": 502, + "u1D629": 267, + "u1D610": 287, + "u1D611": 493, + "u1D612": 515, + "u1D62C": 268, + "u1D613": 287, + "u1D62D": 267, + "u1D614": 585, + "u1D62E": 454, + "u1D615": 502, + "u1D62F": 315, + "u1D616": 519, + "u1D630": 345, + "u1D617": 406, + "u1D631": 322, + "u1D618": 519, + "u1D632": 395, + "u1D619": 404, + "u1D633": 301, + "u1D61A": 442, + "u1D634": 310, + "u1D61B": 484, + "u1D635": 260, + "u1D61C": 490, + "u1D636": 351, + "u1D61D": 481, + "u1D637": 324, + "u1D61E": 620, + "u1D638": 435, + "u1D61F": 467, + "u1D639": 319, + "u1D620": 481, + "u1D63A": 324, + "u1D621": 458, + "u1D63B": 314, + "u1D62A": 258, + "u1D62B": 278, + "u1D7EC": 275, + "u1D7ED": 282, + "u1D7EE": 259, + "u1D7EF": 279, + "u1D7F0": 343, + "u1D7F1": 269, + "u1D7F2": 331, + "u1D7F3": 275, + "u1D7F4": 277, + "u1D7F5": 259, + "u1D5D4": 366, + "u1D5D5": 297, + "u1D5D6": 433, + "u1D5D7": 301, + "u1D5D8": 336, + "u1D5D9": 328, + "u1D5DA": 428, + "u1D5DB": 397, + "u1D5DC": 166, + "u1D5DD": 356, + "u1D5DE": 398, + "u1D5DF": 165, + "u1D5E0": 489, + "u1D5E1": 397, + "u1D5E2": 395, + "u1D5E3": 288, + "u1D5E4": 395, + "u1D5E5": 296, + "u1D5E6": 310, + "u1D5E7": 367, + "u1D5E8": 382, + "u1D5E9": 366, + "u1D5EA": 519, + "u1D5EB": 351, + "u1D5EC": 366, + "u1D5ED": 344, + "u1D5EE": 264, + "u1D5EF": 128, + "u1D5F0": 285, + "u1D5F1": 433, + "u1D5F2": 266, + "u1D5F3": 289, + "u1D5F4": 340, + "u1D5F5": 127, + "u1D5F6": 128, + "u1D5F7": 151, + "u1D5F8": 128, + "u1D5F9": 128, + "u1D5FA": 406, + "u1D5FB": 253, + "u1D5FC": 274, + "u1D5FD": 237, + "u1D5FE": 342, + "u1D5FF": 216, + "u1D600": 226, + "u1D601": 155, + "u1D602": 281, + "u1D603": 250, + "u1D604": 372, + "u1D605": 244, + "u1D606": 251, + "u1D607": 242, + "u1D789": 290, + "u1D758": 313, + "u1D760": 336, + "u1D75D": 429, + "u1D76A": 428, + "u1D763": 366, + "u1D77B": 271, + "u1D776": 369, + "u1D770": 388, + "u1D772": 395, + "u1D78A": 269, + "u1D779": 278, + "u1D771": 306, + "u1D773": 269, + "u1D77F": 418, + "u1D759": 458, + "u1D765": 397, + "u1D768": 397, + "u1D76E": 392, + "u1D788": 366, + "u1D78F": 566, + "u1D78D": 365, + "u1D782": 375, + "u1D781": 278, + "u1D77D": 256, + "u1D775": 297, + "u1D777": 283, + "u1D780": 283, + "u1D78E": 283, + "u1D784": 376, + "u1D77C": 285, + "u1D787": 500, + "u1D78B": 475, + "u1D785": 337, + "u1D786": 395, + "u1D77A": 169, + "u1D774": 272, + "u1D778": 141, + "u1D783": 387, + "u1D76B": 394, + "u1D76D": 425, + "u1D77E": 299, + "u1D756": 366, + "u1D757": 327, + "u1D75A": 336, + "u1D75B": 343, + "u1D75C": 397, + "u1D75E": 166, + "u1D75F": 394, + "u1D761": 489, + "u1D762": 397, + "u1D764": 394, + "u1D766": 318, + "u1D769": 366, + "u1D76C": 352, + "u1D63C": 511, + "u1D63D": 443, + "u1D63E": 580, + "u1D63F": 447, + "u1D640": 481, + "u1D641": 473, + "u1D642": 575, + "u1D643": 543, + "u1D644": 312, + "u1D645": 501, + "u1D646": 543, + "u1D647": 311, + "u1D648": 635, + "u1D649": 543, + "u1D64A": 546, + "u1D64B": 434, + "u1D64C": 546, + "u1D64D": 441, + "u1D64E": 460, + "u1D64F": 511, + "u1D650": 528, + "u1D651": 511, + "u1D652": 663, + "u1D653": 497, + "u1D654": 511, + "u1D655": 489, + "u1D656": 363, + "u1D657": 274, + "u1D658": 384, + "u1D659": 578, + "u1D65A": 365, + "u1D65B": 437, + "u1D65C": 437, + "u1D65D": 273, + "u1D65E": 269, + "u1D65F": 292, + "u1D660": 274, + "u1D661": 274, + "u1D662": 503, + "u1D663": 350, + "u1D664": 373, + "u1D665": 335, + "u1D666": 440, + "u1D667": 313, + "u1D668": 325, + "u1D669": 278, + "u1D66A": 376, + "u1D66B": 343, + "u1D66C": 466, + "u1D66D": 339, + "u1D66E": 345, + "u1D66F": 336, + "u1D7C3": 411, + "u1D792": 451, + "u1D79A": 474, + "u1D797": 573, + "u1D7A4": 570, + "u1D79D": 503, + "u1D7B5": 362, + "u1D7B0": 459, + "u1D7AA": 478, + "u1D7AC": 489, + "u1D7C4": 358, + "u1D7B3": 369, + "u1D7AB": 446, + "u1D7AD": 415, + "u1D7B9": 506, + "u1D793": 597, + "u1D79F": 535, + "u1D7A2": 535, + "u1D7A8": 535, + "u1D7C2": 472, + "u1D7C9": 672, + "u1D7C7": 508, + "u1D7BC": 462, + "u1D7BB": 370, + "u1D7B7": 406, + "u1D7AF": 447, + "u1D7B1": 423, + "u1D7BA": 373, + "u1D7C8": 373, + "u1D7BE": 468, + "u1D7B6": 376, + "u1D7C1": 643, + "u1D7C5": 615, + "u1D7BF": 428, + "u1D7C0": 487, + "u1D7B4": 307, + "u1D7AE": 365, + "u1D7B2": 231, + "u1D7BD": 475, + "u1D7A5": 532, + "u1D7A7": 571, + "u1D7B8": 391, + "u1D790": 513, + "u1D791": 465, + "u1D794": 474, + "u1D795": 482, + "u1D796": 535, + "u1D798": 304, + "u1D799": 534, + "u1D79B": 627, + "u1D79C": 535, + "u1D79E": 536, + "u1D7A0": 457, + "u1D7A3": 501, + "u1D7A6": 514, + "u1D76F": 458, + "u1D7A9": 529, + "dotlessi.ss": 119, + "dotlessj.ss": 147, + "dotlessi.sso": 211, + "dotlessj.sso": 239, + "dotlessi.ssb": 128, + "dotlessj.ssb": 158, + "dotlessi.ssbo": 223, + "dotlessj.ssbo": 253, + "u1D767": 429, + "u1D7A1": 573, + "uni213E": 333, + "uni213F": 333, + "uni2140": 333, + "uni213D": 236, + "uni213C": 258, + "u1D7D8": 277, + "u1D7D9": 277, + "u1D7DA": 287, + "u1D7DB": 289, + "u1D7DC": 396, + "u1D7DD": 278, + "u1D7DE": 266, + "u1D7DF": 277, + "u1D7E0": 277, + "u1D7E1": 276, + "u1D538": 305, + "u1D539": 247, + "uni2102": 335, + "u1D53B": 247, + "u1D53C": 334, + "u1D53D": 334, + "u1D53E": 335, + "uni210D": 361, + "u1D540": 167, + "u1D541": 471, + "u1D542": 333, + "u1D543": 167, + "u1D544": 361, + "uni2115": 361, + "u1D546": 333, + "uni2119": 247, + "uni211A": 333, + "uni211D": 247, + "u1D54A": 291, + "u1D54B": 305, + "u1D54C": 361, + "u1D54D": 305, + "u1D54E": 416, + "u1D54F": 333, + "u1D550": 305, + "uni2124": 333, + "u1D552": 236, + "u1D553": 139, + "u1D554": 238, + "u1D555": 424, + "u1D556": 236, + "u1D557": 225, + "u1D558": 236, + "u1D559": 139, + "u1D55A": 139, + "u1D55B": 249, + "u1D55C": 139, + "u1D55D": 139, + "u1D55E": 420, + "u1D55F": 346, + "u1D560": 235, + "u1D561": 391, + "u1D562": 236, + "u1D563": 346, + "u1D564": 187, + "u1D565": 139, + "u1D566": 263, + "u1D567": 235, + "u1D568": 333, + "u1D569": 236, + "u1D56A": 235, + "u1D56B": 236, + "dotlessi.ds": 139, + "dotlessj.ds": 249, + "u1D49C": 702, + "uni212C": 479, + "u1D49E": 462, + "u1D49F": 496, + "uni2130": 450, + "uni2131": 718, + "u1D4A2": 506, + "uni210B": 695, + "uni2110": 469, + "u1D4A5": 568, + "u1D4A6": 668, + "uni2112": 634, + "uni2133": 702, + "u1D4A9": 625, + "u1D4AA": 515, + "u1D4AB": 480, + "u1D4AC": 482, + "uni211B": 532, + "u1D4AE": 451, + "u1D4AF": 500, + "u1D4B0": 432, + "u1D4B1": 397, + "u1D4B2": 549, + "u1D4B3": 556, + "u1D4B4": 397, + "u1D4B5": 396, + "u1D49C.sts": 806, + "uni212C.sts": 532, + "u1D49E.sts": 523, + "u1D49F.sts": 552, + "uni2130.sts": 503, + "uni2131.sts": 822, + "u1D4A2.sts": 564, + "uni210B.sts": 795, + "uni2110.sts": 524, + "u1D4A5.sts": 636, + "u1D4A6.sts": 763, + "uni2112.sts": 720, + "uni2133.sts": 802, + "u1D4A9.sts": 708, + "u1D4AA.sts": 586, + "u1D4AB.sts": 535, + "u1D4AC.sts": 536, + "uni211B.sts": 598, + "u1D4AE.sts": 502, + "u1D4AF.sts": 566, + "u1D4B0.sts": 501, + "u1D4B1.sts": 461, + "u1D4B2.sts": 643, + "u1D4B3.sts": 627, + "u1D4B4.sts": 430, + "u1D4B5.sts": 434, + "u1D49C.st": 769, + "uni212C.st": 514, + "u1D49E.st": 503, + "u1D49F.st": 532, + "uni2130.st": 484, + "uni2131.st": 785, + "u1D4A2.st": 544, + "uni210B.st": 761, + "uni2110.st": 505, + "u1D4A5.st": 613, + "u1D4A6.st": 730, + "uni2112.st": 690, + "uni2133.st": 766, + "u1D4A9.st": 678, + "u1D4AA.st": 562, + "u1D4AB.st": 516, + "u1D4AC.st": 516, + "uni211B.st": 575, + "u1D4AE.st": 484, + "u1D4AF.st": 541, + "u1D4B0.st": 476, + "u1D4B1.st": 438, + "u1D4B2.st": 609, + "u1D4B3.st": 602, + "u1D4B4.st": 418, + "u1D4B5.st": 421, + "u1D4D0": 768, + "u1D4D1": 559, + "u1D4D2": 523, + "u1D4D3": 549, + "u1D4D4": 504, + "u1D4D5": 654, + "u1D4D6": 572, + "u1D4D7": 774, + "u1D4D8": 556, + "u1D4D9": 645, + "u1D4DA": 745, + "u1D4DB": 689, + "u1D4DC": 757, + "u1D4DD": 686, + "u1D4DE": 594, + "u1D4DF": 566, + "u1D4E0": 557, + "u1D4E1": 594, + "u1D4E2": 502, + "u1D4E3": 599, + "u1D4E4": 497, + "u1D4E5": 427, + "u1D4E6": 632, + "u1D4E7": 610, + "u1D4E8": 448, + "u1D4E9": 533, + "u1D4D0.sts": 842, + "u1D4D1.sts": 604, + "u1D4D2.sts": 571, + "u1D4D3.sts": 592, + "u1D4D4.sts": 546, + "u1D4D5.sts": 713, + "u1D4D6.sts": 617, + "u1D4D7.sts": 848, + "u1D4D8.sts": 602, + "u1D4D9.sts": 698, + "u1D4DA.sts": 816, + "u1D4DB.sts": 751, + "u1D4DC.sts": 828, + "u1D4DD.sts": 748, + "u1D4DE.sts": 650, + "u1D4DF.sts": 613, + "u1D4E0.sts": 601, + "u1D4E1.sts": 644, + "u1D4E2.sts": 542, + "u1D4E3.sts": 651, + "u1D4E4.sts": 548, + "u1D4E5.sts": 472, + "u1D4E6.sts": 704, + "u1D4E7.sts": 663, + "u1D4E8.sts": 476, + "u1D4E9.sts": 575, + "u1D4D0.st": 807, + "u1D4D1.st": 584, + "u1D4D2.st": 548, + "u1D4D3.st": 573, + "u1D4D4.st": 528, + "u1D4D5.st": 686, + "u1D4D6.st": 596, + "u1D4D7.st": 814, + "u1D4D8.st": 581, + "u1D4D9.st": 674, + "u1D4DA.st": 783, + "u1D4DB.st": 722, + "u1D4DC.st": 795, + "u1D4DD.st": 720, + "u1D4DE.st": 625, + "u1D4DF.st": 591, + "u1D4E0.st": 581, + "u1D4E1.st": 622, + "u1D4E2.st": 523, + "u1D4E3.st": 627, + "u1D4E4.st": 523, + "u1D4E5.st": 451, + "u1D4E6.st": 671, + "u1D4E7.st": 638, + "u1D4E8.st": 464, + "u1D4E9.st": 556, + "u1D504": 443, + "u1D505": 442, + "uni212D": 497, + "u1D507": 407, + "u1D508": 524, + "u1D509": 254, + "u1D50A": 518, + "uni210C": 422, + "uni2111": 337, + "u1D50D": 222, + "u1D50E": 465, + "u1D50F": 437, + "u1D510": 566, + "u1D511": 453, + "u1D512": 340, + "u1D513": 436, + "u1D514": 338, + "uni211C": 430, + "u1D516": 405, + "u1D517": 672, + "u1D518": 391, + "u1D519": 435, + "u1D51A": 540, + "u1D51B": 408, + "u1D51C": 406, + "uni2128": 164, + "u1D51E": 329, + "u1D51F": 189, + "u1D520": 269, + "u1D521": 165, + "u1D522": 243, + "u1D523": 222, + "u1D524": 339, + "u1D525": 168, + "u1D526": 132, + "u1D527": 130, + "u1D528": 183, + "u1D529": 195, + "u1D52A": 337, + "u1D52B": 226, + "u1D52C": 258, + "u1D52D": 128, + "u1D52E": 333, + "u1D52F": 200, + "u1D530": 223, + "u1D531": 229, + "u1D532": 268, + "u1D533": 134, + "u1D534": 127, + "u1D535": 204, + "u1D536": 128, + "u1D537": 185, + "u1D504.sts": 629, + "u1D505.sts": 627, + "uni212D.sts": 693, + "u1D507.sts": 585, + "u1D508.sts": 726, + "u1D509.sts": 402, + "u1D50A.sts": 719, + "uni210C.sts": 604, + "uni2111.sts": 501, + "u1D50D.sts": 363, + "u1D50E.sts": 654, + "u1D50F.sts": 622, + "u1D510.sts": 776, + "u1D511.sts": 640, + "u1D512.sts": 505, + "u1D513.sts": 620, + "u1D514.sts": 502, + "uni211C.sts": 613, + "u1D516.sts": 583, + "u1D517.sts": 903, + "u1D518.sts": 566, + "u1D519.sts": 619, + "u1D51A.sts": 745, + "u1D51B.sts": 587, + "u1D51C.sts": 585, + "uni2128.sts": 294, + "u1D51E.sts": 492, + "u1D51F.sts": 324, + "u1D520.sts": 419, + "u1D521.sts": 295, + "u1D522.sts": 388, + "u1D523.sts": 363, + "u1D524.sts": 504, + "u1D525.sts": 299, + "u1D526.sts": 255, + "u1D527.sts": 253, + "u1D528.sts": 317, + "u1D529.sts": 330, + "u1D52A.sts": 502, + "u1D52B.sts": 368, + "u1D52C.sts": 407, + "u1D52D.sts": 250, + "u1D52E.sts": 496, + "u1D52F.sts": 337, + "u1D530.sts": 364, + "u1D531.sts": 372, + "u1D532.sts": 419, + "u1D533.sts": 258, + "u1D534.sts": 250, + "u1D535.sts": 342, + "u1D536.sts": 251, + "u1D537.sts": 319, + "u1D504.st": 507, + "u1D505.st": 498, + "uni212D.st": 567, + "u1D507.st": 465, + "u1D508.st": 594, + "u1D509.st": 305, + "u1D50A.st": 586, + "uni210C.st": 487, + "uni2111.st": 399, + "u1D50D.st": 275, + "u1D50E.st": 531, + "u1D50F.st": 502, + "u1D510.st": 624, + "u1D511.st": 511, + "u1D512.st": 393, + "u1D513.st": 494, + "u1D514.st": 389, + "uni211C.st": 486, + "u1D516.st": 461, + "u1D517.st": 756, + "u1D518.st": 453, + "u1D519.st": 492, + "u1D51A.st": 597, + "u1D51B.st": 468, + "u1D51C.st": 464, + "uni2128.st": 211, + "u1D51E.st": 390, + "u1D51F.st": 239, + "u1D520.st": 329, + "u1D521.st": 216, + "u1D522.st": 301, + "u1D523.st": 282, + "u1D524.st": 404, + "u1D525.st": 216, + "u1D526.st": 187, + "u1D527.st": 189, + "u1D528.st": 238, + "u1D529.st": 251, + "u1D52A.st": 389, + "u1D52B.st": 279, + "u1D52C.st": 316, + "u1D52D.st": 175, + "u1D52E.st": 397, + "u1D52F.st": 255, + "u1D530.st": 282, + "u1D531.st": 289, + "u1D532.st": 324, + "u1D533.st": 180, + "u1D534.st": 161, + "u1D535.st": 262, + "u1D536.st": 174, + "u1D537.st": 244, + "dotlessi.fra.sts": 241, + "dotlessj.fra.sts": 259, + "dotlessi.fra.st": 174, + "dotlessj.fra.st": 195, + "dotlessi.fra": 120, + "dotlessj.fra": 135, + "u1D56C": 505, + "u1D56D": 523, + "u1D56E": 584, + "u1D56F": 458, + "u1D570": 598, + "u1D571": 292, + "u1D572": 633, + "u1D573": 496, + "u1D574": 400, + "u1D575": 267, + "u1D576": 538, + "u1D577": 519, + "u1D578": 658, + "u1D579": 515, + "u1D57A": 401, + "u1D57B": 502, + "u1D57C": 401, + "u1D57D": 500, + "u1D57E": 490, + "u1D57F": 554, + "u1D580": 545, + "u1D581": 500, + "u1D582": 643, + "u1D583": 488, + "u1D584": 490, + "u1D585": 194, + "u1D586": 388, + "u1D587": 298, + "u1D588": 312, + "u1D589": 189, + "u1D58A": 283, + "u1D58B": 266, + "u1D58C": 408, + "u1D58D": 211, + "u1D58E": 166, + "u1D58F": 159, + "u1D590": 215, + "u1D591": 293, + "u1D592": 405, + "u1D593": 255, + "u1D594": 334, + "u1D595": 177, + "u1D596": 409, + "u1D597": 242, + "u1D598": 266, + "u1D599": 292, + "u1D59A": 317, + "u1D59B": 160, + "u1D59C": 162, + "u1D59D": 255, + "u1D59E": 168, + "u1D59F": 229, + "u1D56C.sts": 661, + "u1D56D.sts": 680, + "u1D56E.sts": 747, + "u1D56F.sts": 618, + "u1D570.sts": 762, + "u1D571.sts": 419, + "u1D572.sts": 799, + "u1D573.sts": 651, + "u1D574.sts": 545, + "u1D575.sts": 399, + "u1D576.sts": 697, + "u1D577.sts": 676, + "u1D578.sts": 829, + "u1D579.sts": 672, + "u1D57A.sts": 546, + "u1D57B.sts": 657, + "u1D57C.sts": 546, + "u1D57D.sts": 655, + "u1D57E.sts": 644, + "u1D57F.sts": 715, + "u1D580.sts": 704, + "u1D581.sts": 655, + "u1D582.sts": 812, + "u1D583.sts": 641, + "u1D584.sts": 644, + "u1D585.sts": 319, + "u1D586.sts": 531, + "u1D587.sts": 432, + "u1D588.sts": 448, + "u1D589.sts": 313, + "u1D58A.sts": 416, + "u1D58B.sts": 398, + "u1D58C.sts": 554, + "u1D58D.sts": 336, + "u1D58E.sts": 288, + "u1D58F.sts": 280, + "u1D590.sts": 341, + "u1D591.sts": 427, + "u1D592.sts": 550, + "u1D593.sts": 386, + "u1D594.sts": 473, + "u1D595.sts": 299, + "u1D596.sts": 555, + "u1D597.sts": 371, + "u1D598.sts": 397, + "u1D599.sts": 427, + "u1D59A.sts": 453, + "u1D59B.sts": 282, + "u1D59C.sts": 283, + "u1D59D.sts": 385, + "u1D59E.sts": 289, + "u1D59F.sts": 357, + "u1D56C.st": 547, + "u1D56D.st": 566, + "u1D56E.st": 627, + "u1D56F.st": 499, + "u1D570.st": 642, + "u1D571.st": 330, + "u1D572.st": 677, + "u1D573.st": 539, + "u1D574.st": 440, + "u1D575.st": 305, + "u1D576.st": 581, + "u1D577.st": 562, + "u1D578.st": 703, + "u1D579.st": 557, + "u1D57A.st": 441, + "u1D57B.st": 544, + "u1D57C.st": 441, + "u1D57D.st": 542, + "u1D57E.st": 532, + "u1D57F.st": 597, + "u1D580.st": 588, + "u1D581.st": 542, + "u1D582.st": 687, + "u1D583.st": 529, + "u1D584.st": 531, + "u1D585.st": 230, + "u1D586.st": 427, + "u1D587.st": 336, + "u1D588.st": 350, + "u1D589.st": 225, + "u1D58A.st": 321, + "u1D58B.st": 303, + "u1D58C.st": 449, + "u1D58D.st": 247, + "u1D58E.st": 202, + "u1D58F.st": 194, + "u1D590.st": 251, + "u1D591.st": 330, + "u1D592.st": 445, + "u1D593.st": 292, + "u1D594.st": 373, + "u1D595.st": 213, + "u1D596.st": 449, + "u1D597.st": 279, + "u1D598.st": 303, + "u1D599.st": 330, + "u1D59A.st": 355, + "u1D59B.st": 196, + "u1D59C.st": 197, + "u1D59D.st": 292, + "u1D59E.st": 203, + "u1D59F.st": 266, + "dotlessi.frab.sts": 260, + "dotlessj.frab.sts": 270, + "dotlessi.frab.st": 176, + "dotlessj.frab.st": 185, + "dotlessi.frab": 141, + "dotlessj.frab": 150, + "u1D670": 262, + "u1D68A": 215, + "u1D671": 189, + "u1D68B": 90, + "u1D672": 362, + "u1D68C": 306, + "u1D673": 165, + "u1D68D": 351, + "dotlessi.tt": 263, + "dotlessj.tt": 263, + "u1D674": 254, + "u1D68E": 271, + "u1D7FE": 262, + "u1D675": 260, + "u1D68F": 340, + "u1D7FB": 262, + "u1D7FA": 323, + "u1D676": 335, + "u1D690": 332, + "u1D677": 262, + "u1D691": 90, + "u1D678": 263, + "u1D679": 347, + "u1D67A": 255, + "u1D694": 94, + "u1D67B": 153, + "u1D695": 178, + "u1D67C": 262, + "u1D696": 210, + "u1D67D": 262, + "u1D697": 191, + "u1D7FF": 262, + "u1D67E": 262, + "u1D698": 262, + "u1D7F7": 277, + "u1D67F": 193, + "u1D699": 188, + "u1D680": 262, + "u1D69A": 316, + "u1D681": 166, + "u1D69B": 245, + "u1D682": 309, + "u1D69C": 302, + "u1D7FD": 78, + "u1D7FC": 317, + "u1D683": 262, + "u1D69D": 188, + "u1D7F9": 248, + "u1D7F8": 251, + "u1D684": 262, + "u1D69E": 220, + "u1D685": 262, + "u1D69F": 262, + "u1D686": 262, + "u1D6A0": 262, + "u1D687": 253, + "u1D6A1": 258, + "u1D688": 262, + "u1D6A2": 263, + "u1D689": 268, + "u1D6A3": 260, + "u1D7F6": 262, + "u1D692": 263, + "u1D693": 319, + "nabla": 416, + "nabla.sts": 577, + "nabla.st": 477, + "Delta": 416, + "Gamma": 297, + "Lambda": 347, + "Omega": 360, + "Phi": 358, + "Pi": 375, + "Psi": 386, + "Sigma": 350, + "Theta": 389, + "Upsilon": 389, + "Xi": 333, + "uni2127": 362, + "uni2126": 360, + "Alpha": 374, + "Beta": 286, + "Epsilon": 318, + "Zeta": 316, + "Eta": 375, + "Iota": 181, + "Kappa": 378, + "Mu": 458, + "Nu": 375, + "Omicron": 389, + "Rho": 283, + "Tau": 361, + "Chi": 361, + "Delta.sts": 548, + "Gamma.sts": 402, + "Lambda.sts": 455, + "Omega.sts": 478, + "Phi.sts": 475, + "Pi.sts": 490, + "Psi.sts": 510, + "Sigma.sts": 464, + "Theta.sts": 513, + "Upsilon.sts": 514, + "Xi.sts": 444, + "uni2127.sts": 480, + "uni2126.sts": 478, + "Alpha.sts": 490, + "Beta.sts": 388, + "Epsilon.sts": 428, + "Zeta.sts": 424, + "Eta.sts": 490, + "Iota.sts": 247, + "Kappa.sts": 500, + "Mu.sts": 594, + "Nu.sts": 490, + "Omicron.sts": 513, + "Rho.sts": 384, + "Tau.sts": 479, + "Chi.sts": 473, + "Delta.st": 469, + "Gamma.st": 342, + "Lambda.st": 391, + "Omega.st": 407, + "Phi.st": 404, + "Pi.st": 421, + "Psi.st": 435, + "Sigma.st": 395, + "Theta.st": 438, + "Upsilon.st": 438, + "Xi.st": 377, + "uni2127.st": 409, + "uni2126.st": 407, + "Alpha.st": 421, + "Beta.st": 330, + "Epsilon.st": 365, + "Zeta.st": 358, + "Eta.st": 421, + "Iota.st": 207, + "Kappa.st": 430, + "Mu.st": 514, + "Nu.st": 421, + "Omicron.st": 438, + "Rho.st": 325, + "Tau.st": 407, + "Chi.st": 406, + "alpha": 356, + "beta": 280, + "gamma": 293, + "delta": 232, + "uni03F5": 242, + "zeta": 224, + "eta": 218, + "theta": 247, + "iota": 98, + "kappa": 247, + "uni03F0": 297, + "lambda": 86, + "mu": 237, + "nu": 209, + "xi": 196, + "pi": 279, + "rho": 243, + "sigma": 300, + "tau": 232, + "upsilon": 251, + "uni03D5": 320, + "chi": 267, + "psi": 348, + "omega": 322, + "epsilon": 244, + "uni03D1": 291, + "uni03D6": 404, + "uni03F1": 249, + "uni03C2": 237, + "phi": 302, + "partialdiff": 291, + "alpha.sts": 509, + "beta.sts": 407, + "gamma.sts": 428, + "delta.sts": 348, + "uni03F5.sts": 371, + "zeta.sts": 346, + "eta.sts": 339, + "theta.sts": 373, + "iota.sts": 184, + "kappa.sts": 370, + "uni03F0.sts": 422, + "lambda.sts": 177, + "mu.sts": 358, + "nu.sts": 328, + "xi.sts": 311, + "pi.sts": 410, + "rho.sts": 371, + "sigma.sts": 437, + "tau.sts": 350, + "upsilon.sts": 367, + "uni03D5.sts": 462, + "chi.sts": 397, + "psi.sts": 498, + "omega.sts": 469, + "epsilon.sts": 373, + "uni03D1.sts": 433, + "uni03D6.sts": 572, + "uni03F1.sts": 372, + "uni03C2.sts": 359, + "phi.sts": 441, + "partialdiff.sts": 430, + "alpha.st": 416, + "beta.st": 331, + "gamma.st": 344, + "delta.st": 275, + "uni03F5.st": 291, + "zeta.st": 270, + "eta.st": 263, + "theta.st": 291, + "iota.st": 128, + "kappa.st": 292, + "uni03F0.st": 350, + "lambda.st": 121, + "mu.st": 281, + "nu.st": 255, + "xi.st": 238, + "pi.st": 333, + "rho.st": 292, + "sigma.st": 351, + "tau.st": 275, + "upsilon.st": 296, + "uni03D5.st": 374, + "chi.st": 314, + "psi.st": 405, + "omega.st": 375, + "epsilon.st": 292, + "uni03D1.st": 338, + "uni03D6.st": 471, + "uni03F1.st": 292, + "uni03C2.st": 282, + "phi.st": 356, + "partialdiff.st": 343, + "omicron": 250, + "omicron.st": 285, + "omicron.sts": 341, + "u1D6C1": 479, + "u1D6C1.sts": 637, + "u1D6C1.st": 540, + "u1D6AB": 479, + "u1D6AA": 327, + "u1D6B2": 403, + "u1D6C0": 415, + "u1D6BD": 410, + "u1D6B7": 450, + "u1D6BF": 442, + "u1D6BA": 401, + "u1D6AF": 445, + "u1D6BC": 447, + "u1D6B5": 383, + "u1D6A8": 433, + "u1D6A9": 334, + "u1D6AC": 351, + "u1D6AD": 364, + "u1D6AE": 450, + "u1D6B0": 218, + "u1D6B1": 438, + "u1D6B3": 546, + "u1D6B4": 450, + "u1D6B6": 430, + "u1D6B8": 330, + "u1D6BB": 400, + "u1D6BE": 418, + "u1D6AB.sts": 621, + "u1D6AA.sts": 441, + "u1D6B2.sts": 517, + "u1D6C0.sts": 540, + "u1D6BD.sts": 533, + "u1D6B7.sts": 577, + "u1D6BF.sts": 573, + "u1D6BA.sts": 525, + "u1D6AF.sts": 580, + "u1D6BC.sts": 581, + "u1D6B5.sts": 500, + "u1D6A8.sts": 555, + "u1D6A9.sts": 450, + "u1D6AC.sts": 471, + "u1D6AD.sts": 476, + "u1D6AE.sts": 577, + "u1D6B0.sts": 275, + "u1D6B1.sts": 574, + "u1D6B3.sts": 697, + "u1D6B4.sts": 577, + "u1D6B6.sts": 561, + "u1D6B8.sts": 444, + "u1D6BB.sts": 521, + "u1D6BE.sts": 537, + "u1D6AB.st": 536, + "u1D6AA.st": 371, + "u1D6B2.st": 449, + "u1D6C0.st": 465, + "u1D6BD.st": 459, + "u1D6B7.st": 501, + "u1D6BF.st": 494, + "u1D6BA.st": 450, + "u1D6AF.st": 500, + "u1D6BC.st": 501, + "u1D6B5.st": 430, + "u1D6A8.st": 484, + "u1D6A9.st": 378, + "u1D6AC.st": 397, + "u1D6AD.st": 409, + "u1D6AE.st": 501, + "u1D6B0.st": 240, + "u1D6B1.st": 492, + "u1D6B3.st": 607, + "u1D6B4.st": 501, + "u1D6B6.st": 483, + "u1D6B8.st": 375, + "u1D6BB.st": 448, + "u1D6BE.st": 465, + "u1D6C2": 392, + "u1D6C3": 329, + "u1D6C4": 340, + "u1D6C5": 264, + "u1D6DC": 295, + "u1D6C7": 267, + "u1D6C8": 256, + "u1D6C9": 275, + "u1D6CA": 115, + "u1D6CB": 277, + "u1D6DE": 344, + "u1D6CC": 118, + "u1D6CD": 274, + "u1D6CE": 252, + "u1D6CF": 235, + "u1D6D1": 329, + "u1D6D2": 284, + "u1D6D4": 348, + "u1D6D5": 272, + "u1D6D6": 288, + "u1D6DF": 371, + "u1D6D8": 311, + "u1D6D9": 403, + "u1D6DA": 373, + "u1D6C6": 273, + "u1D6DD": 340, + "u1D6E1": 473, + "u1D6E0": 278, + "u1D6D3": 276, + "u1D6D7": 356, + "u1D6DB": 339, + "u1D6C2.sts": 420, + "u1D6C3.sts": 432, + "u1D6C4.sts": 466, + "u1D6C5.sts": 362, + "u1D6DC.sts": 405, + "u1D6C7.sts": 387, + "u1D6C8.sts": 369, + "u1D6C9.sts": 396, + "u1D6CA.sts": 181, + "u1D6CB.sts": 388, + "u1D6DE.sts": 474, + "u1D6CC.sts": 187, + "u1D6CD.sts": 382, + "u1D6CE.sts": 360, + "u1D6CF.sts": 347, + "u1D6D1.sts": 453, + "u1D6D2.sts": 380, + "u1D6D4.sts": 476, + "u1D6D5.sts": 372, + "u1D6D6.sts": 384, + "u1D6DF.sts": 505, + "u1D6D8.sts": 429, + "u1D6D9.sts": 545, + "u1D6DA.sts": 508, + "u1D6C6.sts": 386, + "u1D6DD.sts": 469, + "u1D6E1.sts": 634, + "u1D6E0.sts": 380, + "u1D6D3.sts": 386, + "u1D6D7.sts": 470, + "u1D6DB.sts": 469, + "u1D6C2.st": 343, + "u1D6C3.st": 360, + "u1D6C4.st": 388, + "u1D6C5.st": 301, + "u1D6DC.st": 339, + "u1D6C7.st": 313, + "u1D6C8.st": 303, + "u1D6C9.st": 328, + "u1D6CA.st": 140, + "u1D6CB.st": 318, + "u1D6DE.st": 395, + "u1D6CC.st": 144, + "u1D6CD.st": 315, + "u1D6CE.st": 296, + "u1D6CF.st": 278, + "u1D6D1.st": 379, + "u1D6D2.st": 329, + "u1D6D4.st": 397, + "u1D6D5.st": 311, + "u1D6D6.st": 319, + "u1D6DF.st": 423, + "u1D6D8.st": 358, + "u1D6D9.st": 458, + "u1D6DA.st": 427, + "u1D6C6.st": 314, + "u1D6DD.st": 391, + "u1D6E1.st": 540, + "u1D6E0.st": 335, + "u1D6D3.st": 317, + "u1D6D7.st": 402, + "u1D6DB.st": 389, + "u1D6D0": 288, + "u1D6D0.st": 324, + "u1D6D0.sts": 379, + "u1D6E4": 461, + "u1D6E5": 586, + "u1D6E9": 498, + "u1D6EC": 517, + "u1D6EF": 494, + "u1D6F1": 541, + "u1D6F4": 514, + "u1D6F6": 385, + "u1D6F7": 415, + "u1D6F9": 392, + "u1D6FA": 533, + "u1D6FC": 392, + "u1D6FD": 437, + "u1D6FE": 259, + "u1D6FF": 335, + "u1D716": 269, + "u1D701": 313, + "u1D702": 272, + "u1D703": 310, + "u1D704": 184, + "u1D705": 331, + "u1D718": 365, + "u1D706": 238, + "u1D707": 349, + "u1D708": 297, + "u1D709": 285, + "u1D70B": 328, + "u1D70C": 354, + "u1D70E": 286, + "u1D70F": 269, + "u1D710": 306, + "u1D719": 423, + "u1D712": 331, + "u1D713": 469, + "u1D714": 345, + "u1D700": 284, + "u1D717": 411, + "u1D71B": 453, + "u1D71A": 361, + "u1D70D": 182, + "u1D711": 355, + "u1D715": 361, + "u1D6E4.sts": 594, + "u1D6E5.sts": 746, + "u1D6E9.sts": 634, + "u1D6EC.sts": 654, + "u1D6EF.sts": 632, + "u1D6F1.sts": 682, + "u1D6F4.sts": 656, + "u1D6F6.sts": 535, + "u1D6F7.sts": 553, + "u1D6F9.sts": 536, + "u1D6FA.sts": 684, + "u1D6FC.sts": 531, + "u1D6FD.sts": 549, + "u1D6FE.sts": 374, + "u1D6FF.sts": 437, + "u1D716.sts": 380, + "u1D701.sts": 419, + "u1D702.sts": 397, + "u1D703.sts": 422, + "u1D704.sts": 260, + "u1D705.sts": 445, + "u1D718.sts": 491, + "u1D706.sts": 317, + "u1D707.sts": 454, + "u1D708.sts": 405, + "u1D709.sts": 384, + "u1D70B.sts": 462, + "u1D70C.sts": 467, + "u1D70E.sts": 408, + "u1D70F.sts": 391, + "u1D710.sts": 425, + "u1D719.sts": 550, + "u1D712.sts": 438, + "u1D713.sts": 623, + "u1D714.sts": 484, + "u1D700.sts": 397, + "u1D717.sts": 558, + "u1D71B.sts": 625, + "u1D71A.sts": 469, + "u1D70D.sts": 289, + "u1D711.sts": 484, + "u1D715.sts": 482, + "u1D6E4.st": 512, + "u1D6E5.st": 646, + "u1D6E9.st": 539, + "u1D6EC.st": 568, + "u1D6EF.st": 545, + "u1D6F1.st": 595, + "u1D6F4.st": 566, + "u1D6F6.st": 443, + "u1D6F7.st": 466, + "u1D6F9.st": 446, + "u1D6FA.st": 588, + "u1D6FC.st": 446, + "u1D6FD.st": 480, + "u1D6FE.st": 300, + "u1D6FF.st": 373, + "u1D716.st": 310, + "u1D701.st": 352, + "u1D702.st": 318, + "u1D703.st": 349, + "u1D704.st": 208, + "u1D705.st": 371, + "u1D718.st": 418, + "u1D706.st": 266, + "u1D707.st": 386, + "u1D708.st": 338, + "u1D709.st": 321, + "u1D70B.st": 384, + "u1D70C.st": 397, + "u1D70E.st": 331, + "u1D70F.st": 314, + "u1D710.st": 353, + "u1D719.st": 471, + "u1D712.st": 367, + "u1D713.st": 527, + "u1D714.st": 394, + "u1D700.st": 325, + "u1D717.st": 461, + "u1D71B.st": 522, + "u1D71A.st": 398, + "u1D70D.st": 220, + "u1D711.st": 405, + "u1D715.st": 405, + "u1D6E2": 552, + "u1D6E3": 457, + "u1D6E6": 482, + "u1D6E7": 481, + "u1D6E8": 542, + "u1D6EA": 347, + "u1D6EB": 545, + "u1D6ED": 625, + "u1D6EE": 542, + "u1D70A": 243, + "u1D6F0": 498, + "u1D6F2": 454, + "u1D6F5": 394, + "u1D6F8": 528, + "u1D6E2.st": 606, + "u1D6E3.st": 508, + "u1D6E6.st": 536, + "u1D6E7.st": 531, + "u1D6E8.st": 596, + "u1D6EA.st": 381, + "u1D6EB.st": 605, + "u1D6ED.st": 688, + "u1D6EE.st": 596, + "u1D70A.st": 282, + "u1D6F0.st": 539, + "u1D6F2.st": 504, + "u1D6F5.st": 447, + "u1D6F8.st": 580, + "u1D6E2.sts": 696, + "u1D6E3.sts": 588, + "u1D6E6.sts": 620, + "u1D6E7.sts": 616, + "u1D6E8.sts": 683, + "u1D6EA.sts": 441, + "u1D6EB.sts": 695, + "u1D6ED.sts": 787, + "u1D6EE.sts": 683, + "u1D70A.sts": 352, + "u1D6F0.sts": 634, + "u1D6F2.sts": 583, + "u1D6F5.sts": 539, + "u1D6F8.sts": 666, + "u1D6FB": 420, + "u1D6FB.st": 480, + "u1D6FB.sts": 579, + "u1D71E": 490, + "u1D71F": 647, + "u1D723": 542, + "u1D726": 570, + "u1D729": 544, + "u1D72B": 614, + "u1D72E": 565, + "u1D730": 443, + "u1D731": 463, + "u1D733": 444, + "u1D734": 580, + "u1D736": 439, + "u1D737": 483, + "u1D738": 295, + "u1D739": 376, + "u1D750": 316, + "u1D73B": 347, + "u1D73C": 319, + "u1D73D": 343, + "u1D73E": 197, + "u1D73F": 359, + "u1D752": 415, + "u1D740": 263, + "u1D741": 396, + "u1D742": 336, + "u1D743": 315, + "u1D745": 387, + "u1D746": 406, + "u1D748": 343, + "u1D749": 318, + "u1D74A": 353, + "u1D753": 482, + "u1D74C": 370, + "u1D74D": 530, + "u1D74E": 398, + "u1D73A": 322, + "u1D751": 465, + "u1D755": 530, + "u1D754": 400, + "u1D747": 212, + "u1D74B": 406, + "u1D74F": 415, + "u1D71E.sts": 609, + "u1D71F.sts": 800, + "u1D723.sts": 677, + "u1D726.sts": 699, + "u1D729.sts": 672, + "u1D72B.sts": 754, + "u1D72E.sts": 700, + "u1D730.sts": 580, + "u1D731.sts": 594, + "u1D733.sts": 585, + "u1D734.sts": 710, + "u1D736.sts": 451, + "u1D737.sts": 575, + "u1D738.sts": 399, + "u1D739.sts": 460, + "u1D750.sts": 408, + "u1D73B.sts": 450, + "u1D73C.sts": 451, + "u1D73D.sts": 449, + "u1D73E.sts": 253, + "u1D73F.sts": 460, + "u1D752.sts": 546, + "u1D740.sts": 321, + "u1D741.sts": 485, + "u1D742.sts": 432, + "u1D743.sts": 409, + "u1D745.sts": 527, + "u1D746.sts": 485, + "u1D748.sts": 454, + "u1D749.sts": 433, + "u1D74A.sts": 465, + "u1D753.sts": 599, + "u1D74C.sts": 469, + "u1D74D.sts": 688, + "u1D74E.sts": 525, + "u1D73A.sts": 418, + "u1D751.sts": 612, + "u1D755.sts": 708, + "u1D754.sts": 486, + "u1D747.sts": 308, + "u1D74B.sts": 512, + "u1D74F.sts": 524, + "u1D71E.st": 536, + "u1D71F.st": 707, + "u1D723.st": 598, + "u1D726.st": 618, + "u1D729.st": 593, + "u1D72B.st": 667, + "u1D72E.st": 616, + "u1D730.st": 497, + "u1D731.st": 513, + "u1D733.st": 498, + "u1D734.st": 636, + "u1D736.st": 385, + "u1D737.st": 507, + "u1D738.st": 334, + "u1D739.st": 407, + "u1D750.st": 352, + "u1D73B.st": 385, + "u1D73C.st": 374, + "u1D73D.st": 391, + "u1D73E.st": 216, + "u1D73F.st": 395, + "u1D752.st": 467, + "u1D740.st": 284, + "u1D741.st": 430, + "u1D742.st": 373, + "u1D743.st": 350, + "u1D745.st": 444, + "u1D746.st": 444, + "u1D748.st": 386, + "u1D749.st": 362, + "u1D74A.st": 389, + "u1D753.st": 526, + "u1D74C.st": 409, + "u1D74D.st": 592, + "u1D74E.st": 447, + "u1D73A.st": 356, + "u1D751.st": 523, + "u1D755.st": 604, + "u1D754.st": 452, + "u1D747.st": 247, + "u1D74B.st": 447, + "u1D74F.st": 456, + "u1D71C": 609, + "u1D71D": 502, + "u1D720": 514, + "u1D721": 528, + "u1D722": 615, + "u1D724": 382, + "u1D725": 603, + "u1D727": 711, + "u1D728": 615, + "u1D744": 293, + "u1D72A": 529, + "u1D72C": 495, + "u1D72F": 430, + "u1D732": 584, + "u1D71C.st": 664, + "u1D71D.st": 552, + "u1D720.st": 562, + "u1D721.st": 579, + "u1D722.st": 669, + "u1D724.st": 406, + "u1D725.st": 661, + "u1D727.st": 776, + "u1D728.st": 669, + "u1D744.st": 329, + "u1D72A.st": 584, + "u1D72C.st": 545, + "u1D72F.st": 481, + "u1D732.st": 634, + "u1D71C.sts": 752, + "u1D71D.sts": 629, + "u1D720.sts": 640, + "u1D721.sts": 656, + "u1D722.sts": 756, + "u1D724.sts": 454, + "u1D725.sts": 749, + "u1D727.sts": 876, + "u1D728.sts": 756, + "u1D744.sts": 390, + "u1D72A.sts": 674, + "u1D72C.sts": 623, + "u1D72F.sts": 564, + "u1D732.sts": 716, + "u1D735": 483, + "u1D735.st": 543, + "u1D735.sts": 640, + "uni03F4": 389, + "u1D6B9": 445, + "u1D6F3": 498, + "u1D72D": 542, + "uni03F4.st": 438, + "u1D6B9.st": 500, + "u1D6F3.st": 539, + "u1D72D.st": 598, + "uni03F4.sts": 513, + "u1D6B9.sts": 580, + "u1D6F3.sts": 634, + "u1D72D.sts": 677 + }, + "v_assembly": { + "parenleft": { + "italic": 0, + "parts": [ + { + "glyph": "uni239D", + "startConnector": 0, + "endConnector": 249, + "advance": 1495, + "extender": false + }, + { + "glyph": "uni239C", + "startConnector": 498, + "endConnector": 498, + "advance": 498, + "extender": true + }, + { + "glyph": "uni239B", + "startConnector": 249, + "endConnector": 0, + "advance": 1495, + "extender": false + } + ] + }, + "parenright": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A0", + "startConnector": 0, + "endConnector": 249, + "advance": 1495, + "extender": false + }, + { + "glyph": "uni239F", + "startConnector": 498, + "endConnector": 498, + "advance": 498, + "extender": true + }, + { + "glyph": "uni239E", + "startConnector": 249, + "endConnector": 0, + "advance": 1495, + "extender": false + } + ] + }, + "bracketleft": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A3", + "startConnector": 0, + "endConnector": 500, + "advance": 1500, + "extender": false + }, + { + "glyph": "uni23A2", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni23A1", + "startConnector": 500, + "endConnector": 0, + "advance": 1500, + "extender": false + } + ] + }, + "bracketright": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A6", + "startConnector": 0, + "endConnector": 500, + "advance": 1500, + "extender": false + }, + { + "glyph": "uni23A5", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni23A4", + "startConnector": 500, + "endConnector": 0, + "advance": 1500, + "extender": false + } + ] + }, + "braceleft": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A9", + "startConnector": 0, + "endConnector": 374, + "advance": 750, + "extender": false + }, + { + "glyph": "braceleft.ex", + "startConnector": 748, + "endConnector": 748, + "advance": 748, + "extender": true + }, + { + "glyph": "uni23A8", + "startConnector": 374, + "endConnector": 374, + "advance": 1500, + "extender": false + }, + { + "glyph": "braceleft.ex", + "startConnector": 748, + "endConnector": 748, + "advance": 748, + "extender": true + }, + { + "glyph": "uni23A7", + "startConnector": 374, + "endConnector": 0, + "advance": 750, + "extender": false + } + ] + }, + "bar": { + "italic": 0, + "parts": [ + { + "glyph": "divides.bt", + "startConnector": 0, + "endConnector": 601, + "advance": 1202, + "extender": false + }, + { + "glyph": "divides.ex", + "startConnector": 1202, + "endConnector": 1202, + "advance": 1202, + "extender": true + }, + { + "glyph": "divides.tp", + "startConnector": 601, + "endConnector": 0, + "advance": 1202, + "extender": false + } + ] + }, + "braceright": { + "italic": 0, + "parts": [ + { + "glyph": "uni23AD", + "startConnector": 0, + "endConnector": 374, + "advance": 750, + "extender": false + }, + { + "glyph": "braceright.ex", + "startConnector": 748, + "endConnector": 748, + "advance": 748, + "extender": true + }, + { + "glyph": "uni23AC", + "startConnector": 374, + "endConnector": 374, + "advance": 1500, + "extender": false + }, + { + "glyph": "braceright.ex", + "startConnector": 748, + "endConnector": 748, + "advance": 748, + "extender": true + }, + { + "glyph": "uni23AB", + "startConnector": 374, + "endConnector": 0, + "advance": 750, + "extender": false + } + ] + }, + "arrowup": { + "italic": 0, + "parts": [ + { + "glyph": "arrowup.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 506, + "extender": false + }, + { + "glyph": "arrowup.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "arrowup.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 505, + "extender": false + } + ] + }, + "arrowdown": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdown.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 505, + "extender": false + }, + { + "glyph": "arrowdown.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "arrowdown.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 506, + "extender": false + } + ] + }, + "arrowupdn": { + "italic": 0, + "parts": [ + { + "glyph": "arrowupdn.bt", + "startConnector": 0, + "endConnector": 127, + "advance": 380, + "extender": false + }, + { + "glyph": "arrowupdn.ex", + "startConnector": 254, + "endConnector": 254, + "advance": 254, + "extender": true + }, + { + "glyph": "arrowupdn.tp", + "startConnector": 127, + "endConnector": 0, + "advance": 380, + "extender": false + } + ] + }, + "uni219F": { + "italic": 0, + "parts": [ + { + "glyph": "uni219F.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 506, + "extender": false + }, + { + "glyph": "uni219F.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni219F.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 505, + "extender": false + } + ] + }, + "uni21A1": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A1.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 505, + "extender": false + }, + { + "glyph": "uni21A1.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21A1.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 506, + "extender": false + } + ] + }, + "uni21A5": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A5.bt", + "startConnector": 0, + "endConnector": 166, + "advance": 498, + "extender": false + }, + { + "glyph": "uni21A5.ex", + "startConnector": 332, + "endConnector": 332, + "advance": 332, + "extender": true + }, + { + "glyph": "uni21A5.tp", + "startConnector": 166, + "endConnector": 0, + "advance": 498, + "extender": false + } + ] + }, + "uni21A7": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A7.bt", + "startConnector": 0, + "endConnector": 166, + "advance": 498, + "extender": false + }, + { + "glyph": "uni21A7.ex", + "startConnector": 332, + "endConnector": 332, + "advance": 332, + "extender": true + }, + { + "glyph": "uni21A7.tp", + "startConnector": 166, + "endConnector": 0, + "advance": 498, + "extender": false + } + ] + }, + "uni21BE": { + "italic": 0, + "parts": [ + { + "glyph": "uni21BE.bt", + "startConnector": 0, + "endConnector": 171, + "advance": 512, + "extender": false + }, + { + "glyph": "uni21BE.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21BE.tp", + "startConnector": 171, + "endConnector": 0, + "advance": 513, + "extender": false + } + ] + }, + "uni21C2": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C2.bt", + "startConnector": 0, + "endConnector": 171, + "advance": 513, + "extender": false + }, + { + "glyph": "uni21C2.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21C2.tp", + "startConnector": 171, + "endConnector": 0, + "advance": 512, + "extender": false + } + ] + }, + "uni21BF": { + "italic": 0, + "parts": [ + { + "glyph": "uni21BF.bt", + "startConnector": 0, + "endConnector": 171, + "advance": 512, + "extender": false + }, + { + "glyph": "uni21BF.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21BF.tp", + "startConnector": 171, + "endConnector": 0, + "advance": 513, + "extender": false + } + ] + }, + "uni21C3": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C3.bt", + "startConnector": 0, + "endConnector": 171, + "advance": 513, + "extender": false + }, + { + "glyph": "uni21C3.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21C3.tp", + "startConnector": 171, + "endConnector": 0, + "advance": 512, + "extender": false + } + ] + }, + "uni21C5": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C5.bt", + "startConnector": 0, + "endConnector": 172, + "advance": 515, + "extender": false + }, + { + "glyph": "uni21C5.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21C5.tp", + "startConnector": 172, + "endConnector": 0, + "advance": 514, + "extender": false + } + ] + }, + "uni21F5": { + "italic": 0, + "parts": [ + { + "glyph": "uni21F5.bt", + "startConnector": 0, + "endConnector": 172, + "advance": 514, + "extender": false + }, + { + "glyph": "uni21F5.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21F5.tp", + "startConnector": 172, + "endConnector": 0, + "advance": 515, + "extender": false + } + ] + }, + "uni21C8": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C8.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 506, + "extender": false + }, + { + "glyph": "uni21C8.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21C8.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 505, + "extender": false + } + ] + }, + "uni21CA": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CA.bt", + "startConnector": 0, + "endConnector": 169, + "advance": 505, + "extender": false + }, + { + "glyph": "uni21CA.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21CA.tp", + "startConnector": 169, + "endConnector": 0, + "advance": 506, + "extender": false + } + ] + }, + "arrowdblup": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdblup.bt", + "startConnector": 0, + "endConnector": 168, + "advance": 505, + "extender": false + }, + { + "glyph": "arrowdblup.ex", + "startConnector": 336, + "endConnector": 336, + "advance": 336, + "extender": true + }, + { + "glyph": "arrowdblup.tp", + "startConnector": 168, + "endConnector": 0, + "advance": 504, + "extender": false + } + ] + }, + "arrowdbldown": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdbldown.bt", + "startConnector": 0, + "endConnector": 168, + "advance": 504, + "extender": false + }, + { + "glyph": "arrowdbldown.ex", + "startConnector": 336, + "endConnector": 336, + "advance": 336, + "extender": true + }, + { + "glyph": "arrowdbldown.tp", + "startConnector": 168, + "endConnector": 0, + "advance": 505, + "extender": false + } + ] + }, + "uni21D5": { + "italic": 0, + "parts": [ + { + "glyph": "uni21D5.bt", + "startConnector": 0, + "endConnector": 178, + "advance": 533, + "extender": false + }, + { + "glyph": "uni21D5.ex", + "startConnector": 356, + "endConnector": 356, + "advance": 356, + "extender": true + }, + { + "glyph": "uni21D5.tp", + "startConnector": 178, + "endConnector": 0, + "advance": 533, + "extender": false + } + ] + }, + "uni21E7": { + "italic": 0, + "parts": [ + { + "glyph": "uni21E7.bt", + "startConnector": 0, + "endConnector": 173, + "advance": 519, + "extender": false + }, + { + "glyph": "uni21E7.ex", + "startConnector": 346, + "endConnector": 346, + "advance": 346, + "extender": true + }, + { + "glyph": "uni21E7.tp", + "startConnector": 173, + "endConnector": 0, + "advance": 519, + "extender": false + } + ] + }, + "uni21E9": { + "italic": 0, + "parts": [ + { + "glyph": "uni21E9.bt", + "startConnector": 0, + "endConnector": 173, + "advance": 519, + "extender": false + }, + { + "glyph": "uni21E9.ex", + "startConnector": 346, + "endConnector": 346, + "advance": 346, + "extender": true + }, + { + "glyph": "uni21E9.tp", + "startConnector": 173, + "endConnector": 0, + "advance": 519, + "extender": false + } + ] + }, + "uni21F3": { + "italic": 0, + "parts": [ + { + "glyph": "uni21F3.bt", + "startConnector": 0, + "endConnector": 175, + "advance": 524, + "extender": false + }, + { + "glyph": "uni21F3.ex", + "startConnector": 349, + "endConnector": 349, + "advance": 349, + "extender": true + }, + { + "glyph": "uni21F3.tp", + "startConnector": 175, + "endConnector": 0, + "advance": 523, + "extender": false + } + ] + }, + "uni2B06": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B06.bt", + "startConnector": 0, + "endConnector": 164, + "advance": 492, + "extender": false + }, + { + "glyph": "uni2B06.ex", + "startConnector": 327, + "endConnector": 327, + "advance": 327, + "extender": true + }, + { + "glyph": "uni2B06.tp", + "startConnector": 164, + "endConnector": 0, + "advance": 492, + "extender": false + } + ] + }, + "uni2B07": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B07.bt", + "startConnector": 0, + "endConnector": 164, + "advance": 492, + "extender": false + }, + { + "glyph": "uni2B07.ex", + "startConnector": 327, + "endConnector": 327, + "advance": 327, + "extender": true + }, + { + "glyph": "uni2B07.tp", + "startConnector": 164, + "endConnector": 0, + "advance": 492, + "extender": false + } + ] + }, + "uni2B0D": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B0D.bt", + "startConnector": 0, + "endConnector": 161, + "advance": 484, + "extender": false + }, + { + "glyph": "uni2B0D.ex", + "startConnector": 322, + "endConnector": 322, + "advance": 322, + "extender": true + }, + { + "glyph": "uni2B0D.tp", + "startConnector": 161, + "endConnector": 0, + "advance": 484, + "extender": false + } + ] + }, + "uni27EE": { + "italic": 0, + "parts": [ + { + "glyph": "uni27EE.bt", + "startConnector": 0, + "endConnector": 499, + "advance": 1526, + "extender": false + }, + { + "glyph": "uni27EE.ex", + "startConnector": 998, + "endConnector": 998, + "advance": 998, + "extender": true + }, + { + "glyph": "uni27EE.tp", + "startConnector": 499, + "endConnector": 0, + "advance": 1526, + "extender": false + } + ] + }, + "uni27EF": { + "italic": 0, + "parts": [ + { + "glyph": "uni27EF.bt", + "startConnector": 0, + "endConnector": 499, + "advance": 1526, + "extender": false + }, + { + "glyph": "uni27EF.ex", + "startConnector": 998, + "endConnector": 998, + "advance": 998, + "extender": true + }, + { + "glyph": "uni27EF.tp", + "startConnector": 499, + "endConnector": 0, + "advance": 1526, + "extender": false + } + ] + }, + "uni2308": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A2", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni23A1", + "startConnector": 500, + "endConnector": 0, + "advance": 1500, + "extender": false + } + ] + }, + "uni2309": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A5", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni23A4", + "startConnector": 500, + "endConnector": 0, + "advance": 1500, + "extender": false + } + ] + }, + "uni230A": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A3", + "startConnector": 0, + "endConnector": 500, + "advance": 1500, + "extender": false + }, + { + "glyph": "uni23A2", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + } + ] + }, + "uni230B": { + "italic": 0, + "parts": [ + { + "glyph": "uni23A6", + "startConnector": 0, + "endConnector": 500, + "advance": 1500, + "extender": false + }, + { + "glyph": "uni23A5", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + } + ] + }, + "uni27E6": { + "italic": 0, + "parts": [ + { + "glyph": "uni27E6.bt", + "startConnector": 0, + "endConnector": 500, + "advance": 1000, + "extender": false + }, + { + "glyph": "uni27E6.ex", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni27E6.tp", + "startConnector": 500, + "endConnector": 0, + "advance": 1000, + "extender": false + } + ] + }, + "uni27E7": { + "italic": 0, + "parts": [ + { + "glyph": "uni27E7.bt", + "startConnector": 0, + "endConnector": 500, + "advance": 1000, + "extender": false + }, + { + "glyph": "uni27E7.ex", + "startConnector": 1000, + "endConnector": 1000, + "advance": 1000, + "extender": true + }, + { + "glyph": "uni27E7.tp", + "startConnector": 500, + "endConnector": 0, + "advance": 1000, + "extender": false + } + ] + }, + "divides": { + "italic": 0, + "parts": [ + { + "glyph": "divides.bt", + "startConnector": 0, + "endConnector": 601, + "advance": 1202, + "extender": false + }, + { + "glyph": "divides.ex", + "startConnector": 1202, + "endConnector": 1202, + "advance": 1202, + "extender": true + }, + { + "glyph": "divides.tp", + "startConnector": 601, + "endConnector": 0, + "advance": 1202, + "extender": false + } + ] + }, + "parallel": { + "italic": 0, + "parts": [ + { + "glyph": "parallel.bt", + "startConnector": 0, + "endConnector": 601, + "advance": 1202, + "extender": false + }, + { + "glyph": "parallel.ex", + "startConnector": 1202, + "endConnector": 1202, + "advance": 1202, + "extender": true + }, + { + "glyph": "parallel.tp", + "startConnector": 601, + "endConnector": 0, + "advance": 1202, + "extender": false + } + ] + }, + "dblverticalbar": { + "italic": 0, + "parts": [ + { + "glyph": "parallel.bt", + "startConnector": 0, + "endConnector": 601, + "advance": 1202, + "extender": false + }, + { + "glyph": "parallel.ex", + "startConnector": 1202, + "endConnector": 1202, + "advance": 1202, + "extender": true + }, + { + "glyph": "parallel.tp", + "startConnector": 601, + "endConnector": 0, + "advance": 1202, + "extender": false + } + ] + }, + "radical": { + "italic": 0, + "parts": [ + { + "glyph": "uni23B7", + "startConnector": 0, + "endConnector": 320, + "advance": 1820, + "extender": false + }, + { + "glyph": "radical.ex", + "startConnector": 640, + "endConnector": 640, + "advance": 640, + "extender": true + }, + { + "glyph": "radical.tp", + "startConnector": 320, + "endConnector": 0, + "advance": 620, + "extender": false + } + ] + } + }, + "h_assembly": { + "equal": { + "italic": 0, + "parts": [ + { + "glyph": "equal.lft", + "startConnector": 0, + "endConnector": 111, + "advance": 222, + "extender": false + }, + { + "glyph": "equal.ex", + "startConnector": 222, + "endConnector": 222, + "advance": 222, + "extender": true + }, + { + "glyph": "equal.rt", + "startConnector": 111, + "endConnector": 0, + "advance": 222, + "extender": false + } + ] + }, + "uni20D0": { + "italic": 0, + "parts": [ + { + "glyph": "uni20D0.lft", + "startConnector": 0, + "endConnector": 70, + "advance": 208, + "extender": false + }, + { + "glyph": "uni20D0.ex", + "startConnector": 139, + "endConnector": 139, + "advance": 139, + "extender": true + }, + { + "glyph": "uni20D0.rt", + "startConnector": 70, + "endConnector": 0, + "advance": 208, + "extender": false + } + ] + }, + "uni20D1": { + "italic": 0, + "parts": [ + { + "glyph": "uni20D1.lft", + "startConnector": 0, + "endConnector": 70, + "advance": 208, + "extender": false + }, + { + "glyph": "uni20D1.ex", + "startConnector": 139, + "endConnector": 139, + "advance": 139, + "extender": true + }, + { + "glyph": "uni20D1.rt", + "startConnector": 70, + "endConnector": 0, + "advance": 208, + "extender": false + } + ] + }, + "uni20D6": { + "italic": 0, + "parts": [ + { + "glyph": "uni20D6.lft", + "startConnector": 0, + "endConnector": 69, + "advance": 205, + "extender": false + }, + { + "glyph": "uni20D6.ex", + "startConnector": 137, + "endConnector": 137, + "advance": 137, + "extender": true + }, + { + "glyph": "uni20D6.rt", + "startConnector": 69, + "endConnector": 0, + "advance": 205, + "extender": false + } + ] + }, + "uni20D7": { + "italic": 0, + "parts": [ + { + "glyph": "uni20D7.lft", + "startConnector": 0, + "endConnector": 69, + "advance": 205, + "extender": false + }, + { + "glyph": "uni20D7.ex", + "startConnector": 137, + "endConnector": 137, + "advance": 137, + "extender": true + }, + { + "glyph": "uni20D7.rt", + "startConnector": 69, + "endConnector": 0, + "advance": 205, + "extender": false + } + ] + }, + "uni20E1": { + "italic": 0, + "parts": [ + { + "glyph": "uni20E1.lft", + "startConnector": 0, + "endConnector": 76, + "advance": 226, + "extender": false + }, + { + "glyph": "uni20E1.ex", + "startConnector": 151, + "endConnector": 151, + "advance": 151, + "extender": true + }, + { + "glyph": "uni20E1.rt", + "startConnector": 76, + "endConnector": 0, + "advance": 226, + "extender": false + } + ] + }, + "uni20EC": { + "italic": 0, + "parts": [ + { + "glyph": "uni20EC.lft", + "startConnector": 0, + "endConnector": 70, + "advance": 208, + "extender": false + }, + { + "glyph": "uni20EC.ex", + "startConnector": 139, + "endConnector": 139, + "advance": 139, + "extender": true + }, + { + "glyph": "uni20EC.rt", + "startConnector": 70, + "endConnector": 0, + "advance": 208, + "extender": false + } + ] + }, + "uni20ED": { + "italic": 0, + "parts": [ + { + "glyph": "uni20ED.lft", + "startConnector": 0, + "endConnector": 70, + "advance": 208, + "extender": false + }, + { + "glyph": "uni20ED.ex", + "startConnector": 139, + "endConnector": 139, + "advance": 139, + "extender": true + }, + { + "glyph": "uni20ED.rt", + "startConnector": 70, + "endConnector": 0, + "advance": 208, + "extender": false + } + ] + }, + "uni20EE": { + "italic": 0, + "parts": [ + { + "glyph": "uni20EE.lft", + "startConnector": 0, + "endConnector": 69, + "advance": 205, + "extender": false + }, + { + "glyph": "uni20EE.ex", + "startConnector": 137, + "endConnector": 137, + "advance": 137, + "extender": true + }, + { + "glyph": "uni20EE.rt", + "startConnector": 69, + "endConnector": 0, + "advance": 205, + "extender": false + } + ] + }, + "uni20EF": { + "italic": 0, + "parts": [ + { + "glyph": "uni20EF.lft", + "startConnector": 0, + "endConnector": 69, + "advance": 205, + "extender": false + }, + { + "glyph": "uni20EF.ex", + "startConnector": 137, + "endConnector": 137, + "advance": 137, + "extender": true + }, + { + "glyph": "uni20EF.rt", + "startConnector": 69, + "endConnector": 0, + "advance": 205, + "extender": false + } + ] + }, + "uni034D": { + "italic": 0, + "parts": [ + { + "glyph": "uni034D.lft", + "startConnector": 0, + "endConnector": 76, + "advance": 226, + "extender": false + }, + { + "glyph": "uni034D.ex", + "startConnector": 151, + "endConnector": 151, + "advance": 151, + "extender": true + }, + { + "glyph": "uni034D.rt", + "startConnector": 76, + "endConnector": 0, + "advance": 226, + "extender": false + } + ] + }, + "arrowleft": { + "italic": 0, + "parts": [ + { + "glyph": "arrowleft.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "arrowleft.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "arrowleft.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "arrowright": { + "italic": 0, + "parts": [ + { + "glyph": "arrowright.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "arrowright.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "arrowright.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni219A": { + "italic": 0, + "parts": [ + { + "glyph": "uni219A.lft", + "startConnector": 0, + "endConnector": 49, + "advance": 386, + "extender": false + }, + { + "glyph": "uni219A.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni219A.md", + "startConnector": 49, + "endConnector": 49, + "advance": 386, + "extender": false + }, + { + "glyph": "uni219A.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni219A.rt", + "startConnector": 49, + "endConnector": 0, + "advance": 386, + "extender": false + } + ] + }, + "uni219B": { + "italic": 0, + "parts": [ + { + "glyph": "uni219B.lft", + "startConnector": 0, + "endConnector": 48, + "advance": 386, + "extender": false + }, + { + "glyph": "uni219B.ex", + "startConnector": 96, + "endConnector": 96, + "advance": 96, + "extender": true + }, + { + "glyph": "uni219B.md", + "startConnector": 48, + "endConnector": 48, + "advance": 386, + "extender": false + }, + { + "glyph": "uni219B.ex", + "startConnector": 96, + "endConnector": 96, + "advance": 96, + "extender": true + }, + { + "glyph": "uni219B.rt", + "startConnector": 48, + "endConnector": 0, + "advance": 386, + "extender": false + } + ] + }, + "arrowboth": { + "italic": 0, + "parts": [ + { + "glyph": "arrowboth.lft", + "startConnector": 0, + "endConnector": 166, + "advance": 499, + "extender": false + }, + { + "glyph": "arrowboth.ex", + "startConnector": 332, + "endConnector": 332, + "advance": 332, + "extender": true + }, + { + "glyph": "arrowboth.rt", + "startConnector": 166, + "endConnector": 0, + "advance": 499, + "extender": false + } + ] + }, + "uni21AE": { + "italic": 0, + "parts": [ + { + "glyph": "uni21AE.lft", + "startConnector": 0, + "endConnector": 48, + "advance": 380, + "extender": false + }, + { + "glyph": "uni21AE.ex", + "startConnector": 95, + "endConnector": 95, + "advance": 95, + "extender": true + }, + { + "glyph": "uni21AE.md", + "startConnector": 48, + "endConnector": 48, + "advance": 380, + "extender": false + }, + { + "glyph": "uni21AE.ex", + "startConnector": 95, + "endConnector": 95, + "advance": 95, + "extender": true + }, + { + "glyph": "uni21AE.rt", + "startConnector": 48, + "endConnector": 0, + "advance": 380, + "extender": false + } + ] + }, + "uni219E": { + "italic": 0, + "parts": [ + { + "glyph": "uni219E.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni219E.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni219E.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21A0": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A0.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21A0.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21A0.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21A2": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A2.lft", + "startConnector": 0, + "endConnector": 193, + "advance": 580, + "extender": false + }, + { + "glyph": "uni21A2.ex", + "startConnector": 386, + "endConnector": 386, + "advance": 386, + "extender": true + }, + { + "glyph": "uni21A2.rt", + "startConnector": 193, + "endConnector": 0, + "advance": 580, + "extender": false + } + ] + }, + "uni21A3": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A3.lft", + "startConnector": 0, + "endConnector": 193, + "advance": 580, + "extender": false + }, + { + "glyph": "uni21A3.ex", + "startConnector": 386, + "endConnector": 386, + "advance": 386, + "extender": true + }, + { + "glyph": "uni21A3.rt", + "startConnector": 193, + "endConnector": 0, + "advance": 580, + "extender": false + } + ] + }, + "uni21A4": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A4.lft", + "startConnector": 0, + "endConnector": 167, + "advance": 499, + "extender": false + }, + { + "glyph": "uni21A4.ex", + "startConnector": 333, + "endConnector": 333, + "advance": 333, + "extender": true + }, + { + "glyph": "uni21A4.rt", + "startConnector": 167, + "endConnector": 0, + "advance": 499, + "extender": false + } + ] + }, + "uni21A6": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A6.lft", + "startConnector": 0, + "endConnector": 167, + "advance": 499, + "extender": false + }, + { + "glyph": "uni21A6.ex", + "startConnector": 333, + "endConnector": 333, + "advance": 333, + "extender": true + }, + { + "glyph": "uni21A6.rt", + "startConnector": 167, + "endConnector": 0, + "advance": 499, + "extender": false + } + ] + }, + "uni21AA": { + "italic": 0, + "parts": [ + { + "glyph": "uni21AA.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21AA.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21AA.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21A9": { + "italic": 0, + "parts": [ + { + "glyph": "uni21A9.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21A9.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21A9.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21AC": { + "italic": 0, + "parts": [ + { + "glyph": "uni21AC.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21AC.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21AC.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21AB": { + "italic": 0, + "parts": [ + { + "glyph": "uni21AB.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21AB.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21AB.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21BC": { + "italic": 0, + "parts": [ + { + "glyph": "uni21BC.lft", + "startConnector": 0, + "endConnector": 171, + "advance": 513, + "extender": false + }, + { + "glyph": "uni21BC.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21BC.rt", + "startConnector": 171, + "endConnector": 0, + "advance": 512, + "extender": false + } + ] + }, + "uni21C0": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C0.lft", + "startConnector": 0, + "endConnector": 171, + "advance": 512, + "extender": false + }, + { + "glyph": "uni21C0.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21C0.rt", + "startConnector": 171, + "endConnector": 0, + "advance": 513, + "extender": false + } + ] + }, + "uni21BD": { + "italic": 0, + "parts": [ + { + "glyph": "uni21BD.lft", + "startConnector": 0, + "endConnector": 171, + "advance": 512, + "extender": false + }, + { + "glyph": "uni21BD.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21BD.rt", + "startConnector": 171, + "endConnector": 0, + "advance": 513, + "extender": false + } + ] + }, + "uni21C1": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C1.lft", + "startConnector": 0, + "endConnector": 171, + "advance": 512, + "extender": false + }, + { + "glyph": "uni21C1.ex", + "startConnector": 341, + "endConnector": 341, + "advance": 341, + "extender": true + }, + { + "glyph": "uni21C1.rt", + "startConnector": 171, + "endConnector": 0, + "advance": 513, + "extender": false + } + ] + }, + "uni21C4": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C4.lft", + "startConnector": 0, + "endConnector": 172, + "advance": 515, + "extender": false + }, + { + "glyph": "uni21C4.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21C4.rt", + "startConnector": 172, + "endConnector": 0, + "advance": 514, + "extender": false + } + ] + }, + "uni21C6": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C6.lft", + "startConnector": 0, + "endConnector": 172, + "advance": 514, + "extender": false + }, + { + "glyph": "uni21C6.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21C6.rt", + "startConnector": 172, + "endConnector": 0, + "advance": 515, + "extender": false + } + ] + }, + "uni21C7": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C7.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21C7.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21C7.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21C9": { + "italic": 0, + "parts": [ + { + "glyph": "uni21C9.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21C9.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21C9.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21F6": { + "italic": 0, + "parts": [ + { + "glyph": "uni21F6.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni21F6.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21F6.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni2B31": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B31.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 507, + "extender": false + }, + { + "glyph": "uni2B31.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni2B31.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 507, + "extender": false + } + ] + }, + "uni21CB": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CB.lft", + "startConnector": 0, + "endConnector": 172, + "advance": 515, + "extender": false + }, + { + "glyph": "uni21CB.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21CB.rt", + "startConnector": 172, + "endConnector": 0, + "advance": 514, + "extender": false + } + ] + }, + "uni21CC": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CC.lft", + "startConnector": 0, + "endConnector": 172, + "advance": 514, + "extender": false + }, + { + "glyph": "uni21CC.ex", + "startConnector": 343, + "endConnector": 343, + "advance": 343, + "extender": true + }, + { + "glyph": "uni21CC.rt", + "startConnector": 172, + "endConnector": 0, + "advance": 515, + "extender": false + } + ] + }, + "arrowdblleft": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdblleft.lft", + "startConnector": 0, + "endConnector": 168, + "advance": 504, + "extender": false + }, + { + "glyph": "arrowdblleft.ex", + "startConnector": 336, + "endConnector": 336, + "advance": 336, + "extender": true + }, + { + "glyph": "arrowdblleft.rt", + "startConnector": 168, + "endConnector": 0, + "advance": 505, + "extender": false + } + ] + }, + "arrowdblright": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdblright.lft", + "startConnector": 0, + "endConnector": 168, + "advance": 505, + "extender": false + }, + { + "glyph": "arrowdblright.ex", + "startConnector": 336, + "endConnector": 336, + "advance": 336, + "extender": true + }, + { + "glyph": "arrowdblright.rt", + "startConnector": 168, + "endConnector": 0, + "advance": 504, + "extender": false + } + ] + }, + "arrowdblboth": { + "italic": 0, + "parts": [ + { + "glyph": "arrowdblboth.lft", + "startConnector": 0, + "endConnector": 178, + "advance": 533, + "extender": false + }, + { + "glyph": "arrowdblboth.ex", + "startConnector": 356, + "endConnector": 356, + "advance": 356, + "extender": true + }, + { + "glyph": "arrowdblboth.rt", + "startConnector": 178, + "endConnector": 0, + "advance": 533, + "extender": false + } + ] + }, + "uni21CD": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CD.lft", + "startConnector": 0, + "endConnector": 49, + "advance": 384, + "extender": false + }, + { + "glyph": "uni21CD.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni21CD.md", + "startConnector": 49, + "endConnector": 49, + "advance": 384, + "extender": false + }, + { + "glyph": "uni21CD.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni21CD.rt", + "startConnector": 49, + "endConnector": 0, + "advance": 384, + "extender": false + } + ] + }, + "uni21CF": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CF.lft", + "startConnector": 0, + "endConnector": 49, + "advance": 384, + "extender": false + }, + { + "glyph": "uni21CF.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni21CF.md", + "startConnector": 49, + "endConnector": 49, + "advance": 384, + "extender": false + }, + { + "glyph": "uni21CF.ex", + "startConnector": 97, + "endConnector": 97, + "advance": 97, + "extender": true + }, + { + "glyph": "uni21CF.rt", + "startConnector": 49, + "endConnector": 0, + "advance": 384, + "extender": false + } + ] + }, + "uni21CE": { + "italic": 0, + "parts": [ + { + "glyph": "uni21CE.lft", + "startConnector": 0, + "endConnector": 51, + "advance": 406, + "extender": false + }, + { + "glyph": "uni21CE.ex", + "startConnector": 102, + "endConnector": 102, + "advance": 102, + "extender": true + }, + { + "glyph": "uni21CE.md", + "startConnector": 51, + "endConnector": 51, + "advance": 406, + "extender": false + }, + { + "glyph": "uni21CE.ex", + "startConnector": 102, + "endConnector": 102, + "advance": 102, + "extender": true + }, + { + "glyph": "uni21CE.rt", + "startConnector": 51, + "endConnector": 0, + "advance": 406, + "extender": false + } + ] + }, + "uni2906": { + "italic": 0, + "parts": [ + { + "glyph": "uni2906.lft", + "startConnector": 0, + "endConnector": 166, + "advance": 497, + "extender": false + }, + { + "glyph": "uni2906.ex", + "startConnector": 331, + "endConnector": 331, + "advance": 331, + "extender": true + }, + { + "glyph": "uni2906.rt", + "startConnector": 166, + "endConnector": 0, + "advance": 497, + "extender": false + } + ] + }, + "uni2907": { + "italic": 0, + "parts": [ + { + "glyph": "uni2907.lft", + "startConnector": 0, + "endConnector": 166, + "advance": 497, + "extender": false + }, + { + "glyph": "uni2907.ex", + "startConnector": 331, + "endConnector": 331, + "advance": 331, + "extender": true + }, + { + "glyph": "uni2907.rt", + "startConnector": 166, + "endConnector": 0, + "advance": 497, + "extender": false + } + ] + }, + "uni21DA": { + "italic": 0, + "parts": [ + { + "glyph": "uni21DA.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 506, + "extender": false + }, + { + "glyph": "uni21DA.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21DA.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 506, + "extender": false + } + ] + }, + "uni21DB": { + "italic": 0, + "parts": [ + { + "glyph": "uni21DB.lft", + "startConnector": 0, + "endConnector": 169, + "advance": 506, + "extender": false + }, + { + "glyph": "uni21DB.ex", + "startConnector": 337, + "endConnector": 337, + "advance": 337, + "extender": true + }, + { + "glyph": "uni21DB.rt", + "startConnector": 169, + "endConnector": 0, + "advance": 506, + "extender": false + } + ] + }, + "uni21E6": { + "italic": 0, + "parts": [ + { + "glyph": "uni21E6.lft", + "startConnector": 0, + "endConnector": 173, + "advance": 519, + "extender": false + }, + { + "glyph": "uni21E6.ex", + "startConnector": 346, + "endConnector": 346, + "advance": 346, + "extender": true + }, + { + "glyph": "uni21E6.rt", + "startConnector": 173, + "endConnector": 0, + "advance": 519, + "extender": false + } + ] + }, + "uni21E8": { + "italic": 0, + "parts": [ + { + "glyph": "uni21E8.lft", + "startConnector": 0, + "endConnector": 173, + "advance": 519, + "extender": false + }, + { + "glyph": "uni21E8.ex", + "startConnector": 346, + "endConnector": 346, + "advance": 346, + "extender": true + }, + { + "glyph": "uni21E8.rt", + "startConnector": 173, + "endConnector": 0, + "advance": 519, + "extender": false + } + ] + }, + "uni2B04": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B04.lft", + "startConnector": 0, + "endConnector": 175, + "advance": 524, + "extender": false + }, + { + "glyph": "uni2B04.ex", + "startConnector": 349, + "endConnector": 349, + "advance": 349, + "extender": true + }, + { + "glyph": "uni2B04.rt", + "startConnector": 175, + "endConnector": 0, + "advance": 523, + "extender": false + } + ] + }, + "uni2B05": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B05.lft", + "startConnector": 0, + "endConnector": 164, + "advance": 492, + "extender": false + }, + { + "glyph": "uni2B05.ex", + "startConnector": 327, + "endConnector": 327, + "advance": 327, + "extender": true + }, + { + "glyph": "uni2B05.rt", + "startConnector": 164, + "endConnector": 0, + "advance": 492, + "extender": false + } + ] + }, + "uni27A1": { + "italic": 0, + "parts": [ + { + "glyph": "uni27A1.lft", + "startConnector": 0, + "endConnector": 164, + "advance": 492, + "extender": false + }, + { + "glyph": "uni27A1.ex", + "startConnector": 327, + "endConnector": 327, + "advance": 327, + "extender": true + }, + { + "glyph": "uni27A1.rt", + "startConnector": 164, + "endConnector": 0, + "advance": 492, + "extender": false + } + ] + }, + "uni2B0C": { + "italic": 0, + "parts": [ + { + "glyph": "uni2B0C.lft", + "startConnector": 0, + "endConnector": 161, + "advance": 484, + "extender": false + }, + { + "glyph": "uni2B0C.ex", + "startConnector": 322, + "endConnector": 322, + "advance": 322, + "extender": true + }, + { + "glyph": "uni2B0C.rt", + "startConnector": 161, + "endConnector": 0, + "advance": 484, + "extender": false + } + ] + }, + "lowlinecmb": { + "italic": 0, + "parts": [ + { + "glyph": "lowlinecmb.lft", + "startConnector": 0, + "endConnector": 95, + "advance": 189, + "extender": false + }, + { + "glyph": "lowlinecmb.ex", + "startConnector": 190, + "endConnector": 190, + "advance": 190, + "extender": true + }, + { + "glyph": "lowlinecmb.rt", + "startConnector": 95, + "endConnector": 0, + "advance": 189, + "extender": false + } + ] + }, + "dbllowlinecmb": { + "italic": 0, + "parts": [ + { + "glyph": "dbllowlinecmb.lft", + "startConnector": 0, + "endConnector": 95, + "advance": 189, + "extender": false + }, + { + "glyph": "dbllowlinecmb.ex", + "startConnector": 190, + "endConnector": 190, + "advance": 190, + "extender": true + }, + { + "glyph": "dbllowlinecmb.rt", + "startConnector": 95, + "endConnector": 0, + "advance": 189, + "extender": false + } + ] + }, + "overlinecmb": { + "italic": 0, + "parts": [ + { + "glyph": "overlinecmb.lft", + "startConnector": 0, + "endConnector": 95, + "advance": 189, + "extender": false + }, + { + "glyph": "overlinecmb.ex", + "startConnector": 190, + "endConnector": 190, + "advance": 190, + "extender": true + }, + { + "glyph": "overlinecmb.rt", + "startConnector": 95, + "endConnector": 0, + "advance": 189, + "extender": false + } + ] + }, + "dbloverlinecmb": { + "italic": 0, + "parts": [ + { + "glyph": "dbloverlinecmb.lft", + "startConnector": 0, + "endConnector": 95, + "advance": 189, + "extender": false + }, + { + "glyph": "dbloverlinecmb.ex", + "startConnector": 190, + "endConnector": 190, + "advance": 190, + "extender": true + }, + { + "glyph": "dbloverlinecmb.rt", + "startConnector": 95, + "endConnector": 0, + "advance": 189, + "extender": false + } + ] + }, + "uni23DE": { + "italic": 0, + "parts": [ + { + "glyph": "uni23DE.lft", + "startConnector": 0, + "endConnector": 497, + "advance": 1002, + "extender": false + }, + { + "glyph": "uni23DE.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DE.md", + "startConnector": 497, + "endConnector": 497, + "advance": 2003, + "extender": false + }, + { + "glyph": "uni23DE.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DE.rt", + "startConnector": 497, + "endConnector": 0, + "advance": 1001, + "extender": false + } + ] + }, + "uni23DF": { + "italic": 0, + "parts": [ + { + "glyph": "uni23DF.lft", + "startConnector": 0, + "endConnector": 497, + "advance": 1002, + "extender": false + }, + { + "glyph": "uni23DF.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DF.md", + "startConnector": 497, + "endConnector": 497, + "advance": 2003, + "extender": false + }, + { + "glyph": "uni23DF.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DF.rt", + "startConnector": 497, + "endConnector": 0, + "advance": 1001, + "extender": false + } + ] + }, + "uni23DC": { + "italic": 0, + "parts": [ + { + "glyph": "uni23DC.lft", + "startConnector": 0, + "endConnector": 497, + "advance": 2016, + "extender": false + }, + { + "glyph": "uni23DC.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DC.rt", + "startConnector": 497, + "endConnector": 0, + "advance": 2016, + "extender": false + } + ] + }, + "uni23DD": { + "italic": 0, + "parts": [ + { + "glyph": "uni23DD.lft", + "startConnector": 0, + "endConnector": 497, + "advance": 2016, + "extender": false + }, + { + "glyph": "uni23DD.ex", + "startConnector": 994, + "endConnector": 994, + "advance": 994, + "extender": true + }, + { + "glyph": "uni23DD.rt", + "startConnector": 497, + "endConnector": 0, + "advance": 2016, + "extender": false + } + ] + }, + "uni23B4": { + "italic": 0, + "parts": [ + { + "glyph": "uni23B4.lft", + "startConnector": 0, + "endConnector": 498, + "advance": 1493, + "extender": false + }, + { + "glyph": "uni23B4.ex", + "startConnector": 995, + "endConnector": 995, + "advance": 995, + "extender": true + }, + { + "glyph": "uni23B4.rt", + "startConnector": 498, + "endConnector": 0, + "advance": 1492, + "extender": false + } + ] + }, + "uni23B5": { + "italic": 0, + "parts": [ + { + "glyph": "uni23B5.lft", + "startConnector": 0, + "endConnector": 498, + "advance": 1493, + "extender": false + }, + { + "glyph": "uni23B5.ex", + "startConnector": 995, + "endConnector": 995, + "advance": 995, + "extender": true + }, + { + "glyph": "uni23B5.rt", + "startConnector": 498, + "endConnector": 0, + "advance": 1492, + "extender": false + } + ] + }, + "uni23E0": { + "italic": 0, + "parts": [ + { + "glyph": "uni23E0.lft", + "startConnector": 0, + "endConnector": 680, + "advance": 2041, + "extender": false + }, + { + "glyph": "uni23E0.ex", + "startConnector": 1360, + "endConnector": 1360, + "advance": 1360, + "extender": true + }, + { + "glyph": "uni23E0.rt", + "startConnector": 680, + "endConnector": 0, + "advance": 2041, + "extender": false + } + ] + }, + "uni23E1": { + "italic": 0, + "parts": [ + { + "glyph": "uni23E1.lft", + "startConnector": 0, + "endConnector": 680, + "advance": 2041, + "extender": false + }, + { + "glyph": "uni23E1.ex", + "startConnector": 1360, + "endConnector": 1360, + "advance": 1360, + "extender": true + }, + { + "glyph": "uni23E1.rt", + "startConnector": 680, + "endConnector": 0, + "advance": 2041, + "extender": false + } + ] + }, + "uni20E9": { + "italic": 0, + "parts": [ + { + "glyph": "uni23B4.lft", + "startConnector": 0, + "endConnector": 498, + "advance": 1493, + "extender": false + }, + { + "glyph": "uni23B4.ex", + "startConnector": 995, + "endConnector": 995, + "advance": 995, + "extender": true + }, + { + "glyph": "uni23B4.rt", + "startConnector": 498, + "endConnector": 0, + "advance": 1492, + "extender": false + } + ] + }, + "minus": { + "italic": 0, + "parts": [ + { + "glyph": "minus.lft", + "startConnector": 0, + "endConnector": 111, + "advance": 222, + "extender": false + }, + { + "glyph": "minus.ex", + "startConnector": 222, + "endConnector": 222, + "advance": 222, + "extender": true + }, + { + "glyph": "minus.rt", + "startConnector": 111, + "endConnector": 0, + "advance": 222, + "extender": false + } + ] + }, + "equivalence": { + "italic": 0, + "parts": [ + { + "glyph": "equivalence.lft", + "startConnector": 0, + "endConnector": 111, + "advance": 222, + "extender": false + }, + { + "glyph": "equivalence.ex", + "startConnector": 222, + "endConnector": 222, + "advance": 222, + "extender": true + }, + { + "glyph": "equivalence.rt", + "startConnector": 111, + "endConnector": 0, + "advance": 222, + "extender": false + } + ] + }, + "uni2263": { + "italic": 0, + "parts": [ + { + "glyph": "uni2263.lft", + "startConnector": 0, + "endConnector": 111, + "advance": 222, + "extender": false + }, + { + "glyph": "uni2263.ex", + "startConnector": 222, + "endConnector": 222, + "advance": 222, + "extender": true + }, + { + "glyph": "uni2263.rt", + "startConnector": 111, + "endConnector": 0, + "advance": 222, + "extender": false + } + ] + } } } \ No newline at end of file diff --git a/CSharpMath.Core.Tests/CSharpMath.Core.Tests.csproj b/CSharpMath.Core.Tests/CSharpMath.Core.Tests.csproj index a95f97367..5ad0a8d5f 100644 --- a/CSharpMath.Core.Tests/CSharpMath.Core.Tests.csproj +++ b/CSharpMath.Core.Tests/CSharpMath.Core.Tests.csproj @@ -1,4 +1,4 @@ - + diff --git a/CSharpMath.Core.Tests/Display/TypesetterTests.cs b/CSharpMath.Core.Tests/Display/TypesetterTests.cs index fde7acae7..1e6b0d1df 100644 --- a/CSharpMath.Core.Tests/Display/TypesetterTests.cs +++ b/CSharpMath.Core.Tests/Display/TypesetterTests.cs @@ -486,6 +486,62 @@ public void TestAccent() => })(accent.Accentee); }); [Fact] + public void TestUnderAnnotation() => + TestOuter(@"\underbrace {x}_{y}", 1, 14, 43.6, 10, d => { + var under = Assert.IsType>(d); + Assert.Equal(new PointF(), under.Position); + var annotation = Assert.IsType>(under.AnnotationGlyph); + Assert.Equal(0, annotation.ShiftDown); + Assert.Equal((TGlyph)'\u23df', annotation.Glyph); + Approximately.Equal(new PointF(0, -4), annotation.Position); + Assert.False(annotation.HasScript); + Assert.Equal(Range.NotFound, annotation.Range); + TestList(1, 14, 4, 10, 0, 0, LinePosition.Regular, Range.UndefinedInt, + d => { + var line = Assert.IsType>(d); + Assert.Single(line.Atoms); + Assert.Equal("𝑥", string.Concat(line.Text)); + Assert.Equal(new PointF(), line.Position); + Assert.False(line.HasScript); + })(under.Inner); + TestList(1, 9.8, 2.8, 7, 1.5, -36.8, LinePosition.Regular, Range.UndefinedInt, + d => { + var line = Assert.IsType>(d); + Assert.Single(line.Atoms); + Assert.Equal("𝑦", string.Concat(line.Text)); + Assert.Equal(new PointF(), line.Position); + Assert.False(line.HasScript); + })(under.UnderList); + }); + [Fact] + public void TestUnderAnnotation2() => + TestOuter(@"\underbrace {xxxxx}_{y}", 5, 14, 43.6, 50, d => { + var under = Assert.IsType>(d); + Assert.Equal(new PointF(), under.Position); + var annotation = Assert.IsType>(under.AnnotationGlyph); + Assert.Equal(0, annotation.ShiftDown); + Approximately.Equal(new PointF(0, -4), annotation.Position); + Assert.False(annotation.HasScript); + Assert.Equal(Range.NotFound, annotation.Range); + TestList(5, 14, 4, 50, 0, 0, LinePosition.Regular, Range.UndefinedInt, + d => { + var line = Assert.IsType>(d); + Assert.Equal(5, line.Atoms.Count); + Assert.All(line.Atoms, a => Assert.IsType(a)); + Assert.Equal("𝑥𝑥𝑥𝑥𝑥", string.Concat(line.Text)); + Assert.Equal(new PointF(), line.Position); + Assert.False(line.HasScript); + })(under.Inner); + TestList(1, 9.8, 2.8, 7, 21.5, -36.8, LinePosition.Regular, Range.UndefinedInt, + d => { + var line = Assert.IsType>(d); + Assert.Single(line.Atoms); + Assert.Equal("𝑦", string.Concat(line.Text)); + Assert.Equal(new PointF(), line.Position); + Assert.False(line.HasScript); + })(under.UnderList); + }); + [Fact] public void TestColor() => TestOuter(@"\color{red}\color{blue}x\colorbox{yellow}\colorbox{green}yz", 3, 14, 4, 30, l1 => { diff --git a/CSharpMath/Display/Typesetter.cs b/CSharpMath/Display/Typesetter.cs index ea0b4dae3..b4a262446 100644 --- a/CSharpMath/Display/Typesetter.cs +++ b/CSharpMath/Display/Typesetter.cs @@ -790,7 +790,7 @@ private UnderAnnotationDisplay MakeUnderAnnotation(UnderAnnotatio using var singleGlyph = new RentedArray(glyphs[0]); // descent:0 because it's up to the rendering to adjust the display glyph up or down by setting ShiftDown return new HorizontalGlyphConstructionDisplay - (glyphs, offsets, _styleFont, glyphAscent, glyphDescent, width); + (glyphs, offsets, _styleFont, glyphAscent, glyphDescent, width) { Range = Range.NotFound }; } private float ConstructHorizontalGlyphWithParts(IEnumerable> parts, From ee314a724848f836e13ffb03dd0f3d79c3b95bbc Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 20:29:24 +0800 Subject: [PATCH 14/29] Format --- CSharpMath.Rendering/PublicAPI.Unshipped.txt | 1 + CSharpMath/PublicAPI.Unshipped.txt | 54 ++++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/CSharpMath.Rendering/PublicAPI.Unshipped.txt b/CSharpMath.Rendering/PublicAPI.Unshipped.txt index f1581fa84..3f418b4b3 100644 --- a/CSharpMath.Rendering/PublicAPI.Unshipped.txt +++ b/CSharpMath.Rendering/PublicAPI.Unshipped.txt @@ -304,6 +304,7 @@ override CSharpMath.Rendering.BackEnd.MathTable.FractionNumeratorDisplayStyleShi override CSharpMath.Rendering.BackEnd.MathTable.FractionNumeratorGapMin(CSharpMath.Rendering.BackEnd.Fonts! fonts) -> float override CSharpMath.Rendering.BackEnd.MathTable.FractionNumeratorShiftUp(CSharpMath.Rendering.BackEnd.Fonts! fonts) -> float override CSharpMath.Rendering.BackEnd.MathTable.FractionRuleThickness(CSharpMath.Rendering.BackEnd.Fonts! fonts) -> float +override CSharpMath.Rendering.BackEnd.MathTable.GetHorizontalGlyphAssembly(CSharpMath.Rendering.BackEnd.Glyph rawGlyph, CSharpMath.Rendering.BackEnd.Fonts! fonts) -> System.Collections.Generic.IEnumerable!>? override CSharpMath.Rendering.BackEnd.MathTable.GetHorizontalVariantsForGlyph(CSharpMath.Rendering.BackEnd.Glyph rawGlyph) -> (System.Collections.Generic.IEnumerable! variants, int count) override CSharpMath.Rendering.BackEnd.MathTable.GetItalicCorrection(CSharpMath.Rendering.BackEnd.Fonts! fonts, CSharpMath.Rendering.BackEnd.Glyph glyph) -> float override CSharpMath.Rendering.BackEnd.MathTable.GetLargerGlyph(CSharpMath.Rendering.BackEnd.Fonts! fonts, CSharpMath.Rendering.BackEnd.Glyph glyph) -> CSharpMath.Rendering.BackEnd.Glyph diff --git a/CSharpMath/PublicAPI.Unshipped.txt b/CSharpMath/PublicAPI.Unshipped.txt index 15c52e217..67fa5fc4f 100644 --- a/CSharpMath/PublicAPI.Unshipped.txt +++ b/CSharpMath/PublicAPI.Unshipped.txt @@ -12,6 +12,7 @@ abstract CSharpMath.Display.FrontEnd.FontMathTable.FractionNumera abstract CSharpMath.Display.FrontEnd.FontMathTable.FractionNumeratorGapMin(TFont font) -> float abstract CSharpMath.Display.FrontEnd.FontMathTable.FractionNumeratorShiftUp(TFont font) -> float abstract CSharpMath.Display.FrontEnd.FontMathTable.FractionRuleThickness(TFont font) -> float +abstract CSharpMath.Display.FrontEnd.FontMathTable.GetHorizontalGlyphAssembly(TGlyph rawGlyph, TFont font) -> System.Collections.Generic.IEnumerable!>? abstract CSharpMath.Display.FrontEnd.FontMathTable.GetHorizontalVariantsForGlyph(TGlyph rawGlyph) -> (System.Collections.Generic.IEnumerable! variants, int count) abstract CSharpMath.Display.FrontEnd.FontMathTable.GetItalicCorrection(TFont font, TGlyph glyph) -> float abstract CSharpMath.Display.FrontEnd.FontMathTable.GetLargerGlyph(TFont font, TGlyph glyph) -> TGlyph @@ -185,6 +186,13 @@ CSharpMath.Atom.Atoms.UnaryOperator CSharpMath.Atom.Atoms.UnaryOperator.Clone(bool finalize) -> CSharpMath.Atom.Atoms.UnaryOperator! CSharpMath.Atom.Atoms.UnaryOperator.ToOrdinary() -> CSharpMath.Atom.Atoms.Ordinary! CSharpMath.Atom.Atoms.UnaryOperator.UnaryOperator(string! nucleus) -> void +CSharpMath.Atom.Atoms.UnderAnnotation +CSharpMath.Atom.Atoms.UnderAnnotation.Clone(bool finalize) -> CSharpMath.Atom.Atoms.UnderAnnotation! +CSharpMath.Atom.Atoms.UnderAnnotation.EqualsUnderAnnotation(CSharpMath.Atom.Atoms.UnderAnnotation! other) -> bool +CSharpMath.Atom.Atoms.UnderAnnotation.InnerList.get -> CSharpMath.Atom.MathList! +CSharpMath.Atom.Atoms.UnderAnnotation.UnderAnnotation(string! value, CSharpMath.Atom.MathList? innerList = null, CSharpMath.Atom.MathList? underList = null) -> void +CSharpMath.Atom.Atoms.UnderAnnotation.UnderList.get -> CSharpMath.Atom.MathList? +CSharpMath.Atom.Atoms.UnderAnnotation.UnderList.set -> void CSharpMath.Atom.Atoms.Underline CSharpMath.Atom.Atoms.Underline.Clone(bool finalize) -> CSharpMath.Atom.Atoms.Underline! CSharpMath.Atom.Atoms.Underline.EqualsUnderline(CSharpMath.Atom.Atoms.Underline! other) -> bool @@ -493,6 +501,27 @@ CSharpMath.Display.Displays.GlyphDisplay.ShiftDown.set -> void CSharpMath.Display.Displays.GlyphDisplay.TextColor.get -> System.Drawing.Color? CSharpMath.Display.Displays.GlyphDisplay.TextColor.set -> void CSharpMath.Display.Displays.GlyphDisplay.Width.get -> float +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Ascent.get -> float +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.BackColor.get -> System.Drawing.Color? +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.BackColor.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Descent.get -> float +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Draw(CSharpMath.Display.FrontEnd.IGraphicsContext! context) -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Font.get -> TFont +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.HasScript.get -> bool +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.HasScript.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.HorizontalGlyphConstructionDisplay(System.Collections.Generic.IReadOnlyList! glyphs, System.Collections.Generic.IEnumerable! offsets, TFont font, float ascent, float descent, float width) -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Position.get -> System.Drawing.PointF +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Position.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Range.get -> CSharpMath.Atom.Range +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Range.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.SetPosition(System.Drawing.PointF position) -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.SetTextColorRecursive(System.Drawing.Color? textColor) -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.ShiftDown.get -> float +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.ShiftDown.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.TextColor.get -> System.Drawing.Color? +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.TextColor.set -> void +CSharpMath.Display.Displays.HorizontalGlyphConstructionDisplay.Width.get -> float CSharpMath.Display.Displays.InnerDisplay CSharpMath.Display.Displays.InnerDisplay.Ascent.get -> float CSharpMath.Display.Displays.InnerDisplay.BackColor.get -> System.Drawing.Color? @@ -636,6 +665,25 @@ CSharpMath.Display.Displays.TextRunDisplay.TextColor.get -> Syste CSharpMath.Display.Displays.TextRunDisplay.TextColor.set -> void CSharpMath.Display.Displays.TextRunDisplay.TextRunDisplay(CSharpMath.Display.AttributedGlyphRun! run, CSharpMath.Atom.Range range, CSharpMath.Display.FrontEnd.TypesettingContext! context) -> void CSharpMath.Display.Displays.TextRunDisplay.Width.get -> float +CSharpMath.Display.Displays.UnderAnnotationDisplay +CSharpMath.Display.Displays.UnderAnnotationDisplay.AnnotationGlyph.get -> CSharpMath.Display.IGlyphDisplay! +CSharpMath.Display.Displays.UnderAnnotationDisplay.Ascent.get -> float +CSharpMath.Display.Displays.UnderAnnotationDisplay.BackColor.get -> System.Drawing.Color? +CSharpMath.Display.Displays.UnderAnnotationDisplay.BackColor.set -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.Descent.get -> float +CSharpMath.Display.Displays.UnderAnnotationDisplay.Draw(CSharpMath.Display.FrontEnd.IGraphicsContext! context) -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.HasScript.get -> bool +CSharpMath.Display.Displays.UnderAnnotationDisplay.HasScript.set -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.Inner.get -> CSharpMath.Display.IDisplay! +CSharpMath.Display.Displays.UnderAnnotationDisplay.Position.get -> System.Drawing.PointF +CSharpMath.Display.Displays.UnderAnnotationDisplay.Position.set -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.Range.get -> CSharpMath.Atom.Range +CSharpMath.Display.Displays.UnderAnnotationDisplay.SetTextColorRecursive(System.Drawing.Color? textColor) -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.TextColor.get -> System.Drawing.Color? +CSharpMath.Display.Displays.UnderAnnotationDisplay.TextColor.set -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.UnderAnnotationDisplay(CSharpMath.Display.IDisplay! inner, CSharpMath.Display.IDisplay? underList, CSharpMath.Display.IGlyphDisplay! annotationGlyph, float underListBasedDescent, System.Drawing.PointF position) -> void +CSharpMath.Display.Displays.UnderAnnotationDisplay.UnderList.get -> CSharpMath.Display.IDisplay? +CSharpMath.Display.Displays.UnderAnnotationDisplay.Width.get -> float CSharpMath.Display.FrontEnd.FontMathTable CSharpMath.Display.FrontEnd.FontMathTable.FontMathTable() -> void CSharpMath.Display.FrontEnd.FontMathTable.GetStyleSize(CSharpMath.Atom.LineStyle style, TFont font) -> float @@ -1037,9 +1085,6 @@ override CSharpMath.Atom.Atoms.Overline.Equals(object! obj) -> bool override CSharpMath.Atom.Atoms.Overline.GetHashCode() -> int override CSharpMath.Atom.Atoms.Overline.ScriptsAllowed.get -> bool override CSharpMath.Atom.Atoms.Placeholder.ScriptsAllowed.get -> bool -override CSharpMath.Atom.Atoms.Prime.Equals(object! obj) -> bool -override CSharpMath.Atom.Atoms.Prime.GetHashCode() -> int -override CSharpMath.Atom.Atoms.Prime.ScriptsAllowed.get -> bool override CSharpMath.Atom.Atoms.Punctuation.ScriptsAllowed.get -> bool override CSharpMath.Atom.Atoms.Radical.DebugString.get -> string! override CSharpMath.Atom.Atoms.Radical.GetHashCode() -> int @@ -1060,6 +1105,8 @@ override CSharpMath.Atom.Atoms.Table.Equals(object! obj) -> bool override CSharpMath.Atom.Atoms.Table.GetHashCode() -> int override CSharpMath.Atom.Atoms.Table.ScriptsAllowed.get -> bool override CSharpMath.Atom.Atoms.UnaryOperator.ScriptsAllowed.get -> bool +override CSharpMath.Atom.Atoms.UnderAnnotation.DebugString.get -> string! +override CSharpMath.Atom.Atoms.UnderAnnotation.ScriptsAllowed.get -> bool override CSharpMath.Atom.Atoms.Underline.DebugString.get -> string! override CSharpMath.Atom.Atoms.Underline.Equals(object! obj) -> bool override CSharpMath.Atom.Atoms.Underline.GetHashCode() -> int @@ -1090,6 +1137,7 @@ override CSharpMath.Display.Displays.OverOrUnderlineDisplay.ToStr override CSharpMath.Display.Displays.RadicalDisplay.ToString() -> string! override CSharpMath.Display.Displays.TextLineDisplay.ToString() -> string! override CSharpMath.Display.Displays.TextRunDisplay.ToString() -> string! +override CSharpMath.Display.Displays.UnderAnnotationDisplay.ToString() -> string! override CSharpMath.Display.GlyphPart.ToString() -> string! override CSharpMath.Editor.MathListIndex.Equals(object! obj) -> bool override CSharpMath.Editor.MathListIndex.GetHashCode() -> int From 24712baed02600091c3eecc8d084c8db822405d5 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 22:54:42 +0800 Subject: [PATCH 15/29] Fix head --- .github/workflows/Label.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 0f03bbb6e..c9ae24bec 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -12,7 +12,7 @@ jobs: if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | git fetch origin ${{ github.base_ref }} - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +29,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From d7a00f2e9caff0db2d4d7f0275a18fbbf9d86fcb Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 22:56:25 +0800 Subject: [PATCH 16/29] Use ref? --- .github/workflows/Label.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index c9ae24bec..cd12c17e2 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -12,7 +12,7 @@ jobs: if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | git fetch origin ${{ github.base_ref }} - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.ref }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -24,7 +24,7 @@ jobs: git fetch origin ${{ github.base_ref }} # Determine the appropriate label (Sync these labels with release-drafter.yml) - if ("${{ github.head_ref }}" -eq "action/ship-publicapi") { # Same branch name specified in Release.yml + if ("${{ github.ref }}" -eq "action/ship-publicapi") { # Same branch name specified in Release.yml $labels = @('Type/Housekeeping') Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { From 377f29eacca987904c889c3aa6c0213c0112088f Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 22:58:28 +0800 Subject: [PATCH 17/29] sha? --- .github/workflows/Label.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index cd12c17e2..1daf143d2 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -12,7 +12,7 @@ jobs: if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | git fetch origin ${{ github.base_ref }} - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.ref }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +29,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 3bce9c88ff94ae8990bbb71d0d29acab0e03c84f Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:04:54 +0800 Subject: [PATCH 18/29] Check out pull request HEAD commit? --- .github/workflows/Label.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 1daf143d2..64be5904c 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -8,11 +8,12 @@ jobs: - uses: actions/checkout@v6 with: submodules: recursive + ref: ${{ github.event.pull_request.head.sha }} # Check out the pull request HEAD commit instead of the merge commit - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | git fetch origin ${{ github.base_ref }} - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +30,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From d2ca42e20ff804e2cf5a096cac050ef6490a8aa3 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:15:15 +0800 Subject: [PATCH 19/29] fetch? --- .github/workflows/Label.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 64be5904c..1a3aa4223 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -8,12 +8,11 @@ jobs: - uses: actions/checkout@v6 with: submodules: recursive - ref: ${{ github.event.pull_request.head.sha }} # Check out the pull request HEAD commit instead of the merge commit - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - git fetch origin ${{ github.base_ref }} - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' + git fetch origin HEAD # By default, actions/checkout does not fetch commit history, we fetch it here + $changes = git diff --numstat --shortstat ${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." From 696dae07240d9ab9467d0624b58ac37f1d811675 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:17:04 +0800 Subject: [PATCH 20/29] Need origin? --- .github/workflows/Label.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 1a3aa4223..5795ae05e 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -12,7 +12,7 @@ jobs: if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | git fetch origin HEAD # By default, actions/checkout does not fetch commit history, we fetch it here - $changes = git diff --numstat --shortstat ${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." From 845104774471c1f824360b871ad2ffcb9f6f142f Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:27:30 +0800 Subject: [PATCH 21/29] Fetch all? --- .github/workflows/Label.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 5795ae05e..3457261ff 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -8,10 +8,10 @@ jobs: - uses: actions/checkout@v6 with: submodules: recursive + fetch-depth: 0 # fetch all commit history across all branches and tags - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - git fetch origin HEAD # By default, actions/checkout does not fetch commit history, we fetch it here $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { From 5fa386691f787f57010534fd423206ed7d11fbb1 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:36:30 +0800 Subject: [PATCH 22/29] Use base_ref and head_ref given commit history --- .github/workflows/Label.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 3457261ff..7097a9ddf 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -4,15 +4,17 @@ on: [pull_request] jobs: Label: runs-on: windows-latest + permissions: + pull-requests: write # allow adding a label to this pull request steps: - uses: actions/checkout@v6 with: submodules: recursive - fetch-depth: 0 # fetch all commit history across all branches and tags + fetch-depth: 0 # fetch all commit history across all branches and tags, instead of only one commit by default - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat ${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -21,15 +23,13 @@ jobs: shell: pwsh - name: Label based on PublicApi.Unshipped.txt run: | - git fetch origin ${{ github.base_ref }} - # Determine the appropriate label (Sync these labels with release-drafter.yml) if ("${{ github.ref }}" -eq "action/ship-publicapi") { # Same branch name specified in Release.yml $labels = @('Type/Housekeeping') Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Unshipped.txt' + $changes = git diff ${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 3109e54c52ca0d08ebedcc343fd59f1c4b5e0a3c Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:37:37 +0800 Subject: [PATCH 23/29] Still need origin huh --- .github/workflows/Label.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 7097a9ddf..a73392b63 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -14,7 +14,7 @@ jobs: - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - $changes = git diff --numstat --shortstat ${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +29,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff ${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 2d20ff301224be108a43e3adbf89d8e1891718ad Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:41:17 +0800 Subject: [PATCH 24/29] sha? --- .github/workflows/Label.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index a73392b63..1866f4883 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -14,7 +14,7 @@ jobs: - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +29,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...${{ github.head_ref }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 4f8f330480daab0802dd2ca776a5a78f55504eb3 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 12 Feb 2026 23:58:37 +0800 Subject: [PATCH 25/29] pull_request_target? --- .github/workflows/Label.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 1866f4883..763351935 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -1,6 +1,6 @@ name: Label breaking changes for semantic versioning -on: [pull_request] +on: [pull_request_target] # run on the merge target branch instead of the merge commit to grant pull-requests:write permission jobs: Label: runs-on: windows-latest @@ -8,13 +8,12 @@ jobs: pull-requests: write # allow adding a label to this pull request steps: - uses: actions/checkout@v6 - with: - submodules: recursive - fetch-depth: 0 # fetch all commit history across all branches and tags, instead of only one commit by default - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Shipped.txt' + $head = git rev-parse HEAD + Write-Output "HEAD is $head" + $changes = git diff --numstat --shortstat HEAD..${{ github.sha }} -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -29,7 +28,7 @@ jobs: Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff origin/${{ github.base_ref }}...${{ github.sha }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff HEAD..${{ github.sha }} -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 7012adf55907c73d5dad29478f21ec984d73e19f Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Fri, 13 Feb 2026 01:58:30 +0800 Subject: [PATCH 26/29] Fix Labeller? --- .github/workflows/Label.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/Label.yml b/.github/workflows/Label.yml index 763351935..cbfd1249d 100644 --- a/.github/workflows/Label.yml +++ b/.github/workflows/Label.yml @@ -8,12 +8,13 @@ jobs: pull-requests: write # allow adding a label to this pull request steps: - uses: actions/checkout@v6 + with: + fetch-depth: 0 # fetch all commit history and tags, instead of the default fetch of only one commit + ref: ${{ github.event.pull_request.head.sha }} # checkout the PR branch - name: If there are changes in PublicApi.Shipped.txt, fail the workflow if: github.head_ref != 'action/ship-publicapi' # Same branch name specified in Release.yml run: | - $head = git rev-parse HEAD - Write-Output "HEAD is $head" - $changes = git diff --numstat --shortstat HEAD..${{ github.sha }} -- '**/PublicApi.Shipped.txt' + $changes = git diff --numstat --shortstat origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Shipped.txt' Write-Output "$changes" if ($changes) { Write-Error "Changes detected in PublicApi.Shipped.txt files. Public API changes must be shipped through the release process, not in regular pull requests." @@ -22,13 +23,12 @@ jobs: shell: pwsh - name: Label based on PublicApi.Unshipped.txt run: | - # Determine the appropriate label (Sync these labels with release-drafter.yml) - if ("${{ github.ref }}" -eq "action/ship-publicapi") { # Same branch name specified in Release.yml + if ("${{ github.head_ref }}" -eq "action/ship-publicapi") { $labels = @('Type/Housekeeping') Write-Output "This is a ship-publicapi PR, labeling as Type/Maintenance" } else { # For regular PRs, check for API changes - $changes = git diff HEAD..${{ github.sha }} -- '**/PublicApi.Unshipped.txt' + $changes = git diff origin/${{ github.base_ref }}...HEAD -- '**/PublicApi.Unshipped.txt' Write-Output "$changes" if ($changes) { From 906323f2915eebaf9e1cfa0f5b1b6a0cea618f17 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Fri, 13 Feb 2026 02:43:10 +0800 Subject: [PATCH 27/29] Fix warnings? --- CSharpMath.Rendering/PublicAPI.Unshipped.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CSharpMath.Rendering/PublicAPI.Unshipped.txt b/CSharpMath.Rendering/PublicAPI.Unshipped.txt index 3f418b4b3..da0adb4fe 100644 --- a/CSharpMath.Rendering/PublicAPI.Unshipped.txt +++ b/CSharpMath.Rendering/PublicAPI.Unshipped.txt @@ -395,11 +395,6 @@ override CSharpMath.Rendering.Text.TextAtom.Style.SingleChar(CSharpMath.Atom.Fon override CSharpMath.Rendering.Text.TextAtom.Text.Equals(CSharpMath.Rendering.Text.TextAtom! atom) -> bool override CSharpMath.Rendering.Text.TextAtom.Text.GetHashCode() -> int override CSharpMath.Rendering.Text.TextAtom.Text.SingleChar(CSharpMath.Atom.FontStyle style) -> int? -override Typography.OpenFont.Bounds.ToString() -> string! -override Typography.OpenFont.CFF.Cff1GlyphData.ToString() -> string! -override Typography.OpenFont.Glyph.ToString() -> string! -override Typography.OpenFont.GlyphPointF.ToString() -> string! -override Typography.OpenFont.MathGlyphs.GlyphPartRecord.ToString() -> string! override Typography.OpenFont.MathGlyphs.MathGlyphVariantRecord.ToString() -> string! override Typography.OpenFont.MathGlyphs.MathKern.ToString() -> string! override Typography.OpenFont.MathGlyphs.MathValueRecord.ToString() -> string! @@ -2691,4 +2686,4 @@ virtual Typography.TextBreak.NewWordBreakHandlerDelegate.Invoke(Typography.TextB virtual Typography.TextBreak.WordVisitor.OnBreak() -> void virtual Typography.TextBreak.WordVisitor.SpanBreakInfo.get -> Typography.TextBreak.SpanBreakInfo! virtual Typography.TextBreak.WordVisitor.SpanBreakInfo.set -> void -virtual Typography.TextLayout.GlyphLayout.GlyphNotFoundHandler.Invoke(Typography.TextLayout.GlyphLayout! glyphLayout, int codepoint, int nextcodepoint) -> ushort \ No newline at end of file +virtual Typography.TextLayout.GlyphLayout.GlyphNotFoundHandler.Invoke(Typography.TextLayout.GlyphLayout! glyphLayout, int codepoint, int nextcodepoint) -> ushort From b9242ba2c083b6df5245abe94a9db23fc0765596 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Fri, 13 Feb 2026 03:56:14 +0800 Subject: [PATCH 28/29] Underbrace rendering tests --- CSharpMath.Maui.Example/ExamplesPage.xaml.cs | 1 - .../MathDisplay/Underbrace.png | Bin 0 -> 3209 bytes .../MathDisplay/UnderbraceSubscript.png | Bin 0 -> 12104 bytes .../UnderbraceSubscriptIntegral.png | Bin 0 -> 20354 bytes .../MathDisplay/Underline.png | Bin 3859 -> 3855 bytes .../MathInline/Underbrace.png | Bin 0 -> 3209 bytes .../MathInline/UnderbraceSubscript.png | Bin 0 -> 12100 bytes .../UnderbraceSubscriptIntegral.png | Bin 0 -> 15832 bytes .../TestRenderingMathData.cs | 4 +++- 9 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 CSharpMath.Rendering.Tests/MathDisplay/Underbrace.png create mode 100644 CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscript.png create mode 100644 CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscriptIntegral.png create mode 100644 CSharpMath.Rendering.Tests/MathInline/Underbrace.png create mode 100644 CSharpMath.Rendering.Tests/MathInline/UnderbraceSubscript.png create mode 100644 CSharpMath.Rendering.Tests/MathInline/UnderbraceSubscriptIntegral.png diff --git a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs index 33e3f34f9..f9f549a54 100644 --- a/CSharpMath.Maui.Example/ExamplesPage.xaml.cs +++ b/CSharpMath.Maui.Example/ExamplesPage.xaml.cs @@ -8,7 +8,6 @@ public partial class ExamplesPage : ContentPage { static Dictionary labels { get; } = new(); public ExamplesPage() { InitializeComponent(); - //TODO: uncomment, before merging this branch with master var mathViews = demoLabels.Concat(labels).Select(p => p.Value); foreach (var view in mathViews) { view.ErrorFontSize = view.FontSize * 0.8f; diff --git a/CSharpMath.Rendering.Tests/MathDisplay/Underbrace.png b/CSharpMath.Rendering.Tests/MathDisplay/Underbrace.png new file mode 100644 index 0000000000000000000000000000000000000000..f350c84d376bbf38202ddcce1949e21a6df92ce5 GIT binary patch literal 3209 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 ZV*jR=$aK{{?%-5PbyaPZa%G!W{{v4Ux3>TQ literal 0 HcmV?d00001 diff --git a/CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscriptIntegral.png b/CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscriptIntegral.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d71e91ce8a64af5633fb93eee51a7dec4d9b5d GIT binary patch literal 20354 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 literal 0 HcmV?d00001 diff --git a/CSharpMath.Rendering.Tests/MathDisplay/Underline.png b/CSharpMath.Rendering.Tests/MathDisplay/Underline.png index a888467bc03c590662d00f7e8dd96538de40eaea..62fba59f2a3ebe8c90541b7efbe244556cdce501 100644 GIT binary patch delta 3839 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 Bm#zQ+ delta 3843 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 FV1jVNet7@@ diff --git a/CSharpMath.Rendering.Tests/MathInline/Underbrace.png b/CSharpMath.Rendering.Tests/MathInline/Underbrace.png new file mode 100644 index 0000000000000000000000000000000000000000..f350c84d376bbf38202ddcce1949e21a6df92ce5 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/CSharpMath.Rendering.Tests/MathInline/UnderbraceSubscriptIntegral.png b/CSharpMath.Rendering.Tests/MathInline/UnderbraceSubscriptIntegral.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4daed81757b89ec5e51dee2e63f1b2089307c7 GIT binary patch literal 15832 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 literal 0 HcmV?d00001 diff --git a/CSharpMath.Rendering.Tests/TestRenderingMathData.cs b/CSharpMath.Rendering.Tests/TestRenderingMathData.cs index e193833b3..569e546e5 100644 --- a/CSharpMath.Rendering.Tests/TestRenderingMathData.cs +++ b/CSharpMath.Rendering.Tests/TestRenderingMathData.cs @@ -128,7 +128,9 @@ public sealed class TestRenderingMathData : TestRenderingSharedData Date: Fri, 13 Feb 2026 15:52:46 +0800 Subject: [PATCH 29/29] Fix image baselines --- .../MathDisplay/UnderbraceSubscript.png | Bin 12104 -> 12100 bytes .../MathDisplay/Underline.png | Bin 3855 -> 3859 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscript.png b/CSharpMath.Rendering.Tests/MathDisplay/UnderbraceSubscript.png index 745ec487b1c160384f5812e2f97d77b588cb3a31..aaab5e9792f70767f48d40ecb3e30c7beed77cce 100644 GIT binary patch delta 8114 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 P$4fMjI%-9#7XJSON`xXY delta 8110 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 diff --git a/CSharpMath.Rendering.Tests/MathDisplay/Underline.png b/CSharpMath.Rendering.Tests/MathDisplay/Underline.png index 62fba59f2a3ebe8c90541b7efbe244556cdce501..a888467bc03c590662d00f7e8dd96538de40eaea 100644 GIT binary patch delta 3843 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 FV1jVNet7@@ delta 3839 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 Bm#zQ+