add transliteration of candrabindu

This commit is contained in:
Vlasta Vesely 2020-10-11 09:48:55 +02:00
parent d5f67cc155
commit 8b804237bb
6 changed files with 20 additions and 2 deletions

View file

@ -64,6 +64,7 @@ static struct translit_letter table[] = {
{0x0902, CODA, "m"}, /* anusvara */
{0x0903, CODA, ""}, /* visarga */
{0x093d, CODA, "'"}, /* avagrada */
{0x0901, CODA, "m"}, /* candrabindu */
/* Numbers */
{0x0966, NUMBER, "0"},

1
iast.c
View file

@ -65,6 +65,7 @@ static struct translit_letter table[] = {
{0x0902, CODA, "\u1e43"}, /* anusvara (.m) */
{0x0903, CODA, "\u1e25"}, /* visarga (.h) */
{0x093d, CODA, "'"}, /* avagrada (') */
{0x0901, CODA, "m\u0310"}, /* candrabindu */
/* Numbers */
{0x0966, NUMBER, "0"},

3
main.c
View file

@ -19,11 +19,10 @@ static const char *usage_str =
"options:\n"
" -h shows this help and exits\n"
" -v shows version number and exits\n"
" -f specifies file for conversion\n"
" -f specifies file for conversion (- means standard input)\n"
" -r reverse transliteration (from Latin to Devanagari)\n"
" -e convert symbolic ASCII text to IAST representation\n"
" -c transcript Devanagari to Czech language\n"
" -- read data from the standard input\n"
"\n"
" By default, " PROGNAME " takes all input arguments written in Devanagari\n"
" and transliterates them to the IAST version.\n"

View file

@ -22,6 +22,8 @@ START_TEST(test_transcript_devanagari_to_czech)
test_transcript("भगवद्गीता", "bhagavadgíta");
test_transcript("अग्निमीळे", "agnimílé");
test_transcript("तान्यजत्राँ", "tánjadžatrám");
}
END_TEST

View file

@ -58,9 +58,17 @@ START_TEST(test_translit_lla_sylable)
}
END_TEST
START_TEST(test_translit_candrabindu)
{
test_transliterate_devanagari_to_latin("तान्यजत्राँ", "tānyajatrām̐");
test_transliterate_latin_to_devanagari("tānyajatrām̐", "तान्यजत्राँ");
}
END_TEST
void register_translit_tests(TCase *test_case)
{
tcase_add_test(test_case, test_translit_devanagari_to_latin);
tcase_add_test(test_case, test_translit_latin_to_devanagari);
tcase_add_test(test_case, test_translit_lla_sylable);
tcase_add_test(test_case, test_translit_candrabindu);
}

View file

@ -123,6 +123,13 @@ char *transliterate_latin_to_devanagari(const char *latin)
}
}
if (strncmp(src, "m\u0310", 3) == 0) {
utf8_pack_char(devanagari + done, 0x0901);
done += 3;
src += 3;
continue;
}
letter = letter_by_data(table, src);
if (letter) {
utf8_pack_char(devanagari + done, letter->code);