Index: firmware/drivers/lcd-16bit.c =================================================================== --- firmware/drivers/lcd-16bit.c (revision 19289) +++ firmware/drivers/lcd-16bit.c (working copy) @@ -919,6 +919,34 @@ lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + /* check & correct for thai vowels */ + if(*ucs == 0xe31 || *ucs == 0xe34 || *ucs == 0xe35 || *ucs == 0xe36 || + *ucs == 0xe37 || *ucs == 0xe38 || *ucs == 0xe39 || *ucs == 0xe3a) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + + /* check & correct for thai tonal maker */ + if(*ucs == 0xe47 || *ucs == 0xe48 || *ucs == 0xe49 || *ucs == 0xe4a || + *ucs == 0xe4b || *ucs == 0xe4c || *ucs == 0xe4d || *ucs == 0xe4e) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + x += width - ofs; ofs = 0; } Index: firmware/drivers/lcd-2bit-horz.c =================================================================== --- firmware/drivers/lcd-2bit-horz.c (revision 19289) +++ firmware/drivers/lcd-2bit-horz.c (working copy) @@ -890,6 +890,34 @@ lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + /* check & correct for thai vowels */ + if(*ucs == 0xe31 || *ucs == 0xe34 || *ucs == 0xe35 || *ucs == 0xe36 || + *ucs == 0xe37 || *ucs == 0xe38 || *ucs == 0xe39 || *ucs == 0xe3a) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + + /* check & correct for thai tonal maker */ + if(*ucs == 0xe47 || *ucs == 0xe48 || *ucs == 0xe49 || *ucs == 0xe4a || + *ucs == 0xe4b || *ucs == 0xe4c || *ucs == 0xe4d || *ucs == 0xe4e) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + x += width - ofs; ofs = 0; } Index: firmware/drivers/lcd-2bit-vert.c =================================================================== --- firmware/drivers/lcd-2bit-vert.c (revision 19289) +++ firmware/drivers/lcd-2bit-vert.c (working copy) @@ -1027,7 +1027,35 @@ lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); - + + /* check & correct for thai vowels */ + if(*ucs == 0xe31 || *ucs == 0xe34 || *ucs == 0xe35 || *ucs == 0xe36 || + *ucs == 0xe37 || *ucs == 0xe38 || *ucs == 0xe39 || *ucs == 0xe3a) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + + /* check & correct for thai tonal maker */ + if(*ucs == 0xe47 || *ucs == 0xe48 || *ucs == 0xe49 || *ucs == 0xe4a || + *ucs == 0xe4b || *ucs == 0xe4c || *ucs == 0xe4d || *ucs == 0xe4e) + { + int olddrawmode = current_vp->drawmode; + current_vp->drawmode = DRMODE_FG; + + ch = *ucs++; + bits = font_get_bits(pf, ch); + lcd_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); + + current_vp->drawmode = olddrawmode; + } + x += width - ofs; ofs = 0; }