Skip to content

Commit 9305db5

Browse files
committed
issue doxygen#11515 Some markdown does not render after non-breaking spaces
See the UTF-8 non-breaking space also as an allowed character before bold / emphasis.
1 parent fdc8352 commit 9305db5

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/markdown.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,12 +1117,15 @@ int Markdown::Private::processEmphasis(std::string_view data,size_t offset)
11171117
AUTO_TRACE("data='{}' offset={}",Trace::trunc(data),offset);
11181118
const size_t size = data.size();
11191119

1120-
if ((offset>0 && !isOpenEmphChar(data.data()[-1])) || // invalid char before * or _
1121-
(size>1 && data[0]!=data[1] && !(isIdChar(data[1]) || extraChar(data[1]))) || // invalid char after * or _
1122-
(size>2 && data[0]==data[1] && !(isIdChar(data[2]) || extraChar(data[2])))) // invalid char after ** or __
1120+
if (!(offset>1 && static_cast<unsigned char>(data.data()[-2])==0xc2 && static_cast<unsigned char>(data.data()[-1])==0xa0)) // check UTF-8 non-breaking space
11231121
{
1124-
AUTO_TRACE_EXIT("invalid surrounding characters");
1125-
return 0;
1122+
if ((offset>0 && !isOpenEmphChar(data.data()[-1])) || // invalid char before * or _
1123+
(size>1 && data[0]!=data[1] && !(isIdChar(data[1]) || extraChar(data[1]))) || // invalid char after * or _
1124+
(size>2 && data[0]==data[1] && !(isIdChar(data[2]) || extraChar(data[2])))) // invalid char after ** or __
1125+
{
1126+
AUTO_TRACE_EXIT("invalid surrounding characters");
1127+
return 0;
1128+
}
11261129
}
11271130

11281131
char c = data[0];

0 commit comments

Comments
 (0)