蒙古文字变形规则说明

沈天珩,2022/10/23-2022/11/22
(修订于2023/01/28、2023/03/01、2023/06/30、2024/02/01、2024/03/26)

目录

🄀引言
⒈控制字符
 ⒈⒈连接符
 ⒈⒉不换行空格
 ⒈⒊变体选择符
⒉变形显现形式一览
⒊变形流程说明
 ⒊⒈字形GDEF设置
 ⒊⒉基本映射
 ⒊⒊分写前变形
 ⒊⒋词缀变形
 ⒊⒌词首音节的有标圆唇元音
 ⒊⒍韵尾变形
 ⒊⒎辅音的剩余变形
 ⒊⒏元音的剩余变形
 ⒊⒐FVS的结合与报错
 ⒊⒑连字
 ⒊⒒设计层面变体
 ⒊⒓附标归位
⒋变形规则说明
 ⒋⒈胡都木蒙文
 ⒋⒉托忒蒙文
 ⒋⒊锡伯文
 ⒋⒋圈点满文
 ⒋⒌无圈点满文
 ⒋⒍达斡尔文
 ⒋⒎蒙文阿礼嘎礼
 ⒋⒏托忒文阿礼嘎礼
 ⒋⒐满文阿礼嘎礼
⒌致谢
⒍本文链接
参考文献





🄀引言

  Unicode标准早在二十多年前已经开始支持蒙古文字,但由于蒙古文字的变形规则极其复杂,官方并没有给出任何合理的变形流程规范,各字体厂商所遵循的规范往往非常不统一,导致了同样一段序列在不同字体厂商的字体中常常呈现不同的变形结果,甚至错误百出。对于阿礼嘎礼字母则更甚,在市面上几乎很难见到将字母的各个形态收全的字体,更不用谈变形正确与否。用户们也一直为之苦恼。

  字符集设计者们一直提出蒙古文字字符集相关的议题,并在近几年提出了许多套方案。而直至现在,依然少有完整规范可供讨论与发展,以便达成最终的共识。

  本文档展示并提供了全面的文本变形规则,规定了字符身份及其标准变体序列的同步标准。(注:本文档略去数字、标点符号等无需参与上下文变形的字符相关的叙述。)

  尽管在不迁移至具备根本差异的字符集模型的条件下无法根本解决架构缺陷,细致的规范仍可帮助消除厂商实现间不必要的差异。具体而言:[1]
1.保持现有音位模型。即以音位字母定义字符,通过上下文成形过程与手动控制过程呈现文本的具体书写形式。若不保持该模型,迁移至与该模型无关联的形位模型可能更优;(注:形位模型亦存在缺陷,主要表现在无法对单词进行良好地排序,当然,这应不应该作为一个编码模型的考量之处仍然是存在争议的。)
2.通过限制书写形式的形位分析以最小化可混淆性,尤其限制音位字母变体集之间的重叠情况。同时适度规范正字法在分析部分单词的音位字母上的分歧;
3.在日常使用中优先考虑现代正字法。字符集模型应尽可能受控,以减低对边缘情况与学术要求的扩展性。使用音位模型向历史正字法妥协无益于现代正字法下的文本交流;
4.形式化定义模块化、层次化、无歧义、优先级明确的文本成形规则。

  本变形规则主要以民委方案[2]为蓝本,修改了小部分不合理、甚至不正确的变形逻辑,增补遗漏的字母形态。完成Unicode蒙古文字区块儿各书写系统的变形规则、流程和字体的“大一统”。按当前的蒙古文字区块儿的编码模型,不同书写系统中同样发音的字母若存在不同的默认变形逻辑则会分别编码,因此各书写系统间不会存在彼此冲突的规则。而若将字体按书写系统分别制作,受限于安卓、iOS等常见的操作系统上默认的字体回退机制,会出现各种错误的变形,因此亟需一个“大一统”的标准。


⒈控制字符

⒈⒈连接符

  指零宽禁连符(ZWNJ, U+200C)、零宽连接符(ZWJ, U+200D)与尼茹股(NIRUGU, U+180A)。ZWNJ与ZWJ为Unicode的标准连写控制字符。需要注意的是,ZWJ还会破坏相邻字母之间的联系,如连字形式,因其视作不可见字母。NIRUGU是蒙古文字特有的修饰字母,其行为与ZWJ完全相同,但作为可见的字干而存在。ZWNJ与ZWJ应避免通过键盘布局被普通用户访问,因为日常文本不包含这些字符。

  可见的NIRUGU应在日常文本中使用以形成连接。常见的使用情况是父名缩写终止,该缩写可能为词首音节(即可选的声母辅音加上词首元音)或词首辅音字母。

  NIRUGU在词中使用以延长字干时不应切断上下文变形,例如胡都木蒙文的阴阳性传递。

⒈⒉不换行空格

  指元音分隔符(MVS, U+180E)与窄宽不换行空格(NNBSP, U+202F)。MVS是蒙古文字特有的格式控制符,用于控制分写词尾。NNBSP是蒙古文字特有空格与格式控制符,用于表记和呈现词缀。

  由于安卓、iOS等常见的操作系统上默认的字体回退机制的限制,往往会因为NNBSP非蒙古文字专用字符而出现在西文字体中,导致其与其前后的蒙古文字调用不同的字体,从而非常严重地影响变形,产生了许多的错误,而NNBSP与MVS在使用时并不存在对立的情况,因此民委方案中也提议将该二字符的功能合并,码位仍使用蒙古文字专用字符U+180E以防因字体回退导致的不必要的错误变形,并改名为MSC。[2]本变形规则亦支持将MVS同时作为NNBSP使用,但本文档仍以MVS、NNBSP称呼该二字符,以防止引入不必要的歧义。

⒈⒊变体选择符

  指自由变体选择符(FVS, U+180B, U+180C, U+180D, U+180F)。FVS是蒙古文字特有的格式控制符。作为结合记号,它们出现于某些字符之后,用于产生未被正字法成形规则捕获的形式。

  FVS4,即U+180D,于2020年3月的Unicode13.0版本才被加入Unicode,因此在当前的许多系统上并不能对其拥有良好的支持。民委方案文档中有言:“请暂用其他适合自己实际需求的临时代替方案,如VS1(U+FE00)、ZWJ(U+200D)、NIRUGU(U+180A)、FVS1+FVS1等”[2]。本变形规则支持使用FVS1+FVS1的方案代替FVS4,亦为民委方案的“推荐性替代方案”。使用ZWJ或NIRUGU进行对非创造上下文环境的控制本就是有悖于Unicode的规范的,而使用VS1在实际字体被调用时会走表14,即优先于一切的GSUB变形规则,这样无法实现先根据上下文变形、如果结果不符合预期再通过添加变体选择符手动切换的上级规则。因此本变形规则及对应字体不支持、也不将支持通过VS1、ZWJ、NIRUGU来代替FVS4。

  由于达斡尔文有一些字符的默认变形逻辑与满文稍有出入,按当前的蒙古文字区块儿的编码模型,原则上需要分开编码,将在日后收集到更多资料后提交;但由于目前没有分开编码的字符,因此只能暂且使用对应的满文字符加变体选择符的方式切换字形。但不幸的是,这需要引入FVS5,而当前的Unicode中亦不存在FVS5。本规则暂且使用FVS2+FVS2以临时代替FVS5,待该些达斡尔文字符获得分开编码之后方会删除之。有关其详细叙述请见后文。

  FVS原则上不可见,但当使用了FVS的序列不合法时,需要显示一个带有虚线框的字形作为报错的提示。


⒉变形显现形式一览

  下表将列出所有需参与变形的蒙古文字名义字符到变形显现形式,包括所有使用了变体选择符的形式,以便查阅。详细变形规则请见后续章节。表中的绿色字形意为该使用了变体选择符的变形显现形式字形与默认变形相同。

名义字符 连写点位 默认变形 变体选择
FVS1 FVS2 FVS3 FVS4 FVS5


⒊变形流程说明

  本章同时作为对本变形规则对应的字体文件中的变形流程的说明及对制作其它蒙古文字字体的指导。

⒊⒈字形GDEF设置

  本节不涉及OpenType代码(GSUB、GPOS),但对于后续的变形流程至关重要。

  将字符与字形完成基本的一一映射后,各FVS与NIRUGU对应的字形的GDEF需设置为mark。本变形规则对FVS的处理同民委方案及梁海的Unicode技术笔记草案[3],即“先根据上下文变形、如果结果不符合预期再通过添加变体选择符手动切换”的规则,与目前各常见系统中自带的Mongolian Baiti或Noto Sans Mongolian不同。此举贯彻落实了FVS本身作为变体选择符的一种应当拥有稳定的“序列-字形”对应关系,添加了FVS的字符不会受任何上下文的影响产生变形。因此在变形阶段,所有的FVS字符需要在检测上下文时被忽略。同理,由于NIRUGU在词中使用以延长字干时不应切断上下文变形,故亦需被忽略。

  此外,对于每个FVS的报错字形与NIRUGU,建议另各准备一个GDEF设置为simple的字形,在完成FVS变形之后、连字之前需将GDEF为mark的字形变为GDEF为simple的字形,否则字形将失去宽度。宽度的失去,对于FVS而言,将会和后方的字符重叠显示,破坏报错效果;对应NIRUGU而言,则完全无法实现“字干的延长”。梁海曾提出可通过GPOS中的dist属性直接给GDEF为mark的字形添加宽度,但此处并不建议如此执行。原因有二:
1.微软官网对于dist属性的使用中有言:“︁Script/language sensitivity: Used for Indic or other Brahmi-derived scripts.”︁[4]即用于婆罗米系文字,而蒙古文字不属于该系列;
2.经测试,实际能支持通过dist给GDEF为mark的字形添加宽度的系统或应用程序极少,为了字体能够兼容各平台,通过额外添加一个GDEF为simple的字形的方法更优。

  自下一节起,每节代表一个变形的阶段,各阶段须严格按顺序执行,阶段内的步骤的顺序是否可自由调整将在各阶段的叙述中详细展开。

⒊⒉基本映射

  在通用变形机制的基础上,复杂文字需要在基本的“字符-字形”映射之后和文字设计处理之前插入额外的成形阶段。特别地,连写文字的书写形式须经历连写连接机制。其中,一个书写形式的两侧既可与相邻书写形式连接,也可不连接,从而最多表现出四种状态。即每个书写形式都处于以下四个连写点位之一:
1.独立形:前不连,后不连,缩写为isol(亦为OpenType属性名,下同);
2.词首形:前不连,后连,缩写为init;
3.词中形:前连,后连,缩写为medi;
4.词尾形:前连,后不连,缩写为fina。

  首先需要根据字符的连接点位分别变形为独立形、词首形、词中形、词尾形的默认形式。不存在词首形或词尾形的字符,在连接点位为词首或词尾时,需变为词中形,假装其前方或后方存在其它字符,以免与前后方其它字符的字形断开。本变形规则对应的字体文件并没有为这些不存在的词形做报错字形,但在制作其它蒙古文字字体时,这也可以作为一个可选项进行支持。

  若欲支持通过FVS1+FVS1、FVS2+FVS2的方式代替FVS4、FVS5,则这两组连字需要在这一步完成,防止变形时需检测FVS4或FVS5时字符先和FVS1或FVS2结合,造成错误。此步与上一步互不影响,故执行顺序可自由裁定。

  若欲支持将MVS同时作为NNBSP使用,则亦需要在这一步完成将MVS变为NNBSP的变形。原则上MVS仅用在U+1820的独立形(胡都木蒙文、无圈点满文)、U+1821的独立形(胡都木蒙文)、U+1828的独立形(无圈点满文)、U+1887的独立形(蒙文阿礼嘎礼)和U+1887的词首形(满文阿礼嘎礼)之前,当MVS出现在非这些字符前时变为NNBSP;但当MVS之后没有字符或非蒙古文字字符时,不建议变为NNBSP,防止在输入文字过程中难以分辨普通的词尾形和MVS前的词尾形字形不同的字符,例如在n的词尾形(᠊ᠨ)之后输入MVS时需要使n带点(᠊ᠨ᠋)。此步必须在该阶段的最后执行,因为需要检测后方的字符的连接点位。

⒊⒊分写前变形

  在MVS(若支持将MVS作为NNBSP使用,则此处的MVS仅指上一阶段未变为NNBSP的MVS,下同)前出现的部分字符的词尾形需要发生变化,例如将普通的n的词尾形(᠊ᠨ)变为带点的n的词尾形(᠊ᠨ᠋)。具体哪些字符需要在这一步变形请见后续章节的变形规则,此处不一一列举。

  在辅音字母后出现的n的词尾形为与a或e进行区分,亦需使其带点。此条变形规则尽管非MVS前,变形的前提不同,但变形方式是相同的(指待变形的字形与变形后的期望字形分别相同,下同),建议在此处同时完成。

  从该阶段起的变形需要将lookupflags设为IgnoreMarks,后文若无特别说明则均同,直至GSUB阶段结束。

⒊⒋词缀变形

  在NNBSP(若支持将MVS作为NNBSP使用,则此处的NNBSP也指上上阶段变为NNBSP的MVS,下同)前出现的部分字符的词首形需要发生变化,例如将来源于回鹘文taw的d的词首形(ᠳ᠊)变为来源于回鹘文lamedh的d的词首形(ᠳ᠋᠊)。具体哪些字符需要在这一步变形请见后续章节的变形规则,此处不一一列举。

  在胡都木蒙文的元音词尾形前出现的d的词首形亦需变为来源于回鹘文lamedh的字形,即使不在NNBSP之后。民委方案称该条规则为“字母表需求”。[2]与上阶段所述同理,同样建议在此处同时完成。

  另,序列“︁U+1824 U+1824”︁及“︁U+1826 U+1826”︁单独出现(指前后都不连接其它蒙古文字字符或相关控制字符,下同)时,即使前方非NNBSP,仍需按词缀处理,将第一个字母变为其在词缀首的字形。

  特别地,以序列“︁U+1822 U+1836”︁起首的词缀,不仅U+1822需要变形,U+1836也需要变形,将带钩的词中形(᠊ᠶ᠊)变为普通长牙(᠊ᠶ᠋᠊)。该步可在该阶段的最后执行,或与上述步骤同步执行,但不建议优先于上述步骤执行,以防以U+1822起首的词缀无法正确变形,或以序列“︁U+1822 U+1836”︁起首的普通词过度变形。

⒊⒌词首音节的有标圆唇元音

  在胡都木蒙文和无圈点满文中,词首音节中出现的阴性圆唇元音词中形需多一个长牙;单独音节中的圆唇元音词尾形无右侧长钩(阴性元音有一个向左短钩)。在锡伯文和圈点满文中,单独音节中的圆唇元音词尾形无右侧长钩。该变形阶段需要将这些有标的圆唇元音变成正确的字形。但当其非普通词而是词缀(即出现在NNBSP之后)时,此时的圆唇元音不应有标。变形规则的代码中应通过忽略特定序列(ignore context)的方式阻止NNBSP之后的词首音节中的圆唇元音发生变化。

  另,序列“︁U+182A U+1826 U+1826”︁单独出现时,即使前方非NNBSP,仍需按词缀处理,故此时U+1826的词中形不应带有长牙,即默认词中形不发生变化。

  值得注意的是,在锡伯文和圈点满文中,有一些辅音字母区分了阴阳性的不同写法,此时元音U+1860上不加点,变形时需留意根据辅音的不同将U+1860的词尾形分别变成带点和不带点的两种字形。

  该阶段的变形方式与圆头辅音后的圆唇元音词尾形的变形方式相同,因此建议在此处同时完成。有关“圆头辅音”的具体定义,请见后续章节的变形规则。

⒊⒍韵尾变形

  除阿礼嘎礼外,蒙古文字往往按词连写,一个词可能有多个音节。一些字母在音节末出现时字形会稍有不同,此阶段针对这些情况进行变形。

  其一是双元音后半部分的i(音系上也有处理成半元音韵尾y的观点,这也是U+1836存在一个双长牙的词中形的来由,相关详细叙述请见后续章节)。在托忒蒙文、锡伯文、圈点满文、无圈点满文和达斡尔文的逻辑中较为简单,任何元音后出现的i的词中形都发生相同的变化,具体为:托忒蒙文、锡伯文的i增生一个额外的短牙于前;圈点满文、无圈点满文和达斡尔文的i增生一个额外的长牙。胡都木蒙文的变形逻辑用自然语言可描述为“满足i在词中且出现在元音后的条件时,在不造成连续三个长牙的前提下尽量使i变为双长牙”。举例,i后的i的词中形不得变为双长牙,因为如果变为双长牙,此处的ii便有三个长牙,不满足大前提。

  阴性圆唇元音的词中形在此阶段变化前,出现在非词缀的词首音节时为字肚加长牙(以U+1826为例,᠊ᠦ᠋᠊),否则为字肚(以U+1826为例,᠊ᠦ᠊)。当其为字肚加长牙时,其后的i应为单长牙;当其为字肚时,其后的i应为双长牙,该规则并没有什么特别的地方。然而,民委方案[2]规定,当前方的阴性圆唇元音词中形添加了FVS之后,若增加或减少了长牙的数量,同时也应波及后方的i的字形变化。例如通过添加FVS2将U+1826变为双词根词第二词根的起始形(即一个短牙、一个字肚加一个长牙,᠊ᠦ᠌᠊),此后原本双长牙的i需变为单长牙,否则便出现连续三个长牙。这一步骤应当在上一步骤之后作为补丁执行,上一步骤的lookupflags仍需设为IgnoreMarks,但这一步骤需要检测GDEF为mark的FVS,同时仍需忽略NIRUGU等字符,因此lookupflags需设为UseMarkFilteringSet或MarkAttachmentType(建议使用前者)。

  其二是词中音节末的辅音韵尾。以n为例,同样出现在词中,其作为声母出现在音节首与元音相拼时应当为带点的短牙(᠊ᠨ᠋᠊);而其作为韵尾出现在音节尾时应当为不带点的短牙(᠊ᠨ᠊)。此时需要检测前后字母是元音还是辅音,再对字母进行必要的变形。与上述同理,变形方式相同的情况亦建议在此处同时完成,例如n被夹在两个辅音之间时为与a或e进行区分,仍需带点(此类情况主要出现于外来语或阿礼嘎礼的辅音丛)。对于胡都木蒙文的g(即U+182D)的词中音节末形,原则上需要根据单词的阴阳性变为不同的字形,此时仅前方为阳性元音时变为双短牙(᠊ᠭ᠍᠊);前方为阴性元音时保持即可,其默认字形已经是正确的;前方为中性元音i时还需检测更远处的元音(如有),将在后续阶段完成,此处暂时不检测。

  对于胡都木蒙文和托忒蒙文的双词根词第二词根以元音起始的情况,除胡都木蒙文的e(即U+1821)外,均于前增生一个短牙(来源于回鹘文的alef,与元音词首形的字冠同源,表示喉塞音)。这个短牙需要当作辅音处理,因其之前字符是第一词根的末尾,此时若该“末尾”为“作为音节首和音节末出现时具有不同词中形”的辅音字母,仍然需要将其按“音节末”变化(尽管后方字符本身是元音字母,使其看似像音节首的辅音字母,但其作为一个词根的末尾本质仍应作为音节末辅音处理)。因此此时仍需检测FVS的存在,应当在上一步骤之后作为补丁执行,同时lookupflags需设为UseMarkFilteringSet或MarkAttachmentType(建议使用前者)。

  本阶段中,“其一”部分和“其二”部分的执行互不影响,顺序可自由裁定;但必须保证需检测FVS的补丁步骤在无需检测FVS的主要步骤之后。

⒊⒎辅音的剩余变形

  本阶段需分为两步。第二步为对胡都木蒙文中中性元音i后方的音节末辅音g的远程阴阳性传递;其余剩余的辅音变形均需在第一步执行完毕。

  第一步主要为辅音的阴阳性变化,涵盖书写系统较广,各书写系统几乎都存在该需求。此外,对于圈点满文的f(即U+1876)出现在非a或e的元音之前时需去除右半部分的笔画(即变成w的字形),亦在此步同时完成。此步的操作几乎只需简单检测“辅音+元音”或“元音+辅音”的结构并针对结构中的辅音进行变形。“辅音+元音”结构的算法较为简便,无需过多说明。“元音+辅音”结构仅存在胡都木蒙文的g(即U+182D)的词尾形和圈点满文、无圈点满文的音节末辅音k(即U+1874)。此处对胡都木蒙文的g仅需检测前方为阳性元音的情况,将g的阴性词尾形(᠊ᠭ)变为阳性词尾形(᠊ᠭ᠋)。对于中性元音i后的g的词尾形是否需要变为阳性,将在第二步完成。圈点满文的音节末辅音k需注意7组正字法中的特例情况的变形,具体特例的列举请见后续章节的变形规则。

  第二步对胡都木蒙文中中性元音i后方的音节末辅音g进行远程阴阳性传递。民委方案[2]规定需要双向无限长度传递,即对于符合“出现在中性元音i之后”且“为音节末辅音”的g,先向前检测,若遇到辅音或中性元音则继续向前,直到有阳性元音或阴性元音出现,此时将该字母g定为阳性或阴性;若向前直至词界都没有出现阳性元音或阴性元音,则调头向后检测,若遇到辅音或中性元音则继续向后,直到有阳性元音或阴性元音出现,此时将该字母g定为阳性或阴性;若向后直至词界都没有出现阳性元音或阴性元音,此时按默认字形,即定为阴性。

  无限传递并非无法实现,但是其方法比较复杂,并且没有必要,因为蒙古语的单词长度往往不会特别长,尤其是一个单词中几乎只存在中性元音,且只有一个元音非中性的情况才会触发非常远程的传递,这种情况在蒙古语中几乎不存在。向后无限传递时可通过上下文检测来实现不可见字符(用来表示阴阳性)的增生,从而再通过连字把g变为阳性或保留阴性;向前无限传递时需要用到Reversed Chaining Context,此属性仅支持单对单的替换,无法实现“增生”操作,因此不得不另准备一套所有胡都木蒙文的辅音字母的字形。本变形规则对应的字体并未给出无限传递,仅前后各传递20个字符,超过20个字符的阴阳性不会被传递。制作其他蒙古文字字体时可根据实际需要对传递的长度进行灵活调整。

⒊⒏元音的剩余变形

  本阶段为上下文变形的最后阶段。所有元音的变形均只需检测前方一个字符,且无需要被忽略的特例情况,无需过多说明。制作字体时可将所有需要变形的字母的变形显现形式列出,每做完一个阶段将对应阶段完成变形的字母从笔记中删除,最后留下的所有元音的变形仅需直接列出便可简单转换为代码。

⒊⒐FVS的结合与报错

  此阶段需穷举所有“默认字形或能通过上下文变形得到的字形+FVS字符”的序列的连字。对于通过上下文变形无法得到的字形(例如U+1820的双短牙词中形,仅通过手动添加FVS才可调用出),写入变形的代码虽然不会对变形过程和结果本身产生影响,但此类冗余代码并没有存在的必要。需要注意的是,该步骤应使用rclt属性(即Required Contextual Alternates)。经测试,若使用ccmp等属性,即使代码出现在上下文变形完成之后,安卓等平台的变形引擎也会在最初优先处理字符与FVS的结合,这会引来非常多不必要的麻烦。

  对于不合法使用FVS的序列,即非上一章节表格中列出的情况,FVS字符在上一步的连字中被留下,此时仅需将FVS变为提前准备好的GDEF为simple的字形,即可对此类不合法的情况进行报错提示。同时,也需要将NIRUGU从GDEF为mark的字形变为GDEF为simple的字形,防止NIRUGU字形没有宽度或下一阶段的连字越过NIRUGU。

  梁海曾提出此处使用连字可能导致将使用了该字体的文本导出pdf后从pdf中复制字符时FVS脱落,因此需要逐个字形进行上下文变形,将FVS变为另一组没有宽度且不可见的空字形,“保护控制字符”。经测试,在Microsoft Word中导出的pdf确如其所言,会将每个字形对应成一个特定的序列,同样的字形(指字体中的同一字形,非视觉上的相同字形,下同)在复制时序列一定相同;但在Chrome浏览器中导出的pdf则完全没有这个问题。因此,字体是否应该“越俎代庖”执行本应由导出pdf的程序做的事情,仍有待商榷。

⒊⒑连字

  连字可分为强制性连字和非强制性连字。强制性连字为字体制作的必选项;非强制性连字为字体制作的可选项。其中,强制性连字主要为各书写系统中“圆头辅音+元音”的序列。此阶段的实现方法多种多样,可按需求自行裁定。例如蒙科立字体常用的通过单独字形的拼接实现连字的方法、Microsoft Baiti和Noto Sans Mongolian字体中通过直接进行连字到另一个独立的字形的方法,或是本变形规则对应的字体中通过海量上下文变形、再通过GPOS将附标(如圈点、字辫)归位,通过代码量换取对字体中字形的极限节省。

  以胡都木蒙文为例,视觉效果相同的ba(ᠪᠠ)和be(ᠪᠡ)的连字是否应该变为同样的字形(或字形组),请参考上一阶段中有关pdf的叙述。

  需要注意的是,满文阿礼嘎礼中U+189D、U+189F、U+18AA三个带圈的辅音字母,在后方出现带点的元音字母时,圈和点的位置必须进行交换,不能遗漏。此变形亦宜在此阶段完成。U+18A8后出现带点的元音字母时,同样应该变为圈在下、点在上,但由于U+18A8属于圆头辅音,本身就需要强制执行连字,所以理论上不会出现遗漏的情况。托忒文长元音符号的词尾形与部分元音结合时字形会发生改变,也应在此处完成。

⒊⒒设计层面变体

  此阶段为可选项,且同时作为GSUB的最后阶段和GPOS的最初阶段。例如哈旺体的字冠在短牙或长牙和字肚前字形存在细微差异,此时可考虑在此处通过GSUB改变字形。又例如圈点满文及满文阿礼嘎礼中带圈点的非圆头辅音词首形的圈点为了不和后方可能出现的某些字母相撞,需要将字干延长一定的长度,但此时后方出现短牙等字母时会显得字干过长,此时可考虑在此处通过GPOS改变宽度,使字形更优美。

⒊⒓附标归位

  此处的附标既包含阿礼嘎礼中的BALUDA(U+1885, U+1886)和DAGALGA(U+18A9),也包含连字阶段中产生的附标(如有;否则忽略)。对于阿礼嘎礼所使用到的字母,BALUDA与DAGALGA的Mark to Base为必选项;非阿礼嘎礼字母或Mark to Mark为可选项。若选择了支持Mark to Mark,可在GSUB的初始阶段直接将U+1886变为三个U+1885,此举可节省代码量。

  至此蒙古文字变形完成。


⒋变形规则说明

  下表将通过详细列出每个字符的变形显现形式对应的规则和补充说明。对于“默认字形”,存在两种解释,民委方案[2]中分别称为“语法上下文默认字形”和“位置属性默认字形”,此处沿用民委方案的解释。“语法上下文默认字形”指通过一系列的上下文变形规则完成后的默认字形,即上一章第8节完成后、第9节开始前的阶段的字形;“位置属性默认字形”指不依赖于语法上下文,或者根本获取不到语法上下文条件情况下的默认字形,即上一章第2节完成后、第3节开始前的阶段的字形。表中“字形”栏后括弧内的“︁Def”︁指位置属性默认字形(括弧内若为FVS时指明在该连接点位可通过该FVS无视上下文调用特定的变形显现形式);“默认规则”栏中的“默认”一词指语法上下文默认字形。对于各书写系统“圆头辅音”等专有名词的定义,请见表后对各书写系统的详细说明。

  由于本变形规则主要以民委方案为蓝本,故对于修改、增删部分将在表内以红字列出或在表内备注(备注将指向表后的详细说明)。

⒋⒈胡都木蒙文

  元辅音定义:对于胡都木蒙文所使用得到的字符(见上表中“书写系统”一栏),一般而言,U+1820()、U+1821()、U+1822()、U+1823()、U+1824()、U+1825()、U+1826()、U+1827()为元音字符,其余为辅音字符。特别地,U+1820的②号词中形(᠊ᠠ᠋᠊)、U+1822的②号词中形(᠊ᠢ᠋᠊)、U+1823的②号词中形(᠊ᠣ᠋᠊)、U+1824的②号词中形(᠊ᠤ᠋᠊)、U+1825的③号词中形(᠊ᠥ᠌᠊)、U+1826的③号词中形(᠊ᠦ᠌᠊)在变形时需视作“辅音起始、元音结尾”的序列。

  阴阳性定义:U+1820()、U+1823()、U+1824()为阳性元音;U+1821()、U+1825()、U+1826()、U+1827()为阴性元音;U+1822()为中性元音。

  圆头辅音定义:阳性规则下,U+182A()、U+182B()、U+1839()、U+183A()、U+183B()为圆头辅音;阴性规则下,U+182A()、U+182B()、U+182C()、U+182D()、U+1839()、U+183A()、U+183B()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
MVS字符存在断词特性,故计算机处理时会将MVS前的字符作为独立形或词尾形,而非词首形或词中形、MVS后的字符作为独立形或词首形,而非词尾形或词中形。蒙古文字的连写点位在此处与词界无关,不应通过词界来指导变形的连写点位。故对于MVS前后的字符连写点位的处理方式,与民委方案不相一致。
按民委方案中给出的用例,这些带左点的助词的历史字形均为n(即U+1828)之后出现。原则上这些元音字母本身并没有任何加点的需要或合理原因,又因其只能出现在n之后,显然点应当是n带的点(回鹘字母的nun本身带有点,胡都木蒙文的韵尾n的点是发展过程中丢失的)。因此对词尾n使用FVS手动切换带点字形、并加普通的助词的分析方法更合理,不知为何民委方案将其分析为普通的词尾n加带点的助词。但此处为了兼容民委方案、同时兼容这两种分析方法,保留其变形显现形式未删除。
民委方案认为,“首音节元音”的判定应当是一串连续的蒙古文字字符中第一个出现的元音,即元音前无论出现多少辅音都按“首音节”处理。这在字体中并非无法实现,只需从辅音的词首形开始向后传递(增生)肉眼不可见的控制字符即可执行判断,但这会变得很复杂,且完全没有必要,因为根本不存在复辅音起始且“首音节”元音为圆唇元音的固有词;而外来词本身规律性较差,不必强行总结不能完全覆盖所有情况的“规律”。本变形规则将其定义改为“出现在辅音的词首形之后的元音”。
根据梁海的Unicode技术笔记草案[3],在辅音之间出现的n(即U+1828)、d(即U+1833)需变形为᠊ᠨ᠋᠊᠊ᠳ᠋᠊;在辅音之后出现的词尾形n、d需变形为᠊ᠨ᠋᠊ᠳ᠋。此方案与民委方案不同,但比起民委方案更优。一则可以与元音字母区分;二则因固有词不存在此类复辅音的结构,仅拟声词、外来词、阿礼嘎礼等词中可能出现,此举可减少FVS的使用。此外,在e(即U+1821)的词首形之后出现的d,即使后方为辅音或d本身为词尾形,本变形规则亦将其变为᠊ᠳ᠋᠊᠊ᠳ᠋。此规则与民委方案或梁海的Unicode技术笔记草案均不同。一则ed(或ed起首的词)本身就需要特殊变化以与on(或on起首的词)区分,二则经确认满足此结构的音节的d无一例外均为此特殊变化的字形,为了尽可能减少FVS的使用,增加此规则。当所有的情况全都成了“例外”,那它就不应该是“例外”。
民委方案规定,在s(即U+1830)或d(即U+1833)之后且在阳性元音之前的g的词中形需要变为①号词中形(᠊ᠭ᠍᠊);在s或d之后且在MVS之前的g的词尾形需要变为①号词尾形(᠊ᠭ᠋)。其原因为例如ᠲᠣᠰᠬᠣᠨᠠᠳᠬᠤᠭ᠎ᠠ等词中的双长牙读作g,为了“贯彻音位模型”,将其作为g的变形“规律”增至规则中。但实际上书面语读音与口语读音本身就有一定的脱节,此处实为文字定型后发生的音变,原先本就是h,因此才不带点。若使用了民委方案的此条规定,例如ᠬᠠᠪᠢᠰᠭᠠᠨ᠎ᠠᠠᠳᠭᠠᠤ等原先为g的词反而要手动加FVS切换,有越俎代庖之嫌且徒增麻烦,故以口语读音指导编码不可取。此外,dh明明读作tg,却欲编码为dg,有“缝合怪”之嫌。另,民委方案规定,在MVS前的g的词尾形,若MVS后为e(即U+1821),需要将其变为①号词尾形(᠊ᠭ᠋)。但实际上ge并不存在分写,即使因为“随意输入导致出现一些字符出现在不正确的位置的情况,然而字体中必须处理这些现象,那么必须对该字符在这个不正确的位置上定义一个字形”、“由于研究、讲解等原因需要人为输入一些错误的字形”等原因的存在[2],只需手动添加FVS切换即可,没有必要强行添加实际不存在的序列的变形规则。因此本变形规则将上述无必要的特殊规则全部删除。
胡都木蒙文的m与圈点满文等书写系统的m目前使用同一码位,但对于其词尾形字形是否相同一直存在争议。除胡都木蒙文外,一般认为m的词尾形相当于a的词尾形加上一个向下的字辫(即大尾);但胡都木蒙文的m的词尾形亦有小尾(即g的阳性词尾形去除一个短牙)加字辫的说法。在《五体清文鉴》中,圈点满文与胡都木蒙文使用了同样的字体风格,但圈点满文的m的词尾形用了大尾,胡都木蒙文的m的词尾形用了小尾,这正是争议的由来;然而哈旺体等常见的手写字体中却又把胡都木蒙文的m的词尾形处理为大尾。本变形规则将大尾作为默认词尾形,并增加通过FVS手动切换小尾的可能。
民委方案规定,在i(即U+1822)前的š(即U+1831)的词首形或词中形需要变为s(即U+1830)的词首形或词中形。其原因为所有写作si的音节都读作ši,为了“贯彻音位模型”,将其作为g的变形“规律”增至规则中。但实际上书面语读音与口语读音本身就有一定的脱节,此处实为文字定型后发生的音变,原先本就是s,因此才不带点。若使用了民委方案的此条规定,例如ᠱᠢᠷᠦ等原先为š的词反而要手动加FVS切换,有越俎代庖之嫌且徒增麻烦,故以口语读音指导编码不可取。因此本变形规则将上述无必要的特殊规则及变形显现形式全部删除。
根据请求收录U+1878的原始提案[5],该字母用于布里亚特蒙古语,记录原本为但实际读音变化为的词,与胡都木蒙文混用,故在书写系统的分类上应算作胡都木蒙文的字母。虽然是布里亚特蒙古语专用的字母,但并非瓦金达拉文,勿产生非必要的误解。由于民委方案中无任何关于该码位的信息,因此该码位的所有变形显现形式均算作“新增”。

⒋⒉托忒蒙文

  元辅音定义:对于托忒蒙文所使用得到的字符(见上表中“书写系统”一栏),一般而言,U+1820()、U+1843()、U+1844()、U+1845()、U+1846()、U+1847()、U+1848()、U+1849()为元音字符,其余为辅音字符。特别地,U+1820的②号词中形(᠊ᠠ᠋᠊)、U+1844的②号词中形(᠊ᡄ᠋᠊)、U+1845的②号词中形(᠊ᡅ᠋᠊)、U+1846的②号词中形(᠊ᡆ᠋᠊)、U+1847的②号词中形(᠊ᡇ᠋᠊)、U+1848的②号词中形(᠊ᡈ᠋᠊)、U+1849的②号词中形(᠊ᡉ᠋᠊)在变形时需视作“辅音起始、元音结尾”的序列。

  阴阳性定义:U+1820()、U+1846()、U+1847()为阳性元音;U+1844()、U+1848()、U+1849()为阴性元音;U+1845()为中性元音。

  圆头辅音定义:阳性规则下,U+183A()、U+184B()、U+184C()、U+1857()、U+1858()为圆头辅音;阴性规则下,U+183A()、U+184B()、U+184C()、U+184D()、U+184E()、U+1857()、U+1858()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
在托忒文国标[6]与确精扎布所著的《蒙古文编码》[7]中该变形显现形式均为“词中形”,然而作为词缀的开头,出现在NNBSP而非其他蒙古文字字符之后,应当为词首形;又民委方案遗漏该变形显现形式,故此处将其增补至词首形中。
需要注意的是长元音符号在词尾时常常需要与前方的字符形成连字。在托忒蒙文中,U+1820与长元音符号的词尾形必须形成连字;其余使用长元音符号的长元音的连字为可选项,为了美观等需求可增加连字。
民委方案中该字符存在可用FVS切换的带钩的独立形、词首形、词中形,然而带钩长牙在托忒蒙文、蒙文阿礼嘎礼和托忒文阿礼嘎礼中完全没有被使用,不应存在,故删之。
在托忒文国标[6]与确精扎布所著的《蒙古文编码》[7]中该字符均存在词尾形,实际使用时音译外来词也需要使用词尾形,不知何故在民委方案中缺失,须增补之。

⒋⒊锡伯文

  元辅音定义:对于锡伯文所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1823()、U+185D()、U+185E()、U+185F()、U+1860()、U+1861()为元音字符,其余为辅音字符。

  阴阳性定义:U+1820()、U+1823()、U+1861()为阳性元音;U+185D()、U+1860()为阴性元音;U+185E()为中性元音;U+185F()不具有阴阳性。区分阴阳性写法的辅音字母有:U+1863()、U+1864()、U+1865()、U+1868()、U+1869()。

  圆头辅音定义:阳性规则下,U+182A()、U+183A()、U+1866()、U+186C()、U+186D()为圆头辅音;阴性规则下,U+182A()、U+1863()、U+1864()、U+1865()、U+1866()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
民委方案(锡伯文、圈点满文)规定在元音后出现的e(即U+185D)要去点。然而锡伯文与圈点满文根本不存在e出现在元音后的音节结构,此规则徒增麻烦,没有存在的必要,甚至还会对达斡尔文的长元音编码产生负面影响,故删之。
在锡伯文、圈点满文、达斡尔文中,词中出现喉塞音(即U+1807;多为汉语音译词)以分隔两个元音且后一个为e(即U+185D)时,由于此类情况一般均为机械连写,喉塞音与e整体只应存在一个短牙(若e在词尾则整体只应存在一个短牙加一个左尾),而喉塞音字符已经将短牙占有,因此e只得变为一节字干(词中形)或不带点的左尾(词尾形)。在满文阿礼嘎礼中,喉塞音相关的音节的写法为直接将对应的元音的字冠变为一节字干加一个短牙(例如由产生᠇ᡳ);ng(即U+189B)相关的音节的写法为直接在对应的元音的字冠左方或左下方加圈(例如由产生ᢛᡳ),因此后方出现e时不能直接使用位置属性的默认字形,而同理只得变为一节字干(词中形)或不带点的左尾(词尾形)。由于e的字干的长度在多个场合具有区分音节的作用(例如ngi写作ᢛᡳ,而ngē写作ᢛᡝᡳ),因此多出一节字干是有必要的,而不是直接给词中形安排一个空白字形。同理其词首形字干需稍延长。
i(即U+185E)应存在一个无字冠的独立形用于属格助词。在民委方案的框架下不应该将其分析为词尾形,故须增补之。
锡伯文不同于胡都木蒙文,在以长牙结尾的元音后出现的i(即U+185E)仍需变为韵尾形式(即一个短牙加一个长牙),民委方案认为在i或ū(即U+1861)之后出现的i的词中形需保持位置属性的默认字形,这是不对的,故删之。
i(即U+185E)的②号词尾形(᠊ᡞ᠋)存在的目的是为了音节zi。除此之外,原则上①号词尾形(᠊ᡞ)与②号词尾形(᠊ᡞ᠋)应当为互补的条件变体,在圆头辅音后出现时的变形应当在连字阶段直接执行,但由于zi的存在使得该二词尾形分离,而②号词尾形(᠊ᡞ᠋)更接近圆头辅音后出现的字形,因此民委方案同时规定将其作为圆头辅音后的变形。为了尽可能少作出必要性不强的改动,本变形规则保留之。以上情况对于圈点满文的i(即U+1873)同样成立。然而对于zi本身,其带有长牙的写法实为讹形,来源于早期圈点满文中手写体的讹变[8],但在锡伯文中已经将其作为规范写法。在锡伯文国标[9]中,字母z(即U+186F)存在缺一截的字形,用于连接i的②号词尾形(᠊ᡞ᠋)作为zi的字形,但民委方案中并未给z安排缺一截的变形显现形式。本变形规则直接在连字阶段使z与i的②号词尾形(᠊ᡞ᠋)相连成缺一截的字形;词中形同理。
在锡伯文、圈点满文中,对于双元音的后半部分的字肚(即词中形᠊ᡠ᠋᠊或词尾形᠊ᡠ᠋),有方案认为是o(即U+1823),也有方案认为是u(即U+1860)。由于锡伯文改良自圈点满文,而圈点满文改良自无圈点满文,考察无圈点满文中的圆唇元音的使用,容易发现彼时直接照搬了胡都木蒙文从而区分阳性的o、u与阴性的ö、ü。[10][11]因此,以锡伯文或圈点满文词中形的au(᠊ᠠᡠ᠊)、eu(᠊ᡝᡠ᠊)为例,我们有理由认为其改良自无圈点满文的au(᠊ᠠᠤ᠊)、eü(᠊ᠡᠦ᠊)。圈点的作用仅是为了“区分写法相同但发音不同的音节”,因此即便无圈点满文的阳性u(k、g、h后除外)与阴性ü在圈点满文中合并为带点的u,作为双元音的后半部分出现时,由于前半部分已经足以区分音节,故其无需带点。从而从音位模型的方案及文字的历史演变看来,均应当编码为u更合适,故增加u出现在元音后去点的规则。同时亦兼容编码为o的方案,因此无论输入o还是u,都能得到正确的字形,但推荐使用u。满文阿礼嘎礼的长元音ū(ᡠᡠ)的后半部分同理。
在圈点满文的十二字头中,由辅音加o(即U+1823)或u(即U+1860)构成的单独音节中,无论辅音是否为圆头辅音,其均需省略字干右方的笔画。锡伯文由于改良自圈点满文,因此同理。对于o而言,其与胡都木蒙文使用相同码位,相关变形规则直接照搬胡都木蒙文,从而存在此特殊处理;然而民委方案却未对u进行特殊处理,破坏了体系的规律性。因此须增补对应变形规则,使单独音节中的u省略字干右方的笔画(至于是否带点仍同非单独音节的处理方式,依前方辅音变化)。
锡伯文自圈点满文改良时,废除了音节末辅音k随前方元音区分阴阳性的做法,统一为阳性并减省一个短牙(即词中形᠊ᡣ᠋᠊或词尾形᠊ᡣ)。然而民委方案的锡伯文页面却按满文的规则给锡伯文的音节末辅音k增加了区分阴阳性的规则,这是明显的错误,故删之。
锡伯文自圈点满文改良时,将j(即U+186A)的词中形与其词首形统一,改为一个长牙,但由于i(即U+185E)的词中形亦为一个长牙,在使用过程中渐渐发现可能产生歧义、造成不便,故近年又将其修改为微微向上翘起的长牙。需要注意该词中形与圈点满文的j(即U+1835)的词中形、y(即U+1836)的词中形并不相同。此外,为方便处理近年修改前的文档,兼容历史字形,增加通过FVS手动切换其词中形为长牙的可能。
锡伯文、圈点满文的字母t(即U+1868)的名义字符使用阴性词首形是因为阳性词首形被U+1832占用、阳性词中形被U+1833占用。然而这并不意味着t的词首形、词中形的位置属性默认字形也必须使用阴性形式,这与d(即U+1869)的默认情况不统一,容易困扰用户,且似乎与一般人对字母的认知存在偏差,因此将词首形、词中形的位置属性默认字形重新规定为阳性形式。此外,阳性词首形还可用于满文阿礼嘎礼中的辅音丛当中,如此修改便能够尽可能少用FVS。

⒋⒋圈点满文

  元辅音定义:对于圈点满文所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1823()、U+185D()、U+185F()、U+1860()、U+1861()、U+1873()、U+1879(ᡠ︀)为元音字符,其余为辅音字符。

  阴阳性定义:U+1820()、U+1823()、U+1861()为阳性元音;U+185D()、U+1860()、U+1879(ᡠ︀)为阴性元音;U+1873()为中性元音;U+185F()不具有阴阳性。区分阴阳性写法的辅音字母有:U+1864()、U+1865()、U+1868()、U+1869()、U+1874()。

  圆头辅音定义:阳性规则下,U+182A()、U+183A()、U+1866()、U+186C()、U+186D()为圆头辅音;阴性规则下,U+182A()、U+1864()、U+1865()、U+1866()、U+1874()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
以本文作者为首的七人于2023年底申请提交了U+1879[21],主要用于无圈点满文向圈点满文过渡时期的文献中,其作为蒙古文第7元音向满文第5元音过渡时的中间形态。截至Unicode16.0,该字母暂未获得正式收录,为预留状态,因此本文中均以U+1860_U+FE00的序列代替,以便正常变形,复制字符时请慎重考虑相关规范性问题。由于民委方案中无任何关于该码位的信息,因此该码位的所有变形显现形式均算作“新增”。另,对于圈点满文中来自无圈点满文的残留或来自胡都木蒙文的借词中出现的阴性k、g、h与形如第六元音ū的字母的组合(即ᡴᡠ︀ᡤᡠ︀ᡥᡠ︀)的编码各家存在不一致的方案。以k为例,有方案认为应该编码至U+183A,因其发音为软腭音而非小舌音,并且如此便可不使用FVS;也有方案认为应该编码至U+1874,因其写法不存在分叉。本变形规则曾经同时兼容该二方案;但引入U+1879之后,可以编码为k、g、h与“第七元音”U+1879的组合,因此将对前者的兼容方案删除;后者仍然有效,但更建议使用U+1879。
圈点满文的š(即U+1867)的①号词尾形(᠊ᡧ)来自19世纪一位名叫扎哈罗夫的俄国学者编写的满语语法书。[12]该书中的词尾形为小尾(关于大尾小尾的定义请见本章第1节第6条),满文国标[13]中亦为小尾,然而在民委方案页面中内嵌的字体及确精扎布所著的《蒙古文编码》[7]中却均为大尾。实际上,若将该字形中间的字干去除,容易发现实际上就是᠊ᡧ᠋的变体。在如今的满语教学中,也常常将s(即U+1830)的词尾形类推至š[14][15],因此增补᠊ᡧ᠋作为其②号词尾形。对比胡都木蒙文的s(即U+1830)的②号词尾形(᠊ᠰ᠋,来源于回鹘文的zayin),其在古籍中也常常出现小尾的写法,可以认为小尾和尖尾是自由变体。故š的①号词尾形应当为小尾,大尾的写法是错误的。在制作其它蒙古文字字体时,也可以选择做成尖尾,交由设计师自行裁定。
圈点满文中有一个不见于十二字头的音节ᡨᡠ︀,存在于ᡨᡠ︀ᠮᠪᡳᠪᡠᡨᡠ︀ᠨ等极少数词中,一般认为是来自无圈点满文的残留,即“逃过改革的漏网之鱼”。《增订清文鉴》中明确记载了其读音为“都烏”,即du。扎哈罗夫编写的满语语法书[12]中也专门提到了这个特殊音节,他将其转写为ду,即du。元音的长牙的存在应当是无圈点满文直接照搬胡都木蒙文区分阴阳性元音的方式所导致的,但在曾经的圈点满文框架内,只能编码为第六元音ū(即U+1861)。因此民委方案规定,当t出现在ū前时,维持阴性字形即可;但自从U+1879被引入后,该音节可被编码为t与此新字母的组合,因此令t出现在ū前时变为阳性字形,以统一ū作为阳性元音的变形逻辑。此处其辅音字母不选择以音码方式编码为d是因为在过渡时期的满文文献当中d上点的有无非常混乱,若将所有无点的字形作为d的变体引入将会使得变体数量过多,FVS数量不足以使用。因此与U+1879相关的音节一律按字形编码。
i(即U+1873)应存在一个无字冠的独立形用于属格助词。在民委方案的框架下不应该将其分析为词尾形,故须增补之。
圈点满文、无圈点满文、达斡尔文不同于胡都木蒙文,在以长牙结尾的元音后出现的i(即U+1873)仍需变为韵尾形式(即双长牙),民委方案认为在i或ū(即U+1861)之后出现的i的词中形需保持位置属性的默认字形,这是不对的,故删之。
满文的音节zi写作ᡯᡳ,因此当i(即U+1873)的词尾形出现在z(即U+186F)之后时,应变为③号词尾形(᠊ᡳ᠌),故需在现有的变形显现形式上增补语法上下文默认变形规则。对于满文阿礼嘎礼中相似的情况同理。
见于《满蒙汉三体字书》等少数用圈点满文转写蒙文的书中。

⒋⒌无圈点满文

  元辅音定义:对于无圈点满文所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1821()、U+1823()、U+1824()、U+1825()、U+1826()、U+1873()为元音字符,其余为辅音字符。

  阴阳性定义:U+1820()、U+1823()、U+1824()为阳性元音;U+1821()、U+1825()、U+1826()为阴性元音;U+1873()为中性元音。

  圆头辅音定义:阳性规则下,U+182A()为圆头辅音;阴性规则下,U+182A()、U+1874()、U+18A8()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
无圈点满文为圈点满文的前身,以当年的蒙古文为蓝本创制而来,但当时的满人由于“学艺不精”,不仅部分词尾的a、e会写作分写左尾,就连一些以an或en结尾的词的n也会写作分写左尾[16],这是胡都木蒙文中所没有的。由于蒙古文字的编码模型为音位模型,该分写左尾读作n,就应该编码为n,因此需要增加此独立形。
无论是胡都木蒙文还是无圈点满文,分写与连写不会改变点的数量。这也能很好地解释为何以na或ne结尾的词若a或e写作分写左尾,则n的词尾形会多点,因为na或ne连写时n就存在点。同理,无圈点满文中ka结尾的词存在分写[16]的情况,由于ka连写时k不带点,因此分写时k的词尾形需要将点去除,故增加④号词尾形(᠊ᡴ᠋᠋)并作为出现在MVS之前时的语法上下文默认变形规则。
为了区分独立或词首的a与en,在无圈点满文中曾出现过通过加两个点表示字母n的区分手段,古籍《满文原档》中有多例;《无圈点字书》中亦有收录en的这种特殊写法[16]

⒋⒍达斡尔文

  元辅音定义:对于达斡尔文所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1823()、U+185D()、U+185F()、U+1860()、U+1861()、U+1873()为元音字符,其余为辅音字符。

  阴阳性定义:U+1820()、U+1823()、U+1861()为阳性元音;U+185D()、U+1860()为阴性元音;U+1873()为中性元音;U+185F()不具有阴阳性。区分阴阳性写法的辅音字母有:U+1864()、U+1865()、U+1868()、U+1869()、U+1874()。

  圆头辅音定义:阳性规则下,U+182A()、U+183A()、U+1866()、U+186C()、U+186D()为圆头辅音;阴性规则下,U+182A()、U+1864()、U+1865()、U+1866()、U+1874()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
达斡尔语存在长短元音的对立。若将aa写作两个普通的a,则字形与an相同,无法良好区分,因此正字法规定在第二个a字干的右方加一个点(即与e字形相同)。[17]若输入ae,固然字形能被正确展示,作为兼容选项,本变形规则对应的字体文件亦支持如此输出;但是这有悖于蒙古文字区块儿的音位模型,本变形规则建议按实际读音输入aa,通过字体中的变形代码使其带点。这与托忒蒙文的uu处理方式本质相同(读作uu、写作uü;但编码仍作uu)。
按达斡尔文正字法,作为方向格助词的da、de及作为与位格助词的do、du分别应写作ᡩ᠍ᠠᡩ᠋᠋ᡝᡩ᠍ᠣ᠌ᡩ᠋᠋ᡠ᠋[17]由于满文的方位格助词de写作ᡩᡝ,造成了字母d(即U+1869)在NNBSP之后出现时变形的冲突,原则上应该将达斡尔文的d分开编码。但在其获得正式编码前,只得以FVS作为临时性替代方案,因此新增③号词首形(ᡩ᠍᠊)与④号词首形(ᡩ᠋᠋᠊),且只能通过插入FVS手动切换。
达斡尔文中,k(即U+1874)的词尾形的变形规则与满文有较大不同。达斡尔文正字法规定,在阴性元音或中性元音之后的k的词尾形应当写作᠊ᡴ᠌᠌,与胡都木蒙文的阴性词尾形相同,而与满文的阴性词尾形不同。此处造成了冲突,例如在i(即U+1873)之后的k的词尾形,按满文的规则应作᠊ᡴ,按达斡尔文的规则应作᠊ᡴ᠌᠌,原则上应该将达斡尔文的k分开编码。但在其获得正式编码前,只得以FVS作为临时性替代方案,因此新增⑤号词尾形(᠊ᡴ᠌᠌),且只能通过插入FVS手动切换。

⒋⒎蒙文阿礼嘎礼

  元辅音定义:对于蒙文阿礼嘎礼所使用得到的字符(见上表中“书写系统”一栏),一般而言,U+1823()、U+1824()、U+1827()、U+1887()、U+1888()为元音字符,其余为辅音字符。特别地,U+1897()在变形时需视作“辅音起始、元音结尾”的序列。

  阴阳性定义:蒙文阿礼嘎礼元音不区分阴阳性。

  圆头辅音定义:U+183A()、U+183B()、U+184B()、U+1889()、U+1892()、U+1893()为圆头辅音。阴阳性均适用此规则。

  下方所列为上表中提及的“补充说明”:
在《同文韵统》与《四体合璧大藏全咒》中o与u存在不同的区分方式。前者的o写作ᠣᠸᠠ(独立形)、ᠣ᠊(词首形)、᠊ᠣ᠊(词中形)、᠊ᠣᠸᠠ(词尾形),u写作ᠤ᠋᠋(独立形)、ᠤᢈ᠊(词首形)、᠊ᠤᢈ᠊(词中形)、᠊ᠤ(词尾形);后者的o写作ᠣᠸᠠ(独立形)、ᠣᠸᠠ᠊(词首形)、᠊ᠣᠸᠠ᠊(词中形)、᠊ᠣᠸᠠ(词尾形),u写作ᠤ᠋᠋(独立形)、ᠤ᠊(词首形)、᠊ᠤ᠊(词中形)、᠊ᠤ(词尾形)。由于《四体合璧大藏全咒》中的文本更符合running text的定义,且有许多《同文韵统》中没有的词形(主要为韵尾),而《同文韵统》只是机械地列举音节且有缺;又因为长元音uu写作ᠤ᠌ᠤ,为了尽可能少用FVS、少添加新的变形显现形式,并相对优先支持《四体合璧大藏全咒》的写法,决定使用U+1824而非U+1826作为蒙文阿礼嘎礼的u,并增补了ᠤ᠋᠋作为U+1824的④号独立形。
在《四体合璧大藏全咒》中存在一些《同文韵统》中缺失的韵尾字形,故增补之。
在早期的蒙文阿礼嘎礼文献中,一些a的独立形会将短牙写作存古(回鹘文alef)的分叉形,且该词形在确精扎布所著的《蒙古文编码》[7]中亦存在,因此需增补。
按确精扎布早期的编码逻辑,阿礼嘎礼的a似乎比起音位模型更接近形位模型。对于蒙文阿礼嘎礼,除nga与wa需要用到U+1887的词尾形外,其余a均使用U+1820,若为词尾形左尾则再加FVS;对于满文阿礼嘎礼,除音节᠇ᢇ中的a外,短元音a一律使用U+1820,在U+1807后的短元音a(即音节᠇ᢇ)使用U+1887,此时的变形显现形式为一个左钩;长元音a的词尾形亦使用U+1887,此时的变形显现形式为一个短牙加一个左钩,且由于音节᠇ᢇ是用于转写藏语的,而长元音a只有梵语中出现,因此没有对立。然而,《同文韵统》中并未给出长元音a的词中形写法,因此在确精扎布早期的编码逻辑中也不存在相关的变形显现形式及编码方案。这种方案将满文阿礼嘎礼中带左钩的长短元音a放到了同一个码位,而同样读作短元音a的音节却又会因为字形不同被编码至不同的码位,这与蒙古文字区块儿的音位模型相悖。因此本变形规则重构了对于a的编码方案,使其更合理,将蒙文阿礼嘎礼所有的a全部统一至U+1887,因此增补③号独立形(ᢇ᠌)、④号独立形(ᢇ᠋᠋)、①号词首形(ᢇ᠊)及①号词中形(᠊ᢇ᠊)。同时,对于U+1820的使用,本变形规则对应的字体依然能够兼容。对于托忒文阿礼嘎礼的a及满文阿礼嘎礼的a的编码方案,请见托忒文阿礼嘎礼及满文阿礼嘎礼相关节中的叙述。
蒙文阿礼嘎礼中,作为介音的w后出现a的词尾形时,a需变右尾,且需与w产生连字以与en进行区分。这是因为en的词尾形写作᠊ᠧᠨ,与理论上的wa相同,因此wa产生连字写作᠊ᢦᢇ。但若a保持左尾则不会产生歧义,不知何故此处变作右尾。若从这点考虑,只需使普通的w(即U+1838)遇到U+1887时产生连字便可,但既成事实的是wa连字中的三角形部分被单独编码,且按Unicode核心规约,一旦被编码便不可再被撤回,因此为兼容此历史遗留问题,仍将wa按确精扎布早期的编码逻辑编码。按民委方案的逻辑,连字需要在变形完成之后进行,因此当U+1887的词尾形出现于三角形w(即U+18A6)后时需变为只有字干右方的半截右尾。此外,当wa前为圆头辅音时,w并非三角形,而是与前方的圆头辅音相连的字肚(本变形规则暂将其编码为U+1824),而半截右尾不和任何书写单位产生连字,因此半截右尾的变形显现形式不可缺。同时,参照确精扎布所著的《蒙古文编码》[7],将该变形显现形式置于FVS1。
蒙文阿礼嘎礼中,nga的独立形与词尾形分别写作ᢊᢇ᠊ᢊᢇ。按确精扎布早期的编码逻辑,此处的圆尾被从中砍断一分为二,前半截属于ng,后半截属于a,且ng的这两个变形显现形式只在a前使用、a的这个变形显现形式只在ng后使用。如此的编码逻辑不如直接将nga作为一个整体考虑,因此ng不需要被砍断的变形显现形式(恰巧民委方案中亦不存在),而a的左尾亦无需将起点向右拉伸,保持普通左尾即可,顺便能够作为本节第4条中所述的编码方案重构后蒙文阿礼嘎礼普通的a的词尾形使用。当ng的词首形或词中形遇到此左尾时产生连字即可。同时,参照确精扎布所著的《蒙古文编码》[7],将该变形显现形式置于FVS2。
与本节第4条所述内容类似地,蒙文阿礼嘎礼的i亦被分到两个码位(U+1822、U+1888)上,前者为词首形与词中形,后者为独立形与词尾形。此举徒增麻烦,因此为U+1888增补词首形与词中形,使得蒙文阿礼嘎礼所有i均编码为U+1888。
蒙文阿礼嘎礼中ng的词尾形存在三种写法。其中,᠊ᠩ见于《同文韵统》,将其编码为U+1829无争议;᠊ᢊ᠊ᢊ᠋均见于《四体合璧大藏全咒》,且出现比例几乎对半开。按其字形编码至U+188A似乎更合适,且U+188A在民委方案中暂缺词尾形。但同时增补两个词尾形不得不考虑默认字形的选用问题。考虑到U+188A的词首形与词中形均带点,因此决定将带点的᠊ᢊ作为U+188A的词尾形的默认字形,而不带点的᠊ᢊ᠋则需要手动添加FVS切换。

⒋⒏托忒文阿礼嘎礼

  元辅音定义:对于托忒文阿礼嘎礼所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1843()、U+1844()、U+1845()、U+1846()、U+1849()、U+18A7()为元音字符,其余为辅音字符。

  阴阳性定义:托忒文阿礼嘎礼元音不区分阴阳性。

  圆头辅音定义:U+182B()、U+183A()、U+183B()、U+184B()、U+184C()、U+1889()为圆头辅音。阴阳性均适用此规则。

  下方所列为上表中提及的“补充说明”:
托忒文阿礼嘎礼中仍有两个辅音未被Unicode的蒙古文字区块儿收录,分别为p(ᢒ᠋)和ph(ᢓ᠋)。目前所有的临时性替代方案均为在现有的字符上使用FVS。但托忒文国标将该二字母均置于U+1892[6],两个存在对立且发音不同的字母置于同一码位有悖于音位模型,因此需要稍作改变使方案更合理。据姜兆勤向Unicode技术委员会提交该二字母的提案[18]中给出的文献证据,能看到b(即U+182A)的字形也稍发生变化(字干右方的笔画稍向下移动),当然,这种差异应当算作设计层面的差异,与编码无关;因此若将p和ph的字干右方的笔画稍向上移回,并结合字形演变历史,容易看出其应当分别于蒙古文阿礼嘎礼的U+1892、U+1893同源,故本变形规则将其暂置于U+1892、U+1893。
需要注意的是长元音符号在词尾时常常需要与前方的字符形成连字。在托忒文阿礼嘎礼中,U+1845、U+1849、U+18A7与长元音符号的词尾形必须形成连字。
在《伊犁河流域额鲁特人托忒文文献荟萃》中收录的多份文献中[19],托忒文阿礼嘎礼的nga均写作ᢊᠠ,此处的ng编码至U+188A并无问题;然而在内蒙古大学的硕士学位论文《托忒文阿里嘎礼研究》[20]中却又给出了写作ᡊᠠ᠋的例子,此处的ng带有的弯笔在整个蒙古文字区块儿中读作ng的五个字母中仅在U+184A中存在,因此编码为U+184A较妥,需为其增加词首形。
在民委方案的满文页面与托忒文页面中,对于U+1887的位置属性默认字形存在冲突。满文页面中,其为左钩;托忒文页面中,其为左尾。然而,托忒文阿礼嘎礼不应使用U+1887。一则,托忒文阿礼嘎礼的a并不存在类似于蒙文阿礼嘎礼的a一般复杂的变形逻辑,其词尾形出现在任何位置均为普通左尾,既然无论如何非圆头辅音后的词尾形都需要手动添加FVS,不如直接使用U+1820;二则,托忒文阿礼嘎礼的nga写作ᢊᠠ,连字时增生短牙,而蒙文阿礼嘎礼的nga写作ᢊᢇ,连字时非但不增生短牙,还将中间的字干去除,直接连成圆尾。这两组完全不同的字形不应该、也无法使用同样的编码。因此本变形规则将托忒文阿礼嘎礼的a统一至U+1820,不论连接点位及前方辅音。
民委方案缺失U+18A7的词尾形,故根据《伊犁河流域额鲁特人托忒文文献荟萃》中收录的相关文献[19]及内蒙古大学的硕士学位论文《托忒文阿里嘎礼研究》[20]增补此词尾形。其中,①号词尾形(᠊ᢧ)用于表示音节末的ya(以一个字母同时表示半元音和元音)、②号词尾形(᠊ᢧ᠋)置于辅音字母l、r后,用于表示元音性的l、r(一般转写为ḷ、ṛ)。
根据《伊犁河流域额鲁特人托忒文文献荟萃》中收录的相关文献[19],在托忒文阿礼嘎礼中,ga也存在过形如ᡎ᠍ᠠ᠋的特殊写法,因此增补此词首形,并增补独立形以便单独打出该字形。

⒋⒐满文阿礼嘎礼

  元辅音定义:对于满文阿礼嘎礼所使用得到的字符(见上表中“书写系统”一栏),U+1820()、U+1823()、U+185D()、U+185F()、U+1860()、U+1861()、U+1873()为元音字符,其余为辅音字符。

  阴阳性定义:U+1820()、U+1823()、U+1861()为阳性元音;U+185D()、U+1860()为阴性元音;U+1873()为中性元音;U+185F()不具有阴阳性。区分阴阳性写法的辅音字母有:U+183A()、U+1864()、U+1865()、U+1868()、U+1869()、U+186C()、U+189A()、U+18A0()、U+18A1()。

  圆头辅音定义:阳性规则下,U+182A()、U+183A()、U+1866()、U+186C()、U+1892()、U+18A8()为圆头辅音;阴性规则下,U+182A()、U+183A()、U+1865()、U+1866()、U+186C()、U+1892()、U+18A8()为圆头辅音。

  下方所列为上表中提及的“补充说明”:
无论在《同文韵统》中,或是在《四体合璧大藏全咒》中,满文阿礼嘎礼均区分元音性的l、r(一般转写为ḷ、ṛ)与辅音性的l、r的写法。例如音节li写作ᠯᠢ,而音节ḷ写作ᠯ᠋ᠢ。这两本古籍中蒙文阿礼嘎礼与满文阿礼嘎礼用了不同的字体风格,因此比较蒙文阿礼嘎礼的字形与满文阿礼嘎礼的字形没有意义;但满文阿礼嘎礼体系本身自洽,其体系内部存在严格区分,因此不能将其视为设计层面的差异,需要分别编码;在其获得正式编码前只得以FVS作为临时性替代方案。另,蒙文阿礼嘎礼不区分l与r的元辅音性;托忒文阿礼嘎礼通过元音字母区分。
满文阿礼嘎礼中s(即U+1830)存在两种不同写法的词尾形,在元音后时(即单辅音韵尾)写作᠊ᠰ᠌;而在辅音后时(即复辅音韵尾,主要为转写藏文用)写作᠊ᠰ。前者不知何故,在民委方案中缺失;但满文国标[13]与确精扎布所著的《蒙古文编码》[7]中均存在此字形,因此此处须增补之。
满文阿礼嘎礼中k与kh在阳性元音与阴性元音前写法不同,但由于蒙古文字区块儿的编码模型为音位模型,即使写法不同也应使用相同码位,因此须增补之。
满文阿礼嘎礼中,点的位置也具有区分音节的作用(例如ga写作ᡤᠠ,而gen写作ᡤ᠍ᡝᠨ)。因此对点的位置的不同为g(即U+1864)设置不同的变形显现形式是有必要的,而民委方案中缺失,故此处需要增补。在满文国标[13]中,此变形显现形式直接将点移动了位置而未作出其它改变。诚然,对于单独的ge而言,其写作ᡤ᠍ᡝ,我们可以认为左尾是e,剩下的部分是g;但是对于上文提到的gen,去除n之后,即ge的词首形写作ᡤ᠍ᡝ᠊,如果将其整体作为g的变形显现形式,则e无法对应任何书写单位,这会引来致命的问题。因此本变形方案增补的字形在国标的基础上又去除了一截类似短牙的书写单位,使其仍类似圆头辅音,且当其与左尾相连时需增生短牙,也保证了体系的规律性。对于gh(U+189A)同理。
满文国标[13]中U+1866存在断开的变形显现形式,且经确认《同文韵统》中确实存在这种写法的变体,故增补之。但其似乎只是一种自由变体,暂无法找出出现的场合的规律。
在《四体合璧大藏全咒》中存在一些《同文韵统》中缺失的韵尾字形,故增补之。
如本章第7节第4条中所述,满文阿礼嘎礼的左钩仅会出现在U+1807之后(即音节᠇ᢇ)或出现在长元音中(此时前方一定是短牙),因此前方是字冠的情况并不存在,使得U+1887的①号独立形(名义字形)并无实际用途。但为了名义字形能被正确输出,此处未将其删除。此外,即使在圈点满文等书写系统中,字干加短牙与字冠为自由变体,但在满文阿礼嘎礼转写藏文时,字干加短牙起首的音节与字冠起首的音节是存在对立的,对应了不同的辅音,因此不可混淆。
满文阿礼嘎礼中,词中的长元音a写作᠊ᠠ᠎ᢇ᠊,在《同文韵统》中并未列举任何与之相关的音节,但在《四体合璧大藏全咒》中此类音节频繁出现,因此有编码的必要。由于从视觉效果来看中间断开,但实际却是一个不可分离的整体,故插入MVS是有必要的,因此为U+1887增补②号词首形(ᢇ᠋᠊)并作为出现在MVS之后的语法上下文默认字形。对于满文阿礼嘎礼的a,无法像蒙文阿礼嘎礼或托忒文阿礼嘎礼一般,全部统一至同一码位,否则U+1887独立形过多,需要用到FVS5。目前FVS5并未获得正式编码,故在重构时需尽可能避免FVS5的出现,本变形规则中唯二用到FVS5的地方均与达斡尔文相关,然而达斡尔文的那两个字母原则上需要分开编码,一旦分开,FVS5的使用便能自动消失,但若此处使用FVS5则无法通过任何手段使其消失。但本变形规则对于满文阿礼嘎礼的a的处理仍较确精扎布早期的逻辑有了较大的规律性的提升。对于音节᠇ᢇ中的a,只得编码至U+1887。除此之外,对于短元音a,不论连接点位及前方辅音,统一编码至U+1820;对于长元音a,为贯彻音位模型,需要编为两个a,此处不论连接点位及前方辅音,第一个a统一编码至U+1820,第二个a统一编码至U+1887。当第二个a后方有辅音时,两个a会分写,中间需要插入MVS,但a本身的编码仍然保持相同规律。
满文阿礼嘎礼的t(即U+18A0)、dh(即U+18A1)与圈点满文的t、d类似地,也需根据后方元音的不同区分阴阳性写法。民委方案中给出了阴性写法的变形显现形式,但只能够通过手动添加FVS切换,这是不对的。当后方出现阴性元音时应该默认切换成阴性写法,故增补规则。


⒌致谢

  感谢网友Sain、柳突破提供蒙满语文相关学习资料与语言学资料;感谢王奕桦、严实、沈逸磊、郑维喆(按姓氏笔画排序,排名不分先后)提供蒙满阿礼嘎礼相关资料;感谢姜兆勤提供相关技术问题的一些看法、托忒文阿礼嘎礼相关资料。


⒍本文链接

http://cheonhyeong.com/Tools/Mongol/deformation.html





参考文献

[1]姜兆勤. 蒙古文字的文本表记与成形手册[DB/OL]. https://drive.google.com/file/d/1-Au__ZPATwnaLf3_IY0R1Vx1QtATT07d/view, 2022-10-12

[2]梁金宝. 传统蒙古文名义字符到变形显现字符的转换补充规则[DB/OL]. http://rule.mongoltoli.cn/pdf/MGC01-01-RULES-V1.0.5(20210618).pdf, 2021-06-18

[3]梁海. 技术笔记草案: 蒙古文字的文本表记与变形规范[DB/OL]. https://github.com/lianghai/mongolian/blob/refactoring/utn/draft-utn-20201113.pdf, 2020-11-13

[4]Microsoft. Registered Features: Definitions and Implementations[DB/OL]. https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae, 2021-12-09

[5]Andrew West, Amgalan Zhamsoev, Viacheslav Zaytsev. Proposal to encode one historical Mongolian letter for Buryat Mongolian[DB/OL]. https://www.unicode.org/L2/L2017/17007-n4781-mongolian.pdf, 2017-01-13

[6]GB/T 36649-2018, 信息技术 托忒文名义字符、 变形显现字符和控制字符使用规则[S].

[7]确精扎布. 蒙古文编码[M]. 内蒙古: 内蒙古大学出版社, 2000

[8]黄锡惠. 满文外音字zi的词头、 词中形式研究[J]. 满语研究, 2012(2): 5-10

[9]GB/T 36641-2018, 信息技术 锡伯文名义字符、 变形显现字符和控制字符使用规则[S].

[10]沈原, 赵志强. 满语元音简论[J]. 满语研究, 1995(1): 36-44

[11]赵志强. 老满文研究[J]. 满语研究, 2003(2): 31-38

[12]Иваномъ Захаровымъ. Грамматика Маньчжурскаго Языка[M]. 圣彼得堡, 1879

[13]GB/T 36645-2018, 信息技术 满文名义字符、 变形显现字符和控制字符使用规则[S].

[14]王硕. 满文十二字头[DB/OL]. https://www.bilibili.com/read/cv5638224, 2020-04-16

[15]富丽. 满文[DB/OL]. http://mzzyk.cn/eportal/ui?pageId=663068&articleKey=679114&columnId=726786, 2018-01-16

[16]佚名. 无圈点字书[M]. 天津: 天津古籍出版社, 1987

[17]那顺达来. 汉达词典[M]. 内蒙古: 内蒙古大学出版社, 2001

[18]姜兆勤. Proposal to encode 4 Mongolian characters in UCS[DB/OL]. https://www.unicode.org/L2/L2021/21244-mongolian-add-four.pdf, 2021-09-23

[19]叶尔达. 伊犁河流域额鲁特人托忒文文献荟萃[M]. 北京: 中国社会科学出版社, 2016

[20]萨如拉. 托忒文阿里嘎礼研究[D]. 内蒙古: 内蒙古大学, 2014

[21]沈天珩, 那佳旭, 佟佳宗弼等. Proposal to Encode One Manchu Letter[DB/OL]. https://www.unicode.org/L2/L2024/24025-one-manchu-letter.pdf, 2023-12-29