Unicode ligatures

Eli's picture

Hello typophiles:
I'm writing the opentype code of a font, starting with ligatures I have some doubts about encoded ligatures and not encoded ones. In a previous thread http://typophile.com/node/35174 Miguel Sousa suggested to duplicate the encoded characters fi (FB01) and fl (FB02) for the liga feature and rename the duplicates as f_i, f_l. Then in small caps generate the glyphs fi.sc and fl.sc to replace fi and fl. And the OT code should look like this:

feature smcp {
sub fi by fi.sc;
sub fl by fl.sc;
} smcp;

feature liga {
sub f i by f_i;
sub f l by f_l;
} liga;

My question is what about the other encoded ligatures? I dont know what is better, unencode them or keep the encoding and duplicate them as suggested. I also have these characters: ff (FB00), ffi (FB03), ffl (FB04), s_t (FB06) and longs_t (FB05). I have decided to duplicated them but i don't know if it is the right decision, here are my glyphs and my code. Could you advice me?

Encoded: fi(FB01), fl (FB02), ff (FB00), ffi (FB03), ffl (FB04), st (FB06) and longs_t (FB05)
Duplicated: f_f, f_f_i, f_f_l, s_t, longs_t.hlig
Generated for smcp: fi. sc, fl.sc, ff.sc, ffi.sc, ffl.sc, st.sc

feature smcp {
sub ffi by ffi.sc;
sub ffl by ffl.sc
sub ff by ff.sc;
sub fi by fi.sc;
sub fl by fl.sc;
sub st by st.sc;
} smcp;

feature liga {
sub f f i by f_f_i;
sub f i by f_i;
sub f l by f_l;
} liga;

feature dlig {
sub s t by s_t;
} dlig;

hlig {
sub ſ t by longs_t.hlig;
} hlig;

As for the uppercase forms, should I generate especial glyphs to substitute the enconded ligatures when the user changes the text from lowercase to all caps? Thanks in advance.

agisaak's picture

I'm a bit unclear on why you think you need to create duplicates of your ligatures.

You can encode (e.g.) your f_i ligature as UFB01, include a rule sub f i by f_i, and omit the duplicate fi character altogether. Note that either name (fi or f_i) is consistent with proper naming conventions (though personally I'd use the latter).

Including capital versions of the ligatures is only necessary if you want to accommodate users who employ hard-coded ligatures in their text (something which I view as a bad practice).

André

Nick Shinn's picture

In theory, Unicode should not exist for ligatures, because they confound the distinction between character and glyph.

However, Unicode accommodates many "legacy" typographic characters that were part of exisiting encodings -- and so, because "fi" was part of, for instance, the Mac OS Roman encoding, it is given its own Unicode.

Khaled Hosny's picture

Are your fi.sc a real ligature or a mere aggregation of f.sc and i.sc, if the later is the case, then I see no point in having an fi.sc glyph at all, it is just redundant. you can instead say:

sub fi by f.sc i.sc;

and the same goes for other similar ligatures.

oldnick's picture

Is there such a thing as an uppercase long s?

agisaak's picture

sub fi by f.sc i.sc requires an application to support one to many substitutions which many currently do not.

The issue of small capital f_i, however, only arises where the user actually enters uFBO1 instead of simply entering the sequence f i. I'd hope that with the advent of opentype, few users are choosing to do this. Given a legacy text which includes hard-coded ligatures, I'd think the user would be better off doing a search-and-replace to fix so that spell-checking, hyphenation, etc. actually work properly anyway, so supporting smallcap (or all cap) versions of ligatures doesn't seem like it should be a priority when coding features.

André

agisaak's picture

@Oldnick.

Yes. You can find it at u0053.

André

Eli's picture

Hi André, this is what M.Sousa says about duplicating ligatures:
"The only reason why there's the need for smallcap versions of fi and fl is because they are characters, i.e. they have their own Unicode codepoints. In addition, these two characters are included in the MacRoman encoding and can be easily accessed from the keyboard, so there's a high chance to find them in texts."
Thansk Nick, that's why I'm thinking about removing the encodings of my ligatures.
Khaled, good point, thanks.
Mr. Oldnick, I also would like to know about that, I think there isn't an uppercase form of long s.

agisaak's picture

Eli,

Sousa's comments provide a reason for providing a f_i.sc glyph, but not a reason for providing both f_i and fi glyphs. That's the part I'm not getting.

André

Cristobal Henestrosa's picture

Hi Eli!

I’d say the only encoded ligatures you should include are fi and fl, because there is a fair chance that in some texts they were set as one single character:

(US keyboard)
alt shift 5 = fi
alt shift 6 = fl

(Spanish ISO keyboard)
alt shift f = fi
alt shift g = fl

Duplicate them as f_i and f_l is not mandatory, but doesn’t hurt anyway, since this way you are not depending on the Mac OS Roman encoding.

At least, that is what I did for Espinosa Nova (check out slots 386, 387, 390 and 391).

———

About the uppercase long s:
http://en.wikipedia.org/wiki/Capital_%C3%9F
(Included in Espinosa Nova as well, see slots 88 and 195.)

———

And please Eli, let me see your typeface when it is done. I am intrigued about the long s. Are you working on an oldstyle typeface?

Khaled Hosny's picture

I'm curious what applications don't support one to many substitutions? looks so 80s to me.

Eli's picture

André, I think the problem with encoded ligatures is that when you use them and make the feature liga with them you are not changing the glyph but the character itself and I think it can cause problems with your GSUB table, but I'm not sure about that.

Cristobal thank you for your clarification, I think I'm going to do what you did with your beautiful Espinosa Nova. Correct me if I'm wrong, the eszet is a ligature between long s and s, I don't know if there is a capital form of long s alone. You may want to have a look at these links for more comments about the capital eszet: http://www.flickr.com/photos/elibaal/5039507654/ http://www.flickr.com/photos/hardwig/5087231570/
And finally, I'm currently working on a humanist sans, I'll send you a sneak preview.

Cristobal Henestrosa's picture

I stand corrected: yes, I was talking about an uppercase ß, not an uppercase long s alone. Sorry about that. :P

Looking forward to see your sans serif long s!

charles ellertson's picture

My take is you grudgingly support legacy characters, you never encourage their use.

We don't sell fonts, we work them over only to set type. Maybe my views shouldn't count, then. But when I run into a font with a fi or fl character, (and a Unicode codepoint), I take them out. At some point, the fi character should be *deprecated.* Far as I'm concerned, that was as soon as we could employ a character-glyph distinction.

As for F_I ligatures, whether small or full cap, why? How many texts come to people who use type where that's been an issue? I've never seen one -- can somebody remember one, or is this just a theoretical exercise?

What to do when small or full caps are both ligatures and letterspaced, esp. just below the point where any ligatures break into component characters? They're going to look dreadful. And both are commonly letterspaced.

Etc.

I say let a text show .notdef and salmon for any fi/fl etc. characters. Fix that text then & there, and we've gotten rid of one more bum situation.

Khaled Hosny's picture

I'm not a German, but small eszet always looked like an upper letter to me, I like the one in this sign http://www.flickr.com/photos/hardwig/5087231570/ as it looks like a real small letter (and does not look like a B or small beta either).

Syndicate content Syndicate content