Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Kent Lew


Kent Lew
Last Active
Member, Type Person
Invited by
Admin James Puckett
  • Re: How do I set up various IJ digraphs in my typeface?

    I want I J to change into the IJ digraph if both ss02 and discretionary ligatures are turned on. If ss02 is not turned on, IJ should be a ligature.
    I believe what you want is something like this:
    feature dlig {
    sub I J by I_J.dlig;
    sub Iacute Jacute by Iacute_J.dlig
    } dlig;

    feature ss02 {
    sub I_J.dlig by IJ.digraph;
    sub Iacute_J.dlig by Iacute_J.digraph;
    } ss02;
    This is simplified, of course. You’ll have to expand for both cases (and for your own glyph names).

    The order is absolutely critical. If {dlig} is on, you get the ligature. If {ss02} is then also turned on, that ligature turns into the digraph. If {dlig} is turned off, the whole thing goes away because the ligature is no longer present for a target. So, {ss02} only has effect if {dlig} is also on. That’s how I interpret what you said you wanted.

    If you’ve already taken care of the NLD-dependent contextual Jacute transformation in {locl}, then you just need to target that in your {dlig}, and then target the ligature for substitution to digraph in {ss02}, as shown.

    If you have multiple discretionary ligatures, and you want the I_J.dlig to transform only in a Dutch language context, you can register that rule to language NLD only. You probably only need to do this in the {dlig}, since the {ss02} is dependent upon the {dlig}.

    Christian’s solution comes out of a previous conversation:

    Since you want your ligatures to be discretionary, I’m not sure that i.NLD approach gains you much advantage. Except the default ligature intervention.

    But the need for preventing fi ligatures in a Dutch “fij” context seems to be debatable among Dutch typographers. Since any interception via {locl} is not turn-offable, I prefer to let the individual user sort that out by either turning off {liga} or inserting a ZWNJ (for now, anyway).

  • Re: Punctuation Space U+2008

    Rob'in — That is basically another of the potential practical uses I can imagine. But, as you say, that’s reading into things a bit.

    To expand upon this a little: to be really practical for tabular use, in my opinion, such a space would be fixed across styles (RIBBI at least), which is what I personally advocate for tabular figures. At which point, if it is going to align with default period and comma, that means those punctuation would also have to be duplexed across RIBBI styles, which begins to place an unnatural constraint on them for regular, non-tabular purposes.

    It is not uncommon for fonts to feature separate tabular punctuation for such purposes, often on half-tabular width. In which case, such a half-tabular space could be encoded as the U+2008, I suppose. But I’m not sure the value of having that encoded, given that the tabular punctuation are not separately encoded. Usually these are just deployed with an OTL feature.

    Which brings me back to my question: What is the real purpose for which Unicode enshrined such a space?
  • Re: Freitag — toying around with a geometric display sans

    FWIW, this is the note about spelling of Arabic letter names from the Unicode chart itself:
    Arabic letter names follow romanization conventions derived
    from ISO 8859-6. These differ from the Literary Arabic
    pronunciation of the letter names.
  • Re: Slashed zero with downstroke?

    Didn’t the representation of our modern concept of zero as numeral/figure basically start out as a contrastless symbol from the beginning?

    I would think the relevant question is when in history did contrast get added to harmonize it with the rest of the written/typographic figures?

    (Which then necessitated strategies for differentiation from Oo in certain contexts.)
  • Re: OpenType labels in software

    Also, if you look at the source files for Adobe Source Sans Pro, in the family.fea file you can see this in practice. Which is where I basically cribbed together this example for you from:
    feature ss01 { # Stylistic Set 1
    featureNames {
    name "Art Deco Alternates"; # Windows English
    name 1 0 0 "Art Deco Alternates"; # Mac English
    # The feature rules then follow
    } ss01;