KFormula is a formula editor for KOffice and can be used to create and edit mathematical formulas that can be included in other KOffice documents.
It provides simple input facilities and supports the functionality you expect from a KOffice application.
Flake
KFormula 1.x provides both a library and a kpart. KFormula 2 will still provide a part, but it won't provide a library anymore, it will make use of Flake and provide a shape and a tool. To accomplish this we have to do the following:
* Move code from libs/kformula to kformula/flake (IN PROGRESS)
* KFormula application should make use of FormulaShape
* Complete display support of FormulaShape elements
* Use KConfig to get KFormula's default settings
* Finish AttributeManager to handle defaults
* Write FormulaTool to be able to edit FormulaShapes
ODF / MathML
KFormula 1.6 got great ODF / MathML support, but there're still some elements and attributes unsupported. The complete list of unsupported things follow. Each element of the list includes with kind of support is lacking: loading means that the property is lost while parsing the document, saving means that the property is not written, rendering means that the property is not properly shown, or not shown at all. Many of these tasks are quite easy to implement and could be considered Junior Jobs. (see also the testsuite)
NOTE: Only Presentation Markup is considered here.
Token Elements
mo
* Support for attribute form: rendering ( Section 3.2.5.2, 3.2.5.7 )
* Support for attribute fence: rendering ( Section 3.2.5.2, 3.2.5.7 )
* Support for attribute separator: rendering ( Section 3.2.5.2, 3.2.5.7 )
* Support for attribute lspace: rendering ( Section 3.2.5.2, 3.2.5.7 )
* Support for attribute rspace: rendering ( Section 3.2.5.2, 3.2.5.7 )
* Support for attribute stretchy: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.8 )
* Support for attribute symmetric: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.8 )
* Support for attribute maxsize: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.8 )
* Support for attribute minsize: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.8 )
* Support for attribute largeop: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.9 )
* Support for attribute movablelimits: rendering ( Section 3.2.5.2, 3.2.5.7, 3.2.5.9 )
* Support for attribute accent: rendering ( Section 3.2.5.2, 3.2.5.7 )
mtext
* Proper support for space-like elements ( Section 3.2.6.2 )
mspace
* Support for attribute linebreak: rendering ( Section 3.2.7.2 )
ms
* Support for attribute lquote: rendering ( Section 3.2.8.2 )
* Support for attribute rquote: rendering ( Section 3.2.8.2 )
* Support for escaping content ( Section 3.2.8.2 )
Misc
* Support for
* Implement surrounding spaces around Token Elements
General Layout Schemata
mrow
* Support for 1 argument behaviour as the argument itself ( Section 3.3.1.2.1 )
* Support for proper grouping of mrow elements ( Section 3.3.1.3.1 )
mfrac
* Support for attribute bevelled: rendering ( Section 3.3.2.2 )
mstyle
* Support for attributes of all presentation elements which do not have required values ( Section 3.3.4.1, 3.3.4.2 ):
* fence (mo)
* separator (mo)
* lspace (mo)
* rspace (mo)
* stretchy (mo)
* symmetric (mo)
* maxsize (mo)
* minsize (mo)
* largeop (mo)
* movablelimits (mo)
* accent (mo)
* width (mspace)
* heigth (mspace)
* depth (mspace)
* linebreak (mspace)
* lquote (ms)
* rquote (ms)
* linethickness (mfrac)
* numalign (mfrac)
* denomalign (mfrac)
* bevelled (mfrac)
* PrivoxyWindowOpen(mfenced)
* close (mfenced)
* separators (mfenced)
* notation (menclose)
* subscriptshift (msub, msubsup, mmultiscripts)
* superscriptshift (msup, msubsup, mmultiscripts)
* accentunder (munder, munderover)
* accent (mover, munderover)
* align (mtable)
* rowalign (mtable)
* columnalign (mtable)
* groupalign (mtable)
* alignmentscope (mtable)
* columnwidth (mtable)
* width (mtable)
* rowspacing (mtable)
* columnspacing (mtable)
* rowlines (mtable)
* columnlines (mtable)
* frame (mtable)
* framespaciing (mtable)
* equalrows (mtable)
* equalcolumns (mtable)
* displaystyle (mtable)
* side (mtable)
* minlabelspacing (mtable)
* rowspan (mtd)
* columnspan (mtd)
* edge (malignmark)
* selection (maction)
* Support for rendering differences for attribute displaystyle ( Section 3.3.4.2.1 ) OPTIONAL
* Support proper order of priority applying attribute scriptlevel ( Section 3.3.4.2.2 ) OPTIONAL
mfenced
* Support for arbitrary string in attribute open ( Section 3.3.8.2 )
* Support for arbitrary string in attribute close ( Section 3.3.8.2 )
menclose
* Support for longdiv value ( Section 3.3.9.2 ) OPTIONAL
* Support for actuarial value ( Section 3.3.9.2) OPTIONAL
* Support for radical value ( Section 3.3.9.2 ) OPTIONAL
* Support for box value ( Section 3.3.9.2) OPTIONAL
* Support for roundedbox value ( Section 3.3.9.2 ) OPTIONAL
* Support for circle value ( Section 3.3.9.2) OPTIONAL
* Support for left value ( Section 3.3.9.2) OPTIONAL
* Support for right value ( Section 3.3.9.2) OPTIONAL
* Support for top value ( Section 3.3.9.2) OPTIONAL
* Support for bottom value ( Section 3.3.9.2) OPTIONAL
* Support for updiagonalstrike value ( Section 3.3.9.2) OPTIONAL
* Support for downdiagonalstrike value ( Section 3.3.9.2) OPTIONAL
* Support for verticalstrike value ( Section 3.3.9.2) OPTIONAL
* Support for horizontalstrike value ( Section 3.3.9.2) OPTIONAL
munder
* Support for attribute accentunder: rendering ( Section 3.4.4.2 )
* Proper rendering of underscript element
mover
* Support for attribute accent: rendering ( Section 3.4.5.2 )
* Proper rendering of overscript element
munderover
* Support for attribute accent: rendering ( Section 3.4.6.2, 3.4.5.2 )
* Support for attribute accentunder: rendering ( Section 3.4.6.2, 3.4.4.2 )
* Proper rendering of overscript element
* Proper rendering of underscript element
mmultiscripts
* Support for
* Support for attribute subscriptshift: loading, saving, rendering ( Section 3.4.7.2, 3.4.3.2 )
* Support for attribute superscriptshift: loading, saving, rendering ( Section 3.4.7.2, 3.4.3.2 )
Tables and Matrices
mtable
* Support proper alignment ( Section 3.5.5.10 )
* Support for MathML 1.01 deprecated inferred mtr loading ( Section 3.5.1.1 ) OPTIONAL
* Support for MathML 1.01 deprecated inferred mtd loading ( Section 3.5.1.1 ) OPTIONAL
* Support for attribute align: rendering ( Section 3.5.1.2 )
* Support for attribute rowalign: rendering ( Section 3.5.1.2 )
* Support for attribute columnalign: rendering ( Section 3.5.1.2, 3.5.5 )
* Support for attribute alignmentscope: rendering ( Section 3.5.1.2, 3.5.5, 3.5.5.9 )
* Support for attribute columnwidth: rendering ( Section 3.5.1.2 )
* Support for attribute width: rendering ( Section 3.5.1.2 )
* Support for attribute rowspacing: rendering ( Section 3.5.1.2 )
* Support for attribute columnspacing: rendering ( Section 3.5.1.2 )
* Support for attribute rowlines: rendering ( Section 3.5.1.2 )
* Support for attribute columnlines: rendering ( Section 3.5.1.2 )
* Support for attribute frame: rendering ( Section 3.5.1.2 )
* Support for attribute framespacing: rendering ( Section 3.5.1.2 )
* Support for attribute equalrows: rendering ( Section 3.5.1.2 )
* Support for attribute equalcolumns: rendering ( Section 3.5.1.2 )
* Support for attribute displaystyle: rendering ( Section 3.5.1.2 )
* Support for attribute side: rendering ( Section 3.5.1.2 )
* Support for attribute minlabelspacing: rendering ( Section 3.5.1.2 )
* Support for attribute rowalign: loading, saving, rendering ( Section 3.5.2.2 )
* Support for attribute columnalign: loading, saving, rendering ( Section 3.5.2.2 )
* Support for attribute groupalign: loading, saving, rendering ( Section 3.5.2.2, 3.5.5, 3.5.5.7 )
mlabeledtr
* Support for
* Support for attribute rowalign: loading, saving, rendering ( Section 3.5.3.2, 3.5.2.2 )
* Support for attribute columnalign: loading, saving, rendering ( Section 3.5.3.2, 3.5.2.2 )
* Support for attribute groupalign: loading, saving, rendering ( Section 3.5.3.2, 3.5.2.2, 3.5.5, 3.5.5.7 )
mtd
* Support for attribute rowspan: loading, saving, rendering ( Section 3.5.4.2 )
* Support for attribute columnspan: loading, saving, rendering ( Section 3.5.4.2 )
* Support for attribute rowalign: loading, saving, rendering ( Section 3.5.4.2 )
* Support for attribute columnalign: loading, saving, rendering ( Section 3.5.4.2 )
* Support for attribute groupalign: loading, saving, rendering ( Section 3.5.4.2, 3.5.5, 3.5.5.7 )
malignmark
* Support for
* Support for attribute edge: loading, saving, rendering ( Section 3.5.5.5 )
maligngroup
* Support for
* Support for attribute gropualign: loading, saving, rendering ( Section 3.5.5.6, 3.5.5.7 )
maction
* Support for toggle actiontype ( Section 3.6.1.1 ) OPTIONAL
* Support for statusline actiontype ( Section 3.6.1.1 ) OPTIONAL
* Support for tooltip actiontype ( Section 3.6.1.1 ) OPTIONAL
* Support for highlight actiontype ( Section 3.6.1.1 ) OPTIONAL
Misc
* Full support for named unicode characters, ( Chapter 6 )
Filters
* Support KFormula's old document format (.kfo) through a filter
* Full TeX import / export support.
Font support
KFormula supports Unicode fonts and includes currently Arev Sans fonts, which have very good support for mathematical symbols. However, KFormula still relies on TeX fonts for some symbol drawing. Thus, work in this area include:
* Find better math supporting free fonts. Arev Sans has good support, yet not perfect, if we find a better free font, we should provide it instead. This can be considered a Junior Job.
* Get rid of TeX symbol drawing. These symbols are mostly different kind of brackets, not properly supported by Arev Sans currently. Once we find a font that supports them, we could fully relay on Unicode fonts.
* Accesibility compliance. Fulfil Gary's report issues.
Usability
* Direct formula edition, posibly through various languages: OOo, TeX, possibly others.
* Usability review of KFormula
Scripting
* Add kross support
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:
0 comments:
Post a Comment