// set font encoding
// for arabic_arabi and farsi we also need to load the LAE and
// LFE encoding
- // XeTeX works without fontenc
+ // XeTeX (isFullUnicode() flavor) works without fontenc
if (font_encoding() != "default" && language->lang() != "japanese"
- && !useXetex && !tclass.provides("fontenc")) {
+ && !features.runparams().isFullUnicode() && !tclass.provides("fontenc")) {
size_t fars = language_options.str().find("farsi");
size_t arab = language_options.str().find("arabic");
if (language->lang() == "arabic_arabi"
// these packages (xunicode, for that matter) need to be loaded at least
// after amsmath, amssymb, esint and the other packages that provide
// special glyphs
- if (useXetex) {
+ if (features.runparams().flavor == OutputParams::XETEX) {
os << "\\usepackage{xunicode}\n";
texrow.newline();
os << "\\usepackage{xltxtra}\n";
void BufferParams::writeEncodingPreamble(odocstream & os,
LaTeXFeatures & features, TexRow & texrow) const
{
- if (useXetex)
+ // fully unicode-aware backends (such as XeTeX) do not need this
+ if (features.runparams().isFullUnicode())
return;
if (inputenc == "auto") {
string const doc_encoding =
return flavor == LATEX || flavor == PDFLATEX || flavor == XETEX;
}
+
+bool OutputParams::isFullUnicode() const
+{
+ return flavor == XETEX;
+}
+
} // namespace lyx
FLAVOR flavor;
/// is it some flavor of LaTeX?
bool isLaTeX() const;
+ /// does this flavour support full unicode?
+ bool isFullUnicode() const;
/// Same, but for math output, which only matter is XHTML output.
MathFlavor math_flavor;
if (allowcust && d->endTeXParParams(bparams, os, texrow, runparams)
&& runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useXetex)
+ if (!runparams.isFullUnicode())
os << setEncoding(prev_encoding->iconvName());
}
bool encoding_switched = false;
Encoding const * const save_enc = runparams.encoding;
- if (runparams.flavor != OutputParams::XETEX
+ if (!runparams.isFullUnicode()
&& !runparams.encoding->hasFixedWidth()) {
// We need to switch to a singlebyte encoding, since the
// listings package cannot deal with multi-byte-encoded
- // glyphs (not needed with XeTeX).
+ // glyphs (not needed with full-unicode aware backends
+ // such as XeTeX).
Language const * const outer_language =
(runparams.local_font != 0) ?
runparams.local_font->language()
prev_env_language_ = par_language;
if (runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useXetex)
+ if (!runparams.isFullUnicode())
os << setEncoding(prev_encoding->iconvName());
}
}
prev_env_language_ = par_language;
if (runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useXetex)
+ if (!runparams.isFullUnicode())
os << setEncoding(prev_encoding->iconvName());
}
}
os << '}';
if (runparams.encoding != prev_encoding) {
runparams.encoding = prev_encoding;
- if (!bparams.useXetex)
+ if (!runparams.isFullUnicode())
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
// should be set back to that local_font's encoding.
- // However, do not change the encoding when XeTeX is used.
+ // However, do not change the encoding when a fully unicode aware backend
+ // such as XeTeX is used.
if (nextpit == paragraphs.end() && runparams_in.local_font != 0
&& runparams_in.encoding != runparams_in.local_font->language()->encoding()
&& (bparams.inputenc == "auto" || bparams.inputenc == "default")
- && (!bparams.useXetex)) {
+ && (!runparams.isFullUnicode())) {
runparams_in.encoding = runparams_in.local_font->language()->encoding();
os << setEncoding(runparams_in.encoding->iconvName());
}