BUG|Flutter文本字符打點和國際化

當文本要按照字符進行打點時厕吉,需要注意不是所有語言都適合。

發(fā)現(xiàn)問題

中東地區(qū)運營人員反饋吹害,紅框圈出來的兩處阿拉伯文本顯示異常均函,可以參考正文內容是正常的亿虽。


定位原因

現(xiàn)在讓昵稱區(qū)和正文區(qū)顯示同一段文本,可見確實有所不同:



通過代碼對比發(fā)現(xiàn)边酒,區(qū)別在于是否對文本進行“空格替換”:

text.replaceAll('', '\u200b')

\u200b是個寬度為0的空格经柴,那么替換的作用是什么呢?舉個例子如下圖墩朦,這里展示現(xiàn)支持的所有語言坯认,左邊是一端段完整文本,右邊是限制了文本可展示寬度后的打點效果氓涣,可以看到牛哺,默認情況下會按照單詞進行打點。


大多數(shù)場景這種打點規(guī)則其實沒什么問題劳吠,但有些場景就不太行了引润。試想下如果用戶昵稱是如
“AAAAAAAAAAAAAAAAAAAAAAAA”這種較長且連續(xù)的單詞,一旦被打點就會被完全省略成“...”痒玩,再比如一些固定寬度的按鈕淳附,希望是盡可能多地填滿而不是留一塊空格议慰。其實就是按照字符打點,所以引入“零寬空格”把每個字符隔開當作單獨的“單詞”奴曙,打點效果如圖:

看起來不錯别凹,但眼尖的可能會發(fā)現(xiàn)阿拉伯語在打點前后發(fā)生變化了,這是因為阿拉伯字母有著復雜的變形規(guī)則:

計算機在顯示阿拉伯字母時洽糟,會根據(jù)選擇阿拉伯字母的書寫風格炉菲、當前選擇的字體、顯示位置坤溃、書寫空間等情況拍霜,將字母原型經過Shape(字母位置變形)、Ligature(字母連寫變形)薪介、Diacritics(字母標注變元音符號變形)祠饺、Kashida(為了湊滿一整行字母延長變形)、Tatwell(插入字母鏈接符號)等等一系列的操作昭灵,才可以將一段阿拉伯字母渲染輸出吠裆。
其中伐谈,最主要的變形是Shape和Ligature烂完。用漢語來粗略比喻,就像“不好”要顯示成“孬”诵棵、“混凝土”要顯示成“砼”抠蚣、“不用”要顯示成“甭”等等。

解決辦法

因此不能隨便在阿拉伯字母中插入其他字符履澳,這會影響到其變形規(guī)則導致錯誤嘶窄。解決辦法是先保證其正確顯示,這里判斷下不再對阿拉伯語進行替換:

static String getSpaceReplaceText(String text) {
  if (UserInfoHolder.lang.toLowerCase().startsWith("ar")) {
    return text;
  }
  return text.replaceAll('', '\u200b');
}

然后再考慮打點的問題距贷,事實上阿拉伯字母的連寫規(guī)則本身就有縮短文本寬度的目的柄冲,甚至之前經過替換后由于展示不下被打點的文本,改成不替換后反倒能完全展示了忠蝗。

總結

除了阿拉伯語有使用阿拉伯字母现横,波斯語、達里語阁最、哈薩克語戒祠、中國的維吾爾語等也在應用,當前尚未引入相關地區(qū)語言速种,因此如果涉及到這些地區(qū)姜盈,同樣的都不能進行替換。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末配阵,一起剝皮案震驚了整個濱河市馏颂,隨后出現(xiàn)的幾起案子示血,更是在濱河造成了極大的恐慌,老刑警劉巖救拉,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矾芙,死亡現(xiàn)場離奇詭異,居然都是意外死亡近上,警方通過查閱死者的電腦和手機剔宪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壹无,“玉大人葱绒,你說我怎么就攤上這事《范В” “怎么了地淀?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岖是。 經常有香客問我帮毁,道長,這世上最難降的妖魔是什么豺撑? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任烈疚,我火速辦了婚禮,結果婚禮上聪轿,老公的妹妹穿的比我還像新娘爷肝。我一直安慰自己,他們只是感情好陆错,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布灯抛。 她就那樣靜靜地躺著,像睡著了一般音瓷。 火紅的嫁衣襯著肌膚如雪对嚼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天绳慎,我揣著相機與錄音纵竖,去河邊找鬼。 笑死偷线,一個胖子當著我的面吹牛磨确,可吹牛的內容都是我干的。 我是一名探鬼主播声邦,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼乏奥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亥曹?” 一聲冷哼從身側響起邓了,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恨诱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骗炉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體照宝,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年句葵,在試婚紗的時候發(fā)現(xiàn)自己被綠了厕鹃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡乍丈,死狀恐怖剂碴,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情轻专,我是刑警寧澤忆矛,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站请垛,受9級特大地震影響催训,放射性物質發(fā)生泄漏。R本人自食惡果不足惜宗收,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一漫拭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镜雨,春花似錦嫂侍、人聲如沸儿捧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菲盾。三九已至颓影,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懒鉴,已是汗流浹背诡挂。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留临谱,地道東北人璃俗。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像悉默,于是被迫代替她去往敵國和親城豁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容