X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=a57a28e813a317f2aa0ca9a5d178124379ac7ab5;hb=ec3aed75ad965160a96547b7e36c924c5df7a91b;hp=904911b1e15e10a79a06155b6da42ec42afacfd7;hpb=08ba2b9b450f3b4f8a720a5a0fa59b186fe3d1af;p=lyx.git diff --git a/src/Layout.cpp b/src/Layout.cpp index 904911b1e1..a57a28e813 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -862,8 +862,7 @@ void Layout::readSpacing(Lexer & lex) namespace { docstring const i18npreamble(Language const * lang, Encoding const & enc, - docstring const & templ, bool const polyglossia, - bool const unicode) + docstring const & templ, bool const polyglossia) { if (templ.empty()) return templ; @@ -890,10 +889,18 @@ docstring const i18npreamble(Language const * lang, Encoding const & enc, smatch sub; while (regex_search(preamble, sub, reg)) { string const key = sub.str(1); - string translated = to_utf8(lang->translateLayout(key)); - if (!unicode && langenc != bufenc) - translated = "\\inputencoding{" + texenc + "}" - + s1 + langenc + s2 + translated + docstring const name = lang->translateLayout(key); + // Check whether name can be encoded in the buffer encoding + bool encodable = true; + for (size_t i = 0; i < name.size(); ++i) { + if (enc.latexChar(name[i], true)[0] != name[i]) { + encodable = false; + break; + } + } + string const translated = encodable ? to_utf8(name) + : "\\inputencoding{" + texenc + "}" + + s1 + langenc + s2 + to_utf8(name) + s1 + bufenc + s2; preamble = subst(preamble, sub.str(), translated); } @@ -905,18 +912,16 @@ docstring const i18npreamble(Language const * lang, Encoding const & enc, docstring const Layout::langpreamble(Language const * lang, - Encoding const & enc, bool const polyglossia, - bool const unicode) const + Encoding const & enc, bool const polyglossia) const { - return i18npreamble(lang, enc, langpreamble_, polyglossia, unicode); + return i18npreamble(lang, enc, langpreamble_, polyglossia); } docstring const Layout::babelpreamble(Language const * lang, - Encoding const & enc, bool const polyglossia, - bool const unicode) const + Encoding const & enc, bool const polyglossia) const { - return i18npreamble(lang, enc, babelpreamble_, polyglossia, unicode); + return i18npreamble(lang, enc, babelpreamble_, polyglossia); }