fontspec_ = buf->masterBuffer()->params().useNonTeXFonts;
} else {
global_style_ = InsetQuotesParams::EnglishQuotes;
- fontenc_ = lyxrc.fontenc;
+ fontenc_ = "OT1";
fontspec_ = false;
}
if (style.empty())
}
cur.recordUndoInset(this);
parseString(cmd.getArg(1), true);
- cur.buffer()->updateBuffer();
+ cur.forceBufferUpdate();
break;
}
default:
// (spacing and kerning is then handled respectively)
qstr = docstring(1, quotechar);
}
+ // The CJK marks are not yet covered by utf8 inputenc (we don't have the entry in
+ // unicodesymbols, since we don't want to add fake synbols there).
else if (style == InsetQuotesParams::CJKQuotes || style == InsetQuotesParams::CJKAngleQuotes) {
- if (runparams.encoding && runparams.encoding->encodable(quotechar))
+ if (runparams.encoding && runparams.encoding->name() != "utf8"
+ && runparams.encoding->encodable(quotechar))
qstr = docstring(1, quotechar);
else
qstr = quoteparams.getLaTeXQuote(quotechar, "int");
if (!runparams.pass_thru) {
// Guard against unwanted ligatures with preceding text
char_type const lastchar = os.lastChar();
+ // LuaTeX does not respect {} as ligature breaker by design,
+ // see https://tex.stackexchange.com/q/349725/19291
+ docstring const nolig =
+ (runparams.flavor == OutputParams::LUATEX
+ || runparams.flavor == OutputParams::DVILUATEX) ?
+ from_ascii("\\/") : from_ascii("{}");
// !` ?` => !{}` ?{}`
if (prefixIs(qstr, from_ascii("`"))
&& (lastchar == '!' || lastchar == '?'))
- os << "{}";
+ os << nolig;
// ``` ''' ,,, <<< >>>
// => `{}`` '{}'' ,{},, <{}<< >{}>>
if (contains(from_ascii(",'`<>"), lastchar)
&& prefixIs(qstr, lastchar))
- os << "{}";
+ os << nolig;
}
os << qstr;
features.require("textquotedbl");
break;
}
- // we fake these from math
+ // we fake these from math (also for utf8 inputenc
+ // currently; see above)
case 0x300e: // LEFT WHITE CORNER BRACKET
case 0x300f: // RIGHT WHITE CORNER BRACKET
if (!features.runparams().encoding
+ || features.runparams().encoding->name() == "utf8"
|| !features.runparams().encoding->encodable(type))
features.require("stmaryrd");
break;