使用 Tengwar 字体/Modi 替换字符串中的字符

使用 Tengwar 字体/Modi 替换字符串中的字符

我想制作一个 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}

这会产生一个无限循环,但我测试了一下。例如,在正常节点中,一切都运行正常,这让我比应该的更困惑。

相关内容