如果我想强制两个视觉显示的两个空格,我可以这样做:
FOO BAR FOO BAR
这将回避HTML的空白折叠功能,但它也会导致这样的换行:
FOO
BAR FOO
BAR
是否有替代品会像常规空间那样破坏?这是我要问的伪代码:
FOO
BAR&bsp;&bsp;
FOO
BAR
ps:我知道这可以用CSS完成。这不是我对此感兴趣的。
答案 0 :(得分:7)
SPACE
(U+0020
)字符的渲染宽度取决于字体,通常为1/4 em(经常调整)。
这意味着,平均而言,Unicode FOUR-PER-EM SPACE
(U+2005
)应该有效,因为它定义为:1/4 em。
重复:foo  bar  
呈现一个“易碎”的#39; foo bar foo bar etc.
(有2'空格')(在我的电脑上用FF)。
查看Korpela's unicode spaces overview。
Code Name of the character Width of the character U+0020 SPACE Depends on font, typically 1/4 em, often adjusted U+00A0 NO-BREAK SPACE As a space, but often not adjusted U+1680 OGHAM SPACE MARK Unspecified; usually not really a space but a dash U+180E MONGOLIAN VOWEL SEPARATOR No width U+2000 EN QUAD 1 en (= 1/2 em) U+2001 EM QUAD 1 em (nominally, the height of the font) U+2002 EN SPACE 1 en (= 1/2 em) U+2003 EM SPACE 1 em U+2004 THREE-PER-EM SPACE 1/3 em U+2005 FOUR-PER-EM SPACE 1/4 em U+2006 SIX-PER-EM SPACE 1/6 em U+2007 FIGURE SPACE "Tabular width", the width of digits U+2008 PUNCTUATION SPACE The width of a period "." U+2009 THIN SPACE 1/5 em (or sometimes 1/6 em) U+200A HAIR SPACE Narrower than THIN SPACE U+200B ZERO WIDTH SPACE Nominally no width, but may expand U+202F NARROW NO-BREAK SPACE Narrower than NO-BREAK SPACE (or SPACE) U+205F MEDIUM MATHEMATICAL SPACE 4/18 em U+3000 IDEOGRAPHIC SPACE The width of ideographic (CJK) characters. U+FEFF ZERO WIDTH NO-BREAK SPACE No width (the character is invisible)
请注意EN SPACE
(= 1/2 em)应该导致相同的视觉效果(2个空格),只使用一个unicode字符(并在html-source中保存7个字符!! )
SPACE
和QUAD
之间的区别是(来自wikipedia):
en quad和en space通常是同义词,因为它们都开始了 作为宽度为1 en的空间。但是,在电子出版中 如果字体是浓缩的,那么很少有人将这两者对比起来 扩展为改变字符的宽度,en quad保持为1 en宽度,而en空间的宽度改变为相同 比例作为印刷字符。
希望这有帮助!
修改强>
我对此进行了一些跨浏览器测试,包括同时出现的其他答案。
正如所指出的,我的建议依赖于字体制作者逻辑/懒惰的结论,他的SPACE
字符的宽度等于FOUR-PER-EM SPACE
的宽度(和{{1}的一半) })。
作为程序员,我不喜欢不确定性
BoltCock的答案(EN QUAD
)和Wesabi的回答( <wbr>
)消除了宽度的不确定性。
​
使用旧浏览器(IE6)/字体不支持的字符;它们将呈现为白色方块​
。
另一方面,BoltCock的□
在IE6中完美运行,但遇到其他问题:它在IE8(以及其他一些)中无效(来源:0 ,1,2)。
根据您的具体用例:Chris Nielsen的评论实际上可能是最佳的跨浏览器解决方案:<wbr>
...
<强> EDIT2:强>
结束思路:从语义的角度来看(文本内容本身),你正在打击一个白色空间折叠功能(你将其标记为HTML)。最好的&#39;因此,解决方案就是保留您的内容,并且(正如您自己指出的那样):使用css禁用空白区域折叠功能。
答案 1 :(得分:3)
你可以尝试使用&#34; ZERO WIDTH SPACE&#34;字符(十六进制200B)
aaaaaaaaaaaaaaaaaaaaaaaaa ​ aaaaaaaaaaaaaaaaaaaaaaaaa
我认为这完全适合你的情况。
另外,还有一个HTML解决方案:
aaaaaaaaaaaaaaaaaaaaaaaaa <wbr> aaaaaaaaaaaaaaaaaaaaaaaaa
<wbr>
代码定义了&#34;分词机会&#34;
答案 2 :(得分:2)
如果你真的必须在HTML的限制范围内工作,而不用担心空间宽度,你可能在<wbr>
s序列之后添加
元素这样:
FOO
BAR <wbr>FOO
BAR
答案 3 :(得分:1)
如果你想要一个不会阻止换行的宽度大于正常的空间,你可能想要一个en空间(U + 2002, 
)或一个em空间(U + 2003,  
)。通常,en空间的宽度是普通空间的两倍,em空间的宽度是正常空间的四倍。