Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

documentation for font features #444

Merged
merged 8 commits into from
Feb 26, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
# Name or Organization <email address>

Caleb Maclennan <[email protected]>
Christoph Päper <[email protected]>
Dario Gjorgjevski <[email protected]>
Felix Kopecky <[email protected]>
Gyuris Gellért <[email protected]>
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Name <email address>

Caleb Maclennan <[email protected]>
Christoph Päper <[email protected]>
Dario Gjorgjevski <[email protected]>
Felix Kopecky <[email protected]>
Gyuris Gellért <[email protected]>
Expand Down
146 changes: 146 additions & 0 deletions documentation/Features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Standard OpenType Font Features

Libertinus supports several OpenType features.
Some are enabled by default (`-`) others have to be opted in (`+`).

- Small Caps: `+smcp` and `+c2sc`
- Ligatures and Contextual Alternates: `-liga`, `+hlig`, `+dlig`; `-calt`
- Kerning: `-kern`
- Capital Spacing: `+cpsp`, `case`
- Slashed zero: `+zero`
- Numerals: `-tnum`, `+pnum`, `-lnum`, `+onum`, `+pnum+onum`
- Vulgar fractions: `+frac`
- Subscripts and Superscripts: `+sinf`, `+sups`
- Diacritic marks: `-mark`, `-mkmk`
- Stylistic alternates: `+salt`

Most of these can be accessed by high-level CSS properties or values
and by GUI controls in DTP software.

## Cased forms: `+case`

All digits and some punctuation characters (i.e. parentheses, guillemets and hyphen)
use shapes that better fit with all-uppercase text (`.cap` or `.sc`).

## Standard ligatures: `-liga`

In serif faces,
the Latin lowercase letter sequences *ſſ*, *ſſi*, *ſſj*, *ſſk*, *ſſl*, *ſh*, *ſi*, *ſj*, *ſl*, *ſs*, *ſt*, *ff*, *ffh*, *ffi*, *ffj*, *ffk*, *ffl*, *fh*, *fi*, *fj*, *fk*, *fl*, *ft*
form default ligatures.

In sans-serif faces,
only the Latin lowercase letter sequences *ff* (also if the second one has a shortened head) and *ft*
form default ligatures.

The related feature `clig` is not used.

The respective CSS property is `font-variant-ligatures` with the value `common-ligatures` (or `no-common-ligatures`).

## Discretionary and Historical Ligatures: `+dlig`, `+hlig`

The only historical ligatures supported are Latin lowercase *st* and *ct* in all faces.

In all faces,
Latin lowercase letter sequences *tt* and *tz*
form discretionary ligatures.
Only in serif faces (i.e. non-sans-serif),
Latin letter sequences *Th*, *ck* and *ch*
also form discretionary ligatures.
These can all be manually forced by using ZWJ (U+200D) between letters when just the default feature `liga` is active.

The respective CSS property is `font-variant-ligatures` with the values `discretionary-ligatures` and `historical-ligatures`.

## Contextual alternates: `-calt`

In all faces,
the Latin capital and small-capital letter *Q* gains a long tail if followed by either lowercase or small-capital letter *u* or *v*.

The Latin lowercase letter *f*, even when part of the ligature *ff*, has a shortened head
if followed by closing parentheses, top quotation mark, lowercase letter with ascending left leg, lowercase letter with diacritic mark above or uppercase letter not starting with a leg or stem on the left.

The related feature `clig` is not used.

The respective CSS property is `font-variant-ligatures` with the value `contextual` (or `no-contextual`).

## Localized alternates: `locl`

For Serbian and Macedonian,
in all faces,
the Cyrillic lowercase letter be *б*
and in italic faces,
the Cyrillic lowercase letters ghe *г*, gje *ѓ*, de *д*, pe *п* and te *т*
are replaced by alternate glyphs.

For Scandinavian languages, because of preferences in Sami typography,
the Latin uppercase letter Eng *Ŋ* uses a alternative glyph, cf. `ss07`.

For Turkic languages,
ligatures where the Latin lowercase letter *i* is the second part are deactivated,
i.e. *fi*, *ffi*, *ſi* and *ſſi*.
The small-capitals handling of *i* / *ı* does not depend on `locl`, but is part of `smcp` (and `c2sc`).

## Numerals: `-tnum`, `+pnum`, `-lnum`, `+onum`, `+pnum+onum`

Except for Libertinus Math,
the standard digits can be forced to *old-style* forms (with ascenders and descenders) with `onum` (`.taboldstyle`),
to default *lining* forms with `lnum`,
to *proportional* forms with `pnum` (`.fitted`),
to *tabular* (fixed-width) forms with `tnum`.
The latter two also apply to Euro *€* and Yen *¥* currency symbols and trump the other features.

The respective CSS property is `font-variant-numeric` with the values `oldstyle-nums`, `lining-nums`, `proportional-nums` and `tabular-nums`, respectively.

## Vulgar fractions: `+frac`; `subs`, `sups`; `sinf`

The same sets of inferior/subscript and superior/superscript glyphs are used for various features.

The respective CSS property for `frac` is `font-variant-numeric` with the value `diagonal-fractions`. The value `stacked-fraction` is not supported.

# Custom OpenType Font Features: Stylistic Sets

## Stylistic alternates: `+salt`

For non-sans-serif faces,
Latin uppercase letters *J*, *K*, *R* and *W* use alternate glyphs (`.alt`).

For small-caps faces,
Latin lowercase letters *a*, *q*, *ŋ* and *ß* use alternate glyphs (`.scalt` etc.).

In all faces,
Latin uppercase letters *Q*, eng *Ŋ* and eszet *ẞ*, Latin lowercase letters *h*, *y* and Eszet *ß*,
Greek lowercase letters Beta *β*, Theta *θ*, Kappa *κ* and Phi *φ*,
Cyrillic lowercase letter Be *б*
and the ampersand *&* use alternate glyphs, cf. `calt`, `ss03`, `ss04`, `ss06`, `ss07`, `locl`.

The respective CSS property is `font-variant-alternates` with the value `stylistic(<feature-value-name>)`.

## Stylistic Set 1 `ss01` *Low diaeresis on ‘A’, ‘E’, ‘O’*

Intended for German, the umlaut dots above the Latin capital letters *A* and *O* (*Ä*, *Ö*) are moved further apart while the ones above *U* (*Ü*) are put closer together.

## Stylistic Set 2 `ss02` *Swashy ‘J’ ‘K’ ‘R’*

A bit more swashy, cursive look with elongated tails for Latin uppercase letter *K* and *R* and a left-hand horizontal top for *J*.
This does not apply to sans-serif faces.

## Stylistic Set 3 `ss03` *‘double s’ to two ‘s’*

All variants of German eszett (lowercase *ß*, uppercase *ẞ* and small-capital) are rendered as round-s digraphs *SS/ss* instead, very applicable to Swiss German texts.

## Stylistic Set 4 `ss04` *Upper case ‘double s’ to two ‘S’*

Only the uppercase German eszett *ẞ* is rendered as a round-s digraph *SS*; subset of `ss03`.

## Stylistic Set 5 `ss05` *Crossed ‘W’*

Latin uppercase letter *W* is rendered as a ligature of two *V*, i.e. the middle verticals are longer, as used in the Wikipedia logo.
This does not apply to sans-serif faces.

## Stylistic Set 6 `ss06` *Swash ‘&’*

The ampersand *&* is rendered as an *et* ligature.

## Stylistic Set 7 `ss07` *Swap ‘Eng’ forms*

The uppercase letter Eng *Ŋ*, i.e. an *N* with a descending tail on the right leg, uses the capital *N* glyph as its base instead of the default enlarged lowercase *n* glyph.
The localized `locl` UC Style for Sami is changed the other way around.
2 changes: 1 addition & 1 deletion fontship.mk
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ install-dist: install-dist-$(PROJECT)

install-dist-$(PROJECT): | preview.svg
install -Dm644 -t "$(DISTDIR)/" preview.svg AUTHORS.txt CONTRIBUTING.md CONTRIBUTORS.txt FONTLOG.txt
install -Dm644 -t "$(DISTDIR)/$(DOCSDIR)" $(DOCSDIR)/*.pdf
install -Dm644 -t "$(DISTDIR)/$(DOCSDIR)" $(DOCSDIR)/*.pdf $(DOCSDIR)/*.md

CTAN_NAME = libertinus-fonts

Expand Down