bidi: fixes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user