diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index 3ebcfb38..d97bfe7a 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -528,7 +528,6 @@ voice_t *LoadVoice(const char *vname, int control) int tone_only = control & 2; bool language_set = false; bool phonemes_set = false; - int conditional_rules = 0; char voicename[40]; char language_name[40]; @@ -766,9 +765,21 @@ voice_t *LoadVoice(const char *vname, int control) translator->langopts.tunes[ix] = value; } break; + case V_DICTRULES: // conditional dictionary rules and list entries - case V_NUMBERS: + if (CheckTranslator(translator, keyword_tab, key) != 0) + break; + + ReadNumbers(p, &translator->dict_condition, 32, keyword_tab, key); + break; case V_STRESSOPT: + if (CheckTranslator(translator, keyword_tab, key) != 0) + break; + + ReadNumbers(p, &translator->langopts.stress_flags, 32, keyword_tab, key); + break; + + case V_NUMBERS: if (CheckTranslator(translator, keyword_tab, key) != 0) break; @@ -778,18 +789,12 @@ voice_t *LoadVoice(const char *vname, int control) if ((n = atoi(p)) > 0) { p++; if (n < 32) { - if (key == V_DICTRULES) - conditional_rules |= (1 << n); - else if (key == V_NUMBERS) translator->langopts.numbers |= (1 << n); - else if (key == V_STRESSOPT) - translator->langopts.stress_flags |= (1 << n); } else { - if ((key == V_NUMBERS) && (n < 64)) + if (n < 64) translator->langopts.numbers2 |= (1 << (n-32)); else - fprintf(stderr, "Bad option number %d\n", n); - } + fprintf(stderr, "numbers: Bad option number %d\n", n); } } while (isalnum(*p)) p++; } @@ -949,8 +954,6 @@ voice_t *LoadVoice(const char *vname, int control) } } - translator->dict_condition = conditional_rules; - voice_languages[langix] = 0; }