- // these must be loaded if glyphs of this script are used
- // unless a language providing them is used in the document
- // FIXME: currently the option is written twice in this case
- if (mustProvide("textgreek"))
- encodings.insert(encodings.begin(), "LGR");
- if (mustProvide("textcyr"))
- encodings.insert(encodings.begin(), "T2A");
-
- LanguageList::const_iterator it = UsedLanguages_.begin();
- LanguageList::const_iterator end = UsedLanguages_.end();
- for (; it != end; ++it)
- if (!(*it)->fontenc().empty()
- && ascii_lowercase((*it)->fontenc()) != "none") {
- vector<string> extraencs = getVectorFromString((*it)->fontenc());
- vector<string>::const_iterator fit = extraencs.begin();
- for (; fit != extraencs.end(); ++fit) {
- if (find(encodings.begin(), encodings.end(), *fit) == encodings.end())
- encodings.insert(encodings.begin(), *fit);
- }
+ if (!onlylangs) {
+ // these must be loaded if glyphs of this script are used
+ // unless a language providing them is used in the document
+ if (mustProvide("textgreek")
+ && find(encs.begin(), encs.end(), "LGR") == encs.end())
+ encs.insert(encs.begin(), "LGR");
+ if (mustProvide("textcyrillic")
+ && find(encs.begin(), encs.end(), "T2A") == encs.end())
+ encs.insert(encs.begin(), "T2A");
+ }
+
+ for (auto const & lang : UsedLanguages_) {
+ vector<string> extraencs =
+ getVectorFromString(lang->fontenc(buffer().masterParams()));
+ for (auto const & extra : extraencs) {
+ if (extra != "none" && find(encs.begin(), encs.end(), extra) == encs.end())
+ encs.insert(encs.begin(), extra);