From 816737b8433528fbd5b570252de06dee2452ac31 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Sun, 25 Mar 2007 10:53:01 +0000 Subject: [PATCH] Better comment from Dov Feldstern (and remove now obsolete comment about the isComposeChar functions) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17544 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/rowpainter.C | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/rowpainter.C b/src/rowpainter.C index 7d9066dad1..84c281c6ba 100644 --- a/src/rowpainter.C +++ b/src/rowpainter.C @@ -335,23 +335,24 @@ void RowPainter::paintChars(pos_type & vpos, LyXFont const & font, if (!isPrintableNonspace(c)) break; - // We have to draw hebrew characters one by one, since we - // apply our own bidi algorithm, and qt would reverse the - // order of characters in words again (bug 3040). - // The same applys for arabic (see below). + /* Because we do our own bidi, at this point the strings are + * already in visual order. However, Qt also applies its own + * bidi algorithm to strings that it paints to the screen. + * Therefore, if we were to paint Hebrew/Arabic words as a + * single string, the letters in the words would get reversed + * again. In order to avoid that, we don't collect Hebrew/ + * Arabic characters, but rather paint them one at a time. + * See also http://thread.gmane.org/gmane.editors.lyx.devel/79740 + */ if (hebrew) break; /* FIXME: these checks are irrelevant, since 'arabic' and * 'hebrew' alone are already going to trigger a break. - * The encodings used by isComposeChar_arabic and - * isComposeChar_hebrew are incorrect (probably iso8859-8 and - * iso8859-6), they also have to be adapted to Unicode. * However, this should not be removed completely, because * if an alternative solution is found which allows grouping * of arabic and hebrew characters, then these breaks may have * to be re-applied. - * See also http://thread.gmane.org/gmane.editors.lyx.devel/79740 if (arabic && Encodings::isComposeChar_arabic(c)) break; @@ -362,6 +363,7 @@ void RowPainter::paintChars(pos_type & vpos, LyXFont const & font, if (arabic) { c = par_.transformChar(c, pos); + /* see comment in hebrew, explaining why we break */ break; }