Skip to content

Commit e3c4355

Browse files
committed
Re-introduce unicode chars for mathvariant.
But keep mathvariant attribute and the other changes made in response to #280. Tested in Safari, Firefox, and Chrome. Closes #280 (again)!
1 parent 73d511a commit e3c4355

28 files changed

+397
-390
lines changed

src/Text/TeXMath/Writers/MathML.hs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ where
2727
import Text.XML.Light
2828
import Text.TeXMath.Types
2929
import Data.Generics (everywhere, mkT)
30+
import Text.TeXMath.Unicode.ToUnicode (toUnicode)
3031
import Text.TeXMath.Shared (getMMLType, handleDownup,
3132
isUppercaseGreek, isRLSequence)
3233
import Text.TeXMath.Readers.MathML.MMLDict (getMathMLOperator)
@@ -100,7 +101,9 @@ makeText a s = case (leadingSp, trailingSp) of
100101
(False, True) -> mrow [s', sp]
101102
(True, True) -> mrow [sp, s', sp]
102103
where sp = spaceWidth (1/3)
103-
s' = withAttribute "mathvariant" (getMMLType a) $ tunode "mtext" s
104+
s' = withAttribute "mathvariant" (getMMLType a) $
105+
-- use Unicode characters as few browsers support the mathvariants
106+
tunode "mtext" $ toUnicode a s
104107
trailingSp = case T.unsnoc s of
105108
Just (_, c) -> T.any (== c) " \t"
106109
_ -> False
@@ -197,11 +200,15 @@ showExp tt e =
197200
tunode elname t
198201
Just TextBold
199202
| elname == "mi" && not (isUppercaseGreek t) -- #255, #280
200-
-> withAttribute "mathvariant" "bold-italic" $ tunode elname t
203+
-> withAttribute "mathvariant" "bold-italic" $
204+
tunode elname (toUnicode TextBoldItalic t)
201205
| otherwise
202-
-> withAttribute "mathvariant" "bold" $ tunode elname t
206+
-> withAttribute "mathvariant" "bold" $
207+
tunode elname (toUnicode TextBold t)
203208
Just textStyle -> withAttribute "mathvariant" (getMMLType textStyle) $
204-
tunode elname t
209+
-- we use unicode chars because browsers don't
210+
-- completely support mathvariant:
211+
tunode elname (toUnicode textStyle t)
205212
in case e of
206213
ENumber x -> vnode "mn" x
207214
EGrouped [x] -> showExp tt x

test/regression/280.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
<?xml version='1.0' ?>
55
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
66
<mrow>
7-
<mi mathvariant="bold">Γ</mi>
7+
<mi mathvariant="bold">𝚪</mi>
88
<mo mathvariant="bold">+</mo>
9-
<mi mathvariant="bold-italic">b</mi>
9+
<mi mathvariant="bold-italic">𝒃</mi>
1010
<mo mathvariant="bold">+</mo>
11-
<mi mathvariant="bold-italic">α</mi>
11+
<mi mathvariant="bold-italic">𝜶</mi>
1212
</mrow>
1313
</math>

test/writer/mml/20.test

Lines changed: 115 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -119,120 +119,120 @@
119119
<?xml version='1.0' ?>
120120
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
121121
<mrow>
122-
<mi mathvariant="script">A</mi>
123-
<mi mathvariant="script">B</mi>
124-
<mi mathvariant="script">C</mi>
125-
<mi mathvariant="script">D</mi>
126-
<mi mathvariant="script">E</mi>
127-
<mi mathvariant="script">F</mi>
128-
<mi mathvariant="script">G</mi>
129-
<mi mathvariant="script">H</mi>
130-
<mi mathvariant="script">I</mi>
131-
<mi mathvariant="script">J</mi>
132-
<mi mathvariant="script">K</mi>
133-
<mi mathvariant="script">L</mi>
134-
<mi mathvariant="script">M</mi>
135-
<mi mathvariant="script">N</mi>
136-
<mi mathvariant="script">O</mi>
137-
<mi mathvariant="script">P</mi>
138-
<mi mathvariant="script">Q</mi>
139-
<mi mathvariant="script">R</mi>
140-
<mi mathvariant="script">S</mi>
141-
<mi mathvariant="script">T</mi>
142-
<mi mathvariant="script">U</mi>
143-
<mi mathvariant="script">V</mi>
144-
<mi mathvariant="script">W</mi>
145-
<mi mathvariant="script">X</mi>
146-
<mi mathvariant="script">Y</mi>
147-
<mi mathvariant="script">Z</mi>
148-
<mi mathvariant="script">a</mi>
149-
<mi mathvariant="script">b</mi>
150-
<mi mathvariant="script">c</mi>
151-
<mi mathvariant="script">d</mi>
152-
<mi mathvariant="script">e</mi>
153-
<mi mathvariant="script">f</mi>
154-
<mi mathvariant="script">g</mi>
155-
<mi mathvariant="script">h</mi>
156-
<mi mathvariant="script">i</mi>
157-
<mi mathvariant="script">j</mi>
158-
<mi mathvariant="script">k</mi>
159-
<mi mathvariant="script">l</mi>
160-
<mi mathvariant="script">m</mi>
161-
<mi mathvariant="script">n</mi>
162-
<mi mathvariant="script">o</mi>
163-
<mi mathvariant="script">p</mi>
164-
<mi mathvariant="script">q</mi>
165-
<mi mathvariant="script">r</mi>
166-
<mi mathvariant="script">s</mi>
167-
<mi mathvariant="script">t</mi>
168-
<mi mathvariant="script">u</mi>
169-
<mi mathvariant="script">v</mi>
170-
<mi mathvariant="script">w</mi>
171-
<mi mathvariant="script">x</mi>
172-
<mi mathvariant="script">y</mi>
173-
<mi mathvariant="script">z</mi>
174-
<mi mathvariant="double-struck">A</mi>
175-
<mi mathvariant="double-struck">B</mi>
176-
<mi mathvariant="double-struck">C</mi>
177-
<mi mathvariant="double-struck">D</mi>
178-
<mi mathvariant="double-struck">E</mi>
179-
<mi mathvariant="double-struck">F</mi>
180-
<mi mathvariant="double-struck">G</mi>
181-
<mi mathvariant="double-struck">H</mi>
182-
<mi mathvariant="double-struck">I</mi>
183-
<mi mathvariant="double-struck">J</mi>
184-
<mi mathvariant="double-struck">K</mi>
185-
<mi mathvariant="double-struck">L</mi>
186-
<mi mathvariant="double-struck">M</mi>
187-
<mi mathvariant="double-struck">N</mi>
188-
<mi mathvariant="double-struck">O</mi>
189-
<mi mathvariant="double-struck">P</mi>
190-
<mi mathvariant="double-struck">Q</mi>
191-
<mi mathvariant="double-struck">R</mi>
192-
<mi mathvariant="double-struck">S</mi>
193-
<mi mathvariant="double-struck">T</mi>
194-
<mi mathvariant="double-struck">U</mi>
195-
<mi mathvariant="double-struck">V</mi>
196-
<mi mathvariant="double-struck">W</mi>
197-
<mi mathvariant="double-struck">X</mi>
198-
<mi mathvariant="double-struck">Y</mi>
199-
<mi mathvariant="double-struck">Z</mi>
200-
<mi mathvariant="double-struck">a</mi>
201-
<mi mathvariant="double-struck">b</mi>
202-
<mi mathvariant="double-struck">c</mi>
203-
<mi mathvariant="double-struck">d</mi>
204-
<mi mathvariant="double-struck">e</mi>
205-
<mi mathvariant="double-struck">f</mi>
206-
<mi mathvariant="double-struck">g</mi>
207-
<mi mathvariant="double-struck">h</mi>
208-
<mi mathvariant="double-struck">i</mi>
209-
<mi mathvariant="double-struck">j</mi>
210-
<mi mathvariant="double-struck">k</mi>
211-
<mi mathvariant="double-struck">l</mi>
212-
<mi mathvariant="double-struck">m</mi>
213-
<mi mathvariant="double-struck">n</mi>
214-
<mi mathvariant="double-struck">o</mi>
215-
<mi mathvariant="double-struck">p</mi>
216-
<mi mathvariant="double-struck">q</mi>
217-
<mi mathvariant="double-struck">r</mi>
218-
<mi mathvariant="double-struck">s</mi>
219-
<mi mathvariant="double-struck">t</mi>
220-
<mi mathvariant="double-struck">u</mi>
221-
<mi mathvariant="double-struck">v</mi>
222-
<mi mathvariant="double-struck">w</mi>
223-
<mi mathvariant="double-struck">x</mi>
224-
<mi mathvariant="double-struck">y</mi>
225-
<mi mathvariant="double-struck">z</mi>
226-
<mn mathvariant="double-struck">0</mn>
227-
<mn mathvariant="double-struck">1</mn>
228-
<mn mathvariant="double-struck">2</mn>
229-
<mn mathvariant="double-struck">3</mn>
230-
<mn mathvariant="double-struck">4</mn>
231-
<mn mathvariant="double-struck">5</mn>
232-
<mn mathvariant="double-struck">6</mn>
233-
<mn mathvariant="double-struck">7</mn>
234-
<mn mathvariant="double-struck">8</mn>
235-
<mn mathvariant="double-struck">9</mn>
236-
<mn mathvariant="double-struck">0</mn>
122+
<mi mathvariant="script">𝒜</mi>
123+
<mi mathvariant="script"></mi>
124+
<mi mathvariant="script">𝒞</mi>
125+
<mi mathvariant="script">𝒟</mi>
126+
<mi mathvariant="script"></mi>
127+
<mi mathvariant="script"></mi>
128+
<mi mathvariant="script">𝒢</mi>
129+
<mi mathvariant="script"></mi>
130+
<mi mathvariant="script"></mi>
131+
<mi mathvariant="script">𝒥</mi>
132+
<mi mathvariant="script">𝒦</mi>
133+
<mi mathvariant="script"></mi>
134+
<mi mathvariant="script"></mi>
135+
<mi mathvariant="script">𝒩</mi>
136+
<mi mathvariant="script">𝒪</mi>
137+
<mi mathvariant="script">𝒫</mi>
138+
<mi mathvariant="script">𝒬</mi>
139+
<mi mathvariant="script"></mi>
140+
<mi mathvariant="script">𝒮</mi>
141+
<mi mathvariant="script">𝒯</mi>
142+
<mi mathvariant="script">𝒰</mi>
143+
<mi mathvariant="script">𝒱</mi>
144+
<mi mathvariant="script">𝒲</mi>
145+
<mi mathvariant="script">𝒳</mi>
146+
<mi mathvariant="script">𝒴</mi>
147+
<mi mathvariant="script">𝒵</mi>
148+
<mi mathvariant="script">𝒶</mi>
149+
<mi mathvariant="script">𝒷</mi>
150+
<mi mathvariant="script">𝒸</mi>
151+
<mi mathvariant="script">𝒹</mi>
152+
<mi mathvariant="script"></mi>
153+
<mi mathvariant="script">𝒻</mi>
154+
<mi mathvariant="script"></mi>
155+
<mi mathvariant="script">𝒽</mi>
156+
<mi mathvariant="script">𝒾</mi>
157+
<mi mathvariant="script">𝒿</mi>
158+
<mi mathvariant="script">𝓀</mi>
159+
<mi mathvariant="script">𝓁</mi>
160+
<mi mathvariant="script">𝓂</mi>
161+
<mi mathvariant="script">𝓃</mi>
162+
<mi mathvariant="script"></mi>
163+
<mi mathvariant="script">𝓅</mi>
164+
<mi mathvariant="script">𝓆</mi>
165+
<mi mathvariant="script">𝓇</mi>
166+
<mi mathvariant="script">𝓈</mi>
167+
<mi mathvariant="script">𝓉</mi>
168+
<mi mathvariant="script">𝓊</mi>
169+
<mi mathvariant="script">𝓋</mi>
170+
<mi mathvariant="script">𝓌</mi>
171+
<mi mathvariant="script">𝓍</mi>
172+
<mi mathvariant="script">𝓎</mi>
173+
<mi mathvariant="script">𝓏</mi>
174+
<mi mathvariant="double-struck">𝔸</mi>
175+
<mi mathvariant="double-struck">𝔹</mi>
176+
<mi mathvariant="double-struck"></mi>
177+
<mi mathvariant="double-struck">𝔻</mi>
178+
<mi mathvariant="double-struck">𝔼</mi>
179+
<mi mathvariant="double-struck">𝔽</mi>
180+
<mi mathvariant="double-struck">𝔾</mi>
181+
<mi mathvariant="double-struck"></mi>
182+
<mi mathvariant="double-struck">𝕀</mi>
183+
<mi mathvariant="double-struck">𝕁</mi>
184+
<mi mathvariant="double-struck">𝕂</mi>
185+
<mi mathvariant="double-struck">𝕃</mi>
186+
<mi mathvariant="double-struck">𝕄</mi>
187+
<mi mathvariant="double-struck"></mi>
188+
<mi mathvariant="double-struck">𝕆</mi>
189+
<mi mathvariant="double-struck"></mi>
190+
<mi mathvariant="double-struck"></mi>
191+
<mi mathvariant="double-struck"></mi>
192+
<mi mathvariant="double-struck">𝕊</mi>
193+
<mi mathvariant="double-struck">𝕋</mi>
194+
<mi mathvariant="double-struck">𝕌</mi>
195+
<mi mathvariant="double-struck">𝕍</mi>
196+
<mi mathvariant="double-struck">𝕎</mi>
197+
<mi mathvariant="double-struck">𝕏</mi>
198+
<mi mathvariant="double-struck">𝕐</mi>
199+
<mi mathvariant="double-struck"></mi>
200+
<mi mathvariant="double-struck">𝕒</mi>
201+
<mi mathvariant="double-struck">𝕓</mi>
202+
<mi mathvariant="double-struck">𝕔</mi>
203+
<mi mathvariant="double-struck">𝕕</mi>
204+
<mi mathvariant="double-struck">𝕖</mi>
205+
<mi mathvariant="double-struck">𝕗</mi>
206+
<mi mathvariant="double-struck">𝕘</mi>
207+
<mi mathvariant="double-struck">𝕙</mi>
208+
<mi mathvariant="double-struck">𝕚</mi>
209+
<mi mathvariant="double-struck">𝕛</mi>
210+
<mi mathvariant="double-struck">𝕜</mi>
211+
<mi mathvariant="double-struck">𝕝</mi>
212+
<mi mathvariant="double-struck">𝕞</mi>
213+
<mi mathvariant="double-struck">𝕟</mi>
214+
<mi mathvariant="double-struck">𝕠</mi>
215+
<mi mathvariant="double-struck">𝕡</mi>
216+
<mi mathvariant="double-struck">𝕢</mi>
217+
<mi mathvariant="double-struck">𝕣</mi>
218+
<mi mathvariant="double-struck">𝕤</mi>
219+
<mi mathvariant="double-struck">𝕥</mi>
220+
<mi mathvariant="double-struck">𝕦</mi>
221+
<mi mathvariant="double-struck">𝕧</mi>
222+
<mi mathvariant="double-struck">𝕨</mi>
223+
<mi mathvariant="double-struck">𝕩</mi>
224+
<mi mathvariant="double-struck">𝕪</mi>
225+
<mi mathvariant="double-struck">𝕫</mi>
226+
<mn mathvariant="double-struck">𝟘</mn>
227+
<mn mathvariant="double-struck">𝟙</mn>
228+
<mn mathvariant="double-struck">𝟚</mn>
229+
<mn mathvariant="double-struck">𝟛</mn>
230+
<mn mathvariant="double-struck">𝟜</mn>
231+
<mn mathvariant="double-struck">𝟝</mn>
232+
<mn mathvariant="double-struck">𝟞</mn>
233+
<mn mathvariant="double-struck">𝟟</mn>
234+
<mn mathvariant="double-struck">𝟠</mn>
235+
<mn mathvariant="double-struck">𝟡</mn>
236+
<mn mathvariant="double-struck">𝟘</mn>
237237
</mrow>
238238
</math>

0 commit comments

Comments
 (0)