我需要使用 TikZ 使阿拉伯语文本遵循一些曲线路径。这是我正在使用的示例代码:
\documentclass{book}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{GretaArabicAR-Regular}
\newfontfamily{\arr}[Script=Arabic,Scale=1.1]{GretaArabicAR-Regular}
\newfontfamily{\arb}[Script=Arabic,Scale=1.1]{GretaArabicAR-Bold}
\begin{document}
\begin{tikzpicture}
\draw[postaction={decorate,decoration={text along path,text align=center,
text={|\fontsize{20pt}{20}\selectfont\arb|إلى حبيبي لوكاس"!},
raise=-1pt}}](58mm, -64mm)to[bend left=35] (152mm, -36mm){};
\end{tikzpicture}
\textarabic{\arb\fontsize{20pt}{20}\selectfont{إلى حبيبي لوكاس"!}}
\end{document}
当我编译它时,有两个问题:
- 字符扭曲了,好像不是同一种字体(仔细看看 ل 这个字符)
- 我无法强制 RTL 到文本本身。它只是忽略我。
以下是我获取的示例 PDF 和我尝试使用的字体:https://www.dropbox.com/sh/qx3yzfaavf8io9j/AACEdkMKQFaPr-oNj8BOQ2iXa?dl=0
有人可以解释一下我遇到的这些问题吗?
答案1
字符没有扭曲,但它们只是孤立的形式。阿拉伯语不能轻易地在弯曲的路径上排版,因为字符无法正确地连接在一起。但是,可以将单词与路径对齐。请参阅以下 MWE(另请参阅这问题):
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{GretaArabicAR-Regular}
\newfontfamily{\arr}[Script=Arabic,Scale=1.1]{GretaArabicAR-Regular}
\newfontfamily{\arb}[Script=Arabic,Scale=1.1]{GretaArabicAR-Bold}
\begin{document}
\begin{tikzpicture}\arb\fontsize{20pt}{20}\selectfont
\draw[postaction={decorate,decoration={text along path,text align=center,text format delimiters={|}{|},text={|\textarabic|{لوكاس"!} |\textarabic|{حبيبي} |\textarabic|{إلى}},raise=-1pt}}](58mm, -64mm)to[bend left=35] (152mm, -36mm){};
\end{tikzpicture}
\textarabic{\arb\fontsize{20pt}{20}\selectfont{إلى حبيبي لوكاس"!}}
\end{document}
得出的结果(使用 Amiri 代替 Greta):