GNU FreeFont OpenType features test

Select font: , weight: and style .

The order followed is the order of CSS Fonts Level 3.

Ligatures

Common ligatures (liga)

Latin ligatures
Ligature state Most languages Turkish Dutch Catalan Cyrillic
Ligatures disabledfi fl ff ffi ffl č̕č̓d̕l̕t̕fi fl ff ffi fflIJ ijL·L l·lїї
Default (enabled) fi fl ff ffi ffl č̕č̓d̕l̕t̕fi fl ff ffi fflIJ ijL·L l·lїї

To remind that common ligatures should work for most languages, there are a few here:

Other ligatures
Ligature state Arabic scriptThai Hanunóo Buginese
Ligatures disabledصّٰصُّصٌّصَّ صّٰصُّصٌّصَّฤาฦาฐฺฐุฐูญฺญุญูᜧᜳᜤᜳᜱᜲᜱᜳᜮᜳᜫᜳᜥᜲᜥᜳᜩᜲᜩᜳᜦᜳᨕᨗ‍ᨐ
Default (enabled)صّٰصُّصٌّصَّ صّٰصُّصٌّصَّฤาฦาฐฺฐุฐูญฺญุญูᜧᜳᜤᜳᜱᜲᜱᜳᜮᜳᜫᜳᜥᜲᜥᜳᜩᜲᜩᜳᜦᜳᨕᨗ‍ᨐ
Notes
The Arabic example has both the order of diacritics which shows the ligature (actually getting them farther apart), on the left, and the order which is not programmed to ligate, on the right. The ligature appears on Chrome and IE10 (always, even when disabled), and never on Firefox.

Discretionary ligatures (dlig)

Ligature state LatinLatin Latin Armenian HebrewArabic
Default (disabled) Tz tzAE Ae ae OE Oe oe ueDE Deմն մե մի վն մխאלالله
EnabledTz tzAE Ae ae OE Oe oe ueDE Deմն մե մի վն մխאלالله
Notes
(Reminder this is not to be used on French text)
Seems to only work in Windows Firefox
Firefox on Windows forces the ligature, it’s undisableable, the others ignore it.

Historical ligatures (hlig)

Ligature stateLatinArmenian
Default (disabled)ſt st ſt st ſt st Tz tzեւ
Enabledſt st ſt st ſt st Tz tzեւ
Devanagari
Ligature statebiconsonant clusterstriconsonant clusters4-consonant
Default (disabled)छ्य द्भ द्घ द्म द्न ड्ड ड्य क्क क्त न्न ङ्ग ङ्घ ङ्क ङ्ख ङ्म ङ्न ट्क ट्ट ट्ठ ट्य ठ्यद्भ्य द्द्य द्ध्व द्र्य द्व्य ड्र्य क्न्य क्त्र क्त्र्य ष्ट्र्य
Enabledछ्य द्भ द्घ द्म द्न ड्ड ड्य क्क क्त न्न ङ्ग ङ्घ ङ्क ङ्ख ङ्म ङ्न ट्क ट्ट ट्ठ ट्य ठ्यद्भ्य द्द्य द्ध्व द्र्य द्व्य ड्र्य क्न्य क्त्र क्त्र्य ष्ट्र्य
Notes
Doesn’t work on Windows, but seems to work on Linux Firefox.
The test was flawed because most of these ligatures can be produced by three different tables: 'cjct' conjunct forms in Devanagari2 for Sanskrit (dev2{SAN }), 'pres' old pre-base substs in Devanagari (deva{SAN }, dev2{SAN }), and 'hlig' hist ligatures in Devanagari (dev2{dflt} dev2{GUJ ,SAN ,SAT } deva{dflt} deva{GUJ ,SAN ,SAT }). Given that I put the Sanskrit language tag, one of the two former features was applied, because in the first row of the table we could see ligatures, so it couldn’t be the hlig lookup. In fact one triconsonant appears only in hlig, and the four-consonants don’t work.

Position

Superiors (sups)

Basic latin alphabet: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
All others with Unicode-encoded glyphs: ()+=− 0123456789 ÆðĦŋœƎƫȢɃɐɑɒɔɕəɛɜɟɡɣɥɦɨɩɪɭɯɰɱɲɳɴɵɸɹɻʁʂʃʉʊʋʌʐʑʒʕʝʟβγδθφχнᴂᴈᴉᴖᴗᴜᴝᴥᵻᶅꝯ

Verify that they work with a language that has special treatment (here Catalan):
Basic latin alphabet: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
All others with Unicode-encoded glyphs: ()=−+ 0123456789 ÆðĦŋœƎƫȢɃɐɑɒɔɕəɛɜɟɡɣɥɦɨɩɪɭɯɰɱɲɳɴɵɸɹɻʁʂʃʉʊʋʌʐʑʒʕʝʟβγδθφχнᴂᴈᴉᴖᴗᴜᴝᴥᵻᶅꝯ

Inferiors (subs)

Basic latin alphabet: abcdefghijklmnopqrstuvwxyz; Others with Unicode-encoded glyphs: ()+=− 0123456789 əβγρφχ

Inferior hklmnpst (ₕₖₗₘₙₚₛₜ) at (U+2095-U+209C) are not yet in FreeMono bold faces.
In FreeSans Regular, delete sups entry which maps capital ezh to small capital ezh.
In FreeMono Oblique, the theta (U+3B8) is the same as the theta symbol (U+3D1) instead of being a slanted regular theta, similar to other faces

Capitalization

In each line, ıi (or Iİ) are tested as these are to be distinguished in languages using a Turkish-derived orthography, notably Azeri [az], Crimean Tatar [crh], also Kazakh [kk] and Tatar [tt].

abcdefghijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ ıi ıi ıi ıi ıi ıi (via font-variant (CSS2) for comparison)

abcdefghijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ ıi ıi ıi ıi ıi ıi (from Latin small letters, OpenType smcp feature)
ΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ The following are symbols or archaic letters that may not deserve a small-cap: ͱͳͷͻͼͽϐϑϕϖϗϙϛϝϟϡϰϱϲϳϵ϶ϸϻϼ (from Greek small letters, OpenType smcp feature)
абвгдежзийклмнопрстуфхцчшщъыьэюя ѐёђѓєѕіїјљњћќѝўџ (from Cyrillic small letters, OpenType smcp feature)

abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵabcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒꝵ

FreeSerif Regular: Greek final sigma maps to sc.s (highlighted in orange). Is that intentional?
FreeSerif Italic is the only face that does not have ꜰꜱ U+A730-A731, despite having the glyphs unencoded.
In FreeMono and FreeMono Italic, U+1D08 and U+1D4C (turned and sup turned open e) should really be turned, not reversed as they are now: in ɜᴈ and ᶟᵌ, the first and second character of each pair should not look the same.
In FreeSerif R, sc.cyr_u_kratkij incorrectly references sc.cyr_er instead of sc.cyr_u (highlighted in orange).

ABCDEFGHIJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷ Iİ DE (from Latin capital letters, OpenType c2sc feature)
ΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫ The following are symbols or archaic letters that may not deserve a small-cap: ͰͲͶͿϏϒϓϔϘϚϜϞϠϴϷϹϺϽϾϿ (from Greek capital letters, OpenType c2sc feature)
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏ (from Cyrillic capital letters, OpenType c2sc feature)

FreeSans Bold Oblique Ghook and Schwa mapped to their small cap with both smcp and c2sc (only c2sc is correct).
FreeSerif R: Greek capital phi maps to sc.psi (highlighted in orange).
FreeSerif R: Capital cyrillic es c2sc maps to small es instead of sc.cyr_es

Numerical forms

Number variants (lnum, pnum, onum, tnum, zero)

LiningOld-Style
Proportional01234567890123456789
Tabular01234567890123456789

To check that the tables are correct and complete, by applying features progressively, we should be able to come back to default numbers by applying all features clockwise and anticlockwise (with reference to the table above).

Default (tab. lin.)Prop. lining pProp. oldstyle poTab. oldstyle potTab. lin. (default) potl
0123456789 0123456789 0123456789 0123456789 0123456789
Default (tab. lin.)Tab. oldstyle oProp. oldstyle opProp. lining oplTab. lin. (default) oplt
0123456789 0123456789 0123456789 0123456789 0123456789

Slashed zero: 0

Fractions (frac)

With slash /: 0/3 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/10 2/3 2/5 2/7 2/9 3/4 3/5 3/7 3/8 3/10 4/5 4/7 4/9 5/6 5/7 5/8 5/9 6/7 7/8 7/9 7/10 8/9 9/10

With fraction slash ⁄: 0⁄3 1⁄2 1⁄3 1⁄4 1⁄5 1⁄6 1⁄7 1⁄8 1⁄9 1⁄10 2⁄3 2⁄5 2⁄7 2⁄9 3⁄4 3⁄5 3⁄7 3⁄8 3⁄10 4⁄5 4⁄7 4⁄9 5⁄6 5⁄7 5⁄8 5⁄9 6⁄7 7⁄8 7⁄9 7⁄10 8⁄9 9⁄10

১/৪ ১/৩ ১/২ ২/৩ ৩/৪ These Bengali fractions have only be seen working in Firefox/Linux.

Alternates

Historical forms (hist)

Feature stateLatinMusic
Default (disabled)this old sum these old forms𝄡 𝄢 𝄽
Enabledthis old sum these old forms𝄡 𝄢 𝄽
Maybe changing this from musc{dflt} to DFLT{dflt}, or adding DFLT{dflt} may help.

Bulgarian alternates (ss01)

дгийКЌкќЉљЛлпшщцтвж (Regular default cyrillic)

дгийКЌкќЉљЛлпшщцтвж (Bulgarian alternates)

Still lacks п→n (Cyrillic pe→latin n) in FreeSerif Bold, К→K and Ќ→Ḱ in FreeSerif (all but Regular), to match the substitutions done in the Regular face.

Devanagari of Bombay (ss02)

ज्ञ ल्ल श्‍ ८५लश (default)

ज्ञ ल्ल श्‍ ८५लश (Devanagari of Bombay)

Devanagari of Calcutta (ss03)

छ्य ङ्क्ष ङ्क्ष्व ह्ण झ्‍ क्ष ण्‍ ण्ण अछझॡऌणॠऋ (default)

छ्य ङ्क्ष ङ्क्ष्व ह्ण झ्‍ क्ष ण्‍ ण्ण अछझॡऌणॠऋ (Devanagari of Calcutta)

Devanagari of Nepali (ss04)

झ्‍ झ९१

झ्‍ झ९१ (Devanagari of Nepali)