当前位置:  开发笔记 > 前端 > 正文

如何在HTML for Windows中呈现狭窄的不间断空格?

如何解决《如何在HTMLforWindows中呈现狭窄的不间断空格?》经验,为你挑选了1个好方法。

在法语中,排版要求我们在不同的地方使用狭窄的 不间断空间(U + 202F)("Commeça!").

显然,Windows上的每个浏览器都无法支持,而且它们都会显示一个奇怪的角色.这适用于Mac OS X和Linux上的大多数浏览器.

有谁知道如何使Windows浏览器正确呈现它?

(我认为这是一个Windows错误而不是浏览器错误,因为只要它不在Windows上,Firefox和Safari都支持它).



1> Verdy_p..:

嗯......不.如果唯一的问题是(U + 2009)仍在破坏,我宁愿使用:

纠正破坏行为.为什么?

因为法国的罚款有效地使用了几乎六分之一到四分之一的cadratin(0.166 ca.到0.25 ca.,当标准空间是0.5 ca.)时,宽度的选择取决于已经存在的方法给定字体中定义的字形.

字体用于调整其稀疏空间的宽度(U + 2009):如果这些字体是由法国版画(用于渲染法语)制作的,则approche(或单词中的字母之间的间隙)比为英语设计的字体要窄:这是因为法语文本通常包含的字母数量超过了同等的英文文本(例如印刷的圣经),并且为了避免增加打印页面的数量,法语字体中的字形变得更窄并且方法更少; 为了弥补这一减少,法国的罚款规模有所增加.(人们经常说U + 2009是cad​​ratin的五分之一,即0.2 ca.,但这是错误的,因为这个值只是一个可合理的中值,应该根据他们的设计有效地调整字体).

在带有英文排版的英语中,字符间的间隙已经足够大,足以证明在大多数标点符号附近的文本中使用了无空间这一事实.但是,如果使用英文字体(具有较大的字符间间隙)使用字体呈现法语,则罚款应该更窄并且应该减少到1/6的cadratin.

所以,是的,U + 2009(在SGML存储库中)略有可调,具体取决于字体.

此外,它可能是部分合理的(当使用完全对齐时,不仅通常的字间空间的宽度增加,而且字符和正常或''精细''空间之间的所有间隙(但其他四边形空间必须)没有调整宽度:它们确实是固定的).

当您渲染其页面布局已经预先计算过的文档(使用已知字体并具有精确度量标准)时,精简空间(U + 2009)已经是您想要的(因为您不必担心破坏行为.

不幸的是,Unicode 忘记为这些四元空间U + 2000..U + 2006(以及稀疏空间U + 2009)分配行破坏属性中的非破坏行为.

Unicode纠正它的唯一方法(仅限纯文本文档)是在Unicode 5.1中添加另一个字符,即U + 202F(NARROW NON-BREAKING SPACE),后来给出了SGML符号名称"nnbsp"for字符引用(但此命名字符实体到U + 202F的映射不是任何HTML或XML标准的一部分,因此不应使用此命名实体,除非您的文档在其嵌入式DTD中明确定义它!)

但不幸的是,大多数浏览器都忘记应用这个添加以及为什么需要它们:他们认为字符应该是字体,但显然不是这种情况.

所有浏览器都应该将U + 202F视为非破坏性(即使他们不知道UCD内部副本中的字符,情况也是如此).

但是,浏览器不应该依赖于U + 202F以字体定义的事实,相反,它们应该在渲染时提供U + 2009(THIN SPACE)的回退,每次U + 202F都没有以当前字体映射,但是U + 2009以相同的字体映射(这通常是许多字体的情况).

所以这是HTML渲染器(即浏览器)中的一个问题; 我还认为这不仅仅是字体的问题,它实际上是浏览器的BUG(而不是字体中的错误或限制),如果它们不为空格提供这样的回退.当然,所有新字体都应该将U + 202F映射到与U + 2009相同的字形.

鉴于稀疏空间(U + 2009,或)在许多字体中得到很好的支持,并且具有正确的宽度,用于使用法语印刷指标制作法文文本,或者用英文印刷指标制作英文文本,这应该是每次狭窄的不间断空间不可用时,真的是正确的后备!

您可以完美地模仿U + 202F在HTML中的所需行为,只需使用U + 2009并使用CSS的"white-space:nowrap"使其不破坏.它总是比改变字体大小以显示伪半空间更好(因为这对于许多仍然太大的字体来说是不正确的,并且因为这在文本的跨度中不能正常工作有彩色背景:更改字体大小修改行高.

因此,请在HTML或SVG文档中使用此代码(仅将U + 202F保留为纯文本文档):

您可以将此序列保存在可重复使用的模板中,Template:nnbsp例如,您可以在MediaWiki 中将其命名,以便在页面中将其转换为{{nnbsp}}.

请注意,仍然最好象征性地引用精简空间,而不是强制使用精确的Unicode代码点:命名实体可以由渲染器重新映射,或者根据用户对另一个工作空白的偏好重新映射.

请注意,MS-word确实使用U + 2009而不是U + 202F来表示自己的罚款.这是正确的,因为Word文档具有预先计算的布局,并且假定MS-Word在计算页面布局时在本地强制执行非破坏行为.Word文档不是纯文本文档.

渲染的例子(使用背景颜色表示不修改行高,但不幸的是,这个站点不允许设置背景颜色,除了像这里使用等宽字体的部分):

Exemple de « fine » insécable française correctement codée !

相同的,而不容器不显示背景色,但它确实使用正常的比例字体,使得狭窄的空间被有效地呈现为薄:

简单易懂的法语; 纠正密码!

使用示例(大多数字体通常不支持NNBSP,但这可能最终适用于您当前的浏览器和系统上安装的字体,例如DejaVu Sans):

简单易懂的法语; 纠正密码!

使用示例(第二个CADRATIN,可能有效但可能对您的字体来说太窄,并且可能不会显示非破坏属性):

简单易懂的法语; 纠正密码!(嗯...不是真的)

使用示例 (几乎总是太大):

简单易懂的法语; 纠正密码!(嗯......不是真的)


有效地使用了几乎六分之一到四分之一的cadratin(0.166 ca.到0.25 ca.,当标准空间是0.5 ca.)时,宽度的选择取决于已经存在的方法给定字体中定义的字形.
(或单词中的字母之间的间隙)比为英语设计的字体要窄:这是因为法语文本通常包含的字母数量超过了同等的英文文本(例如印刷的圣经),并且为了避免增加打印页面的数量,法语字体中的字形变得更窄并且方法更少; 为了弥补这一减少,法国的
规模有所增加.(人们经常说U + 2009是cad​​ratin的五分之一,即0.2 ca.,但这是错误的,因为这个值只是一个可合理的中值,应该根据他们的设计有效地调整字体).
标点符号附近的文本中使用了无空间这一事实.但是,如果使用英文字体(具有较大的字符间间隙)使用字体呈现法语,则
应该更窄并且应该减少到1/6的cadratin.
为这些四元空间U + 2000..U + 2006(以及稀疏空间U + 2009)分配行破坏属性中的非破坏行为.
.这是正确的,因为Word文档具有预先计算的布局,并且假定MS-Word在计算页面布局时在本地强制执行非破坏行为.Word文档不是纯文本文档.


):

(嗯...不是真的)
(嗯......不是真的)
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有