Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement IJacute and ijacute for Dutch language #217

Closed
arrowtype opened this issue Nov 5, 2019 · 11 comments · Fixed by #441
Closed

Implement IJacute and ijacute for Dutch language #217

arrowtype opened this issue Nov 5, 2019 · 11 comments · Fixed by #441
Assignees
Labels
aug-2020 Issues open as of August 2020 [for planning purposes] opentype feature

Comments

@arrowtype
Copy link
Owner

arrowtype commented Nov 5, 2019

Relevant:

https://typedrawers.com/discussion/1294/how-do-you-implement-ijacute-and-ijacute

@arrowtype arrowtype changed the title Find how to properly implment IJacute and ijacute Find how to properly implement IJacute and ijacute Jan 9, 2020
@arrowtype
Copy link
Owner Author

Current result of using combining accents:

image

@benkiel to fix with the addition of a mark feature, plus a little language feature

@arrowtype
Copy link
Owner Author

Note to self: once this is settled, also implement a locl feature for TRK (Turkish). It will probably be this:

  script latn;
    language TRK;
      sub i by idotaccent;
      sub i.mono by idotaccent.mono;
      sub i.italic by idotaccent.italic;
      sub i.simple by idotaccent.simple;

@arrowtype arrowtype assigned arrowtype and unassigned benkiel Feb 19, 2021
@arrowtype
Copy link
Owner Author

Testing this ... I think I’m close, but I might be able to shorten it with a few classes:

feature locl {
  script latn;
    language NLD; # Dutch
      lookup LigatureIJ {
        sub I acutecomb J acutecomb by IJacute;

        sub I J by IJ;

        sub Iacute J acutecomb by IJacute;

        sub i acutecomb j acutecomb by ijacute;
        sub i.mono acutecomb j acutecomb by ijacute;
        sub i.italic acutecomb j acutecomb by ijacute;
        sub i.italic acutecomb j.italic acutecomb by ijacute;
        sub i.simple acutecomb j acutecomb by ijacute;
        sub i.simple acutecomb j.italic acutecomb by ijacute;

        sub i j by ij;
        sub i.mono j by ij;
        sub i.italic j by ij;
        sub i.italic j.italic by ij;
        sub i.simple j by ij;
        sub i.simple j.italic by ij;

        sub iacute j acutecomb by ijacute;
        sub iacute.mono j acutecomb by ijacute;
        sub iacute.italic j acutecomb by ijacute;
        sub iacute.italic j.italic acutecomb by ijacute;
        sub iacute.simple j acutecomb by ijacute;
        sub iacute.simple j.italic acutecomb by ijacute;

      } LigatureIJ;
} locl;

@arrowtype
Copy link
Owner Author

Awesome – the following seems to work equally well as the code above, but is shorter and clearer.

@j_for_ij =      [j j.italic];
@i_for_ij =      [i      i.mono      i.italic      i.simple];
@iacute_for_ij = [iacute iacute.mono iacute.italic iacute.simple];

feature locl {
  script latn;
    language NLD; # Dutch
      lookup LigatureIJ {
        sub I acutecomb J acutecomb by IJacute;
        sub I J by IJ;
        sub Iacute J acutecomb by IJacute;

        sub @i_for_ij acutecomb @j_for_ij acutecomb by ijacute;
        sub @i_for_ij @j_for_ij by ij;
        sub @iacute_for_ij @j_for_ij acutecomb by ijacute;

      } LigatureIJ;
} locl;

image

@arrowtype
Copy link
Owner Author

Also useful: locl feature of Bungee fonts (view as "Raw" to properly see it):

https://github.com/djrrb/Bungee/blob/ce5aba00e2cd46a14577508306f8494c0f122271/sources/1-drawing/features/features.fea

@arrowtype arrowtype changed the title Find how to properly implement IJacute and ijacute Implement IJacute and ijacute for Dutch language Feb 19, 2021
@arrowtype
Copy link
Owner Author

WIP for this:

7cb331e

@aaronbell
Copy link

An alternate perspective :).

I was reviewing the Cascadia Code features the other day and was thinking about a couple of substitutions in the locl code—specifically the Catalan ldot and Dutch IJ substitutions.

It struck me that in both cases, I'm taking two code points and replacing them with a single glyph. While that makes sense in a proportional font for text environments, does it make sense in a coding font meant to operate in a monospace environment?

So I ended up removing the substitution for Ldot and ldot (the codepoints are still present though), and also changing the ij substitutions to just be:

	sub iacute j' by jacute;
	sub Iacute J' by Jacute;

It is a bit sad not to be able to use the nice accent IJ ligatures I made, but I do like the simplicity of it. I did leave the IJ and ij codepoints in for legacy purposes, but otherwise everything is just handled in monospace.

@benkiel
Copy link
Collaborator

benkiel commented Feb 25, 2021

@aaronbell that code will not cover everything, as there are dutch words (or loan words) that have an iacute but not a jacute.

@aaronbell
Copy link

@benkiel Oh, is that right? I've never seen that mentioned in all the articles about supporting the Dutch ijacute 😨 . From what I've been able to tell, it is pretty common to use code like I did above and that users would expect the j to be replaced with an accented j. Is that not the case?

Would you rather recommend only replacing the j only when followed by a combining acute?

@benkiel
Copy link
Collaborator

benkiel commented Feb 25, 2021

Yes, that is safer. This comes from a discussion with EvB who pointed out that the IJacute has edge cases

@aaronbell
Copy link

@benkiel Thanks! Well, if that's the case, then maybe I'll get rid of those substitutions entirely as the ccmp will take care of it. (sub [i j i-cy je-cy]' @CombiningTopAccents by [idotless jdotless idotless jdotless];)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aug-2020 Issues open as of August 2020 [for planning purposes] opentype feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants