今天用markdown给链接加粗的时候出现了在Typora能正常显示,但是上传到博客就不能正常显示的问题,于是去查找了相关问题,现总结和记录一下。

markdown用*或者_给内容进行斜体或者加粗的操作,不过需要注意的是并不是可以随意加的,其实markdown是有规定的。

简单来说就是*和_被分为左侧定界符序列和右侧定界符序列,判断如下

左侧定界符序列

  • 后面不能是空白
  • 前面没有空白或者标点符号的时候,后面不能是标点符号

右侧定界符序列

  • 前面不能是空白
  • 后面没有空白或者标点符号的时候,前面不能是标点符号

当**是左侧定界符序列的时候表示开始粗体,相对的右侧定界符序列表示结束粗体。

于是就可以发现问题所在了

1
blabla**[示例](www.example.com)**blabla

blabla**示例**blabla

两侧定界符序列都不满足条件,所以需要在左侧前加右侧后各加一个空格。

1
blabla **[示例](www.example.com)** blabla

blabla 示例 blabla

但这样会导致渲染之后左右有多的空格,有一个解决方法就是使用零宽字符(Zero Width Space),实体名称​,Unicode为U+200B,这个字符不算做空白字符,空白字符是指Zs类的17个字符,所以可以这样更改

1
blabla​**[示例](www.example.com)**​blabla

blabla​示例​blabla

讲道理的话,零宽字符加在左侧*后面右侧*前面应该也是可行的,毕竟他不算是标点字符,不过博客不能正常显示,可能是&的问题,但直接复制放在那个位置的话倒是能在csdn上显示成功,github不太行,可能渲染方式不一样还是怎么回事。

零宽字符其他用途

换行

当一行过长的时候荧幕宽度不足以单行显示时,可以使用它来指定换行位置。

1
LongLongLongLongLongLongLongLongBreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText

LongLongLongLongLongLongLongLongBreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText

1
LongLongLongLongLongLongLongLong​BreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText

LongLongLongLongLongLongLongLong​BreakBeforeHereLongLongLongLongLongLongLongLongLongLongLongLongLongLongText

绕过敏感词检查和创造不可复制的伪链接等

参考

为什么掘金的 Markdown 加粗语法(**……**)有时候不生效?

SYMBL (◕‿◕)

Unicode - Compart