Merge pull request #1236 from omnivore-app/fix/cjk-highlighting
Disable word snapping on CJK languages
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
export function extendRangeToWordBoundaries(range: Range): void {
|
||||
const { nodeValue: startValue } = range.startContainer
|
||||
const { nodeValue: endValue } = range.endContainer
|
||||
const noWordSnap = disableWordSnap(range.toString())
|
||||
|
||||
const startOffset = findNextWord(range.startOffset, false, startValue)
|
||||
const endOffset = findNextWord(range.endOffset, true, endValue)
|
||||
const startOffset = noWordSnap ? range.startOffset : findNextWord(range.startOffset, false, startValue)
|
||||
const endOffset = noWordSnap ? range.endOffset : findNextWord(range.endOffset, true, endValue)
|
||||
|
||||
try {
|
||||
range.setStart(range.startContainer, startOffset)
|
||||
@ -13,7 +14,17 @@ export function extendRangeToWordBoundaries(range: Range): void {
|
||||
}
|
||||
}
|
||||
|
||||
const isWhitespace = (c?: string): boolean => !!c && /\s/.test(c)
|
||||
function disableWordSnap(str: string): boolean {
|
||||
// For CJK languages we don't attempt word snapping
|
||||
if (str.match(/[\u3131-\uD79D]/ugi)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const isWhitespace = (c?: string): boolean => {
|
||||
return !!c && /\u2014|\u2013|,|\s/.test(c)
|
||||
}
|
||||
|
||||
function findNextWord(
|
||||
start: number,
|
||||
|
||||
Reference in New Issue
Block a user