Typography • 7 min read
Look closely at almost any piece of Arabic or Urdu calligraphy and you'll eventually spot it: a letter stretched far beyond its normal width, a long flat horizontal line connecting two letters that, in ordinary text, would sit much closer together. This is kashida (کشیدہ), one of the more distinctive and frequently misunderstood tools in Arabic-script typography.
Kashida is an elongation of certain connecting strokes between letters — not a separate character, but a visual stretching of the existing connection. In Unicode, it's represented by the Arabic Tatweel character (U+0640, ـ), which inserts a horizontal extension without changing the letters' identity or pronunciation. Crucially, kashida can only be inserted at specific points: between letters that already connect to each other in normal writing. You cannot stretch a connection that doesn't exist, and not every letter pair permits elongation in the same way.
Historically, kashida served a genuinely practical purpose: justifying text. In a script where words are made of connected strokes rather than discrete, evenly-spaced letters, achieving a clean justified right margin (or left margin, in the case of RTL columns) the way Latin typesetting does with variable word-spacing is difficult. Calligraphers and later typesetters used kashida to stretch specific connections within a line just enough to make both margins align, without altering word order or letter shapes.
Beyond justification, kashida became a deliberate aesthetic device in its own right, especially in Thuluth and Diwani calligraphy. A long, sweeping kashida stroke can balance a composition, fill empty space in a calligraphic panel, or create dramatic visual rhythm — Ottoman calligraphers in particular used extended kashida strokes to create the flowing, almost musical quality associated with monumental Thuluth inscriptions on mosque domes and gateways.
A common mistake among designers unfamiliar with Arabic-script typography is to manually insert tatweel characters into text to "stretch" a line for layout purposes — for example, padding out a heading to fill a banner width. This frequently produces results that look wrong to native readers, because kashida placement follows specific rules about which letter joints can bear elongation gracefully and which cannot. Inserting tatweel after the wrong letter, or using it excessively, creates a visually unbalanced or even comically distorted word, similar to how randomly adding extra letter-spacing in the middle of an English word would look strange regardless of whether the spacing itself is "valid."
Modern OpenType-aware design software (and properly engineered fonts) can apply kashida automatically and contextually during justification, similar to how Latin fonts handle optical kerning. If you need justified Arabic or Urdu text in a layout tool, it's worth checking whether your software supports Arabic-aware justification rather than manually inserting tatweel characters yourself.
Interestingly, kashida is used quite differently across calligraphy styles. In Naskh and Thuluth, horizontal kashida along the baseline is common and well-documented. Nastaliq, because of its diagonal, cascading structure, uses elongation more sparingly and often in a way that follows the script's downward slope rather than a strict horizontal line — which is part of why faithfully reproducing decorative Nastaliq kashida in digital fonts has historically been more technically demanding than doing the same for Naskh.
You can observe how a typeface handles connecting strokes, even without manual kashida insertion, using our Font Comparator — type a word with several connected letters and compare how differently each font style renders the joins. Fonts like Amiri, designed with closer attention to classical Naskh proportions, tend to show more historically grounded letter-joining behavior than some simpler sans-serif-style Arabic fonts.
Consider the Urdu word "سلام" (salaam, meaning peace or greeting). Written normally, the connecting stroke between the seen (س) and the lam (ل) is short and unremarkable. A calligrapher composing this word inside a circular medallion, however, might need to fill significantly more horizontal space than the natural word length provides. Rather than simply enlarging the entire word, which would distort letter proportions and look amateurish, a trained hand elongates specifically the seen-to-lam connection using kashida, stretching that one joint while keeping every individual letter's shape, height, and proportion intact. The result reads identically to a fluent eye but fills the available space gracefully. This selective, letter-aware stretching is the entire skill of kashida, and it's precisely what naive horizontal scaling in a graphics program cannot replicate.
Classical calligraphy manuals historically specified kashida length in terms of the alef's height as a unit of measurement, with different schools and styles permitting different maximum ratios. Thuluth, with its monumental and decorative character, traditionally tolerates much longer kashida strokes than Naskh, where the script's everyday readability purpose limits how far a calligrapher would stretch a connection before it starts working against legibility. A useful rule for digital designers: if a kashida insertion makes a word noticeably harder to read at a glance compared to its unstretched form, the elongation has likely gone further than the script's conventions would support, regardless of whether it technically renders without errors.
Modern CSS has no native, universally supported property for automatic kashida-based justification, unlike the more mature support for Latin-script text-align: justify with variable word spacing. Some advanced typesetting systems and certain Adobe products implement Arabic-aware justification that inserts tatweel intelligently, but this remains inconsistent across web browsers. For most web and app design work involving Urdu or Arabic, the safer practice is to avoid forcing justified text alignment altogether and use left-ragged-right (for LTR) or right-ragged-left (for RTL) alignment instead, sidestepping the kashida-insertion problem entirely rather than attempting to simulate it imperfectly through manual character insertion.