bidi: fixes

This commit is contained in:
Gabor Kiss-Vamosi
2019-09-27 06:03:54 +02:00
parent 3dfbc5c85d
commit ac269ebaad
2 changed files with 9 additions and 4 deletions

View File

@@ -38,6 +38,8 @@ static void rtl_reverse(char * dest, const char * src, uint32_t len);
void lv_bidi_process(const char * str_in, char * str_out, lv_bidi_dir_t base_dir)
{
printf("Input str: \"%s\"\n", str_in);
uint32_t run_len = 0;
lv_bidi_dir_t run_dir;
uint32_t rd = 0;
@@ -107,7 +109,9 @@ bool lv_bidi_letter_is_weak(uint32_t letter)
bool lv_bidi_letter_is_rtl(uint32_t letter)
{
if(letter >= 'a' && letter <= 'z') return true;
// if(letter >= 0x7f && letter <= 0x2000) return true;
if(letter >= 0x5d0 && letter <= 0x5ea) return true;
// if(letter >= 'a' && letter <= 'z') return true;
return false;
}
@@ -212,7 +216,7 @@ static void rtl_reverse(char * dest, const char * src, uint32_t len)
}
/*Simply store in reversed order*/
else {
uint32_t letter_size = lv_txt_encoded_size((const char *)&letter);
uint32_t letter_size = lv_txt_encoded_size((const char *)&src[i]);
memcpy(&dest[wr], &src[i], letter_size);
wr += letter_size;
}

View File

@@ -366,7 +366,7 @@ static uint8_t lv_txt_utf8_size(const char * str)
return 3;
else if((str[0] & 0xF8) == 0xF0)
return 4;
return 1; /*If the char was invalid step tell it's 1 byte long*/
return 0; /*If the char was invalid tell it's 1 byte long*/
}
/**
@@ -543,7 +543,8 @@ static uint32_t lv_txt_utf8_get_byte_id(const char * txt, uint32_t utf8_id)
uint32_t i;
uint32_t byte_cnt = 0;
for(i = 0; i < utf8_id; i++) {
byte_cnt += lv_txt_encoded_size(&txt[byte_cnt]);
uint8_t c_size = lv_txt_encoded_size(&txt[byte_cnt]);
byte_cnt += c_size > 0 ? c_size : 1;
}
return byte_cnt;