if (c == 0x0022) {
if (features.runparams().isFullUnicode() && bp.useNonTeXFonts)
features.require("textquotedblp");
- else if (bp.main_font_encoding() != "T1")
+ else if (bp.main_font_encoding() != "T1"
+ || ((&owner_->getFontSettings(bp, i))->language()->internalFontEncoding()))
features.require("textquotedbl");
}
BufferEncodings::validate(c, features);
InsetQuotes::InsetQuotes(Buffer * buf, string const & str)
: Inset(buf),
style_(InsetQuotesParams::EnglishQuotes), side_(InsetQuotesParams::OpeningQuote),
- pass_thru_(false)
+ pass_thru_(false), internal_fontenc_(false)
{
if (buf) {
global_style_ = buf->masterBuffer()->params().quotes_style;
InsetQuotes::InsetQuotes(Buffer * buf, char_type c, InsetQuotesParams::QuoteLevel level,
string const & side, string const & style)
- : Inset(buf), level_(level), pass_thru_(false), fontspec_(false)
+ : Inset(buf), level_(level), pass_thru_(false), fontspec_(false), internal_fontenc_(false)
{
bool dynamic = false;
if (buf) {
BufferParams const & bp = buffer().masterBuffer()->params();
pass_thru_ = it.paragraph().isPassThru();
context_lang_ = it.paragraph().getFontSettings(bp, it.pos()).language()->code();
+ internal_fontenc_ = it.paragraph().getFontSettings(bp, it.pos()).language()->internalFontEncoding();
fontenc_ = bp.main_font_encoding();
global_style_ = bp.quotes_style;
fontspec_ = bp.useNonTeXFonts;
case 0x0022: {
if (features.runparams().isFullUnicode() && fontspec_)
features.require("textquotedblp");
- else if (fontenc_ != "T1")
+ else if (fontenc_ != "T1" || internal_fontenc_)
features.require("textquotedbl");
break;
}
InsetQuotesParams::QuoteLevel level_;
///
InsetQuotesParams::QuoteStyle global_style_;
- ///
+ /// Current font encoding
std::string fontenc_;
/// Code of the contextual language
std::string context_lang_;
bool pass_thru_;
/// Do we use fontspec?
bool fontspec_;
+ /// Do we have an internal font encoding?
+ bool internal_fontenc_;
///
friend class InsetQuotesParams;