Unicode中的空格字符一览(翻译)

2022-10-08 09:37:27 浏览数 (1)

Unicode中的空格字符

本文列出了 Unicode 中的各种空格字符。有关说明, 还请参阅 Unicode 标准中的 第6章 书写系统和标点符号 还有Unicode标准中的 一般标点符号的区段描述 。本文还列出了3个宽度为0的字符, 故可称其为零宽度空格。

下表第三列中, 每一行展示一个不同空格字符的显示效果, 以“foo”和“bar”这两个带边框的单词的间隔的形式展示您的浏览器可能无法正确显示所有空格字符。 这取决于所使用的字体、浏览器以及系统中可用的字体。

表格Unicode中的各种空格字符和“零宽度空格字符”

字符Unicode代码

字符名字

测试

字符宽度

U 0020

ASCII空格

foo bar

具体宽度依字体文件而定, 通常是¼em *

U 00A0

不间断空格

foo bar

和ASCII空格一样, 但是通常不可调整 **

U 1680

欧甘文空格

foo bar

未指定字符; 通常不为空格而为破折号

U 180E

蒙古语元音分隔符

foo᠎bar

0

U 2000

EN空隔符 ***

foo bar

1en (= 1/2 em)即宽度为½字体高度

U 2001

EM空隔符

foo bar

1em (名义上, 字体的高度,或称字体大小)

U 2002

EN空格 (nut) ****

foo bar

1en (=1/2 em)即宽度为1/2字体高度

U 2003

EM空格 (mutton)

foo bar

1em即宽度为1字体高度

U 2004

⅓EM空格

foo bar

1/3 em

U 2005

¼EM空格

foo bar

1/4 em

U 2006

⅙EM空格

foo bar

1/6 em

U 2007

数字空格 *****

foo bar

“表格宽度”, 即数字的宽度

U 2008

标点符号空格

foo bar

英文半角句号“.”的宽度

U 2009

窄空格

foo bar

1/5 em (有时是1/6 em)

U 200A

发际空格 ******

foo bar

比窄空格还窄

U 200B

零宽度空格

foobar

0

U 202F

窄不间断空格

foo bar

比不间断空格(或者空格)都窄

U 205F

中等数学空格

foo bar

4/18 em

U 3000

表意文字空格

foo bar

1个表意文字字符的宽度 (CJK).全角空格

U FEFF

零宽度不间断空格

foobar

0

* 1em指1个字符的高度

** 不间断空格即 如果其他单词/文字是用 由它连接的字符会被认为是一个完整的单词,不会被优先分开于两行,我自己叫它不换行空格,)

** 复制本表格的U 0020一行时,问题会得到用foo bar而不是foo bar…或者在U 00A0一行反过来…这不是译者或者作者的问题……(就是普通的编辑器吞空格什么的问题)

** 提到HTML字符实体时是没有空格(即ASCII空格)而只有不间断空格( )的……因为浏览器总是会截短 HTML 页面中的空格  如果在HTML文本中连续写2、3个或者10个空格有来占位,在浏览器显示该页面之前,会删除它们到只剩下1个。如需在页面中增加空格的数量,需使用   字符实体。见于菜鸟教程-字符实体

** 可调整(见于本文‘宽度的调整'一节)

*** quad和space两词意思相同,都为排版中的空白分隔,故唤quad作空隔;过去quad兼为quadratone(四音)及quadrat(四方形)等多个含义,译者不想考证之。(The documentation of the Xerox Coded Character Standard only mentions “quad” as an alias of “space” for these characters. )

**** “(nut)”、“(mutton)” 不甚解,故保留该部分原文,猜测是单词宽度之意

***** 原文Figure Space,查阅背景材料20008-core-text.pdf (unicode.org)得:在以旧方式排版表格时确实如此,故而“数字空格(Figure Space)”的别称“表格空格(Tabular Space)”(法语:Espace Tabulaire)在另一方面使人困惑。由于Unicode标准中有实际上两个“表格空格”字符, 标点符号空格(PUNCTUATION SPACE)就是另一个. 两者都是为比例字体设计的,且仍然可以在纯文本中使用。

****** 原文Hair Space,Unicode百科等给的翻译为”发际空间“;“中等数学空格”原文为“Medium Mathematical Space”,网上找到的翻译为“中等数学空间” ;“零宽度不间断空格”原文为“Zero Width No-Break Space ”而MSWord给的翻译为“零宽度非断开空格”

Word插入符号看到各种空格:零宽度、不间断、不断开……Word插入符号看到各种空格:零宽度、不间断、不断开……

另注 本表格显示排版没有显示原有的字符边框,不够直观,原因是我加不上字符边框e.g.<span style="BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid">字符边框</span>

  • 故补充原文截图于此:
表格Unicode中的各种空格字符和“零宽度空格字符”原文表格Unicode中的各种空格字符和“零宽度空格字符”原文

“零宽度空格字符”

以前,蒙古语元音分隔符 (U 180E) 被划分为为空格字符,现在被归类为格式化字符(没有宽度)。在 Unicode 中,零宽度空格字符 (U 200B) 和零宽度不间断空格 (U FEFF) 从未被归类为空格字符,尽管它们的名称里有个“空格”。

 不是万能的,在排版/字处理软件支持时,可以使用零宽度空格字符以告知软件:此处可以换行,断开另起一行。类似地,也可以在两个字符之间使用零宽度不换行字符将它们“粘合”在一起,这样在显示时,它们就不会出现隔断于上下两行,即使正常的处理规则允许这样做。

空格字符的宽度

U 2000---U 2006字符,在字体中实现时,通常具有为它们定义的特定宽度,尽管存在小的偏差。它们的宽度是根据 em 单位定义的,即字体的大小。

字符U 2007---U 200A和U 202F在Unicode标准中没有给它们分配精确的宽度,字符的显示实现可能会与预期的宽度有很大偏差。此外,在出版软件中使用相同名称的概念时,比如“窄空格”,其含义可能会有很大的不同。例如,在 InDesign 软件中,“thin space窄空格”是1/8 em (即0.125 em,与建议的0.2 em 相反) ,而“hair space发际空格”只有1/24 em (即大约0.042 em,而窄空格标志的宽度通常在0.1em和0.2 em之间变化)。

浏览器和其他软件的支持说明

Web 浏览器和其他程序可能无法根据其定义或描述呈现所有空格字符。许多常用字体缺少某一部分的空格字符。多年来情况有所改善,但仍需谨慎,尤其是当文本数据可能需要从一个程序传输到另一个程序,或可能使用不同字体查看时。

现代浏览器通常可以找到一个字符符号,如果系统中的某些字体包含它。然而事情并不总是一帆风顺,请参阅 在 HTML 中使用特殊字符的指南。此外,字体替换可能会导致不希望的效果,因为字符的宽度因字体而异。

使用特定宽度的各种空格字符,如 窄空格(THIN SPACE) ,通常是不必要的风险。考虑使用其他方法,例如文本处理程序的功能或(在网页上)CSS 属性,如 padding(填充)margin(边框)word-spacing(词间距)letter-spacing(字母间距即字间距)

宽度的调整

在文本处理、网页显示和其他上下文中,空格字符通常是“可调整的”,因为它们以不同的宽度显示,特别是为了满足对齐要求。您可能会在本段落中看到这一点。尤其是在排版过程中,对一段文字的对齐操作往往只会使空格变得更宽(如两端对齐分散对齐),尽管它也可能缩小空格的宽度。

不间断空格(No-break spaces)在 Unicode 中定义为具有与空格相同的宽度。只是,这并没有具体说明在对齐操作的过程中应该发生什么。通常的做法是将它们视为具有固定宽度(在每种字体中) ,这意味着在调整后的文本中,空格和非中断空格具有不同的效果。

在 Web 浏览器上,不间断空格往往是不可调整的,但现代浏览器总会根据对齐的方式拉伸它们。在 宽度调整过的文本页面 中,作者可能使用无中断空格而不是正常空格来防止拉伸(例如,在 5&nbsp;m 而不是 5&#x20; 也不是5&#32;m中)**。由于浏览器行为的变化,最好使用固定宽度的空间。其中,四分之一em空格(例如,在 5&#x2005;m 中)通常最适合于正常未拉伸空间的宽度。然而,固定宽度的空格在换行时起到了普通空格的作用,因此您可能希望使用一些技术来 防止预期以外的行间断 (例如,在 <nobr>5&#x2005;m</nobr > 中)。或者,可以考虑使用 窄不间断空格(NARROW NO-BREAK SPACE),这在 Web 浏览器中通常被视为不可伸缩的。在字符串属于同一个字符串的上下文中,它可能是足够的,因此它们不应该被分成两行,并且可以通过缩小它们之间的间隔来表示,例如在表达式中,如”10 kg”、”C. S. Lewis”。

不间断空格处理方式的变化,虽然不方便,但与 CSS 规范的变化是一致的。例如,CSS3标准(即CSS Text Module Level 3)的 第七大点 空格 (1月24日2019年草案)定义了不间断空格,而没有定义固定宽度空格;固定宽度仍然作为一个单词分隔符,在对齐操作中仍然是可伸缩的

** 译者另注(比如说在cnblogs或其他技术博客里拷贝缩进正常的代码编译时会用'xa0'代替正常的'x20'字符而见到error: stray '302',原因就是关于显示/复制代码的js脚本没运行或者缺失)

用gbk编码打开hello1.c会看到"xa0"显示为"聽"用gbk编码打开hello1.c会看到"xa0"显示为"聽"
在Word或WPS中打开段落标记会看到&nbsp;会显示为这样的小气泡在Word或WPS中打开段落标记会看到&nbsp;会显示为这样的小气泡

**(为什么文稿排版有时用空格缩进是可以的,因为'xa0'和'x20'不是同一个空格,有的在线编辑器添加了&#32;&nbsp;功能,而这会让一直用Word排版文稿的人奇怪,因为两种空格复制出来都是&#32;

Unicode标准描述了特定宽度空格字符的调整过程和预期作用:

固定宽度的空格字符(U 2000..U 200A )出自于传统的(热铅活字)排版。计算机自动化排版(激光照排)中的算法字距和换行调整不会用到这些字符。但是,在用到它们的地方(例如数学公式) ,它们的宽度通常是字体指定的,并且在对齐过程中通常不会展开。唯一的例外是U 2009窄空格(THIN SPACE) ,它有时会被调整。

EM空隔符(EM QUAD) 字符与 EM空格(EM SPACE) 规范等效。他们预设的差异似乎在后者的码表注释中体现:“EM空格可能按字体的浓缩因子(condensation factor)缩放”。然而没有任何类似的注释表明EN空格符(EN SPACE) 与 EN空隔符(EN QUAD) 有任何差异,它们应该是等效的。不清楚这里的“浓缩因子(condensation factor)”是什么意思。

其他注释

在 Unicode版本4.0标准中添加了 中等数学空格(MEDIUM MATHEMATAL SPACE) 字符。

关于不间断空格和其他字符的不换行特性,请参见 Unicode 行中断规则: 辨析与改进 。

微软在其空格字符设计标准页面中如是说:“在数字字体中,大多数计算机只支持两种空格字符,空格不间断空格。” 这个观点不够准确,因为对空格字符的支持取决于字体而不是计算机(不能显示的情况例如:程序字体所中空格字符的码位被占作他用);而对不间断空格的支持是个例外,能否显示取决于应用程序。

相较于本页面的简略说明,Alan Wood提供了更为详细的Unicode资料,其中包含一般标点符号(General Punctuation) 区段,那里有一个页面对空格字符的宽度作了明确图示。

另请参见: CSS 中的样式空格 。

示例

这里的一段文字只有演示用途,它包含了单词之间的常用空格字符。

此段仅用于演示目的,它包含六分之一(SIX-PER)EM空格(EM SPACE)字符,而不是单词之间常用的空格字符。

可显示的空格(Visible spaces)

有一些图形字符可以用作空格的符号。虽然有时被称为可显示的空格(Visible spaces),但它们根本不是空格,而是可显示的符号;在指导手册中和文本描述中,它们用于指示空格的出现。

下表列出了一些符号,按实际用途的多少递减。它们的形状因字体而异,尤其是最后一种变化很大。

U 2423

开口盒子(OPEN BOX)

U 2422

空白符号(BLANK SYMBOL)

U 2420

空格符号(SYMBOL FOR SPACE)


作者信息:创建于 2002-12-29. 最后修改于 2020-05-01.

本页面内容属于免费信息网站IT和通信(IT and communication)中的字符和编码章节,由Jukka"Yucca"Korpela维护。


译者信息略

0 人点赞