From 1d0929b5d9975923f3cbbe7f84e93f3b694a1ccb Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Thu, 11 Jul 2019 09:54:28 +0200 Subject: [PATCH] Proper number ordering with luabidi As opposed to bidi (XeTeX), luabidi (LuaTeX) does no automatic reordering, so we need to use \\LR{} --- src/Font.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Font.cpp b/src/Font.cpp index a6e6c9190f..941f94a36c 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -338,17 +338,23 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams, */ // If the current language is Hebrew, Arabic, or Farsi // the numbers are written Left-to-Right. ArabTeX package - // and bidi (polyglossia) reorder the number automatically + // and bidi (polyglossia with XeTeX) reorder the number automatically // but the packages used for Hebrew and Farsi (Arabi) do not. - if (!runparams.use_polyglossia + if (!(runparams.use_polyglossia && runparams.flavor == OutputParams::XETEX) && !runparams.pass_thru && bits_.number() == FONT_ON && prev.fontInfo().number() != FONT_ON && (language()->lang() == "hebrew" || language()->lang() == "farsi" || language()->lang() == "arabic_arabi")) { - os << "{\\beginL "; - count += 9; + if (runparams.use_polyglossia) { + // LuaTeX/luabidi + os << "\\LR{"; + count += 5; + } else { + os << "{\\beginL "; + count += 9; + } } if (f.emph() == FONT_ON) { os << "\\emph{"; @@ -499,17 +505,23 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams, // If the current language is Hebrew, Arabic, or Farsi // the numbers are written Left-to-Right. ArabTeX package - // and bidi (polyglossia) reorder the number automatically + // and bidi (polyglossia with XeTeX) reorder the number automatically // but the packages used for Hebrew and Farsi (Arabi) do not. - if (!runparams.use_polyglossia + if (!(runparams.use_polyglossia && runparams.flavor == OutputParams::XETEX) && !runparams.pass_thru && bits_.number() == FONT_ON && next.fontInfo().number() != FONT_ON && (language()->lang() == "hebrew" || language()->lang() == "farsi" || language()->lang() == "arabic_arabi")) { - os << "\\endL}"; - count += 6; + if (runparams.use_polyglossia) { + // LuaTeX/luabidi + os << "}"; + count += 1; + } else { + os << "\\endL}"; + count += 6; + } } if (open_encoding_) { -- 2.39.2