dwww Home | Show directory contents | Find package

        OpenType features in GNU FreeFont

The OpenType font standard specifies numerous "features", which describe
how glyphs should be rendered under certain circumstances.

Some features, such as ligatures, substitute one glyph (or glyphs) with
others.  Other features such as kerning adjust the positioning of glyphs.

A feature may be activated for text of a certain script (such as Cyrillic
or Arabic) in a certain language or region (as can be specified in HTML
elements with the "lang" attribute), and some are activated only in case
other features are not activated.

The actual rendering of these features is not by the font itself but rather
by font rendering software in the operating system or application or printer.
As of this writing, feature support is far from perfect in many environments.

The features are encoded in the font's "lookup tables".  Each table has
a four-byte name.

The feature lookup tables used in FreeFont include:

Substitution (GSUB)
============

rlig    required ligature
liga    standard ligature
hlig    historic ligature
dlig    discretionary ligature

hist    historic form
locl    localized form

smcp    lowercase to small capitals
c2sc    captials to small capitals

frac    diagonal fractions
zero    slashed zero
onum    oldstyle figures

ccmp    glyph decomposition (multiple replacement)
        contextual chained substitution

aalt    access all alternates
calt    contextual alternates

        Arabic
        ------
init    initial forms
medi    medial forms
fina    final formes

        Indic scripts
        -------------
        (these are always applied in exactly the following order)
nukt    nukta forms
akhn    akhand
rphf    reph form
blwf    below base forms
half    half form
vatu    vattu variants
pres    pre base substitutions
abvs    above base substitutions
blws    below base substitutions
psts    post base substitutions
haln    halant forms

Positioning (GPOS)
===========

kern    kerning
mark    mark-to-base
mkmk    mark-to-mark

        Indic scripts
        -------------
dist    distance (similar to kern)
abvm    above mark
blwm    below mark

Use and Policies
================

kerning
-------

Kerning is viewed as a delicate adjustment of horizontal positioning of
letters based on the relative shapes of adjacent letters.

The first goal of kerning is to enhance the appearance of coherence in
words, by reducing apparent spaces beteen adjacent letters. 
The second is to make the spacing appear somehow "smooth".

A few pairs of letters are strongly kerned, for example 'AV'.  With very few
exceptions, one letter should not visually intrude on the horizontal space of
another.  (Exceptions might include the hooks on f and y.) 
For instance, in serifed fonts, the serifs of most letters should have a
visible space between them, and should not visually intrude on one another
horizontally.

For most others, the policy is "err on the conservative side".
A common mistake is to try to minimize the area between the letters
-- this has a poor effect on the appearance of the text.

After kerning, bulk text should be carefully inspected both in print and on
the screen in different resolutions, that the letters appear evenly-spaced,
and never crash into one another.

mark positioning
----------------
It is conceptually more direct, and in principle easier, to position marks
relative to letters using the various mark positioning lookups.
Unfortunately, the implementation of these features has been rather spotty.

Especially in cases where multiple marks appear on the same base, it can
get just too messy to be practical.  Unfortunately, often pre-composed
components are a necessary fallback.

$Id: features.txt,v 1.1 2011-07-16 11:24:10 Stevan_White Exp $

Generated by dwww version 1.15 on Tue Jun 25 11:20:43 CEST 2024.