]> git.lyx.org Git - lyx.git/commitdiff
Do not repeatedly call main_font_encoding()
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 20 Dec 2021 11:09:12 +0000 (12:09 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 20 Dec 2021 11:09:12 +0000 (12:09 +0100)
This method impacts on performance and we store the value anyway in
the output params.

src/BufferParams.cpp
src/LaTeXFeatures.cpp
src/Paragraph.cpp
src/insets/InsetQuotes.cpp
src/insets/InsetQuotes.h

index a41a57075166ab80d05b86ea68b5417b781362cc..fc559a484886b2d3d55b32ff5d717db10a824a1d 100644 (file)
@@ -1847,7 +1847,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 
        // if we use fontspec or newtxmath, we have to load the AMS packages here
        string const ams = features.loadAMSPackages();
-       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
+       string const main_font_enc = features.runparams().main_fontenc;
+       bool const ot1 = (main_font_enc == "default" || main_font_enc == "OT1");
        bool const use_newtxmath =
                theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getUsedPackage(
                        ot1, false, false) == "newtxmath";
@@ -1887,7 +1888,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        // set font encoding
        // non-TeX fonts use font encoding TU (set by fontspec)
        if (!useNonTeXFonts && !features.isProvided("fontenc")
-           && main_font_encoding() != "default") {
+           && main_font_enc != "default") {
                // get main font encodings
                vector<string> fontencs = font_encodings();
                // get font encodings of secondary languages
@@ -3235,12 +3236,13 @@ string const BufferParams::dvips_options() const
 
 string const BufferParams::main_font_encoding() const
 {
-       if (font_encodings().empty()) {
+       vector<string> const fencs = font_encodings();
+       if (fencs.empty()) {
                if (ascii_lowercase(language->fontenc(*this)) == "none")
                        return "none";
                return "default";
        }
-       return font_encodings().back();
+       return fencs.back();
 }
 
 
@@ -3255,9 +3257,10 @@ vector<string> const BufferParams::font_encodings() const
                if (!doc_fontenc.empty())
                        // If we have a custom setting, we use only that!
                        return getVectorFromString(doc_fontenc);
-               if (!language->fontenc(*this).empty()
+               string const lfe = language->fontenc(*this);
+               if (!lfe.empty()
                    && ascii_lowercase(language->fontenc(*this)) != "none") {
-                       vector<string> fencs = getVectorFromString(language->fontenc(*this));
+                       vector<string> fencs = getVectorFromString(lfe);
                        for (auto & fe : fencs) {
                                if (find(fontencs.begin(), fontencs.end(), fe) == fontencs.end())
                                        fontencs.push_back(fe);
@@ -3509,7 +3512,8 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
        }
 
        // Tex Fonts
-       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
+       bool const ot1 = (features.runparams().main_fontenc == "default"
+                         || features.runparams().main_fontenc == "OT1");
        bool const dryrun = features.runparams().dryrun;
        bool const complete = (fontsSans() == "default" && fontsTypewriter() == "default");
        bool const nomath = (fontsMath() != "auto");
index 0344202c913799d2a5f2dd6598be3d49193912ae..f321799103e43c6634fb88f37dd680bd7c31aaa7 100644 (file)
@@ -783,8 +783,8 @@ bool LaTeXFeatures::isProvided(string const & name) const
        if (params_.useNonTeXFonts)
                return params_.documentClass().provides(name);
 
-       bool const ot1 = (params_.main_font_encoding() == "default"
-               || params_.main_font_encoding() == "OT1");
+       bool const ot1 = (runparams().main_fontenc == "default"
+               || runparams().main_fontenc == "OT1");
        bool const complete = (params_.fontsSans() == "default"
                && params_.fontsTypewriter() == "default");
        bool const nomath = (params_.fontsMath() == "default");
@@ -1315,8 +1315,8 @@ string const LaTeXFeatures::getPackages() const
        // if fontspec or newtxmath is used, AMS packages have to be loaded
        // before fontspec (in BufferParams)
        string const amsPackages = loadAMSPackages();
-       bool const ot1 = (params_.main_font_encoding() == "default"
-                         || params_.main_font_encoding() == "OT1");
+       bool const ot1 = (runparams().main_fontenc == "default"
+                         || runparams().main_fontenc == "OT1");
        bool const use_newtxmath =
                theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
                        ot1, false, false) == "newtxmath";
@@ -1584,15 +1584,15 @@ TexString LaTeXFeatures::getMacros() const
                macros << lyxZWSP_def << '\n';
 
        if (!usePolyglossia() && mustProvide("textgreek")) {
-           // ensure LGR font encoding is defined also if fontenc is not loaded by LyX
-               if (params_.main_font_encoding() == "default")
+               // ensure LGR font encoding is defined also if fontenc is not loaded by LyX
+               if (runparams().main_fontenc == "default")
                        macros << textgreek_LGR_def;
                macros << textgreek_def << '\n';
        }
 
        if (!usePolyglossia() && mustProvide("textcyrillic")) {
                // ensure T2A font encoding is set up also if fontenc is not loaded by LyX
-               if (params_.main_font_encoding() == "default")
+               if (runparams().main_fontenc == "default")
                        macros << textcyr_T2A_def;
                macros << textcyr_def << '\n';
        }
index 2408261665ecf92f4fe9438250de2482c98d9176..6b960cd0c070dd3d9bede5bea624ccc4904f5a21 100644 (file)
@@ -1240,7 +1240,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
        //       non-standard font encoding. If we are using such a language,
        //       we do not output special T1 chars.
        if (!runparams.inIPA && !running_font.language()->internalFontEncoding()
-           && !runparams.isFullUnicode() && bparams.main_font_encoding() == "T1"
+           && !runparams.isFullUnicode() && runparams.main_fontenc == "T1"
            && latexSpecialT1(c, os, i, column))
                return;
        // NOTE: "fontspec" (non-TeX fonts) sets the font encoding to "TU" (untill 2017 "EU1" or "EU2")
@@ -1532,7 +1532,7 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const
                if (c == 0x0022) {
                        if (features.runparams().isFullUnicode() && bp.useNonTeXFonts)
                                features.require("textquotedblp");
-                       else if (bp.main_font_encoding() != "T1"
+                       else if (features.runparams().main_fontenc != "T1"
                                 || ((&owner_->getFontSettings(bp, i))->language()->internalFontEncoding()))
                                features.require("textquotedbl");
                } else if (ci.textfeature() && contains(ci.textpreamble(), '=')) {
index d503e8bf9a2b35003fe4133189b4cf760d0ea54a..dc6dbba68bfabe51092ca854e944957bbea8544f 100644 (file)
@@ -639,11 +639,8 @@ InsetQuotes::InsetQuotes(Buffer * buf, char_type c, QuoteLevel level,
        bool dynamic = false;
        if (buf) {
                global_style_ = buf->masterBuffer()->params().quotes_style;
-               fontenc_ = buf->masterBuffer()->params().main_font_encoding();
                dynamic = buf->masterBuffer()->params().dynamic_quotes;
                fontspec_ = buf->masterBuffer()->params().useNonTeXFonts;
-       } else {
-               fontenc_ = "OT1";
        }
        if (style.empty())
                style_ = dynamic ? QuoteStyle::Dynamic : global_style_;
@@ -891,7 +888,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
                // Use internal commands in headings with hyperref
                // (ligatures not featured in PDF strings)
                qstr = quoteparams.getLaTeXQuote(quotechar, "int", rtl_);
-       } else if (fontenc_ == "T1"
+       } else if (runparams.main_fontenc == "T1"
                   && !runparams.local_font->language()->internalFontEncoding()) {
                // Quotation marks for T1 font encoding
                // (using ligatures)
@@ -905,7 +902,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 #else
        } else if ((!runparams.use_babel
 #endif
-                  || (fontenc_ != "T1" && fontenc_ != "OT1"))
+                  || (runparams.main_fontenc != "T1" && runparams.main_fontenc != "OT1"))
                   || runparams.isFullUnicode()) {
                // Standard quotation mark macros
                // These are also used by babel
@@ -1008,7 +1005,6 @@ void InsetQuotes::updateBuffer(ParIterator const & it, UpdateType /* utype*/, bo
        pass_thru_ = it.paragraph().isPassThru();
        context_lang_ = font.language()->code();
        internal_fontenc_ = font.language()->internalFontEncoding();
-       fontenc_ = bp.main_font_encoding();
        global_style_ = bp.quotes_style;
        fontspec_ = bp.useNonTeXFonts;
        rtl_ = font.isRightToLeft();
@@ -1028,7 +1024,8 @@ void InsetQuotes::validate(LaTeXFeatures & features) const
 #else
        if (!features.useBabel()
 #endif
-           && !features.runparams().isFullUnicode() && fontenc_ != "T1") {
+           && !features.runparams().isFullUnicode()
+           && features.runparams().main_fontenc != "T1") {
                switch (type) {
                case 0x201a:
                        features.require("quotesinglbase");
@@ -1065,7 +1062,7 @@ void InsetQuotes::validate(LaTeXFeatures & features) const
        case 0x0022: {
                if (features.runparams().isFullUnicode() && fontspec_)
                        features.require("textquotedblp");
-               else if (fontenc_ != "T1" || internal_fontenc_)
+               else if (features.runparams().main_fontenc != "T1" || internal_fontenc_)
                        features.require("textquotedbl");
                break;
        }
index d1f23e4fec5780224ee087428264840a50fad65f..c4b525ce8c8de6757364af799779eb8cf26fd28a 100644 (file)
@@ -200,8 +200,6 @@ private:
        QuoteLevel level_ = QuoteLevel::Primary;
        ///
        QuoteStyle global_style_ = QuoteStyle::English;
-       /// Current font encoding
-       std::string fontenc_;
        /// Code of the contextual language
        std::string context_lang_;
        /// Is this in a pass-thru context?