[1.46.39]

Fixes to speaking characters from foreign alphabets.
Allow $textmode and $text to translate between words in different alphabets.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@305 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2013-03-01 20:45:05 +00:00
parent 6ee501b5bb
commit 3eb5cb58d7
25 changed files with 687 additions and 568 deletions
+13 -6
View File
@@ -798,14 +798,25 @@ voice_t *LoadVoice(const char *vname, int control)
break;
case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS:
// expect a list of numbers
while(*p != 0)
{
while(isspace(*p)) p++;
n = -1;
if(((n = atoi(p)) > 0) && (n < 32))
if((n = atoi(p)) > 0)
{
p++;
conditional_rules |= (1 << n);
if((key==V_DICTRULES) && (n < 32))
conditional_rules |= (1 << n);
else
if((key==V_NUMBERS) && (n < 32))
langopts->numbers |= (1 << n);
else
if((key==V_NUMBERS) && (n < 64))
langopts->numbers |= (1 << (n-32));
else
fprintf(stderr,"Bad option number %d\n", n);
}
while(isalnum(*p)) p++;
}
@@ -837,10 +848,6 @@ voice_t *LoadVoice(const char *vname, int control)
new_translator->charset_a0 = charsets[value];
break;
case V_NUMBERS:
sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2);
break;
case V_OPTION:
value2 = 0;
if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0))