Patgen 将为 UTF-8 语言创建连字词典

Patgen 将为 UTF-8 语言创建连字词典

我在使用 patgen 创建高棉语连字词典时遇到了麻烦。我不断收到诸如“错误表示”和“错误字符”之类的错误,但我不确定我做错了什么。高棉语是 UTF-8。

我的 khmer.dic 的一部分(我在第一行尝试了 UTF-8,但没有帮助):

ខិត-ខំ
ប្រឹង-ប្រែង
យក-ចិត្ត-ទុក-ដាក់
ព្រះយេស៊ូវ-គ្រីស្ទ
កណ្ឌ-គម្ពីរ
សញ្ញា-ថ្មី

但我不知道该用什么来制作翻译文件。我见过这个教程以及阅读但我仍然不知道该怎么做。有人能给我更具体的指示吗?

高棉语没有大写或小写(都一样),所以我不确定如何处理翻译文件(khmer.tra)。我应该包括所有高棉字母吗?以下是我现在拥有的:

 2 3

我在 Ubuntu 中使用命令:patgen khmer.dic khmer.pat khmer.log khmer.tra 并使用(尽管我不完全明白这些是做什么用的):hyph_start:1 hyph_finish:2 pat_start:2 pat_finish:4 good weight:1 bad weight:1 Threshold:1

答案1

首先,无论你打算实现什么,它都无法与“经典”TeX 兼容。这是由于 Knuth 的设计决策——今天我们知道这是不幸的,但在编写 TeX 时,这一点并不那么明显:连字符模式应用于字形索引并且不输入字符代码。由于高棉语连字符超过 256 个,因此无法应用标准连字算法。

如今,只有 luatex 才能原生规避这一设计问题,它允许通过应用 lua 程序或过滤器来操纵输入数据流。不过,我不知道是否有人已经编写了这种“早期”连字符所需的 lua 代码。

现在回到你的问题。patgen 程序完全不知道它处理什么;唯一的限制是它不能处理超过 243 个实体:8 位范围的 256 个字符减去数字 0-9 和字符“.”、“-”和“*”(如果需要,可以映射到不同的字符)。由于高棉字符的数量少于 128,patgen可用于创建模式。

首先,您必须定义从 Unicode 到 8 位编码的临时映射(并提供从该映射到该映射的转换器)。一个简单的选择可能是简单地从 Unicode 值中剥离高字节,即,将 U+1780-U+17FF 映射到 0x80-0xFF。然后设置翻译文件 - 与您上面使用 Unicode 尝试的方式完全相同,但这次使用 8 位编码 - 运行 patgen,然后转换回来。

您可以查阅“wortliste”存储库以获取有关如何设置 shell 脚本等以促进模式创建过程的更多信息:

http://repo.or.cz/w/wortliste.git/tree

特别令人感兴趣的可能是剧本skripte/make-full-pattern.sh

答案2

我使用 patgen 来处理格鲁吉亚语。格鲁吉亚语 UTF-8 长度为 3 个字节。因此当 patgen 询问字符数时,我使用 3*N1、3*N2,其中 N1 和 N2 表示 patgen 期望的单字节字符 :) 我没有成功使用 opatgen (unicode patgen)/无法将其复制到 Windows。这是一个不错的程序和库。不幸的是很久没有更新了/

另一种方法是将单词(实际上是字符)转换为 1 字节编码,然后使用 patgen 并将生成的模式转换回 utf-8。但正如我上面提到的那样,对我有用。之后,我只是将生成的模式转换为 1 字节编码的格鲁吉亚 tex(T8M)。这两组生成的模式分别适用于 1byte 和 utf-8。模式加载由 hyph-utf8 包处理

相关内容