commit 421853d1bf021b7180a61d8c2908ede2dce48061
Author: Juergen Spitzmueller <[email protected]>
Date:   Mon Dec 26 14:41:14 2016 +0100

    Handle the case of TeX fonts LuaTeX
---
 src/insets/InsetQuotes.cpp |   19 +++++++++++++------
 src/insets/InsetQuotes.h   |    2 ++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index bc5d6d5..1191eb1 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -474,10 +474,14 @@ docstring const InsetQuotesParams::getGuiLabel(QuoteStyle 
const & qs)
 
 InsetQuotes::InsetQuotes(Buffer * buf, string const & str) : Inset(buf)
 {
-       if (buf)
+       if (buf) {
                global_style_ = buf->masterBuffer()->params().quotes_style;
-       else
+               fontspec_ = buf->masterBuffer()->params().useNonTeXFonts;
+       }
+       else {
                global_style_ = InsetQuotesParams::EnglishQuotes;
+               fontspec_ = false;
+       }
 
        parseString(str);
 }
@@ -485,7 +489,7 @@ InsetQuotes::InsetQuotes(Buffer * buf, string const & str) 
: Inset(buf)
 
 InsetQuotes::InsetQuotes(Buffer * buf, char_type c, 
InsetQuotesParams::QuoteLevel level,
                         string const & side, string const & style)
-       : Inset(buf), level_(level), pass_thru_(false)
+       : Inset(buf), level_(level), pass_thru_(false), fontspec_(false)
 {
        bool dynamic = false;
        if (buf) {
@@ -493,9 +497,11 @@ InsetQuotes::InsetQuotes(Buffer * buf, char_type c, 
InsetQuotesParams::QuoteLeve
                fontenc_ = (buf->masterBuffer()->params().fontenc == "global")
                        ? lyxrc.fontenc : buf->params().fontenc;
                dynamic = buf->masterBuffer()->params().dynamic_quotes;
+               fontspec_ = buf->masterBuffer()->params().useNonTeXFonts;
        } else {
                global_style_ = InsetQuotesParams::EnglishQuotes;
                fontenc_ = lyxrc.fontenc;
+               fontspec_ = false;
        }
        if (style.empty())
                style_ = dynamic ? InsetQuotesParams::DynamicQuotes : 
global_style_;
@@ -761,7 +767,7 @@ void InsetQuotes::latex(otexstream & os, OutputParams const 
& runparams) const
        // In pass-thru context, we output plain quotes
        if (runparams.pass_thru)
                qstr = (level_ == InsetQuotesParams::PrimaryQuotes) ? 
from_ascii("\"") : from_ascii("'");
-       else if (style == InsetQuotesParams::PlainQuotes && 
runparams.isFullUnicode()) {
+       else if (style == InsetQuotesParams::PlainQuotes && fontspec_) {
                // For XeTeX and LuaTeX,we need to disable mapping to get 
straight
                // quotes. We define our own commands that do this
                qstr = (level_ == InsetQuotesParams::PrimaryQuotes) ?
@@ -897,6 +903,7 @@ void InsetQuotes::updateBuffer(ParIterator const & it, 
UpdateType /* utype*/)
        context_lang_ = it.paragraph().getFontSettings(bp, 
it.pos()).language()->code();
        fontenc_ = (bp.fontenc == "global") ? lyxrc.fontenc : bp.fontenc;
        global_style_ = bp.quotes_style;
+       fontspec_ = bp.useNonTeXFonts;
 }
 
 
@@ -941,14 +948,14 @@ void InsetQuotes::validate(LaTeXFeatures & features) const
        // in most output formats
        switch (type) {
        case 0x0027: {
-               if (features.runparams().isFullUnicode())
+               if (features.runparams().isFullUnicode() && fontspec_)
                                features.require("textquotesinglep");
                        else
                                features.require("textcomp");
                        break;
        }
        case 0x0022: {
-               if (features.runparams().isFullUnicode())
+               if (features.runparams().isFullUnicode() && fontspec_)
                        features.require("textquotedblp");
                else if (fontenc_ != "T1")
                        features.require("textquotedbl");
diff --git a/src/insets/InsetQuotes.h b/src/insets/InsetQuotes.h
index 0a7c20f..fa9c26b 100644
--- a/src/insets/InsetQuotes.h
+++ b/src/insets/InsetQuotes.h
@@ -180,6 +180,8 @@ private:
        std::string context_lang_;
        /// Is this in a pass-thru context?
        bool pass_thru_;
+       /// Do we use fontspec?
+       bool fontspec_;
        ///
        friend class InsetQuotesParams;
 

Reply via email to