我想制作一个 Tengwar 字体,可以自动将德语文本翻译成 Tengwar这映射。
我的第一个方法是创建一条命令,翻译所有参数:
\usepackage{fontspec}
\newfontfamily{\tengwarannatar}{tengwar_annatar.ttf}
\ExplSyntaxOn
\DeclareDocumentCommand{\tengwar}{m}
{
\tl_set:Nn \l_tmpa_tl {#1}
% Hier folgt die Übersetzung gemäß Ihren Regeln
\tl_replace_all:Nnn \l_tmpa_tl {sch} {{\tengwarannatar\char"0064}}
\tl_replace_all:Nnn \l_tmpa_tl {A} {{\tengwarannatar\char"00B5}}
\tl_replace_all:Nnn \l_tmpa_tl {a} {{\tengwarannatar\char"00B5}}
\tl_replace_all:Nnn \l_tmpa_tl {Ä} {{\tengwarannatar\char"00AA}}
\tl_replace_all:Nnn \l_tmpa_tl {ä} {{\tengwarannatar\char"00AA}}
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
有趣的是,如果没有双括号 {{...}},下面的所有内容都将被翻译。这包括 tikz 内的每个文本。另一方面,如果将命令放入 tikz,则会导致无限循环。因此,我想问一下,如何创建类似于普通字体命令的命令。这样我就可以说使用类似\newfontfamily{\tengwar}{...}
或 之类的东西\setmainfont{tengwar}
。另一个问题可能是,数字可以有任意长度,但需要转换为 12 进制。我还不清楚如何正确实施其他“规则”,以免使所有内容都硬编码。
所以我现在被这个问题困住了,无法继续前进。我也不知道该如何正确行事,我的设计决策也可能是错误的。有人能帮我吗?也许蓝图会对我有帮助,这样我就可以通过实施规则继续前进。
编辑:
\usetikzlibrary{decorations.text}
\begin{tikzpicture}
\draw[
decorate,
decoration={
text along path,
text={\tengwar{aaa}},
text align={center},
raise=-3pt,
}
] (0,0) arc (0:-360:3.1cm);
\end{tikzpicture}
这会产生一个无限循环,但我测试了一下。例如,在正常节点中,一切都运行正常,这让我比应该的更困惑。