为了使用我在 Windows 10 上使用过的相同键盘布局输入阿拉伯语,我创建了一个.mim
文件(键映射文件)并将其放入/usr/share/m17n
以使其ibus-m17n
在基于 Ubuntu 18.04 LTS 的 KDE Neon 上运行。除了装饰括号、普通括号、大括号、方括号和尖括号之外,所有内容都按我的预期工作。这是我的 tex 文档:
\documentclass{article}
\usepackage{harfload, fontspec, arabluatex}
\usepackage[a4paper, margin=1in]{geometry}
%\setmainfont{Kalpurush}[RawFeature={mode=harf}]
\newfontfamily\arabicfont[Script = Arabic]{Al Qalam Quran Majeed Web}
\newcommand{\textarabic}[1]{\bgroup\textdir TRT\arabicfont #1\egroup} % Arabic inside LTR
\newcommand{\n}[1]{\bgroup\textdir TLT #1\egroup} % for digits inside Arabic text
\newcommand{\afootnote}[1]{\footnote{\textarabic{#1}}} % Arabic footnotes
\newenvironment{Arabic}{\textdir TRT\pardir TRT\arabicfont}{} % Arabic paragraph
\parindent 0pt
\begin{document}
\textarabic{﴾وَصِيَّةً﴿ مِّنَ ٱللّٰه} \\
\textarabic{(وَصِيَّةً) مِّنَ ٱللّٰه} \\
\textarabic{\{وَصِيَّةً\} مِّنَ ٱللّٰه} \\
\textarabic{[وَصِيَّةً] مِّنَ ٱللّٰه} \\
\textarabic{<وَصِيَّةً> مِّنَ ٱللّٰه}
\end{document}
以下是我得到的信息:
这是harflatex/lualatex
问题吗?还是我在制作键盘布局时遗漏了什么?映射如下所示:
;; It's an edited copy of "ar-kbd.mim" file.
(input-method ar phonetic)
(description "Arabic Phonetic (MS Windows).")
(title "ض")
(map
(arabic
("`" "`")
("1" "١")
.
.
.
("[" "[")
("]" "]")
("a" "ا")
.
.
.
("\(" "\(")
("\)" "\)")
.
.
.
("{" "{")
("}" "}")
.
.
.
("<" "<")
(">" ">")
.
.
.
((G-9) "﴾")
((G-0) "﴿")
.
.
.
((KP_Add) "+")
((KP_Subtract) "-")
)
)
(state
(init
(arabic)))
我已经为知道如何修复 libreoffice writer 中这些问题的任何人添加了 libreoffice 产生的输出。
答案1
arabluatex 或多或少说对了。对于括号,你应该根据文档使用\abraces
,装饰括号是故意不反映在 Unicode 中的:
\documentclass{article}
\usepackage{arabluatex}
\newfontfamily\arabicfont{Amiri}[Script = Arabic]
\begin{document}
\arb{﴾وَصِيَّةً﴿ مِّنَ ٱللّٰه} \\
\arb{(وَصِيَّةً) مِّنَ ٱللّٰه} \\
\arb{\{وَصِيَّةً\} مِّنَ ٱللّٰه} \\
\arb{\abraces{وَصِيَّة} مِّنَ ٱللّٰه} \\
\arb{[وَصِيَّةً] مِّنَ ٱللّٰه} \\
\arb{<وَصِيَّةً> مِّنَ ٱللٰه}
\end{document}
luahblatex 与 luaotfload 3.11 配合使用也正确无误(同样,装饰括号除外,它们故意未在 Unicode 中反映出来):
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\arabicfont{Amiri}[Script = Arabic,Renderer=Harfbuzz]
\newcommand{\textarabic}[1]{\bgroup\textdir TRT\arabicfont #1\egroup}
\begin{document}
\textarabic{﴾وَصِيَّةً﴿ مِّنَ ٱللّٰه} \\
\textarabic{(وَصِيَّةً) مِّنَ ٱللّٰه} \\
\textarabic{\{وَصِيَّةً\} مِّنَ ٱللّٰه} \\
\textarabic{[وَصِيَّةً] مِّنَ ٱللّٰه} \\
\textarabic{<وَصِيَّةً> مِّنَ ٱللٰه}
\end{document}
使用标准 luatex 会失败,因为 luaotfload/fontloader 会忽略 bidi-mirrored 功能,请参见https://github.com/u-fischer/luaotfload/issues/61
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\arabicfont{Amiri}[Script = Arabic]
\newcommand{\textarabic}[1]{\bgroup\textdir TRT\arabicfont #1\egroup}
\begin{document}
\textarabic{﴾وَصِيَّةً﴿ مِّنَ ٱللّٰه} \\
\textarabic{(وَصِيَّةً) مِّنَ ٱللّٰه} \\
\textarabic{\{وَصِيَّةً\} مِّنَ ٱللّٰه} \\
\textarabic{[وَصِيَّةً] مِّنَ ٱللّٰه} \\
\textarabic{<وَصِيَّةً> مِّنَ ٱللٰه}
\end{document}
答案2
[已编辑] [注:这不是答案,只是一个简单的补充说明]
这适用于标准luatex
,但已使用 LRE、RLE 和 PDF 字符(Pop Directional Formatting)。然而,大多数字体luaotfload
默认打印这些标记(见下面的屏幕截图)。
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\arabicfont{Amiri}[Script = Arabic]
\begin{document}
\pardir TRT\textdir TRT\arabicfont\noindent
﴿وَصِيَّةً﴾ مِّنَ ٱللّٰه\\
)وَصِيَّةً( مِّنَ ٱللّٰه\\
\}وَصِيَّةً\{ مِّنَ ٱللّٰه\\
]وَصِيَّةً[ مِّنَ ٱللّٰه\\
>وَصِيَّةً< مِّنَ ٱللّٰه\\
\end{document}