On this page:
In proper fraktur typography, the markup for emphatic text is not “italic” or “bold”, but “letterſpacing”.
There is a catch to fraktur letterſpacing: The fraktur ligatures ‹ch›, ‹ck›, ‹ſt›, ‹tz› are treated as ſingle letters with regard to letterſpacing. If you uſe letterſpacing on a word like “ſitzen” (‘to ſit’), for inſtance, then there muſt be no additional ſpacing between in the ‹ch› or the ‹tz›, as can be ſeen in the following image:
This image is really a ſcreenſhot from Firefox 16.0.1 on Mac OS X 3.5.8 – ſince the releaſe of Firefox 4.0, all Firefox builds are capable of correct fraktur letterſpacing. If you want to know whether your browſer is, compare the following text:
ſitzen – ſitzen
This text ſhould really look exactly like the above image (except for differences in font raſterization), ſince the image is a ſcreenſhot of that very text.
There are four ligatures that do not get letterſpacing: ‹ch›, ‹ck›, ‹ſt›, ‹tz›. However, moſt fraktur fonts will uſe other ligatures as well, for inſtance ligatures for ‹ſi› or ‹fl›. Theſe other ligatures get letterſpacing juſt like normal ſequences of letters. This means that a fraktur font needs a way of diſtinguishing between two types of ligatures, the required ligatures that do not get letterſpacing and the other ligatures that do get letterſpacing. The different ſmart font technologies provides different means for doing ſo:
ccmp
(„Glyph Compoſition/Decompoſition“), while the other ligatures that do get letterſpacing have to be defined in the feature liga
(“Standard Ligatures”). Both features ought to be activated by default in all ſcripts (ſee Features: Standard OpenType ſpecification). The ſpecification of the feature ccmp
does not explicitly mention fraktur typography, but it perfectly matches its requirements: „[I]t may be preferable to compose two characters into a ſingle glyph for better glyph proceſſing“ (ſee ccmp
in the OpenType Layout tag registry). The required ligatures behave like ſingle glyphs with regard to letterſpacing. That is why it is deſirable to compoſe them into a ſingle glyph before further glyph proceſſing adds letterſpacing.Setting Required Ligatures
and the Settingcode 0
, while the other ligatures that do get letterſpacing have the Setting Common Ligatures
and the Settingcode 2
.The browſer teſt ſhould look exactly like the reference image (except for differences in font raſterization), a ſcreenſhot from Firefox 16.0.1 on Mac OS X 3.5.8.
In order to teſt what ſmart font technologies is diſplayed by which browſer, the browſer teſt uſes ſpecial builds of UniFraktur Maguntia that only uſe one ſmart font technology at a time, while the normal UniFraktur Maguntia releaſe combines them all.
The following features are teſted:
Ligatures in normal Text. In the word “beſitze” (‘own’), you ſhould ſee both required ligatures (‹tz›) and other ligatures (‹ſi›).
ZWNJ in normal Text. In the word “Zeitzone” (‘time zone’), the ‹tz› has no ligature becauſe of a ZWNJ. The ZWNJ ſhould not be viſible (no ſquares or vertical bars or queſtion ſigns), and there ſhould be no increaſed letterſpace.
Ligatures in letterſpaced Text. When letterſpacing is increaſed, in the word “beſitze” you ſhould only ſee the required ligature for ‹tz›, while the other ligature for ‹ſi› ſhould be dropped. (Note that the Graphite font will neceſſarily fail at this – if a browſer manages to diſplay the Graphite ligatures, then it will diſplay the incorrect ‹ſi› ligature.)
ZWNJ in letterſpaced Text. In the word “Zeitzone”, the letterſpace between the ‹t› and the ‹z› ſhould not be wider than between the other letters, and of courſe, the ZWNJ ſhould ſtill be inviſible.
As of 2012-10, ſupport for correct fraktur letterſpacing ſeems to be very poor. The following table gives ſome impreſſions. It does not claim to be a comprehenſive overview – and it is not even complete (pleaſe contact me if there are miſtakes or if you know other applications):
Windows | Mac OS | Linux | |
---|---|---|---|
Firefox | full | ||
Internet Explorer | poor [1] | N/A | |
Opera | poor [2] | no | |
Safari | partial [3] | N/A | |
Google Chrome | poor [4] | ||
InDesign | ? | full | N/A |
QuarkXPress | ? | no | N/A |
Scribus | ? | no | |
TextEdit | N/A | partial [5] | N/A |
LibreOffice | partial [5] | ||
Gimp | partial [5] | ||
XeLaTeX | full [6] |
Notes:
Internet Explorer 9 does not diſplay any ligatures until they are manually triggered by layout control characters (ZWNJ or ZWJ). Of courſe, this pretty much defies the very purpoſe ſmart ligatures. Ligatures may be called for by uſing a ZWJ.
On Windows and Mac OS, Opera does not diſplay any ligatures until they are manually triggered by layout control characters (ZWNJ or ZWJ). Of courſe, this pretty much defies the very purpoſe ſmart ligatures. Ligatures may be called for by uſing a ZWJ.
Additionally, Opera will diſplay the ligatures in any word that has a layout control character (ZWNJ or ZWJ). When letterſpacing is increaſed, all ligatures are retained. This cannot be fixed with a ZWNJ, becauſe a ZWNJ will cauſe double letterſpace.
Safari does not diſplay any ligatures unleſs two requirements are met: (a) There muſt be an additional CSS definition; (b) there muſt be no intervening non-printing characters. Since theſe two requirements may be ſet globally, they allow for a workaround. However, even if both requirements are met, ligature diſplay in text with increaſed letterſpacing is ſtill not correct.
Safari requires the following additional non-ſtandard CSS definition:
text-rendering: optimizeLegibility;
Since this definition is non-ſtandard, your CSS will fail to validate when you uſe it.
Safari will fail to diſplay the ligatures if there are any non-printing characters ſuch as a ſoft hyphen or – ironcally! – a ZWJ.
Google Chrome will not diſplay any ligatures until three requirements are met: (a) There muſt be – like in Safari – an additional CSS definition; (b) there muſt be – like in Safari – no intervening non-printable characters; and (c) the font muſt be locally inſtalled. Of courſe, this pretty much defies the very purpoſe of font embedding. On Windows and Linux, there is at leaſt one additional requirement, but I have not been able to pin it down.
In TextEdit, LibreOffice and Gimp, ligatures are diſplayed, but when letterſpacing is increaſed, the required ligatures are not diſtinguiſhed from the other ligatures; inſtead, either kind of ligatures is retained. Additionally, the ZWNJ cauſes double letterſpace when letterſpacing is increaſed.
For letterſpacing in XeLaTeX to work correctly, I uſe the packages fontspec
and xspace
to renew the command \emph
ſo it produces text with increaſed letterſpacing:
\usepackage{fontspec,xspace} \renewcommand\emshape{\xspace\addfontfeature{LetterSpace=20.0,WordSpace=1.5,Ligatures={NoCommon}}}
Reference image (ſcreenſhot from Firefox 3.6.12 on Mac OS X):
Reference image (ſcreenſhot from Firefox 3.6.12 on Mac OS X):
The following all use a conditional comment CSS. They all uſe the font-family
name “UnifrakturMaguntia“ that is defined by the Google Font API.
body
)dd i
)dd b
)Reference image (ſcreenſhot from Firefox 3.6.12 on Mac OS X):
ccmp
for diſtinguiſhing required ligatures from the following poſt: Issue 22240 - chromium - Do ligature ſubſtitution on web content.liga
uſed in older releaſes of the Unifraktur project) from the following poſt by Karl Pentzlin: Unicode Mail List Archive: Re: Medievalist ligature character in the PUA.xspace
: Re: Korrekte Fraktur-Typographie in XeLaTeX.