Typophile

no unicode for some ligatures

Evie

hi everyone i have a question about unicode naming in fontlab

i noticed that some glyphs i made don't have a unicode assigned to them just "---"
How do i go about giving them a unicode and where do i for example find out what the unicode name is for ligatures such as f_k & f_h

anny help is much appreciated

You find all Unicode values at: http://unicode.org/
Only some common ligatures have a unicode however. They are accessed by an OpenType feature.
In addition you might assign a Unicode value from the Private Use Area (PUA), but that is mostly not recommendable.

thank you for replying Ralf, i have send you a message via the contact function

thnx again

Some ligatures exist in the MUFI (Medieval Unicode Font Initiative) set.

You might consider that the giving of some ligatures Unicode values was for "legacy" purposes only. For these, and others, assigning a Unicode number only perpetuates a problem.

Basically, from the Unicode point of view, a text consists of letters and no ligatures. A ligature is just a device used by a font to present the text in the traditional appearance people are comfortable with.

Of course, this assumes that the writing system is sufficiently simple that it is, in fact, reasonable to expect that an algorithm that can be coded inside a font will be sufficient to apply the rules for ligature use. If, instead, the appropriate and reasonable solution is for ligatures to be inserted manually by the typist when they are appropriate - and when preparing texts that are going to be used for printing and display, and not for other types of machine input - then this aspect of the philosophy of Unicode fails.

In Burmese, for example, the technology required to print Burmese properly using Unicode Burmese as input is not yet standard - so users make do with fonts that have extra characters in unused Unicode positions in the Burmese block, because that is the most convenient thing to do, at least in the short run.

Certainly, it is at least awkward, using, say, a Unicode Arabic font, to use it to type a table of the glyphs that font can generate. One can't do that simply by typing, with tabs, the characters of those glyphs if some of those glyphs don't exist as characters. Putting every glyph in a font in the Private Use Area solves that particular problem, of course.

Evie,

Your f_k ligature (and f_b and f_h) are just like other ligatures. Go look at the features code for a font -- say, an Adobe font. Just do the same thing -- add them to your liga list.

If you are making a Type 1 font, no Unicode is involved. You just name them. And if for older, hard-wired encoding system, you'll have to lie about the name. "product" and "integral" were common. Here's the problem. When you print text using your font, if those names were in the file, everything will look fine. Change fonts, or reuse the text, and that text is no longer correct.

Unicode and OpentType work together to avoid these problems. Your f_k ligature is so named, and has no unicode number. In the font features file under "liga" you add

sub f k by f_k

Any text (Kafka) set using your font will use the f_k ligature, with the single characters f and k preserved in the file.

John:

Let's suppose you make a PDF. Then you extract text. What happens to the characters that were in the Private Use Area? Gone, aren't they. Let's suppose you export XML from a file that had characters in the Private Use area. What happens? Problem, isn't it.

So yes, there are reasons to use the PUA, but they come with severe compromises. If a ligature is needed for a font, but not a language, as, for example, is the case with all the f-ligatures in English, they should follow the usual convention. Do not put them in PUA, nor given a Unicode number. Even if ligatures are needed for a language, as with Arabic, there are ways to avoid PUA usage. PUA is for *characters* that just do not exist in Unicode, and are not constructions of characters already within the encoding.

Captured from web.archive.org on 20 Oct 2013. view this capture