RTL List Style in Persian Documents

Hello.

I want to use toggle ordered list into my document and in Persian (Farsi) language I should RTL ordered list.
But in list style there is no way to change numbers direction.
How can I fix this?

In the second screenshot, the order of the numbers should be reversed.

AFSHIN-10-04

Version: 7.6.2.1 (X86_64) / LibreOffice Community
Build ID: 60(Build:1)
CPU threads: 2; OS: Linux 5.15; UI render: default; VCL: gtk3
Locale: fa-IR (en_US.UTF-8); UI: en-US
Ubuntu package version: 4:7.6.2~rc1-0ubuntu0.22.04.1~lo1
Calc: threaded

You are using the pre-cooked example numbering in Format>Bullets & Numbering (or equivalently the toolbar buttons) which are designed blindly with LTR in mind. You should have attached a sample file so that I could experiment (I am not familiar at all with Farsi.

IMHO using list styles may allow you to fix the issue. I think the problem comes from the internally added dot separator between levels. Unicode defines full stop to be directionally neutral but it has specific property CS (common separator), so I don’t know how it is handled by the number generator. If this neutral property is not honoured, the number is then a sequence of several RTL and LTR blocks resulting in what you see. Unfortunately, this dot separator can’t be changed by user.

Please attach a sample file.

Example.odt (12.5 KB)

Please use this settings.

I can’t improve on your result.

Could you give me more information on number layout? As I understand it, text is read from right to left but numbers are laid out like in Western scripts, i.e. most significant digit at left (this does not mean numbers are read LTR since you can pronounce them RTL – there are inversions in number reading e.g. in German where unit is told before dozens: vierundzwanzig (24) is spoken as “four and twenty”). So, visually numbers look LTR for us Europeans but may be read RTL which makes no exception in your language.

The problem may come from the dot separator. Since it is considered neutral in Unicode (it is used as a decimal separator in many languages), multi-level number like 1.2.3. is considered a homogeneous block with regard to bi-directionality. Hence, 1.2.3. is a single “number”. It is laid out as “1 2 3” with only the position of the final dot sent at head .1.2.3 (why? This seems illogical but a “number” with several separators is not a standard decimal number).

I admit this is perhaps not the correct way of rendering multi-level number since the number is not a single “number” but the concatenation of n elementary “numbers” (levels) which are “pronounced” (read) separately, main level first, i.e. at right.

I think this is a bug. You should submit a bug report clearly explaining the rules. These rules probably apply in other RTL languages (Arabic and Hebrew among others).

The impossibility to chose another separator than U+002E FULL STOP prevents designing any workaround. I was thinking of using a character without the “neutral” direction property.

1 Like

The bug is reported here:
https://bugs.documentfoundation.org/show_bug.cgi?id=158099

2 Likes