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
These are probably most of the time orthographic and not stylistic (except maybe ue), and so I think do not belong here, as I understand discretionary ligatures as optional ligatures that are stylistic but do not alter the meaning. For example, French cœur is only correct when o and e are ligated, while coexister is only correct non-ligated.
Seems to only work in Windows Firefox
In FreeMono Bold Italic, displays an aleph alone instead of the ligature (U+FB4F)
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եւ
The Armenian ligature is encoded at U+587 and the glyph is present in FreeMono and FreeMono Italic. Why not make the hlig table?
In FreeSerif Bold Italic, remove hist mapping from ss.s to longs
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 the first row of the table had ligatures enabled, so it couldn’t be the hlig lookup. In fact one triconsonant only appears in hist, and four-consonants don’t work.

Position

Superiors (sups)

In FreeSerif Bold Italic, remove FreeSerif-Bold-'{subs,sups,smcp}' * tables.

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 ÆðĦŋœƎƫȢɃɐɑɒɔɕəɛɜɟɡɣɥɦɨɩɪɭɯɰɱɲɳɴɵɸɹɻʁʂʃʉʊʋʌʐʑʒʕʝʟβγδθφχнᴂᴈᴉᴖᴗᴜᴝᴥᵻᶅꝯ

In FreeSerif Italic, ᵸ U+1D78 superscript cyrillic en is too large, it should be like neighboring U+1D58 ᵘ modifier letter small u.
In FreeSerif (all), U+25C reversed open e (highlighted in orange) maps to U+1D4C turned open e sup instead of U+1D9F reversed open e sup.

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.
If the goal is to support every sub/sup/small-cap character in Unicode, don’t forget U+2C7B-2C7D ⱻⱼⱽ (eturned.smcp, j.sub, V.sup)
v maps to sub.y everywhere (highlighted in orange)

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 small letters, OpenType smcp feature)

abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒγλπρψлꝵabcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒγλπρψлꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒγλπρψлꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒγλπρψлꝵ abcdefghıijklmnopqrstuvwxyz ßæðøþłœƀơưǝȣɔɠɯɹʒγλπρψлꝵ

In FreeSerif Bold Italic, remove the small-caps mappings for ss.[a-z]

ABCDEFGHIJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ Iİ (from capital letters, OpenType c2sc feature) DE

ABCDEFGHIİJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ ABCDEFGHIİJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ ABCDEFGHIİJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ ABCDEFGHIİJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ ABCDEFGHIİJKLMNOPQRSTUVWXYZ ẞÆÐØÞŁŒɃƠƯƎȢƆƓƜƷΓΛΠΡΨЛ

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} may help.

Bulgarian alternates (ss01)

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

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

Still lacks п→n (Cyrillic pe→latin n), т→m (Cyrilllic te→latin m), К→K and Ќ→Ḱ in FreeSerif Bold, [Cyrillic→Latin] К→K, Ќ→Ḱ and ќ→ḱ in FreeSerif {,Bold} Italic (by comparison with the Regular face).
In FreeSerif Bold, the Bulgarian style ш Cyrillic sha has a larger x-height than other Cyrillic characters, in IE at normal display size, this due to it being autohinted (like the variant capital lje), the others are not. This is probably an artefact of generating the font manually, I think FontForge autohints the characters last modified believed not to be yet hinted when hinting is checked when generating. I let it checekd because at some point I thought I saw it in the generating script, but it is not. So forget this comment, sorry about the inconvenience.

Devanagari of Bombay (ss02)

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

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

Devanagari of Calcutta (ss03)

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

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

I’ve long seen the problem with the second and third ligatures while investigating, but forgot reporting until now. Correction:
dev_clt_nga__ka__ssa.pres → dev_clt_nga__ka__ssa.pres
dev_clt_nga__ka__ssa__va.pres → dev_clt_nga__ka__ssa__va.pres

Devanagari of Nepali (ss04)

झ्‍ झ९१

झ्‍ झ९१ (Devanagari of Nepali)