Template:Arabic alphabet shapes/doc

This template generates a table showing the shaping of an Arabic character.

It avoids using any Arabic Unicode compatibility characters for forcing their variant forms, because these characters are incomplete for full coverage of the Arabic script, and because their usage (for forced shaping) is strongly discouraged in HTML. See the description note in the table below about the recommended usage of ZWJ and ZWNJ format controls if it is ever needed to change the default (standard and mandatory) shaping behavior of standard Arabic characters.

Parameters
The mandatory first parameter character can be passed either literally, or using an hexadecimal numeric character reference of the form "&amp;#xHHH", where the HHH hexadecimal number is written with leading zeroes (the letter case of the parameter is ignored).

An optional parameter  can be set (with any non-empty value), in which case, only the 4 cells will be generated, excluding the top, left, and bottom table headers. This allows expansion to custom tables with more rows and/or more columns (such as the table shown below).

Limitations

 * Only Arabic characters (mostly letters) are currently handled by this template (hence its current name), because the table attempts to join the characters using the standard Arabic tatweel character before and/or after the referenced character. Specifying a non-Arabic character will just show that character in all four cells, surrounded by tatweels on the appropriate sides (in which case, the tatweels will not join with that non-Arabic character).
 * A similar (but different) template implementation could be created for scripts other than Arabic using joining forms (see the references below).
 * Note that not all numeric character references will work, due to the way templates are working: they are not replaced by the equivalent literal character when testing their equality with . This means that decimal numeric character references, or hexadecimal numeric character references with leading zeroes will not be handled correctly as you could expect.

Joining types and groups
The Arabic characters which are supported by this template, are as follows: all characters that are not listed in the template source code implementation are assumed to behave as “dual joining”.

If ever new Arabic letters have been encoded in the Unicode/ISO 10646 standards and that are not “dual joining”, the source code of this template should be updated as needed (this table was generated using normative references from the Unicode character database (UCD) – see the Notes and references section below).

For an extensive list of Arabic characters (including all format controls, letters, or digits, and most symbols) with their normative contextual shaping according to their joining type, see this test subpage: Template:Arabic alphabet shapes/joining

Notes and references
The source code of the template lists only characters in the Arabic script, sorted by joining type, joining group, code point, like in the table referenced above:
 * http://unicode.org/Public/UNIDATA/extracted/DerivedJoiningType.txt
 * Combining characters and controls are DerivedJoiningType=Transparent (ignored)
 * Non-listed characters            are DerivedJoiningType=Non_Joining (e.g. U+0621 Hamza)
 * http://unicode.org/Public/UNIDATA/extracted/DerivedJoiningGroup.txt
 * Combining characters and controls are DerivedJoiningType=Transparent (ignored)
 * Non-listed characters            are DerivedJoiningType=No_Joining_Group (e.g. U+0621 Hamza)

Template data
{	"params": { "1": {			"label": "Character", "type": "string", "required": true, "suggested": true, "example": "ج" }	},	"description": "Generates a table showing the shaping of an Arabic character.", "format": "inline" }