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 */ {0x0902, CODA, "m"}, /* anusvara */
{0x0903, CODA, ""}, /* visarga */ {0x0903, CODA, ""}, /* visarga */
{0x093d, CODA, "'"}, /* avagrada */ {0x093d, CODA, "'"}, /* avagrada */
{0x0901, CODA, "m"}, /* candrabindu */
/* Numbers */ /* Numbers */
{0x0966, NUMBER, "0"}, {0x0966, NUMBER, "0"},

1
iast.c
View file

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

3
main.c
View file

@ -19,11 +19,10 @@ static const char *usage_str =
"options:\n" "options:\n"
" -h shows this help and exits\n" " -h shows this help and exits\n"
" -v shows version number 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" " -r reverse transliteration (from Latin to Devanagari)\n"
" -e convert symbolic ASCII text to IAST representation\n" " -e convert symbolic ASCII text to IAST representation\n"
" -c transcript Devanagari to Czech language\n" " -c transcript Devanagari to Czech language\n"
" -- read data from the standard input\n"
"\n" "\n"
" By default, " PROGNAME " takes all input arguments written in Devanagari\n" " By default, " PROGNAME " takes all input arguments written in Devanagari\n"
" and transliterates them to the IAST version.\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("भगवद्गीता", "bhagavadgíta");
test_transcript("अग्निमीळे", "agnimílé"); test_transcript("अग्निमीळे", "agnimílé");
test_transcript("तान्यजत्राँ", "tánjadžatrám");
} }
END_TEST END_TEST

View file

@ -58,9 +58,17 @@ START_TEST(test_translit_lla_sylable)
} }
END_TEST 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) void register_translit_tests(TCase *test_case)
{ {
tcase_add_test(test_case, test_translit_devanagari_to_latin); 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_latin_to_devanagari);
tcase_add_test(test_case, test_translit_lla_sylable); 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); letter = letter_by_data(table, src);
if (letter) { if (letter) {
utf8_pack_char(devanagari + done, letter->code); utf8_pack_char(devanagari + done, letter->code);