// XeTeX with TeX fonts is only safe with ASCII encoding,
// See #9740 and FIXME in BufferParams::encoding()
- // FIXME: when only the current paragraph is shown, this seems to be ignored:
- // characters encodable in the current encoding are not converted to ASCII-representation.
+ // FIXME: when only the current paragraph is shown, this is ignored and
+ // characters encodable in the current encoding are not converted
+ // to ASCII-representation.
if (!params().useNonTeXFonts && (runparams.flavor == OutputParams::XETEX))
runparams.encoding = encodings.fromLyXName("ascii");
string format = documentClass().outputFormat();
if (format == "latex") {
if (useNonTeXFonts)
- return "xetex"; // FIXME: why not "luatex"?
+ return "xetex"; // actually "xetex or luatex"
if (encoding().package() == Encoding::japanese)
return "platex";
}
Encoding const & BufferParams::encoding() const
{
- // FIXME: additionally, we must check for runparams().flavor == XeTeX
- // or runparams.isFullUnicode() to care for the combination
- // of XeTeX and TeX-fonts (see #9740).
- // Currently, we reset the encoding in Buffer::makeLaTeXFile
- // (for export) and Buffer::writeLaTeXSource (for preview).
+ // FIXME: For export with XeTeX and TeX fonts,
+ // this function returns the wrong value.
+ // The combination of XeTeX and TeX-fonts requires ASCII (see #9740).
+ // However, the flavor is no buffer parameter but only known once export started.
+ // Currently, we set runparams.encoding to ASCII in Buffer::makeLaTeXFile
+ // (for export) and Buffer::writeLaTeXSource (for preview)
+ // and prevent overwriting it with another encoding in Paragraph::latex
+ // and at four places in output_latex.cpp.
if (useNonTeXFonts)
return *(encodings.fromLyXName("utf8-plain"));
if (inputenc == "auto" || inputenc == "default")
if (allowcust && d->endTeXParParams(bparams, os, runparams)
&& runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useNonTeXFonts)
+ if (runparams.flavor != OutputParams::XETEX) // see BufferParams::encoding
os << setEncoding(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, would require passing of "buf" as argument
+ if (runparams.flavor != OutputParams::XETEX) // see BufferParams::encoding
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
+ if (runparams.flavor != OutputParams::XETEX) // see BufferParams::encoding
os << setEncoding(data.prev_encoding->iconvName());
}
}
latexArgInsets(par, os, runparams, style.postcommandargs(), "post:");
if (runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useNonTeXFonts)
+ if (runparams.flavor != OutputParams::XETEX) // see BufferParams::encoding
os << setEncoding(prev_encoding->iconvName());
}
}
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.flavor != OutputParams::XETEX // see BufferParams::encoding
+ ) {
runparams_in.encoding = runparams_in.local_font->language()->encoding();
os << setEncoding(runparams_in.encoding->iconvName());
}