XeTeX:多语种和 \textarabic:一些标点符号显示为方框

XeTeX:多语种和 \textarabic:一些标点符号显示为方框

我在 Xubuntu 上使用 XeLaTex 和多语种软件来书写阿拉伯语,但括号、方括号等字符在最终生成的 pdf 中显示为白框。

我有一个最小的工作示例。使用 Cordoba 字体时,括号会出现,但字母没有连接,因此肯定是其他原因造成的。

我不知道这是 xelatex 的问题,还是字体配置的问题,还是其他什么问题。如能得到任何帮助,我将不胜感激!

它需要字体(deb 包名称fonts-droid,,fonts-hosny-amirifonts-kacst

来自 XeLaTeX 的 PDF

(MWE 在我的 github repo 中进行了评论和更改后进行了更新vkatsikaros/stackoverflow-tex-309313

\documentclass[twocolumn,a4paper]{article}

\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}

\newfontfamily\arabicfont[Script=Arabic]{Droid Arabic Naskh}

\begin{document}

lalala

\newfontfamily\arabicfont[Script=Arabic]{Droid Arabic Naskh}
\textarabic{ (كَبير) }

\newfontfamily\arabicfont[Script=Arabic]{KacstBook}
\textarabic{ (كَبير) }

\newfontfamily\arabicfont[Script=Arabic]{Cortoba}
\textarabic{ (كَبير) }

\end{document}

使用 LibreOffice Writer 的相同文本和相同字体,可以正确以 pdf 格式呈现:

它应该是什么样子 - 来自 LibreOffice Writer

更新

确实,正如 Thérèse 提到的,字体没有括号 :( Fontforge:

截屏

PS 1. 我不想使用ArabTex,因为我发现书写和修改它非常困难。

PS 2. 我也在 Windows 机器上打开了这些文件,但结果是一样的。

参考:

Xelatex:

$ xelatex --version
XeTeX 3.1415926-2.5-0.9999.3-2014012222 (TeX Live 2013/Debian)
kpathsea version 6.1.1
Copyright 2013 SIL International and Jonathan Kew.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the XeTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the XeTeX source.
Primary author of XeTeX: Jonathan Kew.
Compiled with ICU version 52.1; using 52.1
Compiled with zlib version 1.2.8; using 1.2.8
Compiled with FreeType2 version 2.5.2; using 2.5.2
Compiled with Graphite2 version 1.2.4; using 1.3.6
Compiled with HarfBuzz version 0.9.25; using 0.9.27
Compiled with fontconfig version 2.11.0; using 2.11.0
Compiled with libpng version 1.2.49; using 1.2.50
Compiled with poppler version 0.24.5

乌本图:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:    14.04
Codename:   trusty

答案1

Thérèse 解释了发生了什么(参见评论和问题的更新部分)。字体没有简单的括号。

我使用的一个解决方法是:定义一个英语(文档的主要语言)括号,以\textenglish强制使用括号Unicode 块“基本拉丁语” LEFT PARENTHESIS (U+0028)RIGHT PARENTHESIS (U+0029)使用。然后括号由文档中使用的默认字体选择。

所以最终结果正如我所愿:

结果

\documentclass[twocolumn,a4paper]{article}

\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}

\newfontfamily\arabicfont{Droid Arabic Naskh}

% manually add english parentheses around argument
\newcommand{\prth}[1]{\textenglish{)}#1\textenglish{(}}

\begin{document}

lalala

\newfontfamily\arabicfont{Droid Arabic Naskh}
\textarabic{ \prth{كَبير} }

\newfontfamily\arabicfont{KacstBook}
\textarabic{ \prth{كَبير} }

\newfontfamily\arabicfont{Cortoba}
\textarabic{ (كَبير) }

\end{document}

相关内容