Glyphs 4 - Jacute/jacute accent and NLD language support

A font I’m working on in Glyphs 3 autogenerates the language system:

languagesystem latn NLD;

and the substitution rules for jacute and Jacute

The same Glyphs file when opened in Glyphs 4 has the same language support and sub rules initially but if I click ‘Update’ it then removes the ‘languagesystem latn NLD;’ and the sub rules for jacute and Jacute.

I can add them back in manually but I’m guessing this is unintended.

1 Like

I’m also experiencing this issue in v4.0.1 (4004)

Same here (4000).

We have the same issue. @RainerRainer, you mentioned something about ijacute not needing to be treated to old way anymore. Can you reexplain it here?

Or could you confirm this:
https://hyperglot.rosettatype.com/database/nld?script=Latin

as discussed here:

OK. Jacute, jacute and IJacute, ijacute are not needed.

In order to support Dutch, make sure your font contains:

J
j
jdotless
acutecomb
IJ
ij

Technically, you do not needed IJ and ij either. However, there are some Dutch users who expect it in the glyph picker. So just add those two, and build them automatically.

Consider acutecomb.case too.

Then, update your features, and it should automatically add an automatic ccmp. It will look something like this:

lookup ccmp_DFLT_1 {
	@CombiningTopAccents = [acutecomb brevecomb circumflexcomb dieresiscomb dotaccentcomb gravecomb hookabovecomb ringcomb tildecomb];
	lookupflag UseMarkFilteringSet @CombiningTopAccents;
	sub i' @CombiningTopAccents by idotless;
	sub j' @CombiningTopAccents by jdotless;
} ccmp_DFLT_1;

What it does: the j loses its dot before combining accents. Leave it like it is. Now add a manual ccmp and drag it right before the automatic ccmp. In the manual ccmp, you write:

lookup ccmp_DUTCH {
    sub IJ by I J;
    sub ij by i j;
};

script latn;
lookup ccmp_DUTCH;

Just before automatic features that do anything with I, J, i or j, repeat another manual version of that feature before the automatic one and add this code in it:

lookup ccmp_DUTCH;

That way, you do not need ij.sc etc.

Now, the Dutch keyboard lets you type the j with an acute, and what it produces is the following character sequence:

U+006A LATIN SMALL LETTER J
U+0301 COMBINING ACUTE ACCENT

This will use mark mark-to-base positioning for building your j with an acute. With the ccmp and the anchors inside jdotless and acutecomb, your font is ready for that. That’s it. HTH.

3 Likes

Thanks Rainer!

Are there plans to make this automatically generated Feature code in Glyphs4?

The IJ ccmp is a bit of a stretch to automate. It would not apply to every style.

By the way, I just noticed a typo: this needs to repeat the ccmp_DUTCH lookup name after the lookup. So, it should be like this:

lookup ccmp_DUTCH {
    sub IJ by I J;
    sub ij by i j;
} ccmp_DUTCH;

script latn;
lookup ccmp_DUTCH;

In Glyphs, the name repetition is optional. The AFDKO syntax does however require it.

Thanks a lot!
I am not getting what the second manual ccmp does and how it spares me from needing to do it for ij.sc. Can you clarify please?

By splitting the composed IJ and ij glyphs into their individual component glyphs (IJ → I and J, ij → i and j), subsequent features can operate on those individual glyph directly instead of also having to handle the composed glyphs.

For example, for small caps, code that converts i and j to small caps then also handles the ij since is was split into i and j instead of having to provide a separate rule to define small caps for the ij glyph.

1 Like

Thank you, Florian. But the splitting happens in this first manual part, no? I don’t understand what the second manual ccmp is for, that says only “lookup ccmp_DUTCH;”
Sorry for standing on the line…

When you place a lookup code block in a feature, it will get activated automatically when the feature is activated.

When the lookup is defined in a prefix, it needs to be activated by a feature manually using code like

script latn;
lookup ccmp_DUTCH;

The second one repeats (“calls”) the lookup under a script registration. Just a technicality for increasing compatibility. But should work without.

Now in front of every feature that uses I or J (e.g. smallcaps), repeat the call lookup ccmp_DUTCH;

That way you make sure that you get separate I and J glyphs even if the software doesn’t support ccmp (as is the case in some composers in InDesign).

1 Like

Aha! Now I got it. I see there is a lot to learn for me… Thank you both very much!

1 Like