From b78b4711fbd0fdd7c5e917268d5c5a874d1dec2a Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 28 Feb 2026 12:22:19 +0900 Subject: [PATCH] marwari dd conjuncts --- OTFbuild/calligra_font_tests.odt | Bin 15072 -> 15534 bytes OTFbuild/opentype_features.py | 15 +++++++++++++++ src/assets/devanagari_variable.tga | 2 +- work_files/devanagari_variable.psd | 4 ++-- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/OTFbuild/calligra_font_tests.odt b/OTFbuild/calligra_font_tests.odt index ddd72d1d57729aa9f7157ec5854b4dc6547cd625..8b21787c240c6881adfd33d61c2a8b600006bf6e 100644 GIT binary patch delta 14264 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 UyIctjoEQmX+=$@Uw7P`DgXcg delta 13834 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 diff --git a/OTFbuild/opentype_features.py b/OTFbuild/opentype_features.py index 4a4c764..ef6cb7d 100644 --- a/OTFbuild/opentype_features.py +++ b/OTFbuild/opentype_features.py @@ -636,6 +636,11 @@ def _generate_devanagari(glyphs, has, replacewith_subs=None): (0x0939, 0x092F, 0xF01C9, "H.Y"), (0x0939, 0x0932, 0xF01CA, "H.L"), (0x0939, 0x0935, 0xF01CB, "H.V"), + # Marwari DD (U+0978) — not mapped to PUA by ccmp, so _di(0x0978) + # returns 0x0978 unchanged. C2 uses standard Unicode (→ PUA via _di). + (0x0978, 0x0978, SC.MARWARI_LIG_DD_DD, "mDD.DD"), + (0x0978, 0x0922, SC.MARWARI_LIG_DD_DDH, "mDD.DDH"), + (0x0978, 0x092F, SC.MARWARI_LIG_DD_Y, "mDD.Y"), ] for c1_uni, c2_uni, result, name in _conjuncts: c1 = _di(c1_uni) @@ -672,6 +677,11 @@ def _generate_devanagari(glyphs, has, replacewith_subs=None): half_subs.append( f" sub {glyph_name(EYELASH_RA)} {glyph_name(SC.DEVANAGARI_VIRAMA)} by {glyph_name(EYELASH_RA)};" ) + # Marwari DD.Y (uF016E) has special half form (uF016F), not at +240 + if has(SC.MARWARI_LIG_DD_Y) and has(SC.DEVANAGARI_VIRAMA) and has(SC.MARWARI_HALFLIG_DD_Y): + half_subs.append( + f" sub {glyph_name(SC.MARWARI_LIG_DD_Y)} {glyph_name(SC.DEVANAGARI_VIRAMA)} by {glyph_name(SC.MARWARI_HALFLIG_DD_Y)};" + ) if half_subs: features.append("feature half {\n script dev2;\n" + '\n'.join(half_subs) + "\n} half;") @@ -716,6 +726,11 @@ def _generate_devanagari(glyphs, has, replacewith_subs=None): ra_append_subs.append( f" sub {glyph_name(internal)} {glyph_name(ra_sub)} by {glyph_name(ra_form)};" ) + # Marwari DD + rakaar -> DD.R (DD stays as uni0978, not PUA) + if has(SC.MARWARI_DD) and has(ra_sub) and has(SC.MARWARI_LIG_DD_R): + ra_append_subs.append( + f" sub {glyph_name(SC.MARWARI_DD)} {glyph_name(ra_sub)} by {glyph_name(SC.MARWARI_LIG_DD_R)};" + ) if ra_append_subs: cjct_lines.append(" lookup CjctRaAppend {") cjct_lines.extend(ra_append_subs) diff --git a/src/assets/devanagari_variable.tga b/src/assets/devanagari_variable.tga index 71dc7d8..f768d71 100644 --- a/src/assets/devanagari_variable.tga +++ b/src/assets/devanagari_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd7506a5864a8425982db59d600f758e3139b892097b0d50851b963b774e8cba +oid sha256:3c527cf3f9d802ca7d409687455a8435e64af37eecd77f06df4366d5c38af59f size 1474578 diff --git a/work_files/devanagari_variable.psd b/work_files/devanagari_variable.psd index dd6ca70..bd2d868 100644 --- a/work_files/devanagari_variable.psd +++ b/work_files/devanagari_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d58ba12074c31ecb931324afcb4bda3d6e525c1a4476793a63cd237a6eeb589c -size 1453583 +oid sha256:9560b26ee68771bf0bf459a2026620dc21b69f9f235d0cde66226efb37c733da +size 1453677