OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <head> |
| 4 <meta charset="utf-8"> |
| 5 <title>Radical parameters</title> |
| 6 <link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#S
S3.SSS3"> |
| 7 <meta name="assert" content="Elements msqrt and mroot correctly use the radical
parameters from the MATH table."> |
| 8 <script src="/resources/testharness.js"></script> |
| 9 <script src="/resources/testharnessreport.js"></script> |
| 10 <style> |
| 11 math, mspace { |
| 12 font-size: 10px; |
| 13 } |
| 14 @font-face { |
| 15 font-family: degreebottomraisepercent25-rulethickness1000; |
| 16 src: url("/fonts/math/radical-degreebottomraisepercent25-rulethickness1000.w
off"); |
| 17 } |
| 18 @font-face { |
| 19 font-family: displaystyleverticalgap7000-rulethickness1000; |
| 20 src: url("/fonts/math/radical-displaystyleverticalgap7000-rulethickness1000.
woff"); |
| 21 } |
| 22 @font-face { |
| 23 font-family: extraascender3000-rulethickness1000; |
| 24 src: url("/fonts/math/radical-extraascender3000-rulethickness1000.woff"); |
| 25 } |
| 26 @font-face { |
| 27 font-family: kernafterdegreeminus5000-rulethickness1000; |
| 28 src: url("/fonts/math/radical-kernafterdegreeminus5000-rulethickness1000.wof
f"); |
| 29 } |
| 30 @font-face { |
| 31 font-family: kernbeforedegree4000-rulethickness1000; |
| 32 src: url("/fonts/math/radical-kernbeforedegree4000-rulethickness1000.woff"); |
| 33 } |
| 34 @font-face { |
| 35 font-family: verticalgap6000-rulethickness1000; |
| 36 src: url("/fonts/math/radical-verticalgap6000-rulethickness1000.woff"); |
| 37 } |
| 38 @font-face { |
| 39 font-family: rulethickness8000; |
| 40 src: url("/fonts/math/radical-rulethickness8000.woff"); |
| 41 } |
| 42 </style> |
| 43 <script> |
| 44 var emToPx = 10 / 1000; // font-size: 10px, font.em = 1000 |
| 45 var epsilon = 1; |
| 46 |
| 47 function getBox(aId) { |
| 48 return document.getElementById(aId).getBoundingClientRect(); |
| 49 } |
| 50 |
| 51 setup({ explicit_done: true }); |
| 52 window.addEventListener("load", function() { |
| 53 document.fonts.ready.then(runTests); |
| 54 }); |
| 55 |
| 56 function runTests() { |
| 57 test(function() { |
| 58 var v1 = 25; |
| 59 var v2 = 1000 * emToPx; |
| 60 var radicalHeight = getBox("base001").height + v2; |
| 61 assert_approx_equals(getBox("ref001").top - getBox("index001").bottom, |
| 62 v1 * radicalHeight / 100, epsilon, |
| 63 "mroot: vertical position of index"); |
| 64 }, "RadicalDegreeBottomRaisePercent"); |
| 65 |
| 66 test(function() { |
| 67 var v1 = 7000 * emToPx; |
| 68 var v2 = 1000 * emToPx; |
| 69 assert_approx_equals(getBox("base0021").top - getBox("radical0021").top, |
| 70 v1 + v2, epsilon, |
| 71 "msqrt: vertical gap"); |
| 72 assert_approx_equals(getBox("base0022").top - getBox("radical0022").top, |
| 73 v1 + v2, epsilon, |
| 74 "mroot: vertical gap"); |
| 75 }, "RadicalDisplayStyleVerticalGap"); |
| 76 |
| 77 test(function() { |
| 78 var v1 = 3000 * emToPx; |
| 79 var v2 = 1000 * emToPx; |
| 80 assert_approx_equals(getBox("base0031").top - getBox("radical0031").top, |
| 81 v1 + v2, epsilon, |
| 82 "msqrt: vertical gap"); |
| 83 assert_approx_equals(getBox("base0032").top - getBox("radical0032").top, |
| 84 v1 + v2, epsilon, |
| 85 "mroot: vertical gap"); |
| 86 }, "RadicalExtraAscender"); |
| 87 |
| 88 test(function() { |
| 89 // Note: the size variants of U+221A in this font have width 1000. |
| 90 var v1 = 5000 * emToPx; |
| 91 var radicalSymbolWidth = 1000 * emToPx; |
| 92 var radicalLeft = getBox("base004").left - radicalSymbolWidth; |
| 93 assert_approx_equals(getBox("index004").right - radicalLeft, |
| 94 v1, epsilon, |
| 95 "mroot: kern after degree"); |
| 96 }, "RadicalKernAfterDegree"); |
| 97 |
| 98 test(function() { |
| 99 var v1 = 4000 * emToPx; |
| 100 assert_approx_equals(getBox("index005").left - getBox("radical005").left, |
| 101 v1, epsilon, |
| 102 "mroot: kern before degree"); |
| 103 }, "RadicalKernBeforeDegree"); |
| 104 |
| 105 test(function() { |
| 106 var v = 8000 * emToPx; |
| 107 assert_approx_equals(getBox("base0061").top - getBox("radical0061").top, |
| 108 v, epsilon, |
| 109 "msqrt: vertical gap"); |
| 110 assert_approx_equals(getBox("base0062").top - getBox("radical0062").top, |
| 111 v, epsilon, |
| 112 "msqrt: vertical gap"); |
| 113 }, "RadicalRuleThickness"); |
| 114 |
| 115 test(function() { |
| 116 var v1 = 6000 * emToPx; |
| 117 var v2 = 1000 * emToPx; |
| 118 assert_approx_equals(getBox("base0071").top - getBox("radical0071").top, |
| 119 v1 + v2, epsilon, |
| 120 "msqrt: vertical gap"); |
| 121 assert_approx_equals(getBox("base0072").top - getBox("radical0072").top, |
| 122 v1 + v2, epsilon, |
| 123 "msqrt: vertical gap"); |
| 124 }, "RadicalVerticalGap"); |
| 125 |
| 126 done(); |
| 127 } |
| 128 </script> |
| 129 </head> |
| 130 <body> |
| 131 <p> |
| 132 <math style="font-family: degreebottomraisepercent25-rulethickness1000;"> |
| 133 <mspace id="ref001" width="3em" depth="1em" mathbackground="green"/> |
| 134 <mroot> |
| 135 <mspace id="base001" width="3em" height="10em" mathbackground="green"/> |
| 136 <mspace id="index001" width="3em" height="1em" mathbackground="blue"/> |
| 137 </mroot> |
| 138 </math> |
| 139 </p> |
| 140 <hr/> |
| 141 <p> |
| 142 <math display="block" |
| 143 style="font-family: displaystyleverticalgap7000-rulethickness1000;"> |
| 144 <msqrt mathbackground="green" id="radical0021"> |
| 145 <mspace id="base0021" width="3em" height="1em" mathbackground="blue"/> |
| 146 </msqrt> |
| 147 <mroot mathbackground="green" id="radical0022"> |
| 148 <mspace id="base0022" width="3em" height="1em" mathbackground="blue"/> |
| 149 <mspace width="3em" height="1em" mathbackground="black"/> |
| 150 </mroot> |
| 151 </math> |
| 152 </p> |
| 153 <hr/> |
| 154 <p> |
| 155 <math style="font-family: extraascender3000-rulethickness1000;"> |
| 156 <msqrt mathbackground="green" id="radical0031"> |
| 157 <mspace id="base0031" width="3em" height="1em" mathbackground="blue"/> |
| 158 </msqrt> |
| 159 <mroot mathbackground="green" id="radical0032"> |
| 160 <mspace id="base0032" width="3em" height="1em" mathbackground="blue"/> |
| 161 <mspace width="3em" height="1em" mathbackground="black"/> |
| 162 </mroot> |
| 163 </math> |
| 164 </p> |
| 165 <hr/> |
| 166 <p> |
| 167 <math style="font-family: kernafterdegreeminus5000-rulethickness1000;"> |
| 168 <mroot> |
| 169 <mspace id="base004" width="3em" height="2em" mathbackground="blue"/> |
| 170 <mspace id="index004" width="7em" height="1em" mathbackground="green"/> |
| 171 </mroot> |
| 172 </math> |
| 173 </p> |
| 174 <hr/> |
| 175 <p> |
| 176 <math style="font-family: kernbeforedegree4000-rulethickness1000;"> |
| 177 <mroot id="radical005" mathbackground="blue"> |
| 178 <mspace width="3em" height="1em"/> |
| 179 <mspace id="index005" width="3em" height="1em" mathbackground="green"/> |
| 180 </mroot> |
| 181 </math> |
| 182 </p> |
| 183 <hr/> |
| 184 <p> |
| 185 <math style="font-family: rulethickness8000;"> |
| 186 <msqrt mathbackground="green" id="radical0061"> |
| 187 <mspace id="base0061" width="3em" height="1em" mathbackground="blue"/> |
| 188 </msqrt> |
| 189 <mroot mathbackground="green" id="radical0062"> |
| 190 <mspace id="base0062" width="3em" height="1em" mathbackground="blue"/> |
| 191 <mspace width="3em" height="1em" mathbackground="black"/> |
| 192 </mroot> |
| 193 </math> |
| 194 </p> |
| 195 <p> |
| 196 <math style="font-family: verticalgap6000-rulethickness1000;"> |
| 197 <msqrt mathbackground="green" id="radical0071"> |
| 198 <mspace id="base0071" width="3em" height="1em" mathbackground="blue"/> |
| 199 </msqrt> |
| 200 <mroot mathbackground="green" id="radical0072"> |
| 201 <mspace id="base0072" width="3em" height="1em" mathbackground="blue"/> |
| 202 <mspace width="3em" height="1em" mathbackground="black"/> |
| 203 </mroot> |
| 204 </math> |
| 205 </p> |
| 206 <hr/> |
| 207 </body> |
| 208 </html> |
OLD | NEW |