如何排版您自己独特的语言(例如,LaTeX 中的指环王精灵语)?

如何排版您自己独特的语言(例如,LaTeX 中的指环王精灵语)?

JRR 托尔金因在创作《指环王》时发明了自己的语言及其相应的字体而闻名(真是个天才!),从精灵语戒指铭文可以看出(哪个软件包允许在 TeX 中使用 Elvish?)。然而,他显然没有使用 LaTeX 进行专业排版,尽管他可能非常擅长书法(和语言学)。如今,我通过检查他的《指环王》三部曲书籍及其铭文,了解到我们可以在 LaTeX 上排版精灵语。但您实际上如何在 LaTeX 中排版自己原创的独特语言(假设您有足够的创造力在铅笔和纸上制作一种语言,并且目前没有 LaTeX 软件包可以完成这项工作)?

答案1

如果你想创建自己的字体集,那么你将需要字体设计程序。有些甚至是免费的,比如 TeX:

  • MetaFont(Knuth 设计的 TeX 的姐妹版本)
  • MetaPost
  • 元类型1

但请注意:如果您认为 TeX 很难,那么您会惊讶于设计自己的字体有多么困难。

答案2

答案3

扩展 Daniel 的回答:虽然 METAFONT 等在历史上对 TeX 的发展非常重要,但今天您可能希望将您的脚本映射到 Unicode 的私有使用区域,并为您的人工语言创建 OpenType 字体。(取决于是否有人会使用它,除了您之外,还请查看 ConScript 虚构语言注册表,并尽量不要与那里的任何人发生冲突。特别是,最有可能使用您的脚本的文档将是晦涩难懂的人工语言的汇编。)

在 OpenType 字体中,您可以为您的语言和/或脚本选择一个尚未使用或可能被使用的代码,然后定义它所需的任何功能,如连字、组合字符和文本方向。

如果您希望能够在文本编辑器中输入脚本,则应该首先扩展免费的等宽字体(即字符单元)并以新名称保存它。这就是 Free Tengwar 字体项目对 FteeMonoTengwar(基于 FreeMono)所做的。

然后你需要能够以某种方式输入它。一种简单的方法是不要在源文档中放入任何 PUA 字符,而是编写一个 LaTeX 包,其中包含书写系统中的每个符号的宏。最好简短。根据音译的复杂程度,您可能还可以从 ASCII 自动音译。

在 Linux 上,您可以定义组合键快捷键。另一种方法是单击字符映射中的字形(例如charmap.exe在 Windows 上),甚至可以定义您自己的键盘布局。

声明 OpenType 字体后,您可以使用 将其加载为字体样式或系列fontspec。此时,您可以在更改语言时切换到该字体。(XeLaTeX 目前对非西方脚本的支持比 LuaLaTeX 更好。)如果您真的要全力以赴,您可以编写一个配置文件来让 Babel 或 Polyglossia 支持您的人工语言。

如果您确实需要与 pdftex 兼容,FontForge 可以生成 Type 1 字体,然后您需要为其定义映射和 LaTeX 包。

答案4

关键因素是字体映射发生的位置。这将决定哪些包/ini 文件需要修改。

Tengwar 是元字符,它们所代表的值可以根据mode使用方式而变化,例如X在 alegbra 中可以采用不同的值:最简单的情况是如果我们在现代英语正字法模式下使用完整的 tengwar,那么字体(即字体设计者)可以完成所有艰苦的工作。

一个印象:

英文正字法模式全tengwar印象

我说“印象”是因为我没有检查字体使用的模式。

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\pagecolor{red!3}
\usepackage{fontspec}
\setmainfont[Scale=1.5]{Tengwar 03}\usepackage{lipsum}
\begin{document}
\tableofcontents
\medskip\hrule
\section{First}
The cat sat on the mat and the quick brown fox jumps over the lazy dog.

\section{Second}
AaBbCc, DdEeFfGg.

\section{Third}
\lipsum[50]
\end{document}

尖锐的 tengwar 需要复杂的字体,和/或宏和字距调整;而现代英语音位模式(完整 tengwar 或尖锐的 tengwar)需要重写底层文本 - 实际上是翻译 - 并匹配polyglossia.ldf 文件(如果需要,包括日期和日历计算)和biblatex.lbx 文件中的更改。

在任何情况下,这都不是一个不可能完成的任务。

设置一种全新的语言(即软件包中的新语言)需要稍微不同的视角和视角。我会看看能否组织一个例子。也许是字母数较少的语言,如 Adlam。或者巴厘语,它的字体非常流畅。

已经采用 Unicode 的脚本不需要使用私有使用区域,但仍会有逻辑或物理映射来输入文本。

unicode字体意味着fontspec,如果根据字体需要进行音节整形,则xelatex进行编译(因为它使用字体整形引擎HarfBuzz)。

相关内容