Use Common Number separator instead of European to detect numbers

The is a fixup to commit 611df441. It seems that the wrong unicode
property was selected. It could be that both classes should be used.

Fixes bug #11900.
This commit is contained in:
Jean-Marc Lasgouttes 2020-07-10 17:17:15 +02:00
parent 33eb33d0e7
commit f758894c2f
3 changed files with 7 additions and 7 deletions

View File

@ -1012,11 +1012,11 @@ void Text::insertChar(Cursor & cur, char_type c)
static docstring const number_operators = from_ascii("+-/*");
static docstring const number_unary_operators = from_ascii("+-");
// European Number Separators: comma, dot etc.
// Common Number Separators: comma, dot etc.
// European Number Terminators: percent, permille, degree, euro etc.
if (cur.current_font.fontInfo().number() == FONT_ON) {
if (!isDigitASCII(c) && !contains(number_operators, c) &&
!(isEuropeanNumberSeparator(c) &&
!(isCommonNumberSeparator(c) &&
cur.pos() != 0 &&
cur.pos() != cur.lastpos() &&
tm.displayFont(pit, cur.pos()).fontInfo().number() == FONT_ON &&
@ -1041,7 +1041,7 @@ void Text::insertChar(Cursor & cur, char_type c)
) {
setCharFont(pit, cur.pos() - 1, cur.current_font,
tm.font_);
} else if (isEuropeanNumberSeparator(ch)
} else if (isCommonNumberSeparator(ch)
&& cur.pos() >= 2
&& tm.displayFont(pit, cur.pos() - 2).fontInfo().number() == FONT_ON) {
setCharFont(pit, cur.pos() - 1, cur.current_font,

View File

@ -164,13 +164,13 @@ bool isNumber(char_type c)
}
bool isEuropeanNumberSeparator(char_type c)
bool isCommonNumberSeparator(char_type c)
{
if (!is_utf16(c))
// assume that no non-utf16 character is a numeral
// c outside the UCS4 range is caught as well
return false;
return ucs4_to_qchar(c).direction() == QChar::DirES;
return ucs4_to_qchar(c).direction() == QChar::DirCS;
}

View File

@ -45,8 +45,8 @@ bool isSpace(char_type c);
bool isNumber(char_type c);
/// return true if a unicode char has the direction attribute
/// European Number Separator [ES]
bool isEuropeanNumberSeparator(char_type c);
/// Common Number Separator [CS]
bool isCommonNumberSeparator(char_type c);
/// return true if a unicode char has the direction attribute
/// European Number Terminator [ET]