]> git.lyx.org Git - lyx.git/blobdiff - src/Encoding.cpp
Fix bug #11588.
[lyx.git] / src / Encoding.cpp
index 148ce0b195c44c888bbce672229a8c6d15d528a7..ad380d78039d69f83ffa048bb14b3ed9a54c51b5 100644 (file)
@@ -189,9 +189,16 @@ bool Encoding::encodable(char_type c) const
 {
        // assure the used encoding is properly initialized
        init();
-
        if (iconvName_ == "UTF-8" && package_ == none)
                return true;
+       // platex does not load inputenc: force conversion of supported characters
+       if (package_ == Encoding::japanese
+           && ((0xb7 <= c && c <= 0x05ff) // Latin-1 Supplement ... Hebrew
+                       || (0x1d00 <= c && c <= 0x218f) // Phonetic Extensions ... Number Forms
+                       || (0x2193 <= c && c <= 0x2aff) // Arrows ... Supplemental Mathematical Operators
+                       || (0xfb00 <= c && c <= 0xfb4f) // Alphabetic Presentation Forms
+                       || (0x1d400 <= c && c <= 0x1d7ff))) // Mathematical Alphanumeric Symbols
+               return false;
        if (c < start_encodable_ && !isForced(c))
                return true;
        if (encodable_.find(c) != encodable_.end())
@@ -223,8 +230,8 @@ pair<docstring, docstring> Encoding::latexString(docstring const & input, bool d
        docstring uncodable;
        bool terminate = false;
        for (size_t n = 0; n < input.size(); ++n) {
+               char_type const c = input[n];
                try {
-                       char_type const c = input[n];
                        pair<docstring, bool> latex_char = latexChar(c);
                        docstring const latex = latex_char.first;
                        if (terminate && !prefixIs(latex, '\\')
@@ -241,7 +248,8 @@ pair<docstring, docstring> Encoding::latexString(docstring const & input, bool d
                        result += latex;
                        terminate = latex_char.second;
                } catch (EncodingException & /* e */) {
-                       LYXERR0("Uncodable character in latexString!");
+                       LYXERR0("Uncodable character <" << docstring(1, c) 
+                                       << "> in latexString!");
                        if (dryrun) {
                                result += "<" + _("LyX Warning: ")
                                           + _("uncodable character") + " '";
@@ -306,10 +314,11 @@ bool Encodings::latexMathChar(char_type c, bool mathmode,
                if (!encoding || command.empty()) {
                        command = it->second.textcommand();
                        needsTermination = !it->second.textnotermination();
-                       addTextCmd(c);
                }
                if (mathmode)
                        addMathSym(c);
+               else
+                       addTextCmd(c);
        }
        return use_math;
 }