[1.46.20]

Added language "lt" Lithuanian.

Changes to languages: pt, ta, ka.

Allow ZLNJ character (U+200C) to appear as an alphabetic character (lang=fa).


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@285 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2012-07-16 12:48:25 +00:00
parent 084584ee16
commit ad5201d53f
24 changed files with 4641 additions and 106 deletions
+32
View File
@@ -111,6 +111,18 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last)
}
}
// ignore these characters
static const unsigned short chars_ignore_default[] = {
0x200c, 1, // zero width non-joiner
0x200d, 1, // zero width joiner
0, 0 };
// alternatively, ignore characters but allow zero-width-non-joiner (lang-fa)
static const unsigned short chars_ignore_fa[] = {
0x200c, 0x0605, // zero width non-joiner, replace with not-used Arabic character code
0x200d, 1, // zero width joiner
0, 0 };
static Translator* NewTranslator(void)
{//===================================
@@ -122,6 +134,7 @@ static Translator* NewTranslator(void)
static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words
static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0};
tr = (Translator *)Alloc(sizeof(Translator));
if(tr == NULL)
return(NULL);
@@ -155,6 +168,7 @@ static Translator* NewTranslator(void)
tr->char_plus_apostrophe = empty_wstring;
tr->punct_within_word = punct_in_word;
tr->chars_ignore = chars_ignore_default;
for(ix=0; ix<8; ix++)
{
@@ -647,9 +661,13 @@ Translator *SelectTranslator(const char *name)
case L('f','a'): // Farsi
{
static const char fa_ZWNJ[] = {0x05, 0}; // use letter group G for ZWNJ U+200c
tr->letter_bits_offset = OFFSET_ARABIC;
tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->chars_ignore = chars_ignore_fa;
SetLetterBits(tr,LETTERGP_G,(char *)fa_ZWNJ);
}
break;
@@ -972,6 +990,20 @@ SetLengthMods(tr,3); // all equal
}
break;
case L('l','t'): // Lithuanian
{
tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x20;
tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_DIERESES] = 1;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT;
tr->langopts.numbers2 = 0x100;
tr->langopts.max_roman = 5000;
}
break;
case L('l','v'): // latvian
{
static const unsigned char stress_amps_lv[8] = {17,13, 20,20, 20,22, 22,21 };