Notes on Font Creation

Preamble
Hebrew as a part of Unicode Standard
Basic Hebrew characters
Hebrew ligatures and special forms
Miscellaneous additions
Special forms and typographical oddities
Biblical typesetting
Bowed lamed
Glyph groups
Basic set
Extended set
Biblical forms
Obsolete glyphs
Hebrew romanization
OpenType support
Kerning

Preamble

This document doesn't pretend to be the written Torah for a font designer. It is just a compilation of many notes, both paper and electronic, which used to clutter my table and computer, and which would inevitably be lost, unless I organized them as a single document and put on the Web. The primary purpose of this document is to serve me. But since Culmus is an open-source project, and the notion of "source" for artistic items is quite obscure, I declare hereby this document to be a part of source. As such, it immediately attains the right to be published here.

Hebrew as a part of Unicode standard

Basic Hebrew characters - see chart

The Unicode standard reserves a range of 112 characters in 0x0590-0x05FF. This range includes basic Hebrew letters with final forms, diacritics and cantillation marks (Tiberian system), special Hebrew punctuation (maqaf, sof-pasuk, geresh and gershayim) and Yiddish digraphs. Please note that complete Yiddish support also requires four vowels from Alphabetic Presentation Forms.

Hebrew ligatures and special forms - see chart

Another range of Unicode is called "Alphabetic Presentation Forms" and part of it (0xFB1D - 0xFB4F) is devoted to Hebrew ligatures and special forms. This includes all letters combined with dagesh, several Yiddish and Ladino ligatures, wide letters and special forms.

Notes: (1) Yiddish language requires the following vowels: 0xFB1D, 0xFB1F, 0xFB2E, 0xFB2F.

(2) The only Ladino ligature included in Unicode is aleph-lamed (0xFB4F). Unlike this one, other common ligatures can be produced using the basic forms.

(3) The Unicode standard doesn't define the purpose of alternative ayin (0xFB20). In contrary to the official chart, I create an outline for this glyph such that it doesn't descend below the baseline. This form of the letter ayin can be utilized when you need to position a diacritical mark below it.

Miscellaneous additions

A. A New Israeli Sheqel sign is defined at 0x20AA.

B. Microsoft specification defines five combinations (0xE801 - 0xE805) in the Private Use Area, which include vav with holam haser, final kaf with shva and qamats, and lamed with holam haser with or without dagesh. All these combinations can be produced using OpenType rendering engine and therefore are not necessary, but for convenience I include final kaf with shva and qamats (0xE802 - 0xE803).

C. Microsoft also recommends to include the following characters: LTR (0x200E), RTL (0x200F) and dotted circle (0x25CC). Their reason is described at Handling Invalid Combining Marks .

D. In the spirit of Microsoft recommendation, I also include the following characters: Zero Width Non-Joiner (0x200C) and Zero Width Joiner (0x200D). Their purpose is as follows: ZWJ may force ligation of aleph and lamed into aleph-lamed ligature, which would normally not occur. ZWNJ may prevent the same conversion when using "JUD " (Ladino) language tag which would otherwise force a ligation. Microsoft has opinion on this topic too: Suggested glyphs for complex scripts.

E. Always make sure that your font includes character "zero" (0x0030), because presence of this character declares the font as ASCII-enabled. If your font is not marked as ASCII-enabled, most software will utilize only its Hebrew part, and substitute punctuation and digits from some other font.

Special forms and typographical oddities

Biblical typesetting

The task of biblical typesetting, apart from the difficulty of proper diacritics positioning and a plenty of other problems, requires several very rare glyph forms. A very good explanation of some of them can be found at the site of Mordechai Pinchas Sofer, in the section "Scribal oddities"

Broken vav
Appears only once in the entire Bible (Numeri 25:12, in the word "shalom"). An explanation of its meaning can be found at Broken Vav.

Reversed nun
Appears twice in the Bible (Numeri 10:35-36). An explanation can be found at Inverted Nunim of Sefer Binsoa. Note that the tradition doesn't define whether the letter should be reversed upside-down or right-to-left. In my edition of Bible, the nun is simply turned 180°, probably because this way the typesetter could utilize a common glyph and avoid producing a special one.

Bowed lamed

Some designers argue that bowed lamed was introduced in order to squeeze more lines into a piece of paper in the times when paper was rare and expensive. For this reason, nowadays, bowed lamed makes the text look old-fashioned and sometimes is considered a bad typographic style. If you still wish to use it, please download "Frank Curled Lamed" from the Developers' area.

Glyph groups

I decided to introduce my own grouping of glyphs, to help user easily find out which features are supported by each font.

Basic set

Extended set

Biblical forms

Obsolete glyphs

Hebrew romanization

Glyph UTF-16 Encoding Components UTF-16 Encodings Reference
ʾU+02BEISO 259
U+1E25h + ◌̣U+0068 U+0323ISO 259, Open Siddur
U+1E6Dt + ◌̣U+0074 U+0323ISO 259, Open Siddur
ʿU+02BFISO 259
U+1E63s + ◌̣U+0073 U+0323ISO 259
s + ◌̀U+0073 U+0300ISO 259
śU+015Bs + ◌́U+0073 U+0301ISO 259
šU+0161s + ◌̌U+0073 U+030CISO 259
åU+00E5a + ◌̊U+0061 U+030AISO 259
ȩU+0229e + ◌̧U+0065 U+0327ISO 259
ŵU+0175w + ◌̂U+0077 U+0302ISO 259
U+1E87w + ◌̇U+0077 U+0307ISO 259
°U+00B0ISO 259
ăU+0103a + ◌̆U+0061 U+0306ISO 259
ŏU+014Fo + ◌̆U+006F U+0306ISO 259
U+1E1De + ◌̧ + ◌̆U+0065 U+0327 U+0306ISO 259
U+1E03b + ◌̇U+0062 U+0307ISO 259-2
U+1E23h + ◌̇U+0068 U+0307ISO 259-2
k + ◌̇U+006B U+0307ISO 259-2
U+1E57p + ◌̇U+0070 U+0307ISO 259-2
âU+00E2a + ◌̂U+0061 U+0302Open Siddur
ōU+014Do + ◌̄U+006F U+0304Open Siddur
éU+00E9e + ◌́U+0065 U+0301Open Siddur
əU+0259Open Siddur
ūU+016Bu + ◌̄U+0075 U+0304Open Siddur
b + ◌̱U+0062 U+0331Open Siddur
ŋU+014BOpen Siddur
U+1E33k + ◌̣U+006B U+0323Open Siddur

Scripts for OpenType support

I wrote a few scripts to automate Hebrew OpenType features, such as dagesh substitutions, diacritics placement etc. See details.

Kerning

Some people say that Hebrew fonts don't need kerning. Indeed, non-kerned Hebrew fonts are quite bearable. But nevertheless, kerning would never hurt, even considering that software rarely supports it. I will not present the list of most recommended kerning pairs, these could significantly vary according to style. If you want an example, take a newspaper and look for the letters "יב" or "יג" in a headline set in Haim.

Now to the work...
First you will need a couple of pages of random garbage. I created a Perl script heblorem.pl, which outputs such garbage in iso-8859-8 encoding. The special feature of this script is that its output contains every possible combination of adjacent letters, so no pair will be possibly missed. Now load the garbage into some program which supports kerned fonts (or doesn't, but just for the first pass), print it with a good laser printer, and start sqeezing your eyes. The rest is obvious.