GNU/Linux 的印度语言解决方案
南亚是近六分之一人类的家园,正在努力实现区域语言解决方案,使人人都能使用计算机。即使大多数人很贫穷,购买力低下,这也可能打开通往更大计算能力和急需效率的闸门,这在全球的关键领域至关重要。然而,有些人称印度语和其他南亚文字是完全 i18n 支持的最终挑战。
一些印度区域语言比其他地方整个国家使用的语言还要大。印地语有 3.66 亿使用者,仅次于汉语普通话。泰卢固语有 6900 万;马拉地语,6800 万;泰米尔语,6600 万。全球前 70 种语言中有 16 种是印度语言,使用者超过 1000 万。在印度使用的其他语言也在其他地方使用。孟加拉语在印度和孟加拉国拥有 2.07 亿使用者,乌尔都语在巴基斯坦和印度拥有 6000 万使用者。
Simputer 是一款简单且相对便宜的 Linux 计算机,供印度村庄的人们使用。Simputer 的创建正在根据硬件许可证 Simputer 通用公共许可证(以 GPL 为蓝本)进行组织。尽管该许可证规定可以免费发布规范,但它确实要求被许可人在销售 Simputer 之前支付一次性版税。

Simputer 具有 200MHz StrongARM 处理器、32MB DRAM、24MB 闪存存储、单色显示器、扬声器和麦克风。
dhvani 是 Simputer Trust 开发人员和其他人开发的印度语言文本到语音系统。它有望很快拥有更好的语音引擎、Java 端口和独立于语言的框架。(请参阅 sourceforge.net/projects/dhvani。)同时,IMLI 是 Simputer Trust 为 IML 标记语言创建的浏览器。它专为轻松创建印度语言内容而设计,并与文本到语音引擎集成。
在喀拉拉邦,这个南部邦的识字率高达 90%,其语言马拉雅拉姆语有 3500 万人使用,当地政府高级官员 Ajay Kumar (kumarajay1111@yahoo.com) 正在领导一项倡议,使 GNU/Linux 对马拉雅拉姆语友好:“我们计划为我们的语言开发一个渲染器。具体来说,我们正在寻找 Pango(与 GTK 工具包一起使用的通用引擎)的渲染器。”
他补充说,在九个月的时间里,“我们希望创造一种氛围,让马拉雅拉姆语的语言计算得到改善。”他还说,“我们相信,一旦我们交付了基本框架,其他人将开始在马拉雅拉姆语中本地化更多应用程序。”
在工具包层面,GTK 和 Qt 是最常用的。GTK 已经通过 Pango 项目拥有良好的框架,并且对印度语言具有基本支持。Qt 现在也对所有语言都具有 Unicode 支持,但渲染尚未准备就绪。
国际努力也在帮助印度。免费 Unicode 文本编辑器 Yudit 现在提供对三种南印度语言的支持:马拉雅拉姆语、卡纳达语和泰卢固语。德里 GNU/Linux 资深人士 Raj Mathur 评论说:“当前版本的 Yudit 完全支持马拉雅拉姆语和其他印度语言。它还可以使用马拉雅拉姆语字体的 OpenType 布局表。我认为 Yudit 是第一个可以使用 OpenType 表格来处理马拉雅拉姆语的应用程序。”
K Ratheesh 是印度理工学院马德拉斯分校(位于南印度城市钦奈)的学生,几年前他致力于为本地语言启用 GNU/Linux 控制台。他说
由于 [当时] 当前的 PSF 格式不支持可变宽度字体,因此我在控制台驱动程序中制作了一个补丁,以便它加载用户定义的多字形映射表,以便可以为单个字符代码显示多个字形。所有编辑操作也将得到处理。
在印度语言中,有各种辅音/元音修饰符,导致复杂的字符簇。“因此,我还扩展了补丁以加载用户定义的、上下文相关的字形和字符代码解析规则。同样,所有编辑操作都将根据解析规则规范执行”,Ratheesh 评论道。
Ratheesh 还说:“尽管该补丁的开发考虑到了印度语言,但我认为它也适用于许多其他语言(例如中文),这些语言需要在控制台上使用更宽的字体或在 I/O 级别进行用户定义的解析。”
该软件包包含补丁、一些文档、实用程序和示例文件,当时大约 100KB。
在寻找解决方案的过程中,需要解决许多问题。例如,哪些语言需要优先处理?HP 位于班加罗尔的技术顾问 Joseph Koshy (JKoshy@FreeBSD.ORG) 认为,北印度印地语家族有望覆盖最多的人口。然而,他认为南部语言——卡纳达语、泰卢固语、泰米尔语和马拉雅拉姆语——提供了最大的实际部署前景。它们享有部署有效 IT 解决方案所需的更好的支持基础设施,这在南印度似乎更好。
在 HP 的工作之外,Koshy 是 FreeBSD 操作系统的志愿者开发人员,也是 SourceForge 上 Indic-Computing Project 的创始人之一。Koshy 说
我感兴趣的是帮助实现基于标准、可互操作的印度语言计算。这个梦想比任何一个操作系统或任何一个计算平台都大。我希望看到寻呼机、电话、PDA 和其他尚未发明的设备以我们的母语与我们的人民互动。
但其他人有不同的看法。CV Radhakrishnan (cvr@river-valley.org) 是一位 TeX 程序员,他为 Comprehensive TeX Archive Network 贡献了软件包,并在南印度经营 River Valley Technologies,他说
我认为大多数南印度语言可能会因为其非线性性质而造成问题。例如,要创建连字字形,必须来回移动,而北印度语言没有这个问题。马拉雅拉姆语有特殊的字符,称为半辅音 [“chillu”]。其他语言中没有与之等效的字符。这提出了严峻的计算/编程挑战。
根据 Koshy 的说法,在 18 种更重要的“计划”国家语言中,除了基于梵文字母的语言(与印地语使用相同的文字)之外,所有语言在计算机上表示和处理时都存在严重问题。
创建多语言网站的 Edward Cherlin (edward@webforhumans.com) 说,专有操作系统在印度语言支持方面也遇到麻烦:“微软和苹果的进展缓慢。Linux 应该在今年年底或 2003 年初超过它们。”
Cherlin 指出,在 GNU/Linux 上,您可以自愿将任何应用程序印度化。将来,当字体管理和渲染标准化后,所有应用程序都将以印度语言运行,用于输入和输出,而无需进一步操作,任何人都可以创建本地化文件来定制用户界面。根据 Cherlin 的说法,还需要志愿者来翻译文档。
此外,Cherlin 说,“苹果和微软不愿意仅仅支持打字、显示和打印。在他们构建完整的语言环境(最好包括字典和拼写检查器)之前,他们不会发布语言和书写系统支持。”Linux 没有这样的限制。
他指出,自由标准组织与 Li18nux.org 正在提议合理化和简化 X 下的 i18n 支持,包括通用渲染引擎、共享字体路径和其他标准,这将大大简化支持所有书写系统和所有语言的工作。Cherlin 认为 Yudit 和 Emacs 都支持几种印度文字,并且只需少数专家的适度努力即可扩展。
微软的 Windows XP 具有基于当前 Unicode 版本 (3.x) 的印度语言支持,因此遭受了所有基于 Unicode 的解决方案的问题:无法表示某些印度语言的所有字符以及文本处理的笨拙性。
“当微软推出南亚版 MS-Word 时,字体存在很多问题。大多数情况下,单词被渲染为单独的字母,字母之间有空格,而不是像大多数印度语言那样组合在一起”,PicoPeta 语言技术专家 Kalika Bali 说。PicoPeta 是致力于创建 Simputer 的公司之一。
然而,前科学家、现在因其坚定不移地推动在有影响力的南印度语言卡纳达语中进行计算而广受关注的 UB Pavanaja 博士 (pavanaja@vishvakannada.com) (www.vishvakannada.com) 认为,与大约两年前的情况相比,进展“非常显着”。Pavanaja 说,“[Windows] XP 目前的定价和产品激活可能会成为 GNU/Linux 的福音。”
Mandrake Linux 开箱即用地包含孟加拉语、古吉拉特语、果鲁穆奇语、印地语梵文字母和泰米尔语。这还剩下奥里亚语、马拉雅拉姆语、泰卢固语和卡纳达语,以及源自印度的老挝语、僧伽罗语、缅甸语和高棉语。Cherlin 认为藏语和泰语得到了相当好的支持。
孟买的科学家/自由软件倡导者 Nagarajuna G 同意:“最近,本地化工作正在兴起”。他还指出
如果政府或其他资助机构能够拨出任何款项给印度自由软件基金会和其他积极参与本地化倡议的机构,开发人员就可以全心投入工作,并使之快速实现。FSFIndia 目前正在与喀拉拉邦政府合作,为 GNOME 桌面制作马拉雅拉姆语支持。
对于桌面级机器,当前的字体技术(TTF、OpenType、Type 1 等)能够处理印度文字。高质量字体的可用性是另一回事,但正如 Koshy 所说,这并不是真正的障碍。用于嵌入式设备(如寻呼机和其他小型设备)的印度语言显示技术尚未得到很好的开发。
Prakash Advani 几年前发起了 FreeOS.com 倡议,他说,像乌尔都语和信德语这样的语言具有从右到左的文字,看起来与阿拉伯语相似,但实际上是不同的。乌尔都语是巴基斯坦的主要语言,但在印度也使用。
自由软件爱好者兼 Indo-US 软件公司 InApp(处理自由和开源解决方案)副总裁 Satish Babu (sb@inapp.com) 指出了其他问题,例如排序(排序)顺序混乱(通常,没有唯一的“自然”排序顺序,必须通过标准化来采用一种)。
还存在印度语言词典和词库的不可用性以及单词多种正确拼写引起的问题;编码标准化 (Unicode),这将特别有助于印度语言之间的音译;程序支持(数据库、电子表格)用于排序/搜索双字节字符串;缺乏对某些语言(例如,图卢语、孔卡尼语、哈里亚尼语和博杰普尔语)的支持,这些语言是我们人口某些部分的母语。
Ravikant (ravikant@sarai.net) 在德里大学教授历史,之后转到 sarai.net (www.sarai.net) 的语言和新媒体项目,他说:“长期的解决方案当然是 Unicode。”对于短期措施,他建议努力开发现有软件包,“以便人们可以自由地使用它们,不受操作系统和字体的限制”。由定居国外的印度人编写的 ITRANS 和 WRITE32 是已经这样做的音译软件包。LaTeX-Devnag 软件包正在被德里圣雄甘地国际大学使用和推广。
FreeOS.com 倡议的 Prakash Advani (prakash@netcore.co.in) 说:“今天肯定存在印度语言计算的市场,但存在一个巨大的未开发市场:95% 的人口不读写英语。如果我们能够提供低成本的印度语言计算机,那将是一个杀手锏。”
Advani 还说:“最大的挑战不是技术性的,而是缺乏标准。在 Unicode 出现之前,完全缺乏标准。每个人都遵循自己的数据输入、存储和输出标准。”
缺乏免费的印度语言字体。“有超过 5,000 种商业印度语言字体,但可能只有十种免费(GPL/免版税)印度语言字体。这是一个严重的问题,应该做出更多努力来发布免费字体”,Advani 补充道。
此外,其他人指出,字体是另一团糟。当前的大多数实现都依赖于字形位置来显示和存储信息。例如,要表示字母“a”,存储的是“a”在某个特定字体(该软件包使用)中的位置。这与正常的英语不同,在英语中,ASCII 标准规定要表示“a”,必须使用数字 65。印度语言不存在这样的标准,因此在一个应用程序中编写的文档无法在另一个应用程序中打开。这也是印度网页作者必须指定特定字体的原因。
供应商利用这种情况将客户锁定在特定产品中。这也将电子邮件的交换限制在只有双方都具有相同的 Web 界面或程序才能使用印度语言电子邮件的情况下。
Raj Mathur 代表的 TUGIndia 已从字体设计师 Hashim 那里购买了一种马拉雅拉姆语字体 (Keli)。该字体目前可在 www.linuxense.com/oss/keli.volt.zip 上获得。这是马拉雅拉姆语字体的 OpenType 源代码。您可以使用 Microsoft VOLT 编辑和改进字体表。字体表在 GNU GPL 下发布,并且可以更改字形形状,前提是字体以不同的名称重新分发。Raj 在 Linuxense Information Systems 担任工程师,并领导印度 TeX 用户组的本地化项目。
G Karunakar 是另一位对该领域有浓厚兴趣的年轻开发人员,他说:“印度很少有人完全了解字体技术,因此大多数可用的字体都存在错误。由于缺乏字体标准,我们的字体没有被标记为印度语言字体。”
目前,关于 OpenType 字体作为印度语言字体的合适技术的普遍共识似乎正在形成。已经有一种免费的梵文字体(“Raghu”,由 NCST 的 RK Joshi 博士制作,并在 Indix 中使用)、一种来自 KGP 的卡纳达语 OpenType,以及马拉雅拉姆语、泰卢固语和孟加拉语的 OpenType。
印度 TeX 用户组目前有一个项目,为所有印度语言的字体设计师提供资金,他们准备编写字体并在 GPL 下发布。因此,他们获得了“Keli”,一个由 Hashim 编写并根据 GPL 发布的各种粗细和形状的马拉雅拉姆语字体系列。“我们确实希望获得更多其他语言的字体来填补空白。我们希望将 TUG2002(于 2002 年 9 月在印度举行)产生的节省专门用于此目的”,Thiruvananthapuram 的 Radhakrishnan 说。
“许多诀窍存在于难以获得的珍本书籍中。学者、语言学家、排版师等的大量研究工作正在被埋没,因为我们不知道它,或者不知道知道它的人”,Karunakar 补充道。
孟买 NCST 的高级研究科学家 Shrinath (shrinath@konark.ncst.ernet.in) 说,NCST 在该主题上做了一些有趣的工作
我们希望印度语言编程像今天的英语编程一样简单。几乎每家公司都必须重新发明轮子或从其他人那里购买昂贵的解决方案。在英语中,操作系统支持它。这是一个鸡和蛋的问题。如果存在印度语应用程序,操作系统供应商将在操作系统中构建基本功能,如果内置了这些功能,就会有更多的应用程序。
来自印度中部中央邦的电子工程师 Girish S 认为:“英语一直是软件开发和使用的实际语言。因此还有很长的路要走。中国正在这方面迅速开展工作,我们也可以这样做”,他创立了 ApnaJabalpur.com。
还有其他需求,例如词典和拼写检查器。印度文字中的单词分隔方式与拉丁字母不同,精细排版也是如此,您在任何语言的消费者或办公应用程序中都找不到精细排版。最后,主要的挑战是庞大的数量。据信印度有 1,652 种母语,其中 33 种的使用者超过 10 万。
在撰写本文时,许多印度化的主要支持者计划于 9 月底在南部城市班加罗尔会面,讨论当地语言开发工具、应用程序和内容。会议计划有 20-25 名核心参与者。
组织者之一 Tapan Parikh 说:“我们也希望这个广泛的联盟能够在帮助当地语言群体更有效地与国际标准流程和论坛(如 Unicode 联盟和 W3C)互动方面发挥促进作用。”

Frederick Noronha (fred@bytesforall.org) 是一位在印度果阿工作的自由记者。他一直在密切报道世界第二人口大国 GNU/Linux 的情况,并于去年获得了 sarai.net 的印刷媒体奖学金,以研究该地区的开源和自由软件问题。