|
|
| (4 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| == [DONE] Scale stretchy == | | == [DONE] Scale stretchy == |
|
| |
|
| For various reasons, stretching may be imperfect: the user's system lacks mathematical fonts, we do not support yet the stretching for a particular char or we do not have a glyph of suitable size. Using a scale transform {{bug|414277}} would allow to workaround the issue of non-stretched characters and improve the accuracy of stretching. Note that as in TeX, an imperfect stretching causes issues such that | | For various reasons, stretching may be imperfect: the user's system lacks mathematical fonts, we do not support yet the stretching for a particular char or we do not have a glyph of suitable size. Using a scale transform {{bug|414277}} would allow to workaround the issue of non-stretched characters and improve the accuracy of stretching. Note that as in TeX, an imperfect stretching causes issues such as |
| [http://www.mozilla.org/projects/mathml/screenshots/ex31.gif radical symbols not touching the base]. | | [http://www.mozilla.org/projects/mathml/screenshots/ex31.gif radical symbols not touching the base]. |
|
| |
| == Improve lookup of char variants for large operators ==
| |
|
| |
| Large operators are essentially stretched using size variants. The purpose of {{bug|584332}} is to improve the selection of these variants. This is important now that we support STIX fonts and will help to prepare the support for the Asana Math font.
| |
|
| |
| == Operator dictionary and heuristic rules for the operator form ==
| |
|
| |
| Many operator properties affecting stretching are provided by the MathML Operator Dictionary. We should upgrade our dictionary to [http://www.w3.org/TR/MathML3/appendixc.html the one given in MathML3], where a lot of new entries are added and several properties modified. Also, the form infix/postfix/prefix is used to determine the properties of an operator. Hence, we need to implement the [http://www.w3.org/TR/MathML3/chapter3.html#presm.formdefval heuristic rules to determine the form] of an operator.
| |
|
| |
| See {{bug|534970}} and {{bug|562460}}
| |
|
| |
| [fred] The operator dictionary uses [http://hg.mozilla.org/mozilla-central/rev/4f08c0415dad the new syntax of MathML3]
| |
|
| |
| [fred] Our private "direction" property is [http://hg.mozilla.org/mozilla-central/rev/16fd52fea1aa available for any operators]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/170dc0922c23 remove infix entries for N-ary Union and Intersection]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/8ddb819c17fd add entries for vertical and horizontal arrows]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/7aee654600f2 add entries for stretchy fences]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/4428b9c468cd make operator with a stretchy form use the same direction for all their forms]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/8a52e79553b6 add private data "integral"]
| |
|
| |
| [fred] New patch pushed: [http://hg.mozilla.org/mozilla-central/rev/77e3880307ea update some entries whose stretchiness has changed]
| |
|
| |
|
| == [DONE] Embellished operators == | | == [DONE] Embellished operators == |
| Line 40: |
Line 14: |
| See {{bug|21479}}. | | See {{bug|21479}}. |
|
| |
|
| == Diagonal direction == | | == Operator dictionary and heuristic rules for the operator form == |
| | |
| | Many operator properties affecting stretching are provided by the MathML Operator Dictionary. We should upgrade our dictionary to [http://www.w3.org/TR/MathML3/appendixc.html the one given in MathML3], where a lot of new entries are added and several properties modified. |
| | |
| | [edit] Most entries have been upgraded in {{bug|534970}}. The [https://bugzilla.mozilla.org/show_bug.cgi?id=534970#c66 remaining differences] are for some diagonal arrows and bars. |
|
| |
|
| The MathML spec mentions diagonal arrows as an example of characters that stretch both in vertical and horizontal directions. We already support stretching of horizontal/vertical arrows using a composite char. The idea of {{bug|552290}} is to apply a rotation on this composite char to implement diagonal direction. We should add direction:updiagonal and direction:downdiagonal in our operator dictionary to distinguish this diagonal stretching. If we want a general mechanism, an attribute like basechar:\UNNNN should also be added to indicate on which char we should apply the rotation (i.e. a horizontal arrow in our case).
| | Also, the form infix/postfix/prefix is used to determine the properties of an operator. We should implement the [http://www.w3.org/TR/MathML3/chapter3.html#presm.formdefval heuristic rules to better determine the form] of an operator (see {{bug|562460}}). |
|
| |
|
| == Stretching in mtable cells == | | == Stretching in mtable cells == |
| Line 63: |
Line 41: |
| See {{bug|236963}} | | See {{bug|236963}} |
|
| |
|
| == Failure of stretching == | | == Diagonal direction == |
|
| |
|
| Stretching does not work on a MathML-only document
| | The MathML spec mentions diagonal arrows as an example of characters that stretch both in vertical and horizontal directions. We already support stretching of horizontal/vertical arrows using a composite char. The idea of {{bug|552290}} is to apply a rotation on this composite char to implement diagonal direction. We should add direction:updiagonal and direction:downdiagonal in our operator dictionary to distinguish this diagonal stretching. If we want a general mechanism, an attribute like basechar:\UNNNN should also be added to indicate on which char we should apply the rotation (i.e. a horizontal arrow in our case). |
|
| |
|
| <pre>
| | == Other bugs == |
| <math xmlns="http://www.w3.org/1998/Math/MathML">
| |
| <mo>{</mo>
| |
| <mfrac><mn>1</mn><mn>2</mn></mfrac>
| |
| </math>
| |
| </pre>
| |
| | |
| or for direct children of the <math/> element
| |
| | |
| <pre>
| |
| <math xmlns="http://www.w3.org/1998/Math/MathML">
| |
| <mo>(</mo>
| |
| <mfrac>
| |
| <mfrac>
| |
| <mi>a</mi>
| |
| <mi>b</mi>
| |
| </mfrac>
| |
| <mfrac>
| |
| <mn>c</mn>
| |
| <mi>d</mi>
| |
| </mfrac>
| |
| </mfrac>
| |
| <mo>)</mo>
| |
| </math>
| |
| </pre>
| |
|
| |
|
| See {{bug|442209}}, {{bug|585347}}. | | See {{bug|442209}}, {{bug|585347}}, {{bug|666754}}, {{bug|687751}}, {{bug|687807}} |