Description: Currently, applying Kashida is by adding "ـ" U+0640 ARABIC TATWEEL _between_ letters. However, a more elegant way is by stretching a specific letter within the word. This method is popular with old scriptures, calligraphy, and handwritten messages. Here is a rough estimate of the algorithm for the improved Kashida. - Start with the last word in a line, and apply stretching to the final letter in that word. - However, if the letter is not "stretch-able" (e.g: Arabic Meem م), then look for middle-form Kaaf (ك) and stretch that - If there is no Kaaf, apply the fallback Kashida by adding TATWEEL between letters. - TATWEEL is usually added to the last two connected letters. These letters are not necessarily the last letters of the word since they could be in isolated form (e.g: "الماء" --> "المـــاء") Notice that "اء" are isolated (they cannot connect). - Stretch-able letter forms are: كـ, ـن, ن, ت, ـت, س, ـس, ص, ـص, ـى, ى, ف, ـف (where س and ت also their dotted variants e.g: ش and ث). Also have a look on https://en.wikipedia.org/wiki/Arabic_alphabet#Table_of_basic_letters for reference. Please check examples with images in this github issue: https://github.com/latex3/babel/issues/317 I attached a screenshot of the examples here. Steps to Reproduce: . Actual Results: . Expected Results: . Reproducible: Always User Profile Reset: No Additional Info: .
Created attachment 197097 [details] Examples of single-letter tatweel
I suggest we distinguish between the following: 1. The ability to render individual letters (like a ك or a ف) with some extension 2. The ability to indicate/force an extension of an individual letter (i.e. the equivalent of using the tatweel unicode character between letters, indicating the use of tatweel between them) - at the level of plain text and/or an ODF document 3. The user's ability to force tatweel of a letter - by typing or using something in the application UI 4. Justification algorithms which take into account the possibility of single-letter tatweel, in addition to inter-letter tatweel and other measures (spacing increases, slight narrowing of letters, hyphenation for scripts which support it etc.; see Laszlo Nemeth' talk in LOCon 2024 [1]). Lets clarify what we already have, what we're missing, what we (or rather, developers) should focus on, and in what order. Right now this issue looks a little messy to me. [1] : https://events.documentfoundation.org/libreoffice-conference-2024/talk/QEDSF7/