]> git.lyx.org Git - lyx.git/blob - 00README_STR_METRICS_BRANCH
Remove LyXRC option force_paint_single_char
[lyx.git] / 00README_STR_METRICS_BRANCH
1
2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 PLEASE DO NOT DO WORK ON TOP OF THIS BRANCH.
4 I INTEND TO REWRITE HISTORY LATER!!!
5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6
7 This branch is where I (jmarc) try to implement string-wise metrics
8 computation. The goal is to have both good metrics computation (and
9 font with proper kerning and ligatures) and better performance than
10 what we have with force_paint_single_char. Moreover there has been
11 some code factorization in TextMetrics, where the same row-breaking
12 algorithm was basically implemented 3 times.
13
14 The bugs fixed and caused by this branch are tracked at ticket #9003:
15 http://www.lyx.org/trac/ticket/9003
16
17
18 What is done:
19
20 * Make TextMetrics methods operate on Row objects: breakRow and
21   setRowHeight instead of rowBreakPoint and rowHeight.
22
23 * Change breakRow operation to operate at strings level to compute
24   metrics The list of elements is stored in the row object in visual
25   ordering, not logical. This will eventually allow to get rid of the
26   Bidi class.
27
28 * rename getColumnNearX to getPosNearX (and change code accordingly).
29   It does not make sense to return a position relative to the start of
30   row, since nobody needs this.
31
32 * Re-implement cursorX and getPosNearX using row elements.
33
34 * Get rid of lyxrc.force_paint_single_char. This was a workaround that
35   is not necessary anymore.
36
37 * Implement proper string metrics computation (with cache). Remove
38   useless workarounds which disable kerning and ligatures.
39
40 * Draw also RtL text string-wise. This speeds-up drawing.
41
42 * Do not cut strings at separators in RowPainter when text is not
43   justified. This speeds-up painting by reducing the number of strings
44   to draw.
45
46 * Do not cut strings at selection boundary in RowPainter. This avoids
47   ligature/kerning breaking in latin text, and bad rendering problems
48   in Arabic.
49
50 * Remove homebrew Arabic and Hebrew support from Encoding.cpp. We now
51   rely on Qt to do handle complex scripts.
52
53
54 Next steps:
55
56 * Maybe get rid of LyXRC::rtl_support, which does not have a real use case.