跳转到主要内容

语言和字符

为此,TouchGFX支持各种语言和字符,并理解文本布局机制,如书写方向和上下文塑造。

语言

支持的语言是 Unicode 基本多语言平面的语言,其限制是仅支持从左到右或从右到左书写系统。 这意味着支持阿拉伯语、中文、英语和许多其他语言,但可能有一点限制。 乌尔都语和缅甸语是目前不支持的语言的例子。

字符

字符编码基于统一码标准。 支持16位统一码,即 支持从0x0000至0xFFFF的统一码。 一些语言可能对采用给定字体的特殊字符(如天城体)使用0xE000-0xE3FF中的私人使用区。

书写方向

TouchGFX支持从左向右(LTR)和从右向左(RTL)书写体系。 没有对从上至下书写体系的内置支持。

应注意,RTL不是指向后书写文本(与LTR相比)。 它表示从右边开始向左书写文字。 对于阿拉伯语和希伯来语而言,这是正确设置。 “TouchGFX”不会被写成“XFGhcuoT”,但可以用RTL/LTR设置控制文字方向(或words集合)。

TouchGFX中对LTR和RTL书写的处理在一定程度上允许两者混合使用。 这称为双向脚本支持。 TouchGFX支持双向书写的官方规则子集。 这意味着承认诸如“10:45”、“3.14159”、“STMicroelectronics TouchGFX”等以及其他写法,甚至在RTL文本中完全使用LTR书写。

对于 RTL 文本,文本的某些部分因此必须写为 LTR。 此文本已找到并收集; 收集所有非 RTL 字母的字符。 颜色 (:)、点 (.)、逗号 (,)、空格 ( ) 等字符也会“捆绑”两个连续的 LTR 部分。 这是确保“10:45”作为单个 LTR 实体处理的原因,而“Mark:”(以颜色结尾)将把冒号放在左边,就像阿拉伯语和希伯来语国家所期望的那样,即“<some Arabic message> :Mark",其中冒号位于 RTL 文本的左侧。

请注意,拉丁字符集(0-9)中使用的数字和阿拉伯语字符集中使用的数字都按LTR字符处理,目的是确保数字在显示屏上正常显示。

还应注意的是,当文本包含LTR实体和RTL实体的混合体时,书写方向十分重要。 另外,如果文本是RTL或LTR,将不能通过检查文本中的字符来确定。 如果文本中的第一个字是希伯来语(RTL),第二个字是英语(LTR),显示屏上的输出将取决于文本的书写方向。 如果将文本设置为RTL,输出看起来会是这样:“English werbeH”,这是因为整个文本是RTL,因此第一个字必须写在最右端,但如果将文本设置为LTR,则输出看起来会是这样:“werbeH English”,这是因为文本应在最左端开始书写第一个字。 由于英语文本可能包含希伯来语字词,就像希伯来语文本可能包含英语字词一样,因此不能自动确定采用RTL还是LTR设置。

另一个与RTL文本有关的重要问题是括号字符的自动替换。 它们是 (, ), {, }, [, ], <, >。 所有这些都会自动与相反的字符交换,以确保文本看起来正确。 请注意,拉丁数字不会自动转换为阿拉伯数字。 如果需要,这必须由用户在显示文本之前完成。

上下文塑造

根据字符的上下文,特定脚本将选择不同形式的一个或多个字符/字形。 例如,根据字中的字母位置,阿拉伯字母表中的字母有不同的上下文形式。 TouchGFX通过实现简化的字符组合规则集合,支持语言的此类上下文塑造。 此外,使用自定义逻辑放置一些变音符号来确定垂直位置 - 这对于阿拉伯语、泰语和梵文尤其如此。

支持的语言列表

很难提供所有受支持语言的详尽列表。 通常,支持没有特殊重新排序或定位规则的标准字形。 TouchGFX 中包含了一些具有特殊规则的语言,例如印地语(天城文)和阿拉伯语。

从左向右式语言

使用拉丁字符的简单语言

总体而言,支持使用无需专门重新排列或定位的字符和字形的简单语言。 这些语言包括但不限于:

  • 波斯尼亚语、保加利亚语、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、德语、匈牙利语、意大利语、拉脱维亚语、立陶宛语、挪威语、波兰语、葡萄牙语、罗马尼亚语、塞尔维亚语、斯洛文尼亚语、斯洛伐克语、西班牙语、瑞典语、土耳其语和乌克兰语

使用特殊字符集的简单语言

一些语言仍然遵循简单的定位规则,但使用不同的字符和字形集。 此外,还支持和包含(但不限于)以下语言:

  • 中文、希腊语、日语和俄语

其它

  • 有限支持泰语。 使用 TouchGFX 规则(垂直)定位音调标记。
  • 有限支持印地语(天城体)。 一些字符可以稍微放错,但文本不应不可读。

从右向左式语言

使用特殊字符集的简单语言

  • 希伯来语、印度尼西亚语和哈萨克语

具有不同形式(单独、初始、中间和最终)的不用连字的语言

  • 阿拉伯语(超过四个字符的序列不会被识别和转换为一个连字。 包括:Sallallahou Alayhe Wasallam、Jallajalalouhou和Rial Sign)。 一些变音符的位置可能稍有错误。
  • 波斯语
  • 马来语(仅支持隔离式的ݢ “上方有点的Keheh”)

不支持的语言

已知不支持下列大量使用连字、合体字母和垂直定位的语言:

  • 乌尔都语、缅甸语