3

注意:我接受了一个答案,因为它很有帮助,我不希望很快得到另一个答案,但这个问题仍然没有完全回答,所以我可能会奖励任何这样做的人。我想我正在寻找的是一种流程图,它决定给定字体是否支持给定语言。

我正在尝试将一组字体放在一起。我需要知道哪些字体可以用于哪些语言。

我对字符集(拉丁语、西里尔语、阿拉伯语)有粗略的了解,但不足以将例如波兰变音符号分类到事物的方案中。

我想有两种方法可以解决我的问题:

  1. 为每种语言设置一个测试字符集。
  2. 有一个备忘单,上面写着“某某语言需要拉丁扩展 B”和一个技术技巧来检查给定字体是否包含这些字形。

对于选项 2,我没有很好的资源。我正在寻找一种节省劳动力的解决方案。此时字体和语言的最终数量是未知的,我不想要 O(M*N) 任务。我可能必须执行选项 1 作为验证步骤,但我想首先减少搜索空间。

谁能告诉我如何按字符集对语言进行分组?

有什么我应该知道的问题吗?

4

2 回答 2

0

很好的问题,虽然它有点笼统。

正如@Paweł Dylda 所说,要求编号 0 是对所有内容使用 UTF-8。如果您已经明白这些天必须这样做,那没关系;出于某种原因,很多人仍然没有。

另一个元提示是让您的应用程序非常清楚地知道它显示的是哪种语言。例如,在 HTML 中,到处使用 lang 和 dir 属性。如果不是 HTML,请创建某种全局变量,告诉应用程序它正在显示语言 X,首选字体是 Y。您可能还需要明确区分用户界面的语言和内容。(要查看示例,请访问英语维基百科,开设一个帐户,然后转到首选项并选择法语作为您的语言 - 您会看到英语文章和法语菜单。很多人觉得这很舒服,而且实现起来一点也不难。)

然后你需要了解你的目标语言。如果您想针对所有这些人,那真的很棒,尽管它可能具有挑战性。

对于拉丁语,您很可能不必费力地将语言分成“西方”、“东欧”、“南欧”、“土耳其语”、“越南语”等组。这是在常见的网络浏览器中完成的和文字处理器,但实际上这种方法已经过时了。你可以找到一个很好的字体,它涵盖了德语、法语、波兰语、土耳其语,甚至是越南语和非洲语,这些语言使用了很多变音符号。试试 SIL 的 Gentium 和 Doulos 以及 GNU Free Fonts。他们都是免费的。

从理论上讲,阿拉伯文字也可以这样说,但显然,阿拉伯文、波斯文和乌尔都文有一些不同的要求,尽管它们都使用相同的书写系统。通常,您可能必须为阿拉伯语使用通用阿拉伯语字体,并为乌尔都语提供不同的字体(例如,Nafees)。在这里,也可以使用母语人士进行测试。

对于西里尔文,尽量使用不仅包含俄语字母,还包含乌克兰语、塞尔维亚语和哈萨克语的字体,因为使用这些语言的国家/地区需要对它们提供良好的支持。这是西里尔文的最低要求,但您可以通过找到一种也支持俄罗斯其他语言(如萨哈语和阿布哈兹语)的字体来帮助自己和许多其他人。GNU Free Font 也可以在这里为您服务,但又一次 - 与人们一起测试它。

印度的语言是个大麻烦——那里有很多书写系统和字体。好消息是,Fedora 和 Ubuntu 等 Linux 发行版中的大多数都包含字体,并且它们可以免费在其他应用程序中重复使用。Lohit 家族涵盖了印度的大多数语言;看看马拉雅拉姆语的 Meera 和 Rachana。

我不太了解东南亚语言,如泰语、缅甸语、高棉语和老挝语,但也尝试支持这些语言。自 Windows NT 4 以来的大多数操作系统都很好地支持泰语,但对其他语言的支持非常不完整,因此假设操作系统在这里没有帮助您。

我的最后一个提示是查看 jquery.webfonts 库和相应的 MediaWiki 扩展“通用语言选择器”(又名 ULS):* https://github.com/wikimedia/jquery.webfonts * https://www .mediawiki.org/wiki/Extension:UniversalLanguageSelector

它提供了可移植的技术,可以轻松地将 webfonts 添加到您的 web 应用程序中。如果您不是在开发 Web 应用程序,或者由于其他原因无法使用该库,您仍然可以使用在存储库中找到的字体 - 它们涵盖了很多语言并且它们都是免费的。

(免责声明:我参与开发这些库。)

于 2012-11-17T10:29:59.327 回答
0

我发现 Cyber​​bit 字体涵盖了很多语言。

Bitstream Cyber​​bit 是一种专业设计的大型 Unicode 字体,可覆盖多种主要文字,包括拉丁文、扩展拉丁文、希腊文、俄文、希伯来文、阿拉伯文、泰文、日文(平假名、片假名和汉字)、韩文和中文汉字(象形文字)。

这是链接:cyberbit字体

于 2013-06-19T08:41:46.267 回答