The 'fortis' feature is not used, so it has been removed.master
| @@ -296,7 +296,6 @@ static keywtab_t keywords[] = { | |||
| // flags | |||
| { "wavef", tPHONEME_FLAG, phWAVE }, | |||
| { "unstressed", tPHONEME_FLAG, phUNSTRESSED }, | |||
| { "fortis", tPHONEME_FLAG, phFORTIS }, | |||
| { "sibilant", tPHONEME_FLAG, phSIBILANT }, // TODO (deprecated): use 'sib' instead | |||
| { "nolink", tPHONEME_FLAG, phNOLINK }, | |||
| { "trill", tPHONEME_FLAG, phTRILL }, // TODO (deprecated): use 'trl' instead | |||
| @@ -315,10 +314,6 @@ static keywtab_t keywords[] = { | |||
| { "flag2", tPHONEME_FLAG, phFLAG2 }, | |||
| { "flag3", tPHONEME_FLAG, phFLAG3 }, | |||
| // voiced / unvoiced | |||
| { "vcd", tPHONEME_FLAG, phVOICED }, | |||
| { "vls", tPHONEME_FLAG, phFORTIS }, | |||
| // vowel transition attributes | |||
| { "len=", tTRANSITION, 1 }, | |||
| { "rms=", tTRANSITION, 2 }, | |||
| @@ -62,6 +62,9 @@ enum feature_t { | |||
| uvl = FEATURE('u', 'v', 'l'), | |||
| phr = FEATURE('p', 'h', 'r'), | |||
| glt = FEATURE('g', 'l', 't'), | |||
| // voice | |||
| vcd = FEATURE('v', 'c', 'd'), | |||
| vls = FEATURE('v', 'l', 's'), | |||
| }; | |||
| uint32_t lookup_feature(const char *feature) { | |||
| @@ -164,6 +167,13 @@ phoneme_add_feature(PHONEME_TAB *phoneme, | |||
| case alp: | |||
| // FIXME: Not supported by eSpeak. Used in Chinese/Japanese ɕ and ʑ. | |||
| break; | |||
| // voice | |||
| case vcd: | |||
| phoneme->phflags |= phVOICED; | |||
| break; | |||
| case vls: // FIXME: This should be a phVOICELESS (!phVOICED) flag. Fortis/lenis are a different thing. | |||
| phoneme->phflags |= phFORTIS; | |||
| break; | |||
| // invalid phoneme feature | |||
| default: | |||
| return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature); | |||