opentype.js
Version:
OpenType font parser
44 lines (39 loc) • 1.31 kB
JavaScript
/**
* Arabic sentence context checkers
*/
import { isArabicChar, isWhiteSpace, isTashkeelArabicChar } from '../../../char';
function arabicSentenceStartCheck(contextParams) {
const char = contextParams.current;
const prevChar = contextParams.get(-1);
return (
// ? an arabic char preceded with a non arabic char
(isArabicChar(char) || isTashkeelArabicChar(char)) &&
!isArabicChar(prevChar)
);
}
function arabicSentenceEndCheck(contextParams) {
const nextChar = contextParams.get(1);
switch (true) {
case nextChar === null:
return true;
case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)):
const nextIsWhitespace = isWhiteSpace(nextChar);
if (!nextIsWhitespace) return true;
if (nextIsWhitespace) {
let arabicCharAhead = false;
arabicCharAhead = (
contextParams.lookahead.some(
c => isArabicChar(c) || isTashkeelArabicChar(c)
)
);
if (!arabicCharAhead) return true;
}
break;
default:
return false;
}
}
export default {
startCheck: arabicSentenceStartCheck,
endCheck: arabicSentenceEndCheck
};