state->prev_env_language_ = data.par_language;
if (runparams.encoding != data.prev_encoding) {
runparams.encoding = data.prev_encoding;
- //if (!bparams.useNonTeXFonts) // FIXME just for speedup, would require passing of "buf" as argument
- os << setEncoding(data.prev_encoding->iconvName());
+ os << setEncoding(data.prev_encoding->iconvName());
}
}
state->prev_env_language_ = data.par_language;
if (runparams.encoding != data.prev_encoding) {
runparams.encoding = data.prev_encoding;
- //if (!bparams.useNonTeXFonts) //FIXME just for speedup
- os << setEncoding(data.prev_encoding->iconvName());
+ os << setEncoding(data.prev_encoding->iconvName());
}
}
// get the first paragraph in sequence with this layout and depth
pit_type offset = 0;
while (true) {
- if (prev(pit, offset) == pars.begin())
+ if (lyx::prev(pit, offset) == pars.begin())
break;
- ParagraphList::const_iterator priorpit = prev(pit, offset + 1);
+ ParagraphList::const_iterator priorpit = lyx::prev(pit, offset + 1);
if (priorpit->layout() == current_layout
&& priorpit->params().depth() == current_depth)
++offset;
break;
}
- ParagraphList::const_iterator spit = prev(pit, offset);
+ ParagraphList::const_iterator spit = lyx::prev(pit, offset);
for (; spit != pars.end(); ++spit) {
if (spit->layout() != current_layout || spit->params().depth() < current_depth)
// encoding, since this only affects the position of the outputted
// \inputencoding command; the encoding switch will occur when necessary
if (bparams.inputenc == "auto"
+ && !runparams.isFullUnicode() // Xe/LuaTeX use one document-wide encoding (see also switchEncoding())
&& runparams.encoding->package() != Encoding::none) {
// Look ahead for future encoding changes.
// We try to output them at the beginning of the paragraph,
latexArgInsets(par, os, runparams, style.postcommandargs(), "post:");
if (runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useNonTeXFonts)
- os << setEncoding(prev_encoding->iconvName());
+ os << setEncoding(prev_encoding->iconvName());
}
}
}
// If this is the last paragraph, and a local_font was set upon entering
- // the inset, and we're using "auto" or "default" encoding, the encoding
+ // the inset, and we're using "auto" or "default" encoding, and not
+ // compiling with XeTeX or LuaTeX, the encoding
// should be set back to that local_font's encoding.
- // However, do not change the encoding when non-TeX fonts are used.
if (runparams.isLastPar && runparams_in.local_font != 0
&& runparams_in.encoding != runparams_in.local_font->language()->encoding()
&& (bparams.inputenc == "auto" || bparams.inputenc == "default")
- && !bparams.useNonTeXFonts) {
+ && !runparams.isFullUnicode()
+ ) {
runparams_in.encoding = runparams_in.local_font->language()->encoding();
os << setEncoding(runparams_in.encoding->iconvName());
}
OutputParams const & runparams, Encoding const & newEnc,
bool force)
{
+ // XeTeX/LuaTeX use only one encoding per document:
+ // * with useNonTeXFonts: "utf8plain",
+ // * with XeTeX and TeX fonts: "ascii" (inputenc fails),
+ // * with LuaTeX and TeX fonts: only one encoding accepted by luainputenc.
+ if (runparams.isFullUnicode())
+ return make_pair(false, 0);
+
Encoding const & oldEnc = *runparams.encoding;
bool moving_arg = runparams.moving_arg;
// If we switch from/to CJK, we need to switch anyway, despite custom inputenc