Linux 和欧元:迈向全球解决方案

作者:Guylhem Aznar

从 1999 年开始,每位欧洲人将在日常生活中使用这种新货币。即使现金尚未流通,大多数价格、工资、发票等都将以欧元以及国家货币标价。

图 1. 欧元符号

2002 年,除英镑 (£)、丹麦克朗 (kr)、瑞典克朗和希腊德拉克马外,每种当地货币都将被欧元取代。这对于真正的欧洲联盟来说是一个重大举措,它将创建一个拥有 3 亿人口的市场,从芬兰到葡萄牙,从爱尔兰到希腊。

图 2. 各种货币符号

欧元和 2000 年支持是目前计算机科学家面临的最大问题。在 UNIX 系统上,Y2K 漏洞要到 2038 年才会出现,欧元才是主要问题。在 Windows 机器上,Y2K 是主要问题,因为微软已经在 Windows 98 和 NT 中集成了对欧元的支持。创建了一种新的专有标准,称为 cp1252,这使得这些系统成为首批正确支持欧元的系统。

图 3. 带有欧元符号的按键表

从当地货币到欧元的过渡也意味着金融程序中的数学转换:例如,一欧元等于 6.55957 法国法郎。一欧元大约等于一美元。欧洲共同体创建了一个“欧元研讨会”和“欧元项目组”,旨在为所有类型的平台(甚至手机)找到任何可能的解决方案。大多数文档可以在 http://www.stri.is/TC304/Euro/ 找到。我使用了一些他们的欧元符号图片来解释本文。

问题

UNICODE 是支持国家字符的一个很好的候选方案,但 X Window 系统的字体管理会使其实现起来很痛苦。例如,请参阅 http://www.gh.cs.usyd.edu.au/~matty/9term/ 上的 plan9 难题。此外,数字控制台模式应用程序无法利用 UNICODE:即使在今天,显卡内存也太小,无法容纳如此广泛的字符。显然,UNIX 和其他 8 位系统需要一个解决方案。

一个可能的解决方案是为 8 位系统创建另一种编码格式,即使在今天,这种格式也不支持所有国家字符。例如,在 iso-8859-1 中不可能创建“oe 合字”或“s caron”,即使它们在几种欧洲语言中被广泛使用

  • “oe 合字”:法语单词 boeuf、coeur、oeil,德国诗人歌德

  • “s caron”

    Linux and the Euro Currency: Toward a Global Solution
    koda 汽车

我很难想象一台计算机上没有所有 26 个字母,或者必须用 u 代替 v,因为它没有在其字符集中实现。然而,许多非英语人士每天都在面临这个问题,当他们使用没有诸如“oe 合字”之类的字符的键盘时(

Linux and the Euro Currency: Toward a Global Solution
) 或 “s caron” (
Linux and the Euro Currency: Toward a Global Solution
).
一种新的编码

利用这种情况以及 iso-8859-1 latin1 中缺少欧元符号(ISO 8859-1 latin1 是 UNIX 编码格式,即字母和代码之间的对应关系,也用于电子邮件编码),启动了一个新的编码格式项目,该项目将支持

  • 欧元

  • “oe 合字”,包括大写和小写

  • “s 和 z caron”,包括大写和小写

  • “y 分音符”,仅限大写,因为 (ÿ) 已经在 latin1 中存在

为了避免破坏与广泛使用的 iso-8859-1 latin1 的兼容性,决定这个新编码将基于它。然而,仍然存在一个大问题——8 位编码中存在的 255 个可能的字符中的每一个都已在 iso-8859-1 中分配。因此,决定删除不太常用的字符,以允许集成丢失的字符。此外,还进行了以下更改

  • 欧元取代了“国际货币符号” (¤):前苏联曾希望在 7 位 ASCII 编码格式中用该符号取代美元符号。

  • “oe” 和 “oe 合字” 分别取代了二分之一分数标记 (½) 和四分之一分数标记 (¼)。

  • “s caron” 和 “S caron” 分别取代了“断竖线” (¦) 和“浮动分音符” (¨)。

  • “z caron” 和 “Z caron” 分别取代了“浮动锐音符” (') 和“浮动软音符” (¸)。

  • “Y 分音符” 取代了“四分之三” (¾)。

除了法国和比利时键盘上的国际货币符号 (¤) 外,所有被替换的字符都不会在任何国家键盘上打印或使用:这将是一个很小的损失。此外,浮动重音符号仅服务于“组合”的需要:例如,可以在 e 上加上一个抑扬符 (^) 以得到 è。在法裔加拿大键盘上,软音符 (¸) 可以放在 c 或 C 上以得到 ç 或 Ç。

由于软音符 (¸) 看起来像逗号 (,),分音符看起来像双引号 (“),锐音符看起来像单引号 ('),因此它们可以很容易地被替换;组合表需要进行小幅更新。例如,在法语和荷兰语键盘上,(”) 键用于获取 äëïöüÄËÏÖÜ,但没有“Y 分音符”,它缺失了。必须先按下它,释放它(什么也不会发生),然后按下一个元音键才能得到一个“元音分音符”。

如果有任何其他字符而不是元音,(”) 就会显示出来。在这里,适应新的编码将仅仅意味着用 (”) 替换后一种情况,并为 (sSzZ) 添加组合可能性。这种新的编码被称为 iso-8859-15 latin9(昵称 latin9),以表明它与 iso-8859-1 latin1 的兼容性为 97%。在本文发表时,它应该已经获得 ISO 的批准。

实施 iso-8859-15 latin9

Linux 控制台

Linux 控制台的实施非常简单。我询问 Ricardas Cepas (rch@pub.osf.lt) 他使用什么工具来实现他的字体。他为我提供了一个用于 linux-console 的 chedit 字体编辑器的自定义版本。我只是采用了 latin1 字体,并将旧的未使用字符替换为 latin9 新字符,对于每个 latin1 字体大小(从 16x16 到 08x08),但之后我只能显示 iso-8859-15 latin9 字符。

键盘

欧洲委员会的建议之一是“应使用 AltGr-e 来获取欧元符号”。(键盘右侧的 Alt 键必须重新映射到 AltGr。)AltGr 用作修饰符,类似于德语键盘上的 Shift,@ 可以通过 AltGr-q 获得,在法语键盘上,# 是 AltGr-3,等等。AltGr 在许多欧洲键盘的 Linux 版本中用于输出 8 位字符,以纪念过去:曾经有一段时间,使死键工作是不可能的。在法语和荷兰语键盘上,(”) 和 (^) 是这样的死键:它们的作用类似于组合加上后续字符上的此键。由于许多单词使用 (^) 或 (”)(ètre、aigü...),因此使用 AltGr-v(其中 v 是适当的元音)和 Shift-AltGr 元音分别获取带抑扬符的元音和带分音符的元音。如今,死键在大多数程序中都有效,除了 Netscape 或 Applixware,因此这些快捷方式仍然非常受欢迎。

如果 AltGr-e 已经输出 è,那么欧元应该放在哪里?

任何键盘维护人员尚未解决这个难题;对于我负责的法语键盘,我决定重新排列“美元”($)/“英镑” (£)/“国际货币符号” (¤) 键。由于这些符号都不是法国的官方货币,我将其分别更改为“欧元”/“欧元分”/“美元”/“英镑”,分别对应正常、ShiftAltGrAltGr-Shift 状态。然而,法语键盘官方标准将使用 AltGr>-e 表示欧元,因此我不得不改回这个键,删除不可用的国际货币符号,并为“e circumflex”找到一个新位置,它在 Linux 下的 AltGr-e 中。我决定将美元/英镑/欧元分/e circumflex 放在这个键上,只需要移动 ¤ 和 ê。这是我能想到的最佳解决方案,但我仍在寻找另一种解决方案,以简化欧元的访问并保留 8 位字符快捷方式。

我还添加了其他 latin9 字符,对于未使用的字符,它们处于 AltGr-Shift 状态,也可以通过 ^-sSzZ 或 “-Y 获得;对于非常常见的字符,它们处于未按 Shift 键和按 Shift 键状态

Linux and the Euro Currency: Toward a Global Solution
法语中的合字。

图 4. 法语键盘

在屏幕截图中,您可以看到法语键盘的表示,其中显示了所有快捷方式:“MAJ”表示“Caps Lock”,“Ferme”表示“关闭”,“Arrèt défil”表示“Scroll Lock”,“Con”键是扩展的 PC 105 键(也称为“Windows 键”),映射到上一个控制台、下一个控制台和最后一个控制台。此 ASCII 艺术包含在 fr-latin9.map 键盘映射中,以提醒用户所有 Linux 特定的快捷方式的位置。

现在,有了字体和按键表,它变得更有趣了。我启动了一个 Beta 发布计划以获得反馈,结果大多是积极的。唯一的缺点是 ê;有些人希望它保留在原来的位置,所以我向他们展示了如何编辑按键表来实现这一点。

X Window 系统

X 字体不受 GPL 保护,而软件包的其余部分将根据 GPL 发布。由于我找不到任何带有 GPL 的 iso-8859-1 latin1 X 字体,因此我不得不使用 XFree 版权基础。借助 Mark Leisher 的 xmbdfed (mleisher@crl.nmsu.edu),我可以非常轻松地更改一些字体。X 窗口字体是 不可 缩放的;您必须选择 Adobe 或 True-Type 字体(后者使用 xfdtt)。此外,我不想编辑 X 附带的所有字体。目前还没有真正的解决方案,除非将 XFree 切换到 True-Type 字体,这将是一个好主意,因为 True-Type 字体是可缩放的、质量好、许多字体在 GPL、BSD 或公共领域许可下发布,并且由于 cp1252 专有格式,它们已经支持整个 latin1 以及 latin9 范围。

资源

Linux and the Euro Currency: Toward a Global Solution
Guylhem Aznar 在法国图卢兹的 Purpan 大学医院学习医学。他不写 Linux HOWTO 时喜欢游泳、下棋和听音乐。可以通过电子邮件 guylhem@barberouge.linux.lmm.com 与他联系。
加载 Disqus 评论