+ Font const save_runningfont = running_font;
+ bool closeLanguage = false;
+ bool lang_switched_at_inset = false;
+ if (fontswitch_inset) {
+ // Some insets cannot be inside a font change command.
+ // However, even such insets *can* be placed in \L or \R
+ // or their equivalents (for RTL language switches),
+ // so we don't close the language in those cases
+ // (= differing isRightToLeft()).
+ // ArabTeX, though, doesn't seem to handle this special behavior.
+ bool const inRLSwitch =
+ basefont.isRightToLeft() != running_font.isRightToLeft()
+ && basefont.language()->lang() != "arabic_arabtex"
+ && running_font.language()->lang() != "arabic_arabtex";
+ // Having said that, PassThru insets must be inside a font change command,
+ // as we do not re-open the font inside. So:
+ closeLanguage = !inset->isPassThru() && !inRLSwitch;;
+ // We need to check prev_font as language changes directly at inset
+ // will only be started inside the inset.
+ lang_switched_at_inset = prev_font.language() != running_font.language();
+ }