|  |  | @@ -30,12 +30,21 @@ MNEM_TAB mnem_encoding[] = { | 
		
	
		
			
			|  |  |  | { "ANSI_X3.4-1968",   ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "ANSI_X3.4-1986",   ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "IBM367",           ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "IBM819",           ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "ISO_646.irv:1991", ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "ISO_8859-1",       ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "ISO646-US",        ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "ISO-8859-1",       ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "ISO-8859-1:1987",  ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "US-ASCII",         ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "cp367",            ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "cp819",            ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "csASCII",          ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "csISOLatin1",      ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "iso-ir-6",         ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { "iso-ir-100",       ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "latin1",           ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "l1",               ESPEAKNG_ENCODING_ISO_8859_1 }, | 
		
	
		
			
			|  |  |  | { "us",               ESPEAKNG_ENCODING_US_ASCII }, | 
		
	
		
			
			|  |  |  | { NULL,               ESPEAKNG_ENCODING_UNKNOWN } | 
		
	
		
			
			|  |  |  | }; | 
		
	
	
		
			
			|  |  | @@ -54,8 +63,25 @@ struct espeak_ng_TEXT_DECODER_ | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | const char *current; | 
		
	
		
			
			|  |  |  | const char *end; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | uint32_t (*get)(espeak_ng_TEXT_DECODER *decoder); | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static uint32_t | 
		
	
		
			
			|  |  |  | text_decoder_getc_us_ascii(espeak_ng_TEXT_DECODER *decoder) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | uint8_t c = *decoder->current++ & 0xFF; | 
		
	
		
			
			|  |  |  | return (c >= 0x80) ? 0xFFFD : c; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // Reference: http://www.iana.org/go/rfc1345 | 
		
	
		
			
			|  |  |  | // Reference: http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT | 
		
	
		
			
			|  |  |  | static uint32_t | 
		
	
		
			
			|  |  |  | text_decoder_getc_iso_8859_1(espeak_ng_TEXT_DECODER *decoder) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | return *decoder->current++ & 0xFF; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | espeak_ng_TEXT_DECODER * | 
		
	
		
			
			|  |  |  | create_text_decoder(void) | 
		
	
		
			
			|  |  |  | { | 
		
	
	
		
			
			|  |  | @@ -64,6 +90,7 @@ create_text_decoder(void) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | decoder->current = NULL; | 
		
	
		
			
			|  |  |  | decoder->end = NULL; | 
		
	
		
			
			|  |  |  | decoder->get = NULL; | 
		
	
		
			
			|  |  |  | return decoder; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -80,6 +107,10 @@ initialize_encoding(espeak_ng_TEXT_DECODER *decoder, | 
		
	
		
			
			|  |  |  | switch (encoding) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | case ESPEAKNG_ENCODING_US_ASCII: | 
		
	
		
			
			|  |  |  | decoder->get = text_decoder_getc_us_ascii; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | case ESPEAKNG_ENCODING_ISO_8859_1: | 
		
	
		
			
			|  |  |  | decoder->get = text_decoder_getc_iso_8859_1; | 
		
	
		
			
			|  |  |  | break; | 
		
	
		
			
			|  |  |  | default: | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
	
		
			
			|  |  | @@ -110,6 +141,5 @@ text_decoder_eof(espeak_ng_TEXT_DECODER *decoder) | 
		
	
		
			
			|  |  |  | uint32_t | 
		
	
		
			
			|  |  |  | text_decoder_getc(espeak_ng_TEXT_DECODER *decoder) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | uint8_t c = *decoder->current++ & 0xFF; | 
		
	
		
			
			|  |  |  | return (c >= 0x80) ? 0xFFFD : c; | 
		
	
		
			
			|  |  |  | return decoder->get(decoder); | 
		
	
		
			
			|  |  |  | } |