iOS 文字强制右到左(RTL) 左到右(LTR) 阿拉伯语和其他语音混合问题解决

Apple 使用“Unicode 双向算法”来呈现文本。
如果字符串中的第一个字符是 LTR(左到右),则算法将字符串其余部分的表示视为 LTR(右到左)。所以当英文跟阿拉伯语混在一起的时候,英语一定展示在前面(英语在前,就是LTR,所以英语在左边;阿拉伯语在前,就是RTL,在后面的英语就会在左边展示)

如果要强制RTL需要在文本前后各加一个特殊符号,文案前加\u200F ,文案后加\u202c。表示这段话要RTL,例如:

[NSString stringWithFormat:@"\u200F%@\u202c", @"your string with RTL content"]

如果要强制LTR需要在文本前后各加一个特殊符号,文案前加\u200E,文案后加\u202c。 表示这段话要LTR,例如:

[NSString stringWithFormat:@"\u200E%@\u202c", @"your string with LTR content"]

如果有换行的话,要在每行各自进行处理,例如这样:

NSString *str = @" فقط \n\u200Fabcdكل شهر \u202c";

在这里插入图片描述

如果没有加特殊字符就会这样:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/htwhtw123/article/details/127575340