将经过时间测试的印刷规则应用于文档以提高可读性的模块。
排版是一门艺术,就像一门科学一样,在整个历史过程中都得到了完善。全世界的印刷专家无情地致力于提高文本可读性和流动性,设计了许多规则,这些规则通常在当今的出版媒介上被丢弃。该模块旨在纠正这种情况。
这是一项正在进行的工作,您可能不会发现它适合自己的需求。您可以通过多种方式为改进该项目做出贡献:通过提交拉动请求,建议想法或记录您国家自己的印刷惯例。
typographer ( input , configuration ) ; input是字符串或HTML元素(请参阅有关HTML输入的限制)。
configuration是具有以下可选属性的对象:
locale :要使用的语言代码。默认为en 。output_format : text或html ,用于替换的格式(例如u00a0或 用于非破坏空间)。默认是text 。disable_rules :禁用规则/规则集的数组(例如['ruleset/name1', 'ruleset2/name2', 'ruleset3', ...] )。根据输入类型,打印机将返回字符串(使用字符串输入时),或直接在DOM中更新元素及其后代。
const fixed = typographer (
'Bonjour typographer: enchanté !' ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
console . log ( fixed ) // 'Bonjour typographer : enchanté !' const elements = document . querySelectorAll ( '.fixTypography' )
[ ] . forEach . call ( elements , element => {
typographer (
element ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
} ) ; 该项目的第一个动机是空间,您可能知道,不仅有一种空间,我们会看一些:
类似于常规空间,但包装时不能在两条线上折断。这两个单词(被非破坏空间隔开)总是最终出现在同一行上。 是一个比常规空间狭窄的空间。 与薄空间的大小相同,但不能在两条线上折断。不仅有这四种类型的空间,但是您明白了。非破坏空间对于防止怪异包裹确实很有用。
考虑451 °F ,将单元放在单独的线上比值比值奇怪吗?这是非破坏空间的目的。您想使用非破坏空间。
这永远是完美的,在很多情况下,印刷作者会挣扎,例如,国际单位体系指定该单元应在空间之前(一个不破坏的空间),但很难确保某件事是一个单位。某些单元可能非常模棱两可(例如,Volt的V V也可能是5的罗马数字)。
我们将在我们很确定的单位上添加一个非破坏空间,并将其保留给您以模棱两可的空间。
如果您在标点符号之前使用的HTML字符串输入带有需要非破坏空间(常规或狭窄)的语言环境,则应确保字符串不包含任何不应转换的标签,例如<code>或<style> 。否则,您最终会得到诸如color : red ;这会破坏您的样式或代码样本。
使用HTML元素输入是安全的,因为我们过滤了不应像上述内容(和其他节点)那样转换的节点。请注意,如果输入中的元素包含其中一些节点类型,我们将跳过整个容器元素。
我们尽力自动尽可能多地修复,但是上版作者的第一组是:“如有疑问,请随身携带事物。”
这是棘手的,规则在各个国家 /地区都有不同,即使在一个给定的国家,也可能有一种不止一种建议的风格。默认情况下,我们将专注于以典型的80-20方法应用无可争议的印刷规则。
注意:加拿大(法语)使用不同的规则进行标点符号。
,以前应该没有空间,之后的常规空间。.以前应该没有空间,之后的常规空间。:以前应该有一个非破坏空间,然后有一个常规空间。;之前应该有一个狭窄的非破裂空间,然后有一个常规空间。?之前应该有一个狭窄的非破裂空间,然后有一个常规空间。!之前应该有一个狭窄的非破裂空间,然后有一个常规空间。« ‹在以前应该有一个常规空间,之后的非破裂空间狭窄。» , ›之前的非破裂空间应该有一个狭窄的空间,然后有一个常规空间。“ , '之前应该有一个常规空间,然后没有空间。” '(之前应该有正常空间,之后没有空间。)以前应该没有空间,之后的常规空间。[之前应该有一个常规空间,之后没有空间。]以前应该没有空间,之后的常规空间。- (连字符)不应在之前和之后没有空间。— (em,long)或– (en,medium)在外面有常规空间,并且在围绕某些文本配对时,内部应有一个不破裂的空间。… , ... , 或者. . .以前应该没有空间,之后有常规空间。除非在平方括号或括号之间,否则在此之前或之后没有空间。'在之前和之后都没有空间。,以前应该没有空间,之后的常规空间。.以前应该没有空间,之后的常规空间。:以前应该没有空间,之后的常规空间。;以前应该没有空间,之后的常规空间。?以前应该没有空间,之后的常规空间。!以前应该没有空间,之后的常规空间。“ , '之前应该有一个常规空间,然后没有空间。” '« ‹在以前应该有一个常规空间,之后的非破裂空间狭窄。» , ›之前的非破裂空间应该有一个狭窄的空间,然后有一个常规空间。(之前应该有正常空间,之后没有空间。)以前应该没有空间,之后的常规空间。[之前应该有一个常规空间,之后没有空间。]以前应该没有空间,之后的常规空间。- (连字符)不应在之前和之后没有空间。— (em,long)或– (en,edimed)在之前和之后不应没有空间。 EM破折号在用来指示引号的来源之前应该有一个空间。… , ... , 或者. . .可以在之前和之后有常规的空间,之前没有空间,也可以有一个常规空间,或者以后没有一个空间,也没有空间。'在之前和之后都没有空间。 在大多数情况下,您可以简单地使用一般语言代码,但是如果发现应用的转换不正确,请尝试使用特定的语言环境代码为您的国家 /地区使用。例如,加拿大法语( fr_CA )使用不同的间距规则来标点符号,因此在这种情况下使用fr很可能会产生不当的结果。
en英语的一般语言代码en_US美国en_GB英国en_CA加拿大en_AU澳大利亚en_NZ新西兰en_IN印度fr法语的一般语言代码fr_FR法国fr_BE比利时fr_CA加拿大fr_CH瑞士fr_LU卢森堡fr_MC摩纳哥de德语的一般语言代码de_DE德国de_AT奥地利de_BE比利时de_CH瑞士de_LI -liechtensteinde_LU卢森堡es西班牙语的一般语言代码es_ES西班牙es_AR阿根廷es_BO玻利维亚es_CL智利es_CO哥伦比亚es_CR哥斯达黎加es_DO多米尼加共和国es_EC厄瓜多尔es_SV -El Salvadores_GT危地马拉es_HN洪都拉斯es_MX墨西哥es_NI -NICARAGUAes_PA巴拿马es_PY巴拉圭es_PE秘鲁es_PR波多黎各es_UY乌拉圭es_US美国es_VE委内瑞拉