From e0b7d4d4bf0c1c4ee0f0e2432accbff9c7e3596c Mon Sep 17 00:00:00 2001 From: Vlasta Vesely Date: Wed, 21 Apr 2021 22:06:15 +0200 Subject: [PATCH] fix conversion of the consonantal .lla --- tests/translit.c | 5 +++++ transliteration.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/translit.c b/tests/translit.c index ba85560..a9ede0f 100644 --- a/tests/translit.c +++ b/tests/translit.c @@ -61,6 +61,10 @@ START_TEST(test_translit_lla_sylable) test_transliterate_devanagari_to_latin("अग्निमीळे", "agnimīḷe"); test_transliterate_latin_to_devanagari("agnimīḷe", "अग्निमीळे"); + /* rigveda 1.22.17 */ + test_transliterate_devanagari_to_latin("समूळ्हमस्य", "samūḷhamasya"); + test_transliterate_latin_to_devanagari("samūḷhamasya", "समूळ्हमस्य"); + test_transliterate_devanagari_to_latin("चाकॢप्र", "cākḷpra"); test_transliterate_latin_to_devanagari("cākḷpra", "चाकॢप्र"); } @@ -75,6 +79,7 @@ END_TEST START_TEST(test_translit_zero_width_joiner) { + /* from Bhagavadgita */ test_transliterate_devanagari_to_latin("श‍ृ शृ", "ś‍ṛ śṛ"); test_transliterate_latin_to_devanagari("ś‍ṛ śṛ", "श‍ृ शृ"); } diff --git a/transliteration.c b/transliteration.c index 6dfc08d..660f3c6 100644 --- a/transliteration.c +++ b/transliteration.c @@ -228,11 +228,17 @@ int transliterate_latin_to_devanagari(const char *latin, char **ret) /* consonant (.l) */ if (strncmp(src, "\u1e37", 3) == 0) { letter = letter_by_data(src + 3); - if (letter && letter->type == VOWEL) { + + if (letter) { utf8_pack_char(devanagari + done, 0x0933); done += 3; src += 3; - goto encode_vowel_modifier; + if (letter->type == VOWEL) { + goto encode_vowel_modifier; + } else { + utf8_pack_char(devanagari + done, VIRAMA); + done += 3; + } } }