X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferParams.cpp;h=a12a2860dc037d4c7d87a068b998180c278e5ded;hb=858c12c6bb850b7ed7a708e3e66fd58ba6f06cb9;hp=032420bad62cf5d2ffd8095232687bf72faef706;hpb=7aad787047e095957cd8bdbb755df51dacc36091;p=lyx.git diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 032420bad6..a12a2860dc 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1499,18 +1499,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // XeTeX and LuaTeX (with OS fonts) do not need fontenc if (!useNonTeXFonts && !features.isProvided("fontenc") && font_encoding() != "default") { - vector fontencs; - // primary language font encoding and default encoding - if (ascii_lowercase(language->fontenc()) != "none") { - vector fencs = getVectorFromString(font_encoding()); - fontencs.insert(fontencs.end(), fencs.begin(), fencs.end()); - fencs = getVectorFromString(language->fontenc()); - vector::const_iterator fit = fencs.begin(); - for (; fit != fencs.end(); ++fit) { - if (find(fontencs.begin(), fontencs.end(), *fit) == fontencs.end()) - fontencs.push_back(*fit); - } - } + // get main font encodings + vector fontencs = font_encodings(); // get font encodings of secondary languages features.getFontEncodings(fontencs); if (!fontencs.empty()) { @@ -2762,7 +2752,31 @@ string const BufferParams::dvips_options() const string const BufferParams::font_encoding() const { - return (fontenc == "global") ? lyxrc.fontenc : fontenc; + return font_encodings().empty() ? "default" : font_encodings().back(); +} + + +vector const BufferParams::font_encodings() const +{ + string doc_fontenc = (fontenc == "global") ? lyxrc.fontenc : fontenc; + + vector fontencs; + + // "default" means "no explicit font encoding" + if (doc_fontenc != "default") { + fontencs = getVectorFromString(doc_fontenc); + if (!language->fontenc().empty() + && ascii_lowercase(language->fontenc()) != "none") { + vector fencs = getVectorFromString(language->fontenc()); + vector::const_iterator fit = fencs.begin(); + for (; fit != fencs.end(); ++fit) { + if (find(fontencs.begin(), fontencs.end(), *fit) == fontencs.end()) + fontencs.push_back(*fit); + } + } + } + + return fontencs; }