From 488304b7b4abeb5bfba6dd4706ee8290e4f7c162 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 26 Feb 2026 05:10:20 +0900 Subject: [PATCH] trigraphs with reph but wip --- OTFbuild/calligra_font_tests.odt | Bin 13817 -> 13834 bytes OTFbuild/opentype_features.py | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OTFbuild/calligra_font_tests.odt b/OTFbuild/calligra_font_tests.odt index 652cf324d78977ef6079e7d7d4b9d9959c56a0cb..354decd63ad5c7a7a5e90e000393848700eb452b 100644 GIT binary patch delta 12576 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 bnIXnQ`p>Eq|H}Ul?`})6 diff --git a/OTFbuild/opentype_features.py b/OTFbuild/opentype_features.py index be9c532..0b601d0 100644 --- a/OTFbuild/opentype_features.py +++ b/OTFbuild/opentype_features.py @@ -666,9 +666,10 @@ def _generate_devanagari(glyphs, has, replacewith_subs=None): # --- cjct: consonant (PUA) + below-base RA -> RA-appended form --- # After blwf converts virama+RA to rakaar mark, cjct combines it # with the preceding consonant to produce the ra-appended glyph. + # Covers all PUA consonants: basic, nukta forms, AND conjuncts + # (e.g. DD.G + rakaar -> DD.G.RA). cjct_subs = [] - for uni_cp in range(0x0915, 0x093A): - internal = SC.to_deva_internal(uni_cp) + for internal in SC.DEVANAGARI_PRESENTATION_CONSONANTS: ra_form = internal + 480 if has(internal) and has(ra_sub) and has(ra_form): cjct_subs.append(