mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-13 06:20:28 +00:00
f215bb3b92
The code is now so much shorter that it is scary... Expect that further changes will be necessary Cursor boundary is not handled yet.
48 lines
1.7 KiB
Plaintext
48 lines
1.7 KiB
Plaintext
This branch is where I (jmarc) try to implement string_wise metrics
|
|
computation. This is done through a series of cleanups. The expected
|
|
speed improvement will only be visible at the end of the road: indeed
|
|
for now we intend to keep unchanged behavior for testing purposes.
|
|
|
|
What is done:
|
|
* Make TextMetrics methods operate on Row objects: breakRow and
|
|
setRowHeight instead of rowBreakPoint and rowHeight.
|
|
|
|
* change breakRow operation to operate on text strings on which
|
|
metrics are computed. The list of elements is stored in the row object
|
|
in visual ordering, not logical.
|
|
|
|
* re-implement cursorX using row elements
|
|
|
|
* re-implement getColumnNearX using row elements (boundary is not
|
|
considered yet).
|
|
|
|
* Implement proper string metrics computation (with cache), when
|
|
lyxrc.force_paint_single_char is false. In this case, remove also
|
|
useless workarounds which disable kerning and ligatures.
|
|
|
|
Next steps:
|
|
|
|
* get rid of old code of cursorX and getColumnNearX (which have been
|
|
kept for comparison purpose, guarded with KEEP_OLD_METRICS_CODE).
|
|
|
|
* re-implement row painting using row elements (can it be done?)
|
|
|
|
* profile and see how performance can be improved.
|
|
|
|
* Document the code
|
|
|
|
Difference in behavior
|
|
* end of paragraph markers metrics are computed with the font of the
|
|
actual text, not default font. This will be extended to the other
|
|
methods.
|
|
|
|
* When cursor is after a LtR separator just before a RtL chunk, the
|
|
cursor posiiton is computed better with the new code.
|
|
|
|
Other differences that should be considered as bugs
|
|
* words longer than the screen are no monger broken at an arbitrary
|
|
point. This is a problem for languages like chinese that do not use
|
|
separators.
|
|
|
|
* Boundary is not taken in account properly in getColumnNearX
|