创建一个label,字体改为水平向右对齐,就会出现这个问题
外语用系统字体都很容易出现这个,最好下载个字体,但也不能完全避免
用2.3.1版本的时候就有这个问题,试试把label的宽度固定试试,别用默认的label自适应宽度。
这个问题我也遇到过,换行都有可能产生截断,目前的处理方式就是设置为左对齐根据对话框大小进行补空格
加个空格,或者不管,在真机上不会出现问题
目前我是在web端上发现有这个问题,这个截断问题在阿拉伯文本加空格我试过是无效的,只能左对齐后去补齐空格 
//阿拉伯语特殊处理
let CCLabel = Label;
Object.defineProperty(CCLabel.prototype, ‘string’, {
set(value: string) {
let self = this as Label;
if (value === null || value === undefined) {
value = '';
} else {
value = value.toString();
}
if (this._string === value) {
return;
}
const win = window as any;
// if (win._languageData.language == "ar" && self.horizontalAlign == Label.HorizontalAlign.RIGHT) {
// value = " " + value + " ";
// }
if (win._languageData.language == "ar") {
value = Reshaper.default.reshape(value);
if (self.overflow == Label.Overflow.RESIZE_HEIGHT || this.target_resize) {
this.target_resize = true;
self.overflow = Label.Overflow.SHRINK;
let size = self.node.getComponent(UITransform).contentSize;
let height = size.height;
let max = size.width / self.fontSize / 0.4;
let index = 0;
let h = 1;
for (let i = 0; i < value.length; i++) {
index++;
let str = value[i];
if (index >= max) {
if (str == ' ') {
value = insertStr(value, i, '\n');
i++;
index = 0;
h++;
}
}
}
self.node.getComponent(UITransform).setContentSize(size.width, self.lineHeight * 1.26 + (self.lineHeight * (h - 1)));
}
}
// options
// Reshaper.reshape(arabicWord, {
// ligatures: true,
// delete_harakat: false
// });
this._string = value;
this.updateRenderData();
}
3赞
自己写了一套排版方法适配阿拉伯语.需要用到npm下载的库js-arabic-reshaper(这个处理过的字体浏览器乱码,原生没问题,处理过的字体如果不换行是没问题的,以上代码只是解决阿拉伯语换行单词被切成两半的问题)
1赞
支持一下良心妹子
请问下 阿拉伯文本 顺序被打乱是如何处理的
不是顺序被打乱,而是阿拉伯人的阅读方式吧.
mark.
