<div dir="ltr"><div class="gmail_quote">2010/4/12 ik <span dir="ltr"><<a href="mailto:idokan@gmail.com">idokan@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><a href="http://ik.homelinux.org/" target="_blank"></a><div class="gmail_quote"><div><br>Let's seperate things into two groups:<br>1. Text<br>2. UI<br></div></div></div></blockquote><div><br>Yes, UI more easy than Text, but drawing text done by API in GTK2/Cairo and QT, and it must implemented in widgetset of GTK2/QT.<br>
 <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div><br>For text, both Qt and GTK 2x support right to left languages. When there are also non right to left chars (such as "arabic numbers" [the number used in the arabic language are actually hindu numbers :)], and latin letters etc) .<br>


<br>Even on non BiDi system, you can write right to left languages. The problem starts when you need to use non Right To Left chars inside a Right To Left paragraph, or the other way around, when you have a Left To Right language and you add there Right To Left chars. That called Bi-Directional or BiDi for short. You have a full algorithm description for it in unicode,org (<a href="http://www.unicode.org/reports/tr9/" target="_blank">http://www.unicode.org/reports/tr9/</a>), including FAQ on the matter (<a href="http://www.unicode.org/faq/bidi.html" target="_blank">http://www.unicode.org/faq/bidi.html</a>).<br>


<br>One more sophisticated problem in BiDi is the Arabic language. Many letters in the Arabic language have several ways to be presented, because the Arabic written language combine all (almost) letters like the lattin script language. So Letters that at the beginning, middle or end of a word (depends on few other rules) are different letter shapes. <br>


<br></div></div></div></blockquote><div></div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote">
<div>My native language -> Hebrew does not have this problem at all.<br><br>You have in the Open Source few implementation of BiDi support such as FreeBiDi, and the IBM's unicode library, but also with GTK2 and Qt3 and above.<br>


<br></div></div></div></blockquote><div><br>Arabic language have this rules, but it is easy that Japanese/Chinese languages :)<br>
<br>Drawing this text must done by the system or there is functions to calc the bidi of utf text founded in FPC<br>
fpc\src\rtl\objpas\utf8bidi.pp if you want to draw in utf8 with system that not support right to left text like SDL.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><div class="gmail_quote"><div>The Right To Left UI, is a whole different approach that actually everyone here can help with. On Latin based languages, everything starts from Left To Right, on Right To Left UI, everything starts from the Right.<br>


<br></div></div></div></blockquote><div> </div><div>It is like see the control through the mirror.<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><div class="gmail_quote"><div>So point 0,0 on Latin bases system should be on the top left, and on the Right to left languages starts from the top right.<br></div></div></div></blockquote><div><br>No (0,0) it must still start from Top Left like Windows<br>
 <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr"><div class="gmail_quote"><div>Some UI such as GTK2 (up to a point, it does not support all of what we require in Lazarus) support it, and so does Qt, and Windows API (on a native/enabled/unicode versions).<br>


<br></div></div></div></blockquote><div>In Windows many control not support Right To Left, and still have bugs in Menu, TreeView.<br><br>But, we can use a native control that support Right To Left for Like TVirtualTreeView for example.<br>
 </div></div>Best Regards<br>-- <br>Zaher Dirkey<br>
</div>