是否可以在帖子中允许使用不换行空格(NBSP,U+00A0)甚至窄不换行空格(NNBSP,U+202F)?
目前,Discourse 会将它们替换为普通空格(SP,U+0020)(即使在代码片段中也是如此),从而导致法语数字在文本换行时显示错误。
在法语中,至少在标点符号如 !?;:» 之前、标点符号如 «–— 之后,以及大数字的三位数分组之间,应使用窄不换行空格(NNBSP)。
以下是不符合法语标准的显示示例:
2 400 000 和 28 800 不应像这样被切断,它们应保持在同一行。
我认为,如果文本中包含 NBSP 或 NNBSP,那并非拼写错误,也不是无意的失误。
3 个赞
这些有 HTML 实体吗?例如 \u0026nbsp; 可以这样使用: ← 空格
3 个赞
让我们试试 \u0026#x202F; 作为窄不换行空格千位分隔符:80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000 测试 80\u0026#x202F;000。
这样确实有效!
我已经在另一个论坛上编辑了我的帖子,现在数字显示正常。
虽然没有对应的命名 HTML 实体,但我可以像这样使用 Unicode 代码。
感谢提供变通方案,@codinghorror 。
2 个赞
+1 同意此观点,在法语中,我们在 :、!、? 之前使用不换行空格,因为它们与前一个单词之间有空格,我们不希望它们出现在下一行的开头。
当前将不换行空格替换为普通空格的行为:
通过保留不换行空格,不再出现“孤立的冒号”:
我认为没有必要为这些字符使用 HTML 转义序列,就像没有必要为任何其他非 ASCII 字符使用 HTML 转义序列一样:页面以 UTF-8 编码提供给浏览器,不换行空格像其他所有字符一样拥有 UTF-8 表示形式,例如:
→, √, ½, ñ, Ł, …
(换句话说,为什么 Discourse 允许大多数 Unicode 序列,却不允许不换行空格?)
4 个赞
是的,我完全同意。
我从来记不住窄不间断空格(NARROW NO-BREAK SPACE)的 \u0026#x202F; 语法。
1 个赞
还有 U+202F 窄不间断空格 。
如法语印刷品般最自然的标点符号前字符。
sam
(Sam Saffron)
2021 年11 月 15 日 00:14
8
这是我们的文本清理器:
@@whitespaces_regexp = Regexp.new("(\u00A0|\u1680|\u180E|[\u2000-\u200A]|\u2028|\u2029|\u202F|\u205F|\u3000)", "u").freeze
def self.normalize_whitespaces(text)
text&.gsub(@@whitespaces_regexp, ' ')
end
我认为这样做是为了避免一种微不足道的垃圾信息形式,即人们编辑帖子但什么都没改变,然后大家挠头说……有什么变化吗?
3 个赞
是的,我也记得是这样。如果有一种更好的方法来处理/显示使用此类“字符”进行破坏时的差异,我很乐意删除这个 mornalize_whitespaces 方法。
3 个赞
oca
2023 年1 月 26 日 08:41
10
当一个新的设置(默认启用)要求时,是否可以实现 mornalize_whitespaces?然后,本地管理员可以在其使用中选择退出此功能,因为与字体排印相比,他们的使用中捣乱问题较小?
1 个赞
Jagster
(Jakke Flemming)
2023 年1 月 26 日 12:06
11
快速谷歌搜索表明并非如此。或者是我误解了“有空格 ”的意思? ← 据我所知,这个问号没有空格。
而且,这种不分割千位数的语法规则适用于所有(西方)语言。就像这里也不应该出现这种情况一样
Jakke Lehtonen:
快速的谷歌搜索表明事实并非如此。
我想看看是哪些来源告诉你法国人在单词和标点符号之间“粘”在一起。
这里有一些来源表明标点符号(?、!、:,而不是 . 或 ,)应该与它们左边的单词分开,例如:“Comment vas-tu ? »
https://jacques-andre.fr/faqtypo/lessons.pdf 第 32 页,这是一本关于法语排版的免费书籍
在《Lexique des règles typographiques en usage à l’Imprimerie nationale》(法国国家印刷局使用的排版规则词汇表)第 149 页,我们看到:“espace fine insécable ? espace juistifiante”,所以他们没有说使用 U+00A0(不间断空格),而是使用 U+202F(窄不间断空格)(我不知道如何在键盘上输入它,但它仍然不是 U+0020(空格))。(可悲的是,这本书不是免费的,所以我没有它的超链接)。
法语维基百科 提到:“En France, il est d’usage de placer une espace fine insécable avant le point d’interrogation, ou une espace insécable si la fine n’est pas disponible。”(在法国,习惯上在问号前放置一个窄不间断空格,或者在没有窄不间断空格的情况下放置一个不间断空格。)
2 个赞
Jagster
(Jakke Flemming)
2023 年1 月 26 日 15:45
13
一本供初学者学习法语的教材/练习册,他们认为自己可以学会法语 我应该回去……, 我不知道英语里怎么说,但有点像成人的社区晚校——一种消磨闲暇时光、学习新东西的方式——然后拍下那段文字的照片。
但我承认我错了。你肯定比我更了解这个。
1 个赞