notofonts / kaithi

Noto Kaithi
SIL Open Font License 1.1
1 stars 3 forks source link

U+200D blocks reph/half form of non-adjacent preceding consonant #26

Closed dscorbett closed 4 months ago

dscorbett commented 1 year ago

Font

NotoSansKaithi-Regular.otf

Where the font came from, and when

Site: https://github.com/notofonts/kaithi/releases/tag/NotoSansKaithi-v2.005 Date: 2023-10-01

Font version

Version 2.005

Issue

If U+200D forces a consonant to have a half form, a dead consonant before that half form gets a visible virama, even when there is no U+200C after it. That dead consonant should instead have its default (i.e. reph or half) form. This happens because the 'rphf' and 'half' lookups use the class class1 to determine what glyphs to create a reph or half form before, but class1 is missing half forms, which already exist by that point because they are created in 'akhn'. The contexts for 'rphf' and 'half' should take the output of 'akhn' into account.

Character data

๐‘‚ฉ๐‘‚น๐‘‚Ž๐‘‚นโ€๐‘‚Ž๐‘‚Ž๐‘‚น๐‘‚Ž๐‘‚นโ€๐‘‚Ž U+110A9 KAITHI LETTER RA U+110B9 KAITHI SIGN VIRAMA U+1108E KAITHI LETTER KHA U+110B9 KAITHI SIGN VIRAMA U+200D ZERO WIDTH JOINER U+1108E KAITHI LETTER KHA U+1108E KAITHI LETTER KHA U+110B9 KAITHI SIGN VIRAMA U+1108E KAITHI LETTER KHA U+110B9 KAITHI SIGN VIRAMA U+200D ZERO WIDTH JOINER U+1108E KAITHI LETTER KHA

Screenshots

๐‘‚ฉ๐‘‚น๐‘‚Ž๐‘‚นโ€๐‘‚Ž๐‘‚Ž๐‘‚น๐‘‚Ž๐‘‚นโ€๐‘‚Ž

Cf. that string without U+200D: ๐‘‚ฉ๐‘‚น๐‘‚Ž๐‘‚น๐‘‚Ž๐‘‚Ž๐‘‚น๐‘‚Ž๐‘‚น๐‘‚Ž

simoncozens commented 4 months ago

Hah, the shaping tests found a bug in my fix. ๐‘‚ฉ๐‘‚นโ€๐‘‚™๐‘‚น๐‘‚ฎ should have an explicit ra half form, but with this issue fixed, the RA gets reordered to the conjunct:

shape