]> git.lyx.org Git - lyx.git/blobdiff - src/Font.cpp
Fixed some lines that were too long. It compiled afterwards.
[lyx.git] / src / Font.cpp
index 697471a75a3e3ef638b3b484b6cd0628270cbdb7..b0073ebeb8e109883e94008664b42dc74f8a70c8 100644 (file)
 
 #include "support/lstrings.h"
 
-
-namespace lyx {
-
-using support::ascii_lowercase;
-using support::bformat;
-using support::rtrim;
-using support::subst;
-
 using std::endl;
 using std::string;
 using std::ostream;
+using std::pair;
 
 #ifndef CXX_GLOBAL_CSTD
 using std::strlen;
 #endif
 
+
+namespace lyx {
+
+using support::ascii_lowercase;
+using support::bformat;
+using support::rtrim;
+using support::subst;
+
 //
 // Names for the GUI
 //
@@ -510,21 +511,21 @@ docstring const Font::stateText(BufferParams * params) const
                os << lcolor.getGUIName(color()) << ", ";
        if (emph() != INHERIT)
                os << bformat(_("Emphasis %1$s, "),
-                             _(GUIMiscNames[emph()]));
+                             _(GUIMiscNames[emph()]));
        if (underbar() != INHERIT)
                os << bformat(_("Underline %1$s, "),
-                             _(GUIMiscNames[underbar()]));
+                             _(GUIMiscNames[underbar()]));
        if (noun() != INHERIT)
                os << bformat(_("Noun %1$s, "),
-                             _(GUIMiscNames[noun()]));
+                             _(GUIMiscNames[noun()]));
        if (bits == inherit)
                os << _("Default") << ", ";
        if (!params || (language() != params->language))
                os << bformat(_("Language: %1$s, "),
-                             _(language()->display()));
+                             _(language()->display()));
        if (number() != OFF)
                os << bformat(_("  Number %1$s"),
-                             _(GUIMiscNames[number()]));
+                             _(GUIMiscNames[number()]));
        return rtrim(os.str(), ", ");
 }
 
@@ -740,9 +741,9 @@ void Font::lyxWriteChanges(Font const & orgfont,
 /// Writes the head of the LaTeX needed to impose this font
 // Returns number of chars written.
 int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
-                                    OutputParams const & runparams,
-                                    Font const & base,
-                                    Font const & prev) const
+                                   OutputParams const & runparams,
+                                   Font const & base,
+                                   Font const & prev) const
 {
        bool env = false;
 
@@ -752,10 +753,18 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
                if (language()->lang() == "farsi") {
                        os << "\\textFR{";
                        count += 8;
-               } else if (!isRightToLeft() && 
+               } else if (!isRightToLeft() &&
                            base.language()->lang() == "farsi") {
                        os << "\\textLR{";
                        count += 8;
+               } else if (language()->lang() == "arabic_arabi") {
+                       os << "\\textAR{";
+                       count += 8;
+               } else if (!isRightToLeft() &&
+                               base.language()->lang() == "arabic_arabi") {
+                       os << "\\textLR{";
+                       count += 8;
+               // currently the remaining RTL languages are arabic_arabtex and hebrew
                } else if (isRightToLeft() != prev.isRightToLeft()) {
                        if (isRightToLeft()) {
                                os << "\\R{";
@@ -777,23 +786,24 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
        }
 
        if (language()->encoding()->package() == Encoding::CJK) {
-               int const c = switchEncoding(os, bparams,
+               pair<bool, int> const c = switchEncoding(os, bparams,
                                runparams.moving_arg, *(runparams.encoding),
                                *(language()->encoding()));
-               if (c > 0) {
+               if (c.first) {
                        open_encoding_ = true;
-                       count += c;
+                       count += c.second;
                        runparams.encoding = language()->encoding();
                }
        }
 
        // When the current language is Hebrew, Arabic, or Farsi
-       // the numbers are written Left-to-Right. ArabTeX package 
+       // the numbers are written Left-to-Right. ArabTeX package
        // reorders the number automatically but the packages used
        // for Hebrew and Farsi (Arabi) do not.
-       if (number() == ON && prev.number() != ON 
-               && (language()->lang() == "hebrew" 
-                       || language()->lang() == "farsi")) {
+       if (number() == ON && prev.number() != ON
+               && (language()->lang() == "hebrew"
+                       || language()->lang() == "farsi" 
+                       || language()->lang() == "arabic_arabi")) {
                os << "{\\beginL ";
                count += 9;
        }
@@ -864,9 +874,10 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
 // Returns number of chars written
 // This one corresponds to latexWriteStartChanges(). (Asger)
 int Font::latexWriteEndChanges(odocstream & os, BufferParams const & bparams,
-                                  OutputParams const & runparams,
-                                  Font const & base,
-                                  Font const & next) const
+                                 OutputParams const & runparams,
+                                 Font const & base,
+                                 Font const & next,
+                                 bool const & closeLanguage) const
 {
        int count = 0;
        bool env = false;
@@ -921,12 +932,13 @@ int Font::latexWriteEndChanges(odocstream & os, BufferParams const & bparams,
        }
 
        // When the current language is Hebrew, Arabic, or Farsi
-       // the numbers are written Left-to-Right. ArabTeX package 
+       // the numbers are written Left-to-Right. ArabTeX package
        // reorders the number automatically but the packages used
        // for Hebrew and Farsi (Arabi) do not.
-       if (number() == ON && next.number() != ON 
-               && (language()->lang() == "hebrew" 
-                       || language()->lang() == "farsi")) {
+       if (number() == ON && next.number() != ON
+               && (language()->lang() == "hebrew"
+                       || language()->lang() == "farsi"
+                       || language()->lang() == "arabic_arabi")) {
                os << "\\endL}";
                count += 6;
        }
@@ -935,16 +947,17 @@ int Font::latexWriteEndChanges(odocstream & os, BufferParams const & bparams,
                // We need to close the encoding even if it does not change
                // to do correct environment nesting
                Encoding const * const ascii = encodings.getFromLyXName("ascii");
-               int const c = switchEncoding(os, bparams,
+               pair<bool, int> const c = switchEncoding(os, bparams,
                                runparams.moving_arg, *(runparams.encoding),
                                *ascii);
-               BOOST_ASSERT(c > 0);
-               count += c;
+               BOOST_ASSERT(c.first);
+               count += c.second;
                runparams.encoding = ascii;
                open_encoding_ = false;
        }
 
-       if (language() != base.language() && language() != next.language()) {
+       if (closeLanguage &&
+                       language() != base.language() && language() != next.language()) {
                os << '}';
                ++count;
        }