- // for arabic_arabi and farsi we also need to load the LAE and
- // LFE encoding
- // XeTeX and LuaTeX (with OS fonts) work without fontenc
- if (font_encoding() != "default" && language->lang() != "japanese"
- && !useNonTeXFonts && !features.isProvided("fontenc")) {
- docstring extra_encoding;
- if (features.mustProvide("textgreek"))
- extra_encoding += from_ascii("LGR");
- if (features.mustProvide("textcyr")) {
- if (!extra_encoding.empty())
- extra_encoding.push_back(',');
- extra_encoding += from_ascii("T2A");
- }
- if (!extra_encoding.empty() && !font_encoding().empty())
- extra_encoding.push_back(',');
- size_t fars = language_options.str().find("farsi");
- size_t arab = language_options.str().find("arabic");
- if (language->lang() == "arabic_arabi"
- || language->lang() == "farsi" || fars != string::npos
- || arab != string::npos) {
- os << "\\usepackage[" << extra_encoding
- << from_ascii(font_encoding())
- << ",LFE,LAE]{fontenc}\n";
- } else {
- os << "\\usepackage[" << extra_encoding
- << from_ascii(font_encoding())
+ // XeTeX and LuaTeX (with OS fonts) do not need fontenc
+ if (!useNonTeXFonts && !features.isProvided("fontenc")
+ && font_encoding() != "default") {
+ // get main font encodings
+ vector<string> fontencs = font_encodings();
+ // get font encodings of secondary languages
+ features.getFontEncodings(fontencs);
+ if (!fontencs.empty()) {
+ os << "\\usepackage["
+ << from_ascii(getStringFromVector(fontencs))