On Mon, Oct 22, 2007 at 08:48:30AM +0200, Jürgen Spitzmüller wrote:
> Enrico Forestieri wrote:
> > > http://www.lyx.org/trac/changeset/20931 - Add support for greek and
> > > cyrillic chars such that it is not necessary to mark them in the proper
> > > language for typesetting.
> > > http://www.lyx.org/trac/changeset/20932 - Correct ordering
> > > http://www.lyx.org/trac/changeset/20945 - Some more Greek and Cyrillic
> > > symbols.
> >
> > [...]
> >
> > > http://www.lyx.org/trac/changeset/20972 - Better safe than sorry...
> >
> > I'll put together a patch for these ones.
> 
> Good!

Here it is. May I apply it?

-- 
Enrico
Index: src/Paragraph.cpp
===================================================================
--- src/Paragraph.cpp   (revision 21120)
+++ src/Paragraph.cpp   (working copy)
@@ -67,8 +67,10 @@ using std::ostream;
 namespace lyx {
 
 using support::contains;
+using support::prefixIs;
 using support::suffixIs;
 using support::rsplit;
+using support::rtrim;
 
 
 /////////////////////////////////////////////////////////////////////
@@ -188,6 +190,11 @@ public:
                             unsigned int & column,
                             Font const & font,
                             Layout const & style);
+       /// Output consecutive known unicode chars, belonging to the same
+       /// language as specified by \p preamble, to \p os starting from \p c.
+       /// \return the number of characters written.
+       int knownLangChars(odocstream & os, value_type c, string & preamble,
+                          Change &, Encoding const &, pos_type &);
        ///
        void simpleTeXSpecialChars(Buffer const &, BufferParams const &,
                                   odocstream &,
@@ -591,7 +598,7 @@ bool Paragraph::Pimpl::simpleTeXBlanks(E
        if (style.pass_thru)
                return false;
 
-       if (i < size() - 1) {
+       if (i + 1 < size()) {
                char_type next = getChar(i + 1);
                if (Encodings::isCombiningChar(next)) {
                        // This space has an accent, so we must always output 
it.
@@ -605,7 +612,7 @@ bool Paragraph::Pimpl::simpleTeXBlanks(E
            && column > lyxrc.plaintext_linelen
            && i
            && getChar(i - 1) != ' '
-           && (i < size() - 1)
+           && (i + 1 < size())
            // same in FreeSpacing mode
            && !owner_->isFreeSpacing()
            // In typewriter mode, we want to avoid
@@ -628,6 +635,66 @@ bool Paragraph::Pimpl::simpleTeXBlanks(E
 }
 
 
+int Paragraph::Pimpl::knownLangChars(odocstream & os,
+                                    value_type c,
+                                    string & preamble,
+                                    Change & runningChange,
+                                    Encoding const & encoding,
+                                    pos_type & i)
+{
+       // When the character is marked by the proper language, we simply
+       // get its code point in some encoding, otherwise we get the
+       // translation specified in the unicodesymbols file, which is
+       // something like "\textLANG{<spec>}". So, we have to retain
+       // "\textLANG{<spec>" for the first char but only "<spec>" for
+       // all subsequent chars.
+       docstring const latex1 = rtrim(encoding.latexChar(c), "}");
+       int length = latex1.length();
+       os << latex1;
+       while (i + 1 < size()) {
+               char_type next = getChar(i + 1);
+               // Stop here if next character belongs to another
+               // language or there is a change tracking status.
+               if (!Encodings::isKnownLangChar(next, preamble) ||
+                   runningChange != lookupChange(i + 1))
+                       break;
+               Font prev_font;
+               bool found = false;
+               FontList::const_iterator cit = fontlist.begin();
+               FontList::const_iterator end = fontlist.end();
+               for (; cit != end; ++cit) {
+                       if (cit->pos() >= i && !found) {
+                               prev_font = cit->font();
+                               found = true;
+                       }
+                       if (cit->pos() >= i + 1)
+                               break;
+               }
+               // Stop here if there is a font attribute change.
+               if (found && cit != end && prev_font != cit->font())
+                       break;
+               docstring const latex = rtrim(encoding.latexChar(next), "}");
+               docstring::size_type const j =
+                                       latex.find_first_of(from_ascii("{"));
+               if (j == docstring::npos) {
+                       os << latex;
+                       length += latex.length();
+               } else {
+                       os << latex.substr(j + 1);
+                       length += latex.substr(j + 1).length();
+               }
+               ++i;
+       }
+       // When the proper language is set, we are simply passed a code
+       // point, so we should not try to close the \textLANG command.
+       if (prefixIs(latex1, from_ascii("\\" + preamble))) {
+               os << '}';
+               ++length;
+       }
+       return length;
+}
+
+
 bool Paragraph::Pimpl::isTextAt(string const & str, pos_type pos) const
 {
        pos_type const len = str.length();
@@ -947,7 +1014,7 @@ void Paragraph::Pimpl::simpleTeXSpecialC
 
                        if (pnr == phrases_nr && c != '\0') {
                                Encoding const & encoding = 
*(runparams.encoding);
-                               if (i < size() - 1) {
+                               if (i + 1 < size()) {
                                        char_type next = getChar(i + 1);
                                        if (Encodings::isCombiningChar(next)) {
                                                column += 
latexSurrogatePair(os, c, next, encoding) - 1;
@@ -955,6 +1022,14 @@ void Paragraph::Pimpl::simpleTeXSpecialC
                                                break;
                                        }
                                }
+                               string preamble;
+                               if (Encodings::isKnownLangChar(c, preamble)) {
+                                       column +=
+                                               knownLangChars(os, c, preamble,
+                                                       running_change,
+                                                       encoding, i) - 1;
+                                       break;
+                               }
                                docstring const latex = encoding.latexChar(c);
                                if (latex.length() > 1 &&
                                    latex[latex.length() - 1] != '}') {
Index: src/LaTeXFeatures.cpp
===================================================================
--- src/LaTeXFeatures.cpp       (revision 21120)
+++ src/LaTeXFeatures.cpp       (working copy)
@@ -187,6 +187,20 @@ static string const changetracking_none_
        "\\newcommand{\\lyxadded}[3]{#3}\n"
        "\\newcommand{\\lyxdeleted}[3]{}\n";
 
+static string const textgreek_def =
+       "\\DeclareRobustCommand{\\greektext}{%\n"
+       " \\fontencoding{LGR}\\selectfont\n"
+       " \\def\\encodingdefault{LGR}}\n"
+       "\\DeclareRobustCommand{\\textgreek}[1]{\\leavevmode{\\greektext #1}}\n"
+       "\\DeclareFontEncoding{LGR}{}{}\n";
+
+static string const textcyr_def =
+       "\\DeclareRobustCommand{\\cyrtext}{%\n"
+       " \\fontencoding{T2A}\\selectfont\n"
+       " \\def\\encodingdefault{T2A}}\n"
+       "\\DeclareRobustCommand{\\textcyr}[1]{\\leavevmode{\\cyrtext #1}}\n"
+       "\\AtBeginDocument{\\DeclareFontEncoding{T2A}{}{}}\n";
+
 
 /////////////////////////////////////////////////////////////////////
 //
@@ -615,6 +629,12 @@ string const LaTeXFeatures::getMacros() 
        if (mustProvide("lyxarrow"))
                macros << lyxarrow_def << '\n';
 
+       if (mustProvide("textgreek"))
+               macros << textgreek_def << '\n';
+
+       if (mustProvide("textcyr"))
+               macros << textcyr_def << '\n';
+
        // quotes.
        if (mustProvide("quotesinglbase"))
                macros << quotesinglbase_def << '\n';
Index: src/Encoding.cpp
===================================================================
--- src/Encoding.cpp    (revision 21120)
+++ src/Encoding.cpp    (working copy)
@@ -401,6 +401,25 @@ bool Encodings::isCombiningChar(char_typ
 }
 
 
+bool Encodings::isKnownLangChar(char_type c, string & preamble)
+{
+       CharInfoMap::const_iterator const it = unicodesymbols.find(c);
+
+       if (it == unicodesymbols.end())
+               return false;
+
+       if (it->second.preamble != "textgreek" &&
+           it->second.preamble != "textcyr")
+               return false;
+
+       if (preamble.empty()) {
+               preamble = it->second.preamble;
+               return true;
+       }
+       return it->second.preamble == preamble;
+}
+
+
 Encoding const * Encodings::getFromLyXName(string const & name) const
 {
        EncodingList::const_iterator it = encodinglist.find(name);
Index: src/Encoding.h
===================================================================
--- src/Encoding.h      (revision 21120)
+++ src/Encoding.h      (working copy)
@@ -143,6 +143,15 @@ public:
        /// Is this a combining char?
        static bool isCombiningChar(char_type c);
        /**
+        * Is this a known char from some language?
+        * If \p preamble is empty and code point \p c is known to belong
+        * to a supported language, true is returned and \p preamble is set
+        * to the corresponding entry in the unicodesymbols file.
+        * If \p preamble is not empty, a check is made whether code point
+        * \p c is a known character matching the preamble entry.
+        */
+       static bool isKnownLangChar(char_type c, std::string & preamble);
+       /**
         * Add the preamble snippet needed for the output of \p c to
         * \p features.
         * This does not depend on the used encoding, since the inputenc
Index: lib/unicodesymbols
===================================================================
--- lib/unicodesymbols  (revision 21120)
+++ lib/unicodesymbols  (working copy)
@@ -684,6 +684,177 @@
 #0x036d ""                         "" "combining" # COMBINING LATIN SMALL 
LETTER T
 #0x036e ""                         "" "combining" # COMBINING LATIN SMALL 
LETTER V
 #0x036f ""                         "" "combining" # COMBINING LATIN SMALL 
LETTER X
+0x0374 "\\textgreek{\char254}"    "textgreek" "" # GREEK NUMERAL SIGN
+0x0375 "\\textgreek{\char255}"    "textgreek" "" # GREEK LOWER NUMERAL SIGN
+0x037e "\\textgreek{\char63}"     "textgreek" "" # GREEK QUESTION MARK
+0x0384 "\\textgreek{\char39}"     "textgreek" "" # GREEK TONOS
+0x0385 "\\textgreek{\char35}"     "textgreek" "" # GREEK DIALYTIKA TONOS
+0x0386 "\\textgreek{\char39A}"    "textgreek" "" # GREEK CAPITAL LETTER ALPHA 
WITH TONOS
+0x0387 "\\textgreek{\char38}"     "textgreek" "" # GREEK ANO TELEIA
+0x0388 "\\textgreek{\char39E}"    "textgreek" "" # GREEK CAPITAL LETTER 
EPSILON WITH TONOS
+0x0389 "\\textgreek{\char39H}"    "textgreek" "" # GREEK CAPITAL LETTER ETA 
WITH TONOS
+0x038a "\\textgreek{\char39I}"    "textgreek" "" # GREEK CAPITAL LETTER IOTA 
WITH TONOS
+0x038c "\\textgreek{\char39O}"    "textgreek" "" # GREEK CAPITAL LETTER 
OMICRON WITH TONOS
+0x038e "\\textgreek{\char39U}"    "textgreek" "" # GREEK CAPITAL LETTER 
UPSILON WITH TONOS
+0x038f "\\textgreek{\char39W}"    "textgreek" "" # GREEK CAPITAL LETTER OMEGA 
WITH TONOS
+0x0390 "\\textgreek{\char242}"    "textgreek" "" # GREEK SMALL LETTER IOTA 
WITH DIALYTKA
+0x0391 "\\textgreek{A}"           "textgreek" "" # GREEK CAPITAL LETTER ALPHA
+0x0392 "\\textgreek{B}"           "textgreek" "" # GREEK CAPITAL LETTER BETA
+0x0393 "\\textgreek{G}"           "textgreek" "" # GREEK CAPITAL LETTER GAMMA
+0x0394 "\\textgreek{D}"           "textgreek" "" # GREEK CAPITAL LETTER DELTA
+0x0395 "\\textgreek{E}"           "textgreek" "" # GREEK CAPITAL LETTER EPSILON
+0x0396 "\\textgreek{Z}"           "textgreek" "" # GREEK CAPITAL LETTER ZETA
+0x0397 "\\textgreek{H}"           "textgreek" "" # GREEK CAPITAL LETTER ETA
+0x0398 "\\textgreek{J}"           "textgreek" "" # GREEK CAPITAL LETTER THETA
+0x0399 "\\textgreek{I}"           "textgreek" "" # GREEK CAPITAL LETTER IOTA
+0x039a "\\textgreek{K}"           "textgreek" "" # GREEK CAPITAL LETTER KAPPA
+0x039b "\\textgreek{L}"           "textgreek" "" # GREEK CAPITAL LETTER LAMDA
+0x039c "\\textgreek{M}"           "textgreek" "" # GREEK CAPITAL LETTER MU
+0x039d "\\textgreek{N}"           "textgreek" "" # GREEK CAPITAL LETTER NU
+0x039e "\\textgreek{X}"           "textgreek" "" # GREEK CAPITAL LETTER XI
+0x039f "\\textgreek{O}"           "textgreek" "" # GREEK CAPITAL LETTER OMICRON
+0x03a0 "\\textgreek{P}"           "textgreek" "" # GREEK CAPITAL LETTER PI
+0x03a1 "\\textgreek{R}"           "textgreek" "" # GREEK CAPITAL LETTER RHO
+0x03a3 "\\textgreek{S}"           "textgreek" "" # GREEK CAPITAL LETTER SIGMA
+0x03a4 "\\textgreek{T}"           "textgreek" "" # GREEK CAPITAL LETTER TAU
+0x03a5 "\\textgreek{U}"           "textgreek" "" # GREEK CAPITAL LETTER UPSILON
+0x03a6 "\\textgreek{F}"           "textgreek" "" # GREEK CAPITAL LETTER PHI
+0x03a7 "\\textgreek{Q}"           "textgreek" "" # GREEK CAPITAL LETTER CHI
+0x03a8 "\\textgreek{Y}"           "textgreek" "" # GREEK CAPITAL LETTER PSI
+0x03a9 "\\textgreek{W}"           "textgreek" "" # GREEK CAPITAL LETTER OMEGA
+0x03aa "\\textgreek{\\char219}"   "textgreek" "" # GREEK CAPITAL LETTER IOTA 
WITH DIALYTIKA
+0x03ab "\\textgreek{\\char223}"   "textgreek" "" # GREEK CAPITAL LETTER 
UPSILON WITH DIALYTIKA
+0x03ac "\\textgreek{\\char136}"   "textgreek" "" # GREEK SMALL LETTER ALPHA 
WITH TONOS
+0x03ad "\\textgreek{\\char232}"   "textgreek" "" # GREEK SMALL LETTER EPSILON 
WITH TONOS
+0x03ae "\\textgreek{\\char160}"   "textgreek" "" # GREEK SMALL LETTER ETA WITH 
TONOS
+0x03af "\\textgreek{\\char208}"   "textgreek" "" # GREEK SMALL LETTER IOTA 
WITH TONOS
+0x03b0 "\\textgreek{\\char246}"   "textgreek" "" # GREEK SMALL LETTER UPSILON 
WITH DIALYTIKA AND TONOS
+0x03b1 "\\textgreek{a}"           "textgreek" "" # GREEK SMALL LETTER ALPHA
+0x03b2 "\\textgreek{b}"           "textgreek" "" # GREEK SMALL LETTER BETA
+0x03b3 "\\textgreek{g}"           "textgreek" "" # GREEK SMALL LETTER GAMMA
+0x03b4 "\\textgreek{d}"           "textgreek" "" # GREEK SMALL LETTER DELTA
+0x03b5 "\\textgreek{e}"           "textgreek" "" # GREEK SMALL LETTER EPSILON
+0x03b6 "\\textgreek{z}"           "textgreek" "" # GREEK SMALL LETTER ZETA
+0x03b7 "\\textgreek{h}"           "textgreek" "" # GREEK SMALL LETTER ETA
+0x03b8 "\\textgreek{j}"           "textgreek" "" # GREEK SMALL LETTER THETA
+0x03b9 "\\textgreek{i}"           "textgreek" "" # GREEK SMALL LETTER IOTA
+0x03ba "\\textgreek{k}"           "textgreek" "" # GREEK SMALL LETTER KAPPA
+0x03bb "\\textgreek{l}"           "textgreek" "" # GREEK SMALL LETTER LAMDA
+0x03bc "\\textgreek{m}"           "textgreek" "" # GREEK SMALL LETTER MU
+0x03bd "\\textgreek{n}"           "textgreek" "" # GREEK SMALL LETTER NU
+0x03be "\\textgreek{x}"           "textgreek" "" # GREEK SMALL LETTER XI
+0x03bf "\\textgreek{o}"           "textgreek" "" # GREEK SMALL LETTER OMICRON
+0x03c0 "\\textgreek{p}"           "textgreek" "" # GREEK SMALL LETTER PI
+0x03c1 "\\textgreek{r}"           "textgreek" "" # GREEK SMALL LETTER RHO
+0x03c2 "\\textgreek{c}"           "textgreek" "" # GREEK SMALL LETTER FINAL 
SIGMA
+0x03c3 "\\textgreek{s}"           "textgreek" "" # GREEK SMALL LETTER SIGMA
+0x03c4 "\\textgreek{t}"           "textgreek" "" # GREEK SMALL LETTER TAU
+0x03c5 "\\textgreek{u}"           "textgreek" "" # GREEK SMALL LETTER UPSILON
+0x03c6 "\\textgreek{f}"           "textgreek" "" # GREEK SMALL LETTER PHI
+0x03c7 "\\textgreek{q}"           "textgreek" "" # GREEK SMALL LETTER CHI
+0x03c8 "\\textgreek{y}"           "textgreek" "" # GREEK SMALL LETTER PSI
+0x03c9 "\\textgreek{w}"           "textgreek" "" # GREEK SMALL LETTER OMEGA
+0x03ca "\\textgreek{\\char240}"   "textgreek" "" # GREEK SMALL LETTER IOTA 
WITH DIALYTIKA
+0x03cb "\\textgreek{\\char244}"   "textgreek" "" # GREEK SMALL LETTER UPSILON 
WITH DIALYTIKA
+0x03cc "\\textgreek{\\char236}"   "textgreek" "" # GREEK SMALL LETTER OMICRON 
WITH TONOS
+0x03cd "\\textgreek{\\char212}"   "textgreek" "" # GREEK SMALL LETTER UPSILON 
WITH TONOS
+0x03ce "\\textgreek{\\char184}"   "textgreek" "" # GREEK SMALL LETTER OMEGA 
WITH TONOS
+0x0400 "\\textcyr{\\accent0\\char197}"  "textcyr" "" # CYRILLIC CAPITAL LETTER 
IE WITH GRAVE
+0x0401 "\\textcyr{\\char156}"     "textcyr" "" # CYRILLIC CAPITAL LETTER IO
+0x0402 "\\textcyr{\\char130}"     "textcyr" "" # CYRILLIC CAPITAL LETTER DJE
+0x0403 "\\textcyr{\\accent1\\char195}"  "textcyr" "" # CYRILLIC CAPITAL LETTER 
GJE
+0x0404 "\\textcyr{\\char153}"     "textcyr" "" # CYRILLIC CAPITAL LETTER 
UKRAINIAN IE
+0x0405 "\\textcyr{\\char143}"     "textcyr" "" # CYRILLIC CAPITAL LETTER DZE
+0x0406 "\\textcyr{I}"             "textcyr" "" # CYRILLIC CAPITAL LETTER 
BYELORUSSIAN-UKRAINIAN I
+0x0407 "\\textcyr{\\char136}"     "textcyr" "" # CYRILLIC CAPITAL LETTER YI
+0x0408 "\\textcyr{J}"             "textcyr" "" # CYRILLIC CAPITAL LETTER JE
+0x0409 "\\textcyr{\\char135}"     "textcyr" "" # CYRILLIC CAPITAL LETTER LJE
+0x040a "\\textcyr{\\char155}"     "textcyr" "" # CYRILLIC CAPITAL LETTER NJE
+0x040b "\\textcyr{\\char131}"     "textcyr" "" # CYRILLIC CAPITAL LETTER TSHE
+0x040c "\\textcyr{\\accent1\\char202}"  "textcyr" "" # CYRILLIC CAPITAL LETTER 
KJE
+0x040d "\\textcyr{\\accent0\\char200}"  "textcyr" "" # CYRILLIC CAPITAL LETTER 
I WITH GRAVE
+0x040e "\\textcyr{\\char146}"     "textcyr" "" # CYRILLIC CAPITAL LETTER SHORT 
U
+0x040f "\\textcyr{\\char150}"     "textcyr" "" # CYRILLIC CAPITAL LETTER DZHE
+0x0410 "\\textcyr{\\char192}"     "textcyr" "" # CYRILLIC CAPITAL LETTER A
+0x0411 "\\textcyr{\\char193}"     "textcyr" "" # CYRILLIC CAPITAL LETTER BE
+0x0412 "\\textcyr{\\char194}"     "textcyr" "" # CYRILLIC CAPITAL LETTER VE
+0x0413 "\\textcyr{\\char195}"     "textcyr" "" # CYRILLIC CAPITAL LETTER GHE
+0x0414 "\\textcyr{\\char196}"     "textcyr" "" # CYRILLIC CAPITAL LETTER DE
+0x0415 "\\textcyr{\\char197}"     "textcyr" "" # CYRILLIC CAPITAL LETTER IE
+0x0416 "\\textcyr{\\char198}"     "textcyr" "" # CYRILLIC CAPITAL LETTER ZHE
+0x0417 "\\textcyr{\\char199}"     "textcyr" "" # CYRILLIC CAPITAL LETTER ZE
+0x0418 "\\textcyr{\\char200}"     "textcyr" "" # CYRILLIC CAPITAL LETTER I
+0x0419 "\\textcyr{\\char201}"     "textcyr" "" # CYRILLIC CAPITAL LETTER SHORT 
I
+0x041a "\\textcyr{\\char202}"     "textcyr" "" # CYRILLIC CAPITAL LETTER KA
+0x041b "\\textcyr{\\char203}"     "textcyr" "" # CYRILLIC CAPITAL LETTER EL
+0x041c "\\textcyr{\\char204}"     "textcyr" "" # CYRILLIC CAPITAL LETTER EM
+0x041d "\\textcyr{\\char205}"     "textcyr" "" # CYRILLIC CAPITAL LETTER EN
+0x041e "\\textcyr{\\char206}"     "textcyr" "" # CYRILLIC CAPITAL LETTER O
+0x041f "\\textcyr{\\char207}"     "textcyr" "" # CYRILLIC CAPITAL LETTER PE
+0x0420 "\\textcyr{\\char208}"     "textcyr" "" # CYRILLIC CAPITAL LETTER ER
+0x0421 "\\textcyr{\\char209}"     "textcyr" "" # CYRILLIC CAPITAL LETTER ES
+0x0422 "\\textcyr{\\char210}"     "textcyr" "" # CYRILLIC CAPITAL LETTER TE
+0x0423 "\\textcyr{\\char211}"     "textcyr" "" # CYRILLIC CAPITAL LETTER U
+0x0424 "\\textcyr{\\char212}"     "textcyr" "" # CYRILLIC CAPITAL LETTER EF
+0x0425 "\\textcyr{\\char213}"     "textcyr" "" # CYRILLIC CAPITAL LETTER HA
+0x0426 "\\textcyr{\\char214}"     "textcyr" "" # CYRILLIC CAPITAL LETTER TSE
+0x0427 "\\textcyr{\\char215}"     "textcyr" "" # CYRILLIC CAPITAL LETTER CHE
+0x0428 "\\textcyr{\\char216}"     "textcyr" "" # CYRILLIC CAPITAL LETTER SHA
+0x0429 "\\textcyr{\\char217}"     "textcyr" "" # CYRILLIC CAPITAL LETTER SHCHA
+0x042a "\\textcyr{\\char218}"     "textcyr" "" # CYRILLIC CAPITAL LETTER HARD 
SIGN
+0x042b "\\textcyr{\\char219}"     "textcyr" "" # CYRILLIC CAPITAL LETTER YERU
+0x042c "\\textcyr{\\char220}"     "textcyr" "" # CYRILLIC CAPITAL LETTER SOFT 
SIGN
+0x042d "\\textcyr{\\char221}"     "textcyr" "" # CYRILLIC CAPITAL LETTER E
+0x042e "\\textcyr{\\char222}"     "textcyr" "" # CYRILLIC CAPITAL LETTER YU
+0x042f "\\textcyr{\\char223}"     "textcyr" "" # CYRILLIC CAPITAL LETTER YA
+0x0430 "\\textcyr{\\char224}"     "textcyr" "" # CYRILLIC SMALL LETTER A
+0x0431 "\\textcyr{\\char225}"     "textcyr" "" # CYRILLIC SMALL LETTER BE
+0x0432 "\\textcyr{\\char226}"     "textcyr" "" # CYRILLIC SMALL LETTER VE
+0x0433 "\\textcyr{\\char227}"     "textcyr" "" # CYRILLIC SMALL LETTER GHE
+0x0434 "\\textcyr{\\char228}"     "textcyr" "" # CYRILLIC SMALL LETTER DE
+0x0435 "\\textcyr{\\char229}"     "textcyr" "" # CYRILLIC SMALL LETTER IE
+0x0436 "\\textcyr{\\char230}"     "textcyr" "" # CYRILLIC SMALL LETTER ZHE
+0x0437 "\\textcyr{\\char231}"     "textcyr" "" # CYRILLIC SMALL LETTER ZE
+0x0438 "\\textcyr{\\char232}"     "textcyr" "" # CYRILLIC SMALL LETTER I
+0x0439 "\\textcyr{\\char233}"     "textcyr" "" # CYRILLIC SMALL LETTER SHORT I
+0x043a "\\textcyr{\\char234}"     "textcyr" "" # CYRILLIC SMALL LETTER KA
+0x043b "\\textcyr{\\char235}"     "textcyr" "" # CYRILLIC SMALL LETTER EL
+0x043c "\\textcyr{\\char236}"     "textcyr" "" # CYRILLIC SMALL LETTER EM
+0x043d "\\textcyr{\\char237}"     "textcyr" "" # CYRILLIC SMALL LETTER EN
+0x043e "\\textcyr{\\char238}"     "textcyr" "" # CYRILLIC SMALL LETTER O
+0x043f "\\textcyr{\\char239}"     "textcyr" "" # CYRILLIC SMALL LETTER PE
+0x0440 "\\textcyr{\\char240}"     "textcyr" "" # CYRILLIC SMALL LETTER ER
+0x0441 "\\textcyr{\\char241}"     "textcyr" "" # CYRILLIC SMALL LETTER ES
+0x0442 "\\textcyr{\\char242}"     "textcyr" "" # CYRILLIC SMALL LETTER TE
+0x0443 "\\textcyr{\\char243}"     "textcyr" "" # CYRILLIC SMALL LETTER U
+0x0444 "\\textcyr{\\char244}"     "textcyr" "" # CYRILLIC SMALL LETTER EF
+0x0445 "\\textcyr{\\char245}"     "textcyr" "" # CYRILLIC SMALL LETTER HA
+0x0446 "\\textcyr{\\char246}"     "textcyr" "" # CYRILLIC SMALL LETTER TSE
+0x0447 "\\textcyr{\\char247}"     "textcyr" "" # CYRILLIC SMALL LETTER CHE
+0x0448 "\\textcyr{\\char248}"     "textcyr" "" # CYRILLIC SMALL LETTER SHA
+0x0449 "\\textcyr{\\char249}"     "textcyr" "" # CYRILLIC SMALL LETTER SHCHA
+0x044a "\\textcyr{\\char250}"     "textcyr" "" # CYRILLIC SMALL LETTER HARD 
SIGN
+0x044b "\\textcyr{\\char251}"     "textcyr" "" # CYRILLIC SMALL LETTER YERU
+0x044c "\\textcyr{\\char252}"     "textcyr" "" # CYRILLIC SMALL LETTER SOFT 
SIGN
+0x044d "\\textcyr{\\char253}"     "textcyr" "" # CYRILLIC SMALL LETTER E
+0x044e "\\textcyr{\\char254}"     "textcyr" "" # CYRILLIC SMALL LETTER YU
+0x044f "\\textcyr{\\char255}"     "textcyr" "" # CYRILLIC SMALL LETTER YA
+0x0450 "\\textcyr{\\accent0\\char229}"  "textcyr" "" # CYRILLIC SMALL LETTER 
IE WITH GRAVE
+0x0451 "\\textcyr{\\char188}"     "textcyr" "" # CYRILLIC SMALL LETTER IO
+0x0452 "\\textcyr{\\char162}"     "textcyr" "" # CYRILLIC SMALL LETTER DJE
+0x0453 "\\textcyr{\\accent1\\char227}"  "textcyr" "" # CYRILLIC SMALL LETTER 
GJE
+0x0454 "\\textcyr{\\char185}"     "textcyr" "" # CYRILLIC SMALL LETTER 
UKRAINIAN IE
+0x0455 "\\textcyr{\\char175}"     "textcyr" "" # CYRILLIC SMALL LETTER DZE
+0x0456 "\\textcyr{i}"             "textcyr" "" # CYRILLIC SMALL LETTER 
BYELORUSSIAN-UKRAINIAN I
+0x0457 "\\textcyr{\\char168}"     "textcyr" "" # CYRILLIC SMALL LETTER YI
+0x0458 "\\textcyr{j}"             "textcyr" "" # CYRILLIC SMALL LETTER JE
+0x0459 "\\textcyr{\\char167}"     "textcyr" "" # CYRILLIC SMALL LETTER LJE
+0x045a "\\textcyr{\\char187}"     "textcyr" "" # CYRILLIC SMALL LETTER NJE
+0x045b "\\textcyr{\\char163}"     "textcyr" "" # CYRILLIC SMALL LETTER TSHE
+0x045c "\\textcyr{\\accent1\\char234}"  "textcyr" "" # CYRILLIC SMALL LETTER 
KJE
+0x045d "\\textcyr{\\accent0\\char232}"  "textcyr" "" # CYRILLIC SMALL LETTER I 
WITH GRAVE
+0x045e "\\textcyr{\\char178}"     "textcyr" "" # CYRILLIC SMALL LETTER SHORT U
+0x045f "\\textcyr{\\char182}"     "textcyr" "" # CYRILLIC SMALL LETTER DZHE
 0x0e3f "\\textbaht"               "textcomp" "" # THAI CURRENCY SYMBOL BAHT
 0x1e00 "\\textsubring{A}"         "tipa" "" # LATIN CAPITAL LETTER A WITH RING 
BELOW
 0x1e01 "\\textsubring{a}"         "tipa" "" # LATIN SMALL LETTER A WITH RING 
BELOW

Reply via email to