zerowidthjoiner (ZWJ) not working on older versions of InDesign
Options

rsdk
Posts: 10
When I try to do zerowidthjoiner (ZWJ) in InDesign for my custom made devanagari and Gujarati (Indic Fonts) using Fontlab 8,
all rules work in Word, InDesign (all versions), but when it comes to make ZWJ rules to work in InDesign2023 and below, the rule set doesn't work.
here is the sequence in which the text is typed:
1. શ્ચ - guj_Sha guj_Halant ZWJ guj_Ca
2. શ્ચ- guj_Sha guj_Halant ZWNJ guj_Ca
3. શ્ચ - guj_Sha guj_Halant guj_Ca
in InDesign2023 (and below), it looks like this: screenshot 1
in InDesign2024 (and above), it looks like this: screenshot 2
The rules should work in InDesign 2023 and below as it works in InDesign2024+.
Here's a snapshot of my rules, see screenshot 3
0
Comments
-
The old Adobe Indic shaping engine had multiple issues and inconsistencies with other shaping engines. That is one of the reasons Adobe abandoned it and now use a wrapped HarfBuzz implementation.
However, your feature code is unusual in a couple of ways:
1. The scripts you are working with are processed by shaping engines in such a way that you do not need to explicitly include ZWJ in the lookup code. The Indic2 shaping engines that apply the dev2 and gjr2 script tags use the presence of U+200D in the text string to trigger the half form feature. Here are your test sequences in a Gujarati font we made which does no include explicit ZWJ input in the references:
2. You have assigned these substitutions to the dist feature. This is normally a GPOS feature used for required kerning adjustments, so it is unusual to put substitution lookups in it. [Technically, you should be able to associate any lookup type with any feature, but hijacking a feature for a purpose other than that for which it was defined may produce unexpected results.]2 -
Thank you for your reply, but I'm still a bit confused on how to implement on my side. Can you please provide step by step instructions for me to follow to fix the issue that I'm getting?0
-
If the problem is at the older Adobe shaping engine level, then you might not be able to address it. But what I would do is try removing all those substitution rules with explicit /zerowidthjoiner from the dist feature and deleting them from your font. Make sure that your font has appropriate rules in the half feature for e.g.
sub guj_Ka guj_Virama* by guj_K;
*or whatever name you are using for the virama glyph.
In theory, that should be all you need. I did not do a lot of work with Gujarati in the older InDesign, but I do know that this approach worked for Devanagari.0
Categories
- All Categories
- 46 Introductions
- 3.8K Typeface Design
- 476 Type Design Critiques
- 555 Type Design Software
- 1.1K Type Design Technique & Theory
- 640 Type Business
- 831 Font Technology
- 29 Punchcutting
- 507 Typography
- 120 Type Education
- 313 Type History
- 74 Type Resources
- 109 Lettering and Calligraphy
- 30 Lettering Critiques
- 79 Lettering Technique & Theory
- 533 Announcements
- 86 Events
- 110 Job Postings
- 167 Type Releases
- 169 Miscellaneous News
- 274 About TypeDrawers
- 53 TypeDrawers Announcements
- 119 Suggestions and Bug Reports