嗯……不。如果唯一的问题是  (U+2009) 仍在中断,我会更喜欢使用:
纠正破坏行为。为什么?
因为法语 fine 有效地使用了六分之一到四分之一之间的固定宽度 cadratin(0.166 到 0.25 ca.,当标准空间是 0.5 ca. ) 宽度的选择取决于给定字体定义的字形中已经存在的方法。
字体用于调整其窄空间的宽度 (U+2009):如果这些字体是由法语版式制作的(用于呈现法语),则 approche(或字中的字母)比为英文设计的字体窄:这是因为法文文本通常包含比同等英文文本(例如印刷版圣经)更多的字母,并且为了避免增加印刷页数,法文字体中的字形是变得更窄,并减少了方法;为了弥补这种减少,增加了法语 fine 的大小。 (常说 U+2009 是五分之一的 cadratin,即 0.2 ca.,但这是错误的,因为这个值只是一个合理的中值,应该根据字体设计有效地调整它)。
-
在带有英文排版的英文中,字符间的间隙已经足够大,足以证明在大多数 双 标点符号附近的文本中使用了无细空格这一事实。但是,如果使用使用英文版式(字符间距较大)的字体呈现法语,则 fine 应该更窄并且应该减少到 1/6 cadratin。
是的,U+2009(SGML 存储库中的 )可以根据字体进行微调。
1234563但其他四边形空间的宽度不得调整:它们确实是固定的)。
当您渲染一个页面布局已经预先计算(使用已知字体和精确度量)的文档时,细空间 (U+2009) 已经是您想要的(因为您不必担心破坏行为。
不幸的是,Unicode忘记为这些四边形空间 U+2000..U+2006(以及细空间 U+2009)分配换行属性中的不间断行为。
Unicode 纠正它的唯一方法(仅适用于纯文本文档)是在 Unicode 5.1 中添加另一个字符,即 U+202F(窄非中断空间),后来被赋予 SGML 符号名称“ nnbsp" 用于字符引用(但此命名字符实体到 U+202F 的映射不是任何 HTML 或 XML 标准的一部分,因此不应使用此命名实体,除非您的文档在其嵌入的 DTD 中明确定义它! )
但不幸的是,大多数浏览器都忘记了应用这个添加以及为什么需要它:他们认为字符应该是字体,但显然不是这样。
所有浏览器都应该将 U+202F 视为非中断(这已经是这种情况,即使它们不知道其 UCD 内部副本中的字符)。
但是,浏览器不应该依赖于 U+202F 是在字体中定义的事实,相反,它们应该在渲染时提供对 U+2009 (THIN SPACE) 的回退,每次 U+202F 未映射到当前字体,但 U+2009 映射为同一种字体(很多字体一般都是这种情况)。
所以这是 HTML 渲染器(即浏览器)中的问题;我还认为这不仅仅是字体的问题,它实际上是浏览器的一个错误(而不是字体的错误或限制),如果它们不为空格提供这样的后备的话。当然,所有新字体都应将 U+202F 映射到与 U+2009 相同的字形。
鉴于窄空间(U+2009 或  )在许多字体中都得到了很好的支持,并且具有正确的宽度,可以使用使用法语排版指标的字体渲染法语文本,或者渲染使用英文排版指标,这应该是每次狭窄的不间断空间不可用时使用的正确后备!
您可以在 HTML 中完美地模拟 U+202F 的所需行为,只需使用 U+2009 并使用 CSS 的“white-space:nowrap”使其不中断。它总是比改变字体大小来显示一个伪半空间更好(因为这对于许多仍然太大的字体是不正确的,而且因为这在文本范围内不能按预期工作有彩色背景:更改字体大小会修改行高)。
所以请在您的 HTML 或 SVG 文档中使用此代码(保留 U+202F 仅用于纯文本文档):
您可以将此序列保存在可重复使用的模板中,例如,您可以在 MediaWiki 中将其命名为 Template:nnbsp,以便将其嵌入到您的页面中为 {{nnbsp}}。
请注意,仍然最好将细空间符号引用为  ,而不是强制使用像   这样的精确 Unicode 代码点:命名实体可以由渲染器重新映射,或者根据用户偏好重新映射到另一个工作空格。
请注意,MS-word 确实使用 U+2009 而不是 U+202F 来表示它自己的 fine。这是正确的,因为 Word 文档具有预先计算的布局,并且 MS-Word 在计算页面布局时在本地强制执行非中断行为。 Word 文档不是纯文本文档。
- 渲染示例(使用背景颜色来展示行高未修改,但不幸的是,该站点不允许设置背景颜色,除非在
<code> 部分,如此处使用等宽字体):
<i>Exemple de « fine » insécable française correctement codée !</i>
- 同样的没有
<code>容器不显示背景颜色,但它确实使用了正常的比例字体,因此细空间被有效地呈现为细:
« fine »无法形容的法语 的例子;更正代码 !
- 使用
&#x202F; 的示例(大多数字体通常不支持NNBSP,但这最终可能适用于您当前的浏览器和系统上安装的字体,例如DejaVu Sans):
例子 de «fine» insécable française;更正代码!
- 使用
&#x2006; 的示例(CADRATIN 的六分之一,可能有效,但可能对您的字体来说太窄,并且可能不会表现出不间断的属性):
« fine »不可分割的法语的例子;更正代码 !(嗯……不是真的)
- 使用
&nbsp; 的示例(几乎总是太大):
“很好”的法国不可分割的例子;更正代码!(嗯……不是真的)