bug 827779 - allow break after hyphen even if preceded by closing punctuation and/or followed by opening punctuation. r=masayuki

This commit is contained in:
Jonathan Kew
2014-03-25 09:29:16 +00:00
parent 125b64d9cb
commit 25a44d6fb6

View File

@@ -683,12 +683,25 @@ ContextualAnalysis(char16_t prev, char16_t cur, char16_t next,
if (!aState.UseConservativeBreaking(1)) { if (!aState.UseConservativeBreaking(1)) {
char16_t prevOfHyphen = aState.GetPreviousNonHyphenCharacter(); char16_t prevOfHyphen = aState.GetPreviousNonHyphenCharacter();
if (prevOfHyphen && next) { if (prevOfHyphen && next) {
bool prevIsChar = !NEED_CONTEXTUAL_ANALYSIS(prevOfHyphen) && int8_t prevClass = GetClass(prevOfHyphen);
GetClass(prevOfHyphen) == CLASS_CHARACTER; int8_t nextClass = GetClass(next);
bool nextIsChar = !NEED_CONTEXTUAL_ANALYSIS(next) && bool prevIsNumOrCharOrClose =
GetClass(next) == CLASS_CHARACTER; prevIsNum ||
if ((prevIsNum || prevIsChar) && (nextIsNum || nextIsChar)) (prevClass == CLASS_CHARACTER &&
!NEED_CONTEXTUAL_ANALYSIS(prevOfHyphen)) ||
prevClass == CLASS_CLOSE ||
prevClass == CLASS_CLOSE_LIKE_CHARACTER;
bool nextIsNumOrCharOrOpen =
nextIsNum ||
(nextClass == CLASS_CHARACTER && !NEED_CONTEXTUAL_ANALYSIS(next)) ||
nextClass == CLASS_OPEN ||
nextClass == CLASS_OPEN_LIKE_CHARACTER ||
next == U_OPEN_SINGLE_QUOTE ||
next == U_OPEN_DOUBLE_QUOTE ||
next == U_OPEN_GUILLEMET;
if (prevIsNumOrCharOrClose && nextIsNumOrCharOrOpen) {
return CLASS_CLOSE; return CLASS_CLOSE;
}
} }
} }
} else { } else {