在 bidi RTL 环境中使用小型大写字母进行连字符连接以及其他格式

在 bidi RTL 环境中使用小型大写字母进行连字符连接以及其他格式

当在从右到左的bidi环境中对带连字符的单词的一部分使用小型大写字母、粗体或斜体时,会发生奇怪的事情。

以下是我注意到的 MWE(使用 XeLaTeX 编译):

\documentclass[preview,convert]{standalone}

\usepackage{fontspec}
\setmainfont[Scale=MatchUppercase]{Libertinus Serif}

\usepackage{bidi}

\begin{document}

\begin{LTR}
    This is all left-\textsc{to}-right, with some smallcaps.
\end{LTR}

\begin{RTL}
    This is all right-to-left.

    This \emph{should} all be right-\textsc{to}-left, but isn't.

    This \emph{should} all be right-\emph{to}-left, but isn't.

    This \emph{should} all be right-\textbf{to}-left, but isn't.
\end{RTL}

\end{document}

呈现如下,其中“从左到右”显示为“-left,toright-”:

上述代码的渲染,格式化的单词“to”导致“从左到右”,渲染为“-left,toright-”

请注意,我实际上尝试做的涉及 RTL 环境中的多语和一些 LTR 文本,但根本问题似乎来自包bidi

答案1

根据评论,这似乎只是一个缺陷bidi,并且没有希望通过这种方式让它正常工作。

但是,对于不使用包的lualatex和(相对于使用包的和),可以获得类似的效果。babelbidixelatexpolyglossia

\documentclass[preview,convert]{standalone}

\usepackage[english,bidi=basic]{babel}
\babelprovide[onchar=fonts ids]{hebrew}

\usepackage{fontspec}
\setmainfont[Scale=MatchUppercase]{Libertinus Serif}

\begin{document}

    This is all left-\textsc{to}-right, with some smallcaps.

\begin{otherlanguage}{hebrew}
    איצט איז דא נישט קײן פראבלעם {\textdir TLT right-to-left} און דארף עס נישט זײן
    
     איצט איז דא נישט קײן פראבלעם {\textdir TLT right-\textsc{to}-left} און דארף עס נישט זײן
     
     איצט איז דא נישט קײן פראבלעם {\textdir TLT right-\emph{to}-left} און דארף עס נישט זײן

     איצט איז דא נישט קײן פראבלעם {\textdir TLT right-\textbf{to}-left} און דארף עס נישט זײן
\end{otherlanguage}

\end{document}

渲染结果如下,符合预期:

RTL 环境中的各种字体样式现在可以正确呈现

相关内容