Harmattan is a TrueType font with smart font capabilities added using OpenType and Graphite font technologies. The Harmattan font includes a number of optional features that provide alternative rendering that might be preferable for use in some contexts. The sections below enumerates the details of these features. Whether these features are available to users will depend on both the application and the rendering technology (Graphite or OpenType) being used. Most features are available in both Graphite and OpenType, though there may be minor differences in their implementation. Some applications let the user control certain features such as Character Variants to turn on the rendering of variant characters. However, at this point, most applications do not make use of those features so another solution is needed to show the variant characters. TypeTuner creates tuned fonts that use the variant glyph in place of the standard glyph. TypeTuner also provides the ability to turn on support for the Kurdish, Rohingya, Sindhi, Urdu, and Wolof languages variants.

See Using Font Features. Although that page is not targeted at Arabic script support, it does provide a comprehensive list of applications that make full use of the OpenType and Graphite font technologies.

See also Arabic Fonts — Application Support. It provides a fairly comprehensive list of applications that make full use of the OpenType and Graphite font technologies.

This page uses web fonts (WOFF) to demonstrate font features and should display correctly in all modern browsers. For a more concise example of how to use Harmattan as a web font see harmattan-webfont-example.html in the font package web folder.

If this document is not displaying correctly a PDF version is also provided in the documentation/pdf folder of the release package.

End of Ayah (U+06DD) and subtending marks (U+0600..U+0605)

These Arabic characters are intended to enclose or hold one or more digits.

Specific technical details of how to use them are discussed in the Arabic fonts FAQ — Subtending marks.

Additionally, Harmattan includes two simplified alternates for U+06DD ARABIC END OF AYAH under the Stylistic Alternates (salt) feature, but at this time we know of no OpenType-based applications that can access these. The two alternates are also available through the Character Variants feature discussed below.

Customizing with TypeTuner

For applications that do not make use of Graphite features or the OpenType Character Variants, you can now download fonts customized with the variant glyphs you choose. Read this document, visit TypeTuner Web, then choose the variants and download your font.

Test rendering engine choice

Here is a simple test to see if Graphite is working in your browser. If it is, the following will say “RenderingGraphite”. If your browser does not support Graphite it should say “RenderingOpentype”. Firefox is currently the only browser that supports Graphite. See the instructions on how to enable Graphite in Firefox.

Check RenderingUnknown

Language

Affects: U+062F, U+0630, U+0688..U+068F, U+0690, U+06EE, U+0759, U+075A, U+08AE, U+0645, U+0765, U+0766, U+08A7, U+0647, U+0626, U+060C, U+061B, U+06F4, U+06F5, U+06F6, U+06F7, U+0650, U+064F, U+064C, U+0657

Unfortunately, the UI needed to access the language-specific behavior is not yet present in many applications. LibreOffice and Microsoft Word 2016 support language-specific behavior for Kurdish, Sindhi and Urdu (but not Kyrgyz, Rohingya or Wolof). Some Harfbuzz-based apps, e.g., XeTeX, can access language-specific behavior.

Kurdish (Northern), Rohingya, Sindhi, Urdu

Language Meem Heh Comma 4 6 7 0650 064C Feature Setting
default م ممم ه ههه ، ؛ ۴ ۶ ۷ بِّ بٌ
Kurdish
(Northern)
م ممم ه ههه ، ؛ ۴ ۶ ۷ بِّ بٌ lang='ku'
Rohingya م ممم ه ههه ، ؛ ۴ ۶ ۷ بِّ بٌ lang='rhg'
Sindhi م ممم ه ههه ، ؛ ۴ ۶ ۷ بِّ بٌ lang='sd'
Urdu م ممم ه ههه ، ؛ ۴ ۶ ۷ بِّ بٌ lang='ur'

Wolof

Language Dal 0650 064F 0657 Feature Setting
default د بِّ بُ بٗ
Wolof د بِّ بُ بٗ lang='wo'

Character variants

There are some character shape differences in different languages which use the Arabic script. These can be accessed by using Graphite features, OpenType Character Variants, or through the language support mentioned above.

Alef diacritic placement

Affects: U+0623, U+0625, U+0627, U+064E, U+0650, U+0654, U+0655

Feature Sample Feature setting
Standard أإاَاِأإلألإ cv02=0
Hamza touching أإاَاِأإلألإ cv02=1
Touching أإاَاِأإلألإ cv02=2

Jeem/Hah

Affects: U+062C, U+062D, U+062E, U+0682, U+0683, U+0684, U+0685, U+0686, U+06BF, U+0757, U+0758, U+08A2, U+08C1, U+08C5, U+08C6

Feature Sample Feature setting
Standard ج ججج ح ححح خ خخخ ڂ ڂڂڂ ڃ ڃڃڃ ڄ ڄڄڄ څ څڅڅ چ چچچ ڿ ڿڿڿ ݗ ݗݗݗ ݘ ݘݘݘ ࢢ ࢢࢢࢢ ࣁ ࣁࣁࣁ ࣅ ࣅࣅࣅ ࣆ ࣆࣆࣆ cv08=0
Handwritten ج ججج ح ححح خ خخخ ڂ ڂڂڂ ڃ ڃڃڃ ڄ ڄڄڄ څ څڅڅ چ چچچ ڿ ڿڿڿ ݗ ݗݗݗ ݘ ݘݘݘ ࢢ ࢢࢢࢢ ࣁ ࣁࣁࣁ ࣅ ࣅࣅࣅ ࣆ ࣆࣆࣆ cv08=1

Dal

Affects: U+062F, U+0630, U+0688, U+0689, U+068A, U+068B, U+068C, U+068D, U+068E, U+068F, U+0690, U+06EE, U+0759, U+075A, U+08AE

Feature Sample Feature setting
Standard د ذ ڈ ډ ڊ ڋ ڌ ڍ ڎ ڏ ڐ ۮ ݙ ݚ ࢮ cv12=0
Alternate د ذ ڈ ډ ڊ ڋ ڌ ڍ ڎ ڏ ڐ ۮ ݙ ݚ ࢮ cv12=1

Sad/Dad

Affects: U+0635, U+0636, U+069D, U+069E, U+06FB, U+08AF

Feature Sample Feature setting
Standard ص صصص ض ضضض ڝ ڝڝڝ ڞ ڞڞڞ ࢯࢯࢯ ࢯ ۻ ۻۻۻ cv20=0
Half ص صصص ض ضضض ڝ ڝڝڝ ڞ ڞڞڞ ࢯࢯࢯ ࢯ ۻ ۻۻۻ cv20=1

Meem

Affects: U+0645, U+0765, U+0766, U+08A7

Feature Sample Feature setting
Standard م ممم ݥ ݥݥݥ ݦ ݦݦݦ ࢧ ࢧࢧࢧ cv44=0
Sindhi-style م ممم ݥ ݥݥݥ ݦ ݦݦݦ ࢧ ࢧࢧࢧ cv44=1

Heh

Affects: U+0647

Feature Sample Feature setting
Standard ه ههه cv48=0
Kurdish-style ه ههه cv48=3
Sindhi-style ه ههه cv48=1
Urdu-style ه ههه cv48=2

Arabic U

Affects: U+0677, U+06C7

Feature Sample Feature setting
Standard ٷ ۇ cv50=0
Filled ٷ ۇ cv50=1

Maddah

Affects: U+0622, U+0627, U+0653, U+0653

Feature Sample Feature setting
Small آ آ ◌ٓ cv60=0
Large آ آ ◌ٓ cv60=1

Shadda+kasra placement

Affects: U+064D, U+0650 with U+0651

Feature Sample Feature setting
Default بِّ ◌ِّ بٍّ ◌ٍّ cv62=0
Lowered بِّ ◌ِّ بٍّ ◌ٍّ cv62=1
Raised بِّ ◌ِّ بٍّ ◌ٍّ cv62=2

Damma

Affects: U+064F

Feature Sample Feature setting
Standard بُ ◌ُ cv70=0
Filled بُ ◌ُ cv70=1
Short بُ ◌ُ cv70=2

Dammatan

Affects: U+064C

Feature Sample Feature setting
Standard بٌ ◌ٌ cv72=0
Six-nine بٌ ◌ٌ cv72=1

Inverted Damma

Affects: U+0657

Feature Sample Feature setting
Standard بٗ ◌ٗ cv74=0
Filled بٗ ◌ٗ cv74=2

Superscript Alef

Affects: U+0670 on all yeh, sad and seen-like characters
U+0649 U+064A U+06D0 U+06D1 U+0777 U+06CC U+0635 U+0636 U+069D U+069E U+06FB U+08AF U+0633 U+0634 U+069A U+069B U+069C U+06FA U+075C U+076D U+0770 U+077D U+077E

Feature Sample Feature setting
Small ئٰ ئٰئٰئٰ ىٰ ىٰىٰىٰ يٰ يٰيٰيٰ ٸٰ ٸٰٸٰٸٰ ېٰ ېٰېٰېٰ ۑٰ ۑٰۑٰۑٰ ݷٰ ݷٰݷٰݷٰ ࢨٰ ࢨٰࢨٰࢨٰ ࢩٰ ࢩٰࢩٰࢩٰ ؽٰ ؽٰؽٰؽٰ ؾٰ ؾٰؾٰؾٰ ؿٰ ؿٰؿٰؿٰ یٰ یٰیٰیٰ ێٰ ێٰێٰێٰ ݵٰ ݵٰݵٰݵٰ ݶٰ ݶٰݶٰݶٰ صٰ صٰصٰصٰ ضٰ ضٰضٰضٰ ڝٰ ڝٰڝٰڝٰ ڞٰ ڞٰڞٰڞٰ ۻٰ ۻٰۻٰۻٰ ࢯٰ ࢯٰࢯٰࢯٰ سٰ سٰسٰسٰ شٰ شٰشٰشٰ ښٰ ښٰښٰښٰ ڛٰ ڛٰڛٰڛٰ ڜٰ ڜٰڜٰڜٰ ۺٰ ۺٰۺٰۺٰ ݜٰ ݜٰݜٰݜٰ ݭٰ ݭٰݭٰݭٰ ݰٰ ݰٰݰٰݰٰ ݽٰ ݽٰݽٰݽٰ ݾٰ ݾٰݾٰݾٰ cv76=0
Large ئٰ ئٰئٰئٰ ىٰ ىٰىٰىٰ يٰ يٰيٰيٰ ٸٰ ٸٰٸٰٸٰ ېٰ ېٰېٰېٰ ۑٰ ۑٰۑٰۑٰ ݷٰ ݷٰݷٰݷٰ ࢨٰ ࢨٰࢨٰࢨٰ ࢩٰ ࢩٰࢩٰࢩٰ ؽٰ ؽٰؽٰؽٰ ؾٰ ؾٰؾٰؾٰ ؿٰ ؿٰؿٰؿٰ یٰ یٰیٰیٰ ێٰ ێٰێٰێٰ ݵٰ ݵٰݵٰݵٰ ݶٰ ݶٰݶٰݶٰ صٰ صٰصٰصٰ ضٰ ضٰضٰضٰ ڝٰ ڝٰڝٰڝٰ ڞٰ ڞٰڞٰڞٰ ۻٰ ۻٰۻٰۻٰ ࢯٰ ࢯٰࢯٰࢯٰ سٰ سٰسٰسٰ شٰ شٰشٰشٰ ښٰ ښٰښٰښٰ ڛٰ ڛٰڛٰڛٰ ڜٰ ڜٰڜٰڜٰ ۺٰ ۺٰۺٰۺٰ ݜٰ ݜٰݜٰݜٰ ݭٰ ݭٰݭٰݭٰ ݰٰ ݰٰݰٰݰٰ ݽٰ ݽٰݽٰݽٰ ݾٰ ݾٰݾٰݾٰ cv76=1

Sukun

Affects: U+0652

Feature Sample Feature setting
Closed بْ ◌ْ cv78=0
Open down بْ ◌ْ cv78=1
Open left بْ ◌ْ cv78=2

End of ayah

Affects: U+06DD

Firefox allows you to use U+06DD followed by the digits and proper rendering occurs. Some applications require the following:

  • precede the entire sequence (subtending mark plus following digits) with
    202D LEFT-TO-RIGHT OVERRIDE
  • follow the entire sequence with U+202C POP DIRECTIONAL FORMATTING.

Surrounding the sequence with U+202D and U+202C seems to give the most reliable results in different browsers. However, we have not found a solution that works in Internet Explorer/Edge.

In the example below, the following codepoints are used: U+202D U+06DD U+0031 U+0032 U+0033 U+202C U+202D U+06DD U+0611 U+0622 U+0663 U+202C.

Feature Sample Feature setting
Standard ‭۝123‬ ‭۝١٢٣‬ cv80=0
Simplified A ‭۝123‬ ‭۝١٢٣‬ cv80=1
Simplified B ‭۝123‬ ‭۝١٢٣‬ cv80=2

Eastern digits

Affects: U+06F4, U+06F6, U+06F7

Feature Sample Feature setting
Standard ۴۶۷ cv82=0
Sindhi-style ۴۶۷ cv82=1
Urdu-style ۴۶۷ cv82=2
Rohingya-style ۴۶۷ cv82=4

Comma

Affects: U+060C, U+061B

Feature Sample Feature setting
Upward ، ؛ cv84=0
Downward ، ؛ cv84=1

Line spacing

Allows for adjustment of the default line spacing in the font (values shown are ordered in increasing line spacing). This feature is only available with TypeTuner.

Feature
Normal
Loose
1.0 Compatible Normal
1.0 Compatible Loose