HyperGlot可以帮助类型设计师回答字体中看似简单的语言支持问题:我何时可以使用字体a在语言B中设置文本?通过确定语言使用的每个拼字法的标准字符集,它可以做出务实的答案。目前包含640多种语言信息的数据库正在进行中,旨在成长。
我们为每个语言的每个拼字法记录一个基本和任何辅助字符集。请注意,在字体中检测语言支持时,仅使用主动使用的拼字法(其状态设置为primary )。仅出于信息目的显示其他,二级或历史拼字法。
在相关的情况下,我们还提供了一个简短的设计说明,其中包含有关塑造和定位要求的提示,这些提示超出了Unicode字符代码点。 HyperGlot仅应用于检测是否可以考虑使用特定语言的字体。它没有说明字体设计的质量。
HyperGlot是按原样提供的一项正在进行的工作,其语言数据的有效性也有所不同。为了帮助您评估您查看的结果的有效性,数据库中的每种语言都带有一个标签,指示我们拥有的数据的质量(例如,有些被视为drafts ,有些已verified )。我们已经检查了针对各种在线和离线资源的信息,我们致力于不断改进。但是,我们承认以这种方式映射世界上所有语言都超出了我们的能力 - 我们需要各自语言的用户的帮助!因此,如果您发现问题或注意到数据库中完全缺少您喜欢的语言,请与您联系。我们将很乐意整合您的反馈并值得您赞扬。
在Web应用程序上了解有关页面上有关HyperGlot的更多信息
HyperGlot和Unicode CLDR的比较
使用数据库有几种方法:
pip install hyperglot ,请参见下面的用法注释)pip install hyperglot )一些注释来说明为什么语言支持问题很复杂:
重要的是要注意,字体中的语言支持更多,而不是支持一组代码点。字体需要包括具有特定语言字符的可接受/可读形状的字形。有时,对于同一代码点会有区域性或语言变化,这意味着不同语言对角色的形状提出了不同的要求,但在字符的代码点上需要相同的要求。此外,字形必须按照特定脚本/拼字法的约定如预期的那样进行交互。例如,某些语言/脚本需要(或强烈期望)某些字形组合以形成连接或某些字形组合需要额外的间距校正(kerning),以防止冲突或间隙。因此,HyperGlot工具生成的报告应仅用于检测是否可以考虑使用特定语言的字体。它对设计的质量没有任何说法。
在有关页面的Web应用程序上阅读有关此信息的更多信息
字符使用数字文本中的Unicode代码点表示,例如拉丁字母a的代码点U+0061 。数字Opentype字体将这些代码点映射到字形,字符的视觉表示。为了找到是否可以使用特定语言的文本使用字体,需要知道该语言需要哪些字符代码点。这就是HyperGlot数据库的目的。
从字体获得编码点列表。
可以以两种模式访问数据库:
ä ),基本字符的编码点以及不需要这些组合的标记字符(例如a和组合¨ ,除非组合没有编码的形式或使用--marks标志。--decomposed标志字体必须包含基本字符并组合语言的标记(例如,具有ä的语言将匹配仅具有a and ¨的字体,但不能像编码的字形那样组合ä )。指定的validity级别用于滤除较低(含义,不确定)有效性的语言条目。
如果要求,将组合编码点的base和aux (辅助)列表组合在一起,以通过使用--support选项来实现更严格的条件。数据中的marks是基于--decomposed和--marks标志所需的。仅出现在aux字符中的标记将不需要base有效性。
当检测语言支持时,考虑到给定语言的任何主要拼字法的代码点。具有historical和secondary地位的拼字法被忽略。如果多个拼字图具有preferred_as_group值,即使包括几个脚本,它们也被视为一个拼字法。
当检测拼字法支持时,请使用--include-all-orthographies ,分别检查给定语言的所有拼字图。包括具有secondary状态的拼字法。具有historical地位的拼字法被忽略。
如果字体中的代码点列表包括第5或6点的代码点列表中的所有代码点,则该字体被认为支持此语言/正拼图。此外,仅验证了连接行为和标记附件,并且只有在正确的字体形状正确的情况下才能考虑语言/拼字法。在清单中,受支持的语言由脚本分组。
语言形象的组合意味着在工具输出的所有这些脚本下列出了使用不同脚本(例如,塞尔维亚人或日语)具有多个正字图的语言。
重要说明:Web应用程序当前不包括塑形检查!
提供了一个简单的CLI工具,用于输出字体文件中传递的语言支持数据。
您需要安装Python 3。通过PIP安装:
pip install hyperglothyperglot path/to/font.otf或一次检查几种字体,或者其合并覆盖范围(与-m union )
hyperglot path/to/font.otf path/to/anotherfont.otf ...其他选项:
-s, --support :指定要检查的支持级别(当前选项为“基础”(默认为基础)或“ aux”))-m, --marks :信号字体的标志还应包括所有用于语言的标记 - 默认情况下,仅需要这些标记,而这些标记不是预编码字符的一部分(默认为false)-d, --decomposed :要发出信号字体的标志,只要它具有所有基本字形和标记来编写语言的语言 - 默认情况下还需要编码的预先编写的glyphs(默认为false)-a, --autonyms :以其母语和脚本输出语言名称--speakers :输出每种语言有多少个说话者(可用的地方)--sort :指定“扬声器”来按扬声器进行排序(默认为“字母”)--sort-dir :指定“ desc”以降序排序(默认为“ ASC”升序订单)-o, --output :提供一个文件路径,以yaml格式写入输出。对于单个输入字体,这将是字体支持的语言和拼字图的HyperGlot数据库的子集。如果提供了几个字体,则YAML文件将为每个文件具有最高级别的DICT键。如果提供了-m选项,则YAML文件将包含特定的交叉点或联合结果-c, --comparison :如果提供了多个文件,如何处理输入(当前选项是“单个”,“ Union”和“交叉点”)--include-all-orthographies :检查一种语言的所有拼字图,而不仅仅是其主要的拼字图--validity :指定通过语言数据的有效性级别过滤(默认为“初步”)--include-historical :包括标记为历史的语言和拼字法(默认为false)的选项--include-constructed :包括标记为构造的语言和拼字图的选项(默认为false)--strict-iso :严格按ISO显示语言名称和大语数据(默认为false)-v, --verbose :更多记录信息(默认为false)-V, --version :打印版本hyperglot版本号(默认为false)安装PIP软件包还安装了hyperglot-validate和hyperglot-save命令,该命令允许以结构化和兼容的方式检查和保存YAML数据。
HyperGlot带有一个hyperglot-report命令,该命令采用所有相同的选项,即主hyperglot命令(请参见上文)。此外,它还需要这些选项来输出报告缺少哪些字符或塑形的内容,以支持被检测到的不支持的语言:
--report-missing :报告缺少n或更少字符的无与伦比的语言的参数。如果n是0个所有语言,则列出了任何数量的缺少字符(默认)。--report-marks :报告缺少n或更少标记附件序列的语言的参数。如果n是0个所有语言,则列出了任何数量的任何数字丢失的标记附件序列(默认)。--report-joining :报告缺少n或更少连接序列的语言的参数。如果n是0个所有语言,则列出了任何数量的丢失的加入序列(默认)。--report-all :设置/覆盖所有其他所有其他--report-xxx参数的参数。 数据结构在单独的文件中以及用于贡献的指南中描述。
更新被委托/合并到dev分支机构,其中master分支持有最新发布的版本。
数据库和贡献
base + mark组合是否受字体说明影响HyperGlot数据库和工具最初是由Rosetta,世界版式专家,发布者和原始字体制造商开发的,这些字体可满足全球排版的需求。
到目前为止,该工具开发得到了Rosetta,Antonio Cavedoni(@verbosus)的支持,我们正在申请更多资金。您也可以通过GitHub赞助HyperGlot。
到目前为止,主要贡献者:
贡献者的完整列表