From e2da5d1771c564b178837cefea696240a344bce8 Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Mon, 14 May 2007 09:34:53 +0000 Subject: [PATCH] Improve Farsi support by Mostafa Vahedi. Arabic support now depends on 'ArabTeX' and Farsi support depends on the 'Arabi' package. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18305 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Font.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Font.cpp b/src/Font.cpp index ccaa923cab..697471a75a 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -749,7 +749,14 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams, int count = 0; if (language()->babel() != base.language()->babel() && language() != prev.language()) { - if (isRightToLeft() != prev.isRightToLeft()) { + if (language()->lang() == "farsi") { + os << "\\textFR{"; + count += 8; + } else if (!isRightToLeft() && + base.language()->lang() == "farsi") { + os << "\\textLR{"; + count += 8; + } else if (isRightToLeft() != prev.isRightToLeft()) { if (isRightToLeft()) { os << "\\R{"; count += 3; @@ -781,8 +788,12 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams, } // When the current language is Hebrew, Arabic, or Farsi - // the numbers are written Left-to-Right. - if (number() == ON && prev.number() != ON && isRightToLeft()) { + // 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")) { os << "{\\beginL "; count += 9; } @@ -910,8 +921,12 @@ int Font::latexWriteEndChanges(odocstream & os, BufferParams const & bparams, } // When the current language is Hebrew, Arabic, or Farsi - // the numbers are written Left-to-Right. - if (number() == ON && next.number() != ON && isRightToLeft()) { + // 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")) { os << "\\endL}"; count += 6; } -- 2.39.2