请节省您的时间和精力在这个问题上,我也提交了一个可能的解决方案。
捷克 TeXist Zdeněk Wagner 在他的文章(捷克斯洛伐克 TeX 用户组的 Zpravodaj 期刊,1/2013)中提到了使用命令获取正确轮廓字体(例如 Devanagari 和阿拉伯字体)的问题\pdfliteral
。这是一个例子和预览排版在CODE2000.TTF字型。
问题是我们实际上看到的是字形是如何组合在一起的,见左图,右图显示了正确的形式。如何从左图转到右图?为什么此示例使用 可以运行lualatex
,但使用 则不能xelatex
?
%! {xe|lua}latex mal-deva.tex
% xelatex is not working, lualatex does work
\documentclass[a4paper]{article}
\pagestyle{empty}\parindent=0pt
\usepackage{fontspec}
\usepackage{xltxtra}
\begin{document}
\huge
% http://web.archive.org/web/20101122142710/http://code2000.net/CODE2000.ZIP
\setmainfont[ExternalLocation]{CODE2000.TTF}%
\def\malword{देवनागरी}% Term in English: Devanagari
\pdfliteral page {q 2 Tr 0.7 w 0 0 1 0 k 1 0 1 .1 K}
\malword
\pdfliteral page {Q}
\end{document}
答案1
我使用两个步骤。首先,我绘制字体的轮廓,然后在第二步将字体放在上面。正在\pdfliteral
使用的命令,它不适用于xelatex
,我们必须将其更改为表单。因为和\special{pdf: code
中的从左到右和从右到左排版设置不同,所以我需要根据使用的格式在该命令中使用和。xelatex
lualatex
l
r
\makebox
这种方法唯一剩下的问题是,我们失去了一半的轮廓宽度(内部部分),但我们可以通过改变w
,比如从0.7
到1.0
(理论上到1.4
)。我附上了一个可能的解决方案。
%! {xe|lua}latex mal-deva-solution.tex
\documentclass[a4paper]{article}
\pagestyle{empty}\parindent=0pt
\usepackage{fontspec}
\begin{document}
\huge
% http://web.archive.org/web/20101122142710/http://code2000.net/CODE2000.ZIP
\setmainfont[ExternalLocation]{CODE2000.TTF}%
\def\malword{देवनागरी}% In English: Devanagari
\special{pdf: code q 2 Tr 0.7 w 0 0 1 0 k 1 0 1 .1 K}%
%\pdfliteral page {q 2 Tr 0.7 w 0 0 1 0 k 1 0 1 .1 K} % An alternative for lualatex...
\malword
\special{pdf: code Q}%
%\pdfliteral page {Q} % An alternative for lualatex...
\newpage
\ifpdf
\def\malside{r}%
\else
\def\malside{l}%
\fi
\makebox[0pt][\malside]{%
\special{pdf: code q 1 Tr 0.7 w 0 0 1 0 k 1 0 1 .1 K}%
%\pdfliteral page {q 1 Tr 0.7 w 0 0 1 0 k 1 0 1 .1 K}% An alternative for lualatex...
\malword
\special{pdf: code Q}% An alternative for lualatex...
%\pdfliteral page {Q}
}%
\special{pdf: code q 0 Tr 0 0 1 0 k}%
%\pdfliteral page {q 0 Tr 0 0 1 0 k} % An alternative for lualatex...
\malword
\special{pdf: code Q}%
%\pdfliteral page {Q} % An alternative for lualatex...
\end{document}