Apply bidi algorithm to the text in the worker

This commit is contained in:
Julian Viereck 2012-09-14 19:34:54 -07:00
parent 8d6565d1a8
commit bd4434a7ea
2 changed files with 15 additions and 9 deletions

View File

@ -507,7 +507,12 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
getTextContent: function partialEvaluatorGetIRQueue(stream, resources, state) {
if (!state) {
state = [];
var text = [];
var dirs = [];
state = {
text: text,
dirs: dirs
};
}
var self = this;
@ -585,9 +590,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
if ('Form' !== type.name)
break;
// Add some spacing between the text here and the text of the
// xForm.
state = this.getTextContent(
xobj,
xobj.dict.get('Resources') || resources,
@ -596,7 +598,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
break;
} // switch
if (chunk !== '') {
state.push(chunk);
var bidiText = PDFJS.bidi(chunk, -1);
text.push(bidiText.str);
dirs.push(bidiText.ltr);
chunk = '';
}

View File

@ -1930,13 +1930,14 @@ var TextLayerBuilder = function textLayerBuilder(textLayerDiv) {
var textDivs = this.textDivs;
var textContent = this.textContent;
var text = textContent.text;
var dirs = textContent.dirs;
for (var i = 0; i < textContent.length; i++) {
for (var i = 0; i < text.length; i++) {
var textDiv = textDivs[i];
var bidiText = PDFJS.bidi(textContent[i], -1);
textDiv.textContent = bidiText.str;
textDiv.dir = bidiText.ltr ? 'ltr' : 'rtl';
textDiv.textContent = text[i];
textDiv.dir = dirs[i] ? 'ltr' : 'rtl';
}
this.setupRenderLayoutTimer();