Skip to content

Commit

Permalink
Merge pull request #2 from Georeactor/master
Browse files Browse the repository at this point in the history
digest combined LTR and RTL words
  • Loading branch information
Milad Karbasizadeh authored Jan 3, 2017
2 parents 5da7d83 + 9e5d3e7 commit 5fab91d
Showing 1 changed file with 24 additions and 21 deletions.
45 changes: 24 additions & 21 deletions modules/util/svg_paths_arabic_fix.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,56 +59,59 @@ const chars = {
};

export function fixArabicScriptTextForSvg(inputText){
return inputText.split(' ').reverse().map(function(w){
return fixArabicScriptWordForSvg(w);
}).join(' ');
}

export function fixArabicScriptWordForSvg(inputWord){
let context = true;
let ret = [];
//const inputWord = inputWord.split('');
for(let i = 0, l = inputWord.length; i < l; i++){
let code = inputWord[i].charCodeAt(0);
let nextCode = inputWord[i + 1] ? inputWord[i + 1].charCodeAt(0) : 0;
if(!chars[code]){
ret.push(inputWord[i]);
let ret = '';
let rtlBuffer = [];

for(let i = 0, l = inputText.length; i < l; i++){
let code = inputText[i].charCodeAt(0);
let nextCode = inputText[i + 1] ? inputText[i + 1].charCodeAt(0) : 0;
if(!chars[code]){
if (code === 32 && rtlBuffer.length) {
// whitespace
rtlBuffer = [rtlBuffer.reverse().join('') + ' '];
} else {
// non-RTL character
ret += rtlBuffer.reverse().join('') + inputText[i];
rtlBuffer = [];
}
continue;
}
if(context){
if(i == l - 1){
ret.push(chars[code].isolated);
rtlBuffer.push(chars[code].isolated);
} else {
// special case for لا
if(code == 1604 && nextCode == 1575){
ret.push(chars[5000].initial);
rtlBuffer.push(chars[5000].initial);
i++;
context = true;
continue;
}

ret.push(chars[code].initial);
rtlBuffer.push(chars[code].initial);
}
} else {
if(i == l - 1){
ret.push(chars[code].final);
rtlBuffer.push(chars[code].final);
} else {
// special case for ﻼ
if(code == 1604 && nextCode == 1575){
ret.push(chars[5000].final);
rtlBuffer.push(chars[5000].final);
i++;
context = true;
continue;
}
if(chars[code].medial == ''){
ret.push(chars[code].final);
rtlBuffer.push(chars[code].final);
} else{
ret.push(chars[code].medial);
rtlBuffer.push(chars[code].medial);
}
}
}
context = (chars[code].medial == '');
}
ret += rtlBuffer.reverse().join('');

return ret.reverse().join('');
return ret;
}

0 comments on commit 5fab91d

Please sign in to comment.