embellished-operator-001.html (23583B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Embellished operators</title> 6 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> 7 <link rel="help" href="https://w3c.github.io/mathml-core/#embellished-operators"> 8 <link rel="help" href="https://w3c.github.io/mathml-core/#definition-of-space-like-elements"> 9 <link rel="help" href="https://w3c.github.io/mathml-core/#layout-of-mrow"> 10 <meta name="assert" content="Verify definition of embellished operators"> 11 <script src="/resources/testharness.js"></script> 12 <script src="/resources/testharnessreport.js"></script> 13 <script src="/mathml/support/feature-detection.js"></script> 14 <script src="/mathml/support/box-navigation.js"></script> 15 <style> 16 /* Default spacing of operator 'X' is 0.2777777777777778em so quite different 17 from the measured/specified 0em and 1em. */ 18 math, math * { 19 font: 25px/1 Ahem; 20 } 21 mn { 22 color: black; 23 } 24 .testedElement mo { 25 color: yellow !important; 26 } 27 .testedElement, .testedElement * { 28 color: blue !important; 29 background: blue !important; 30 } 31 .oof1 { 32 position: absolute; 33 } 34 .oof2 { 35 position: fixed; 36 } 37 .nobox { 38 display: none; 39 } 40 </style> 41 <script> 42 function spaceBeforeElement(id) { 43 var element = document.getElementById(id); 44 var mnBefore = previousInFlowSibling(element); 45 return element.getBoundingClientRect().left - mnBefore.getBoundingClientRect().right; 46 } 47 48 function spaceBeforeCoreOperator(id) { 49 var element = document.getElementById(id); 50 var coreMo = element.getElementsByTagName("mo")[0]; 51 return coreMo.getBoundingClientRect().left - element.getBoundingClientRect().left; 52 } 53 54 setup({ explicit_done: true }); 55 window.addEventListener("load", runTests); 56 57 function runTests() { 58 var epsilon = 1; 59 var emToPx = 25; 60 61 ["mrow", "mstyle", "mphantom", "mpadded", "merror", "mprescripts", "none", "unknown", "mfenced", "a"].forEach(tag => { 62 test(function() { 63 assert_true(MathMLFeatureDetection.has_operator_spacing()); 64 assert_approx_equals(spaceBeforeElement(`${tag}-op-1`), 2 * emToPx, epsilon); 65 assert_approx_equals(spaceBeforeCoreOperator(`${tag}-op-1`), 0, epsilon); 66 }, `${tag} (embellished operator)`); 67 68 test(function() { 69 assert_true(MathMLFeatureDetection.has_operator_spacing()); 70 assert_approx_equals(spaceBeforeElement(`${tag}-op-2`), 2 * emToPx, epsilon); 71 assert_approx_equals(spaceBeforeCoreOperator(`${tag}-op-2`), 0, epsilon); 72 }, `${tag} (embellished operator, from in-flow children)`); 73 74 test(function() { 75 assert_true(MathMLFeatureDetection.has_operator_spacing()); 76 assert_approx_equals(spaceBeforeElement(`${tag}-nonop-1`), 0, epsilon); 77 assert_approx_equals(spaceBeforeCoreOperator(`${tag}-nonop-1`), 2 * emToPx, epsilon); 78 }, `${tag} (not embellished operator)`); 79 80 test(function() { 81 assert_true(MathMLFeatureDetection.has_operator_spacing()); 82 assert_approx_equals(spaceBeforeElement(`${tag}-nonop-2`), 0, epsilon); 83 assert_approx_equals(spaceBeforeCoreOperator(`${tag}-nonop-2`), 2 * emToPx, epsilon); 84 }, `${tag} (not embellished operator, from in-flow children)`); 85 }); 86 87 done(); 88 } 89 </script> 90 </head> 91 <body> 92 <div id="log"></div> 93 <!-- mrow is an embellished operator if its in-flow children consist 94 of one embellished operator and zero or more space-like elements. --> 95 <p> 96 <math> 97 <mn>X</mn> 98 <mrow id="mrow-op-1" class="testedElement"> 99 <mo lspace="2em" rspace="0em">X</mo> 100 <mtext class="space-like">X</mtext> 101 </mrow> 102 <mn>X</mn> 103 </math> 104 </p> 105 <p> 106 <math> 107 <mn>X</mn> 108 <mrow id="mrow-nonop-1" class="testedElement"> 109 <mo lspace="2em" rspace="0em">X</mo> 110 <mn>X</mn> <!-- "mn" is not space-like --> 111 </mrow> 112 <mn>X</mn> 113 </math> 114 </p> 115 <p> 116 <math> 117 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 118 <mn>X</mn> 119 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 120 <mrow id="mrow-op-2" class="testedElement"> 121 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 122 <mo lspace="2em" rspace="0em">X</mo> 123 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 124 <mtext class="space-like">X</mtext> 125 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 126 </mrow> 127 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 128 <mn>X</mn> 129 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 130 </math> 131 </p> 132 <p> 133 <math> 134 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 135 <mn>X</mn> 136 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 137 <mrow id="mrow-nonop-2" class="testedElement"> 138 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 139 <mo lspace="2em" rspace="0em">X</mo> 140 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 141 <mn>X</mn> <!-- "mn" is not space-like --> 142 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 143 </mrow> 144 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 145 <mn>X</mn> 146 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 147 </math> 148 </p> 149 <!-- mstyle is an embellished operator if its in-flow children consist 150 of one embellished operator and zero or more space-like elements. --> 151 <p> 152 <math> 153 <mn>X</mn> 154 <mstyle id="mstyle-op-1" class="testedElement"> 155 <mo lspace="2em" rspace="0em">X</mo> 156 </mstyle> 157 <mn>X</mn> 158 </math> 159 </p> 160 <p> 161 <math> 162 <mn>X</mn> 163 <mstyle id="mstyle-nonop-1" class="testedElement"> 164 <mo lspace="2em" rspace="0em">X</mo> 165 <mn>X</mn> <!-- "mn" is not space-like --> 166 </mstyle> 167 <mn>X</mn> 168 </math> 169 </p> 170 <p> 171 <math> 172 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 173 <mn>X</mn> 174 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 175 <mstyle id="mstyle-op-2" class="testedElement"> 176 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 177 <mo lspace="2em" rspace="0em">X</mo> 178 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 179 </mstyle> 180 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 181 <mn>X</mn> 182 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 183 </math> 184 </p> 185 <p> 186 <math> 187 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 188 <mn>X</mn> 189 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 190 <mstyle id="mstyle-nonop-2" class="testedElement"> 191 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 192 <mo lspace="2em" rspace="0em">X</mo> 193 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 194 <mn>X</mn> <!-- "mn" is not space-like --> 195 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 196 </mstyle> 197 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 198 <mn>X</mn> 199 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 200 </math> 201 </p> 202 <!-- mphantom is an embellished operator if its in-flow children consist 203 of one embellished operator and zero or more space-like elements. --> 204 <p> 205 <math> 206 <mn>X</mn> 207 <mphantom id="mphantom-op-1" class="testedElement"> 208 <mo lspace="2em" rspace="0em">X</mo> 209 </mphantom> 210 <mn>X</mn> 211 </math> 212 </p> 213 <p> 214 <math> 215 <mn>X</mn> 216 <mphantom id="mphantom-nonop-1" class="testedElement"> 217 <mo lspace="2em" rspace="0em">X</mo> 218 <mn>X</mn> <!-- "mn" is not space-like --> 219 </mphantom> 220 <mn>X</mn> 221 </math> 222 </p> 223 <p> 224 <math> 225 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 226 <mn>X</mn> 227 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 228 <mphantom id="mphantom-op-2" class="testedElement"> 229 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 230 <mo lspace="2em" rspace="0em">X</mo> 231 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 232 </mphantom> 233 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 234 <mn>X</mn> 235 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 236 </math> 237 </p> 238 <p> 239 <math> 240 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 241 <mn>X</mn> 242 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 243 <mphantom id="mphantom-nonop-2" class="testedElement"> 244 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 245 <mo lspace="2em" rspace="0em">X</mo> 246 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 247 <mn>X</mn> <!-- "mn" is not space-like --> 248 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 249 </mphantom> 250 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 251 <mn>X</mn> 252 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 253 </math> 254 </p> 255 <!-- mpadded is an embellished operator if its in-flow children consist 256 of one embellished operator and zero or more space-like elements. --> 257 <p> 258 <math> 259 <mn>X</mn> 260 <mpadded id="mpadded-op-1" class="testedElement"> 261 <mo lspace="2em" rspace="0em">X</mo> 262 </mpadded> 263 <mn>X</mn> 264 </math> 265 </p> 266 <p> 267 <math> 268 <mn>X</mn> 269 <mpadded id="mpadded-nonop-1" class="testedElement"> 270 <mo lspace="2em" rspace="0em">X</mo> 271 <mn>X</mn> <!-- "mn" is not space-like --> 272 </mpadded> 273 <mn>X</mn> 274 </math> 275 </p> 276 <p> 277 <math> 278 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 279 <mn>X</mn> 280 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 281 <mpadded id="mpadded-op-2" class="testedElement"> 282 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 283 <mo lspace="2em" rspace="0em">X</mo> 284 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 285 </mpadded> 286 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 287 <mn>X</mn> 288 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 289 </math> 290 </p> 291 <p> 292 <math> 293 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 294 <mn>X</mn> 295 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 296 <mpadded id="mpadded-nonop-2" class="testedElement"> 297 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 298 <mo lspace="2em" rspace="0em">X</mo> 299 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 300 <mn>X</mn> <!-- "mn" is not space-like --> 301 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 302 </mpadded> 303 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 304 <mn>X</mn> 305 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 306 </math> 307 </p> 308 <!-- merror is an embellished operator if its in-flow children consist 309 of one embellished operator and zero or more space-like elements. --> 310 <p> 311 <math> 312 <mn>X</mn> 313 <merror id="merror-op-1" class="testedElement"> 314 <mo lspace="2em" rspace="0em">X</mo> 315 </merror> 316 <mn>X</mn> 317 </math> 318 </p> 319 <p> 320 <math> 321 <mn>X</mn> 322 <merror id="merror-nonop-1" class="testedElement"> 323 <mo lspace="2em" rspace="0em">X</mo> 324 <mn>X</mn> <!-- "mn" is not space-like --> 325 </merror> 326 <mn>X</mn> 327 </math> 328 </p> 329 <p> 330 <math> 331 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 332 <mn>X</mn> 333 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 334 <merror id="merror-op-2" class="testedElement"> 335 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 336 <mo lspace="2em" rspace="0em">X</mo> 337 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 338 </merror> 339 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 340 <mn>X</mn> 341 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 342 </math> 343 </p> 344 <p> 345 <math> 346 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 347 <mn>X</mn> 348 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 349 <merror id="merror-nonop-2" class="testedElement"> 350 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 351 <mo lspace="2em" rspace="0em">X</mo> 352 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 353 <mn>X</mn> <!-- "mn" is not space-like --> 354 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 355 </merror> 356 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 357 <mn>X</mn> 358 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 359 </math> 360 </p> 361 <!-- mprescripts is an embellished operator if its in-flow children consist 362 of one embellished operator and zero or more space-like elements. --> 363 <p> 364 <math> 365 <mn>X</mn> 366 <mprescripts id="mprescripts-op-1" class="testedElement"> 367 <mo lspace="2em" rspace="0em">X</mo> 368 </mprescripts> 369 <mn>X</mn> 370 </math> 371 </p> 372 <p> 373 <math> 374 <mn>X</mn> 375 <mprescripts id="mprescripts-nonop-1" class="testedElement"> 376 <mo lspace="2em" rspace="0em">X</mo> 377 <mn>X</mn> <!-- "mn" is not space-like --> 378 </mprescripts> 379 <mn>X</mn> 380 </math> 381 </p> 382 <p> 383 <math> 384 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 385 <mn>X</mn> 386 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 387 <mprescripts id="mprescripts-op-2" class="testedElement"> 388 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 389 <mo lspace="2em" rspace="0em">X</mo> 390 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 391 </mprescripts> 392 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 393 <mn>X</mn> 394 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 395 </math> 396 </p> 397 <p> 398 <math> 399 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 400 <mn>X</mn> 401 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 402 <mprescripts id="mprescripts-nonop-2" class="testedElement"> 403 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 404 <mo lspace="2em" rspace="0em">X</mo> 405 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 406 <mn>X</mn> <!-- "mn" is not space-like --> 407 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 408 </mprescripts> 409 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 410 <mn>X</mn> 411 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 412 </math> 413 </p> 414 <!-- none is an embellished operator if its in-flow children consist 415 of one embellished operator and zero or more space-like elements. --> 416 <p> 417 <math> 418 <mn>X</mn> 419 <none id="none-op-1" class="testedElement"> 420 <mo lspace="2em" rspace="0em">X</mo> 421 </none> 422 <mn>X</mn> 423 </math> 424 </p> 425 <p> 426 <math> 427 <mn>X</mn> 428 <none id="none-nonop-1" class="testedElement"> 429 <mo lspace="2em" rspace="0em">X</mo> 430 <mn>X</mn> <!-- "mn" is not space-like --> 431 </none> 432 <mn>X</mn> 433 </math> 434 </p> 435 <p> 436 <math> 437 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 438 <mn>X</mn> 439 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 440 <none id="none-op-2" class="testedElement"> 441 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 442 <mo lspace="2em" rspace="0em">X</mo> 443 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 444 </none> 445 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 446 <mn>X</mn> 447 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 448 </math> 449 </p> 450 <p> 451 <math> 452 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 453 <mn>X</mn> 454 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 455 <none id="none-nonop-2" class="testedElement"> 456 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 457 <mo lspace="2em" rspace="0em">X</mo> 458 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 459 <mn>X</mn> <!-- "mn" is not space-like --> 460 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 461 </none> 462 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 463 <mn>X</mn> 464 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 465 </math> 466 </p> 467 <!-- unknown is an embellished operator if its in-flow children consist 468 of one embellished operator and zero or more space-like elements. --> 469 <p> 470 <math> 471 <mn>X</mn> 472 <unknown id="unknown-op-1" class="testedElement"> 473 <mo lspace="2em" rspace="0em">X</mo> 474 </unknown> 475 <mn>X</mn> 476 </math> 477 </p> 478 <p> 479 <math> 480 <mn>X</mn> 481 <unknown id="unknown-nonop-1" class="testedElement"> 482 <mo lspace="2em" rspace="0em">X</mo> 483 <mn>X</mn> <!-- "mn" is not space-like --> 484 </unknown> 485 <mn>X</mn> 486 </math> 487 </p> 488 <p> 489 <math> 490 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 491 <mn>X</mn> 492 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 493 <unknown id="unknown-op-2" class="testedElement"> 494 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 495 <mo lspace="2em" rspace="0em">X</mo> 496 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 497 </unknown> 498 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 499 <mn>X</mn> 500 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 501 </math> 502 </p> 503 <p> 504 <math> 505 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 506 <mn>X</mn> 507 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 508 <unknown id="unknown-nonop-2" class="testedElement"> 509 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 510 <mo lspace="2em" rspace="0em">X</mo> 511 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 512 <mn>X</mn> <!-- "mn" is not space-like --> 513 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 514 </unknown> 515 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 516 <mn>X</mn> 517 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 518 </math> 519 </p> 520 <!-- mfenced is unknown to MathML Core so it is considered a grouping element. --> 521 <p> 522 <math> 523 <mn>X</mn> 524 <mfenced id="mfenced-op-1" class="testedElement"> 525 <mo lspace="2em" rspace="0em">X</mo> 526 </mfenced> 527 <mn>X</mn> 528 </math> 529 </p> 530 <p> 531 <math> 532 <mn>X</mn> 533 <mfenced id="mfenced-nonop-1" class="testedElement"> 534 <mo lspace="2em" rspace="0em">X</mo> 535 <mn>X</mn> <!-- "mn" is not space-like --> 536 </mfenced> 537 <mn>X</mn> 538 </math> 539 </p> 540 <p> 541 <math> 542 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 543 <mn>X</mn> 544 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 545 <mfenced id="mfenced-op-2" class="testedElement"> 546 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 547 <mo lspace="2em" rspace="0em">X</mo> 548 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 549 </mfenced> 550 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 551 <mn>X</mn> 552 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 553 </math> 554 </p> 555 <p> 556 <math> 557 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 558 <mn>X</mn> 559 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 560 <mfenced id="mfenced-nonop-2" class="testedElement"> 561 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 562 <mo lspace="2em" rspace="0em">X</mo> 563 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 564 <mn>X</mn> <!-- "mn" is not space-like --> 565 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 566 </mfenced> 567 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 568 <mn>X</mn> 569 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 570 </math> 571 </p> 572 <!-- a is unknown to MathML Core so it is considered a grouping element. --> 573 <p> 574 <math> 575 <mn>X</mn> 576 <a id="a-op-1" class="testedElement"> 577 <mo lspace="2em" rspace="0em">X</mo> 578 </a> 579 <mn>X</mn> 580 </math> 581 </p> 582 <p> 583 <math> 584 <mn>X</mn> 585 <a id="a-nonop-1" class="testedElement"> 586 <mo lspace="2em" rspace="0em">X</mo> 587 <mn>X</mn> <!-- "mn" is not space-like --> 588 </a> 589 <mn>X</mn> 590 </math> 591 </p> 592 <p> 593 <math> 594 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 595 <mn>X</mn> 596 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 597 <a id="a-op-2" class="testedElement"> 598 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 599 <mo lspace="2em" rspace="0em">X</mo> 600 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 601 </a> 602 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 603 <mn>X</mn> 604 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 605 </math> 606 </p> 607 <p> 608 <math> 609 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 610 <mn>X</mn> 611 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 612 <a id="a-nonop-2" class="testedElement"> 613 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 614 <mo lspace="2em" rspace="0em">X</mo> 615 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 616 <mn>X</mn> <!-- "mn" is not space-like --> 617 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 618 </a> 619 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 620 <mn>X</mn> 621 <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn> 622 </math> 623 </p> 624 </body> 625 </html>