Linux doesn't do bidirectional text very well. I mean, it
can, but most libraries aren't built with support built in. I don't know too much about Arabic (crashed out of lessons after month: fun language, amazing script, great teacher - but class was too far away after a long day) but I've seen some problems reported here with RTL languages before.
I tried using the libraries suggested here:
python - Tkinter Label with arabic text - Stack Overflow and they still weren't right. They were a bit better, but I was probably still doing it wrong.
Notes for non-Arabic readers:
· Arabic is written from right to left (RTL), and when it's mixed with English or other LTR languages (becoming bidirectional, commonly ‘
bidi’) does fun things with text display. Try selecting some text from the start of the code line beginning
tkinter.messagebox… and drag the cursor along the line, watching the selection — it'll grow, then shrink, then grow again as you select the RTL and LTR bits.
· Arabic uses different letter forms depending on whether letters are at the end of a word (
terminal; on the
left), at the beginning (
initial), in the middle (
medial) or isolated outside words. The medial forms, to many latin script readers, tend to look quite similar. Writers of latin cursive tend to use variant forms quite freely, but they're not quite as formalized as in Arabic. The end goal is the same in both scripts: to create a pleasing flowing line. Printed English has almost totally lost variant forms except in really fancy typesetting where f+l becomes ‘fl’, f+f becomes ‘ff’ and
swashes happen on initial capital letter Q and others. When it comes to swashes, though, Arabic sees English's swashes and says “
Hold my Vimto” …
‘Remember the Golden Rule of Selling: “Do not resort to violence.”’ — McGlashan.
Pronouns: he/him