[修正] Firemonkey 中英文混排折行,省略字符,首字避開標點


問題:FMX 在移動平台的文字顯示並非由該平台的原生 API 來顯示,而是由 FMX.TextLayout.GPU 來處理,也許是官方沒留意到中文字符的問題,造成在中英文混排折行時,有些問題。

修正:這個修正適用在任何文字顯示的函數及控件上,如:TText, TLabel, DrawText....等。

適用:Android & iOS 平台

 

修正 1:提供二種折行方式(只能選擇一種方式)

  1. 中英文混排折行
  2. 單字符折行
請將源碼 FMX.TextLayout.GPU.pas 復制到自己的工程目錄里,再進行修改。
找到代碼:
while (WordBeginIndex > LRun.StartIndex) and (Text.Chars[WordBeginIndex - 1].GetUnicodeCategory <> TUnicodeCategory.ucSpaceSeparator) do

折行方式1:中英文混排折行(此種折行方式,才是跨所有平台都相同的折行方式)
while (WordBeginIndex > LRun.StartIndex) and not (Text.Chars[WordBeginIndex - 1].GetUnicodeCategory in [TUnicodeCategory.ucSpaceSeparator, TUnicodeCategory.ucOtherLetter]) do

折行方式2:單字符折行
while (WordBeginIndex > LRun.StartIndex) do
中英文混排折行:未修正 中英文混排折行:修正后 單字符折行

修正 2:修正顯示省略字符 2017/01/11 

顯示省略字符:修正前 顯示省略字符:修正后 對照 Windows

修正 3:修正首字避開標點字符 2017/01/13

首字避開標點字符:修正前 首字避開標點字符:修正后 左括號,右引號允許在首字
右括號,右引號其它標點允許在首字

由於改動地方較多,請下載后將 FMX.TextLayout.GPU.pas 復制到自己的工程目錄里即可。

修正下載:

官方 QC:https://quality.embarcadero.com/browse/RSP-16590


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM