MathML:Stretchy: Difference between revisions

1,109 bytes removed ,  21 September 2011
(dictionary, heuristic rules, embellished op)
 
(9 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 ==
==  [DONE] Embellished operators ==


See {{bug|584332}}
There are specific stretchy rules for [http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3 embellished operators] that should be implemented. The remaining elements that we do not treat as embellished operators are:


== Operator dictionary and heuristic rules for the operator form ==
* first element of a semantics
* mstyle, mphantom, or mpadded used as mrow.
* mrow whose arguments consist (in any order) of one embellished operator and zero or more space-like elements.


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|21479}}.
 
[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]


== Operator dictionary and heuristic rules for the operator form ==


See {{bug|534970}} and {{bug|562460}}
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.


==  Embellished operators ==
[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.


There are specific stretchy rules for [http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3 embellished operators] that should be implemented.
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}}).
 
See {{bug|21479}}
 
== Diagonal direction ==
 
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).


== Stretching in mtable cells ==
== Stretching in mtable cells ==
Line 60: 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}}
Confirmed users
226

edits