# Glyphs 4 - Jacute/jacute accent and NLD language support

**URL:** <https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651>\
**Category:** Glyphs\
**Created:** [July 1, 2026, 10:10pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651 "2026-07-01T22:10:40Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![jamie\_g](https://forum.glyphsapp.com/letter_avatar_proxy/v4/letter/j/f4b2a3/32.png) [@jamie\_g](https://forum.glyphsapp.com/u/jamie_g)\
**Post date:** [July 1, 2026, 10:10pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/1 "2026-07-01T22:10:40Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![thommilson](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/thommilson/32/22888_2.png) [@thommilson](https://forum.glyphsapp.com/u/thommilson)\
**Post date:** [August 14, 2026, 2:59pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/2 "2026-08-14T14:59:01Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![PatrickNell](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/patricknell/32/24918_2.png) [@PatrickNell](https://forum.glyphsapp.com/u/PatrickNell)\
**Post date:** [August 14, 2026, 4:34pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/3 "2026-08-14T16:34:18Z")

</div>

Same here (4000).

---

<div class="post-metadata">

**Author:** ![Rofu](https://forum.glyphsapp.com/letter_avatar_proxy/v4/letter/r/7ab992/32.png) [@Rofu](https://forum.glyphsapp.com/u/Rofu)\
**Post date:** [September 22, 2026, 8:17am UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/4 "2026-09-22T08:17:17Z")

</div>

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](https://hyperglot.rosettatype.com/database/nld?script=Latin)

as discussed here:

> [@G4 –No automatically generated code (locl) NLD](https://forum.glyphsapp.com/t/g4-no-automatically-generated-code-locl-nld/37056):
>
> Hi, I’m not getting this code generated automatically although I believe I have all the necessary glyphs present in the font. script latn; language NLD; lookup locl\_latn\_4 { sub iacute j’ by jacute; sub Iacute J’ by Jacute; } locl\_latn\_4; Is it new rules or a bug in G4?

---

<div class="post-metadata">

**Author:** ![mekkablue](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/mekkablue/32/23_2.png) [@mekkablue](https://forum.glyphsapp.com/u/mekkablue)\
**Post date:** [September 22, 2026, 5:11pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/5 "2026-09-22T17:11:00Z")

</div>

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

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

```auto
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:

```auto
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:

```auto
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:

```auto
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:

```auto
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.

---

<div class="post-metadata">

**Author:** ![knikola](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/knikola/32/4343_2.png) [@knikola](https://forum.glyphsapp.com/u/knikola)\
**Post date:** [September 23, 2026, 7:22am UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/6 "2026-09-23T07:22:07Z")

</div>

Thanks Rainer!

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

---

<div class="post-metadata">

**Author:** ![mekkablue](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/mekkablue/32/23_2.png) [@mekkablue](https://forum.glyphsapp.com/u/mekkablue)\
**Post date:** [September 23, 2026, 7:50am UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/7 "2026-09-23T07:50:12Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![thundernixon](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/thundernixon/32/1579_2.png) [@thundernixon](https://forum.glyphsapp.com/u/thundernixon)\
**Post date:** [September 30, 2026, 4:00pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/8 "2026-09-30T16:00:45Z")

</div>

> [@mekkablue](#):
>
> ```auto
> lookup ccmp_DUTCH {
> sub IJ by I J;
> sub ij by i j;
> };
> 
> script latn;
> lookup ccmp_DUTCH;
> 
> ```

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:

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

script latn;
lookup ccmp_DUTCH;

```

---

<div class="post-metadata">

**Author:** ![FlorianPircher](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/florianpircher/32/30457_2.png) [@FlorianPircher](https://forum.glyphsapp.com/u/FlorianPircher)\
**Post date:** [September 30, 2026, 5:03pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/9 "2026-09-30T17:03:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Rofu](https://forum.glyphsapp.com/letter_avatar_proxy/v4/letter/r/7ab992/32.png) [@Rofu](https://forum.glyphsapp.com/u/Rofu)\
**Post date:** [October 1, 2026, 2:43pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/10 "2026-10-01T14:43:03Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![FlorianPircher](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/florianpircher/32/30457_2.png) [@FlorianPircher](https://forum.glyphsapp.com/u/FlorianPircher)\
**Post date:** [October 1, 2026, 2:53pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/11 "2026-10-01T14:53:58Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Rofu](https://forum.glyphsapp.com/letter_avatar_proxy/v4/letter/r/7ab992/32.png) [@Rofu](https://forum.glyphsapp.com/u/Rofu)\
**Post date:** [October 1, 2026, 3:57pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/12 "2026-10-01T15:57:06Z")

</div>

> [@mekkablue](#):
>
> ```auto
> lookup ccmp_DUTCH {
> sub IJ by I J;
> sub ij by i j;
> };
> 
> script latn;
> lookup ccmp_DUTCH;
> 
> ```

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…

---

<div class="post-metadata">

**Author:** ![FlorianPircher](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/florianpircher/32/30457_2.png) [@FlorianPircher](https://forum.glyphsapp.com/u/FlorianPircher)\
**Post date:** [October 1, 2026, 4:01pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/13 "2026-10-01T16:01:03Z")

</div>

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

```fea
script latn;
lookup ccmp_DUTCH;

```

---

<div class="post-metadata">

**Author:** ![mekkablue](https://forum.glyphsapp.com/user_avatar/forum.glyphsapp.com/mekkablue/32/23_2.png) [@mekkablue](https://forum.glyphsapp.com/u/mekkablue)\
**Post date:** [October 1, 2026, 4:06pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/14 "2026-10-01T16:06:35Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![Rofu](https://forum.glyphsapp.com/letter_avatar_proxy/v4/letter/r/7ab992/32.png) [@Rofu](https://forum.glyphsapp.com/u/Rofu)\
**Post date:** [October 1, 2026, 4:09pm UTC](https://forum.glyphsapp.com/t/glyphs-4-jacute-jacute-accent-and-nld-language-support/36651/16 "2026-10-01T16:09:49Z")

</div>

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