How do you implement ijacute and IJacute?
Dave Crossland
Posts: 1,429
Following up on this discussion,
How do people set up ijacute and IJacute?
They have Unicode values, and while Underware's Latin Plus encodes them in the private use area as U+E133 which I think is not a good idea, it seems clear that either way the glyphs may need to be created and relevant OpenType 'locl' features written.
How do people set up ijacute and IJacute?
They have Unicode values, and while Underware's Latin Plus encodes them in the private use area as U+E133 which I think is not a good idea, it seems clear that either way the glyphs may need to be created and relevant OpenType 'locl' features written.
0
Comments
-
When working on the Brill fonts, this was something that I discussed at some length with Pim Rietbroek at Brill. They favour use of the precomposed digraph characters for IJ/ij, and I believe they may do character-level mapping to that from I+J/i+j as a standard part of their typesetting for Dutch texts. [I think the attraction is the resulting robust support for case mapping and tracking according to their house typographic styles.] However, they also wanted identical handling for text encoded as I+J/i+j in text tagged as Dutch.
So what we ended up implementing is a Dutch (NLD ) language system layout that includes precomposed glyphs for not only IJ/ij but the same with the acute accents, and maps these in the 'ccmp' feature for NLD, using both fully decomposed and partially decomposed input. In VOLT syntax, using human-friendly production names (final names in font CSS table are uniXXXX form, with mappings back to Brill's preferred encoding):I acutecomb J acutecomb -> IJacute
and a general (non-NLD-specific) 'ccmp' lookup for
i acutecomb j acutecomb -> ijacute
Iacute J acutecomb -> IJacute
iacute j acutecomb -> ijacute
I J -> IJ
i j -> ijIJ acutecomb -> IJacute
Obviously, later there are smallcap substitutions requiring corresponding precomposed glyphs to map from these.
ij acutecomb -> ijacute
It should be noted that this implementation is tailored to Brill's preferred typography. I've heard that some Dutch users now prefer I+J/i+j to track independently, so obviously in that case one wouldn't want to precompose the combinations or, rather, might want to decompose them after first handling the situation of single combining acute applied to the precomposed digraphs inIJ acutecomb -> IJacute
i.e. something like
ij acutecomb -> ijacuteIJacute -> Iacute Jacute
ijacute -> iacute jacute
5 -
Thank you John. –
I wonder if there could be a more simple and straightforward way to implement a viable solution.
I also wonder: you code <I acutecomb>. What if people type in <acutecomb I>?
(I always type the accent first, and it works).
any more insights, good practice advice?
0 -
Exceptions always require additional attention, but once you have a solution, you can easily copy it to your other fonts.
script latn {
language NLD {
feature GlyphCompositionDecomposition1;
}
}
feature GlyphCompositionDecomposition1 ccmp {
lookup LigatureIJ;
}
lookup LigatureIJ {
sub I acutecomb J acutecomb -> IJacute;
sub I J -> IJ;
sub i acutecomb j acutecomb -> ijacute;
sub i j -> ij;
sub Iacute acutecomb -> IJacute;
sub iacute j acutecomb -> ijacute;
}
0 -
@Erwin Denissen
sub Iacute acutecomb -> IJacute;
should besub Iacute J acutecomb -> IJacute;
in your example.0 -
Good catch! Now you mentioned it I wonder how I could have missed it.
0 -
Andreas,
I also wonder: you code <I acutecomb>. What if people type in <acutecomb I>?
(I always type the accent first, and it works).
You're probably using a deadkey input mechanism that maps that series of key strokes to the precomposed í character. This is a different mechanism from using Unicode combining marks, which the standard specifies are always ordered after the base character to which they apply.
Remember, the relationship of what you hit on a keyboard to the encoded characters stored on the computer isn't necessarily one-to-one. It's even possible to make Keyman keyboards that enable you to key Unicode combining marks before bases as if they were deadkey input, but the resulting text is stored correctly, with the marks after the bases.0 -
The code above was a bit concise (or appears to be using VOLT), but I think the following is working well for me, in standard OpenType feature format:
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 j by ij; sub iacute j acutecomb by ijacute; } LigatureIJ; } locl;
Of course, if anyone sees any issues here, please let me know!
Though actually, I have several alternates for these characters for Recursive (a variable font with mono & italic alts), so I’ve extended the above with classes:@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];
And these are used for i & j in the lock feature:</code>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;</span> </pre><div><br></div><div>And then, per John’s comment above, I’m also adding a ccmp feature:<br><br><pre class="CodeBlock"><code>
feature ccmp { sub IJ acutecomb by IJacute; sub ij acutecomb by ijacute; } ccmp;
0 -
And unify that diacritic! If you really believe it's a single letter.
https://www.flickr.com/photos/underware/15841979861/in/photolist-q95vXx-q8UhFP-q8UhGv
1 -
Nah, if it can have two tittles, it might as well have two acutes as well. This looks weird.
1 -
Maybe it shouldn't have two tittles. Try none!
The "G" looked weird when it was invented too. Same with shoes.0
Categories
- All Categories
- 43 Introductions
- 3.7K Typeface Design
- 799 Font Technology
- 1K Technique and Theory
- 617 Type Business
- 444 Type Design Critiques
- 541 Type Design Software
- 30 Punchcutting
- 136 Lettering and Calligraphy
- 83 Technique and Theory
- 53 Lettering Critiques
- 483 Typography
- 301 History of Typography
- 114 Education
- 68 Resources
- 498 Announcements
- 79 Events
- 105 Job Postings
- 148 Type Releases
- 165 Miscellaneous News
- 269 About TypeDrawers
- 53 TypeDrawers Announcements
- 116 Suggestions and Bug Reports