formula
有幸在项目中实现自己的数学公式编辑器,比之前想象的复杂的多,涉及Latex知识、字体知识、空间数据结构、QPainter等等,每一个都不是省油的灯。
本文不展开每个方面都讲了,只讲一下界面上涉及光标的公式编辑功能:
- 编辑光标的绘制;
- 查询当前字符的位置;
- 插入还是从尾部添加字符;
- 左右箭头按键的处理。
光标在QQuickPaintedItem的绘制,需要三个参数,x值,y值,以及光标的高度;(x, y)需要跟踪当前公式字符的位置,光标的高度需要用到当前字符字体的高度、深度以及偏移量。
当前字符的位置需要考虑Latex的相关知识,请移步阅读TeXbool.pdf了解相关知识,读起来相当考验耐心。包括Kerning等知识。
插入新的Latex元素,比如希腊字母,根号,分号等等,需要知道插入位置;这个位置需要设计相应的数据结构存放这些位置,甚至要细节到字符的前面或者后面。
键盘上左右按键的处理,就是在一个公式中移动光标,同样需要数据结构支撑,最终的实现效果参考片头的视频。