Skip to content

Implement IJacute and ijacute for Dutch language #217

Description

@arrowtype

Activity

  1. changed the title [-]Find how to properly implment IJacute and ijacute[/-] [+]Find how to properly implement IJacute and ijacute[/+] on Jan 9, 2020
  2. arrowtype commented on Aug 3, 2020

    @arrowtype
    OwnerAuthor

    Current result of using combining accents:

    image

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

  3. added
    aug-2020Issues open as of August 2020 [for planning purposes]
    on Jan 8, 2021
  4. arrowtype commented on Feb 19, 2021

    @arrowtype
    OwnerAuthor

    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;
    
  5. arrowtype commented on Feb 19, 2021

    @arrowtype
    OwnerAuthor

    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;
    
  6. arrowtype commented on Feb 19, 2021

    @arrowtype
    OwnerAuthor

    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

  7. arrowtype commented on Feb 19, 2021

    @arrowtype
    OwnerAuthor

    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

  8. changed the title [-]Find how to properly implement IJacute and ijacute[/-] [+]Implement IJacute and ijacute for Dutch language[/+] on Feb 19, 2021
  9. arrowtype commented on Feb 19, 2021

    @arrowtype
    OwnerAuthor

    WIP for this:

    7cb331e

  10. aaronbell commented on Feb 24, 2021

    @aaronbell

    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.

  11. benkiel commented on Feb 25, 2021

    @benkiel
    Collaborator

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

  12. aaronbell commented on Feb 25, 2021

    @aaronbell

    @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?

  13. benkiel commented on Feb 25, 2021

    @benkiel
    Collaborator

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

  14. aaronbell commented on Feb 25, 2021

    @aaronbell

    @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

Metadata

Metadata

Labels

aug-2020Issues open as of August 2020 [for planning purposes]opentype feature

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions