diff --git a/autotests/data/arabic-search-test.pdf b/autotests/data/arabic-search-test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..076d1eb9bb918478fc3b92a8e9b8d4af524e4b78 GIT binary patch literal 19704 zc%1FLbyQr>vM`DS2%g|BA%WmCz~Jug?l!o?;1&oFAV@-R3m!bUy9I~f4#C~s9wfhW zZ%%T*_pNo``SZ=%)4RI5x~jXZd+%92ujGYA>46L^NUz#5+v?jY+ftF3$N*%vh89TN z+>Fv-8&fAUGUf-2BBQ9el@r*3QPj%72`mgYvNZ}-+(Y(qDNPrRwD&^0#y;Md4)?b=y(XNt zjRVgXQuXvw7IbN(ZCXalWl-a|kgksxQvJPtNNK+LIAek9)qJi(hO-r5jwMeX?&n&d z;@5sz8~ZW{+5QEr2>zRVZk`{z&`nV*IpO?f<+dInbBHX1b-0L(Lv^a(8w5GRGAD+v zRms-83F}^?S!fBTcYk!W0z`7gz@3o>|TJR#mc2dVR$i}!Xu&#-=?pYfv9gI$N6SN{T zwh1ouLIr~I5oP1ar}z)Cs~#{EekgErr(d-cX{}!pC7Ks6u4mVnOdxLQmrOu%zOQ{* zdMBBUk4A%xt|C_xRH|^HJ-pTSqwvVA)NZ&p+PfYXVdTBTk){ilscz1jnH2LYTjQo4 zp%E5j^zfqP3#dY>ZM%W1Lf*xUIp*`P%gyz|&4`4Jy4j&G%ip;0G7Q0Hn9i;{bX^H9 za-*x8xtkgo#9z}O$ZXRQMVfD4eYPfwcihDcPF&qb$GTkyu?kE%uyo29#2MbV7&dgC6--=}& ztq#-*AJsrJZYA2bBB#Lu<{9US_-3XFCP}d&FNhj0@4=vchH_jh<~wyTrhC|(%;Y`h z#x4)fKUPz^#haS1BH~tlFeR~L1!cSSoXqSi!^lO;u0NXj6f>GLDt$pO4z)_1AlSNjJYgO5-M<|WF z?sP*oN{-C7H*97VousF%vgP7JGXDC;vJ#rGM3c^L5BJoKl{vO!sm(_9jrsDY2J)>I z4!&_mp&+I%@*)0+2El~!c+=IHl?gYq!DQfzr^6zj*Gx+~VpK32bBhPbzqT92w-CQ zFC-J-ujIl6{6A!ue+YnNOsqf__TO_&zZbHnwwl{|&9V1f&2cre%e><{PXd0wI6=d! zZ38W%-jZdtACnT&FSI@uw#U4G*#&&_G4Lh-YjSP^3`y#&I{r!PAK#y0c_8n_lu95M zZurAw)qRzsE{2mNo>Vm4zfbbmGkZBBAz9b7z}Y0{xEJp+$g}R@vv4_J>~?s9V*lYf z_``c*9uCOXZP50U`$qnEi(Kx5rL`lx@1>RqFUs7`MoXeRcs*xa5P`K+dLx0v%iHYD(jMCSeT)mJ&~)vgHBnn zH(c5n)tlqSd$khdt!>N40ol)um}De)%Hhhlr?#FWJ1~1=+MC*P8iZ)i>ttbI?&f#X zgDsdHdUCB4%A6zWy+ zKFM3y`b$?%_F%lj4yIlox5Jn06pCx~fu(&J1f}&(G?B#qc%dM8V0du2k>N78!&8dc z4zcRcFkfihPMNhH)GZDp@4=P^gu%Hckh_i5cA6PYmTXd8_4;B>s8&X

@}07Kf5& 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 Ag8%>k literal 0 Hc$@text().isRightToLeft(); ++j) ; + for (k = i; k < j; ++k) + { + tmp.append(origTxtOrder.at(k)); + } + i = j; + // output a right-to-left section + for(j = i; j < origTxtOrder.length() && (origTxtOrder.at(j)->text().isRightToLeft() || origTxtOrder.at(j)->text() == " "); ++j); + + if(j > i) + { + tmp.append(new TinyTextEntity(QChar(0x202b), NormalizedRect())); + for (k = j - 1; k >= i; --k) + { + // filp new line char to be first in RTL word. + if (origTxtOrder.at(k)->text().contains('\n')) + { + QString flipNewLine = origTxtOrder.at(k)->text(); + flipNewLine.remove('\n'); + flipNewLine.push_front('\n'); + tmp.append(new TinyTextEntity(flipNewLine, origTxtOrder.at(k)->area)); + } + else + tmp.append(origTxtOrder.at(k)); + } + tmp.append(new TinyTextEntity(QChar(0x202c), NormalizedRect())); + i = j; + } + } + return tmp; +} + +/** * Add spaces in between words in a line. It reuses the pointers passed in tree and might add new ones. You will need to take care of deleting them if needed */ WordsWithCharacters addNecessarySpace(RegionTextList tree, int pageWidth, int pageHeight) @@ -1916,7 +1960,7 @@ delete word.word; listOfCharacters.append(word.characters); } - setWordList(listOfCharacters); + setWordList(reoderRTLWords(listOfCharacters)); } TextEntity::List TextPage::words(const RegularAreaRect *area, TextAreaInclusionBehaviour b) const