]> git.lyx.org Git - features.git/commitdiff
DocBook: for computing font changes, simplify code by removing state evolution from...
authorThibaut Cuvelier <tcuvelier@lyx.org>
Mon, 26 Dec 2022 01:45:03 +0000 (02:45 +0100)
committerThibaut Cuvelier <tcuvelier@lyx.org>
Tue, 27 Dec 2022 00:58:48 +0000 (01:58 +0100)
src/Paragraph.cpp

index 9c3b0dce351357ffded52139f05ac405203ee7eb..8650826e4fb24fc0d1043f3bad9f56203812f684 100644 (file)
@@ -3568,8 +3568,6 @@ std::tuple<std::vector<docstring>, std::vector<docstring>, std::vector<docstring
     DocBookFontState old_fs = fs;
 
     Layout const & style = *d->layout_;
-    FontInfo font_old = style.labeltype == LABEL_MANUAL ? style.labelfont : style.font;
-    string const default_family = buf.masterBuffer()->params().fonts_default_family;
 
        // Conversion of the font opening/closing into DocBook tags.
     vector<xml::FontTag> tagsToOpen;
@@ -3602,14 +3600,17 @@ std::tuple<std::vector<docstring>, std::vector<docstring>, std::vector<docstring
 
                        // Restore the fonts for the new paragraph, so that the right tags are opened for the new entry.
                        if (!ignore_fonts_i) {
-                               font_old = outerfont.fontInfo();
                                fs = old_fs;
                        }
                }
 
                // Determine which tags should be opened or closed regarding fonts.
+               FontInfo const font_old = (i == 0 ?
+                               (style.labeltype == LABEL_MANUAL ? style.labelfont : style.font) :
+                               getFont(buf.masterBuffer()->params(), i - 1, outerfont).fontInfo());
                Font const font = getFont(buf.masterBuffer()->params(), i, outerfont);
-        tie(tagsToOpen, tagsToClose) = computeDocBookFontSwitch(font_old, font, default_family, fs);
+        tie(tagsToOpen, tagsToClose) = computeDocBookFontSwitch(
+                               font_old, font, buf.masterBuffer()->params().fonts_default_family, fs);
 
                if (!ignore_fonts_i) {
             vector<xml::EndFontTag>::const_iterator cit = tagsToClose.begin();
@@ -3665,7 +3666,6 @@ std::tuple<std::vector<docstring>, std::vector<docstring>, std::vector<docstring
                                        *xs << c;
                        }
                }
-               font_old = font.fontInfo();
        }
 
        // FIXME, this code is just imported from XHTML