1樓:海盜船長
完美的方法:檢視二進位制位元組碼,utf8編碼規則,每乙個以1開頭的位元組表示乙個字元的開始,所以有多少個1開頭的位元組,就有多少個字元。問,怎麼檢視位元組碼,如果語言不支援,那就從記憶體裡面,拿個顯微鏡和萬用電表,自己測一測吧
2樓:被遺失De跳刀
渲染長度本身是和編碼沒有關係的,編碼只是說什麼字對應的計算機記憶體資料是什麼,渲染是由字型檔案決定的。
我知道的字型渲染在遊戲領域用的比較多的是freetype,它的功能就是給定乙個字型檔案和乙個編碼,然後可以獲得乙個8位的點陣圖,然後再由引擎把這個位圖渲染到螢幕上,所以渲染的寬度是由你的字型檔案,和字型大小決定的,就是你這個點陣圖的size。
回到問題本身,給定一段文字
foreach utf8編碼
獲取位圖;
渲染;寬度累加;
if 超過規定長度,
補充渲染「...」
break;
endend
希望有幫助
3樓:lbblscy
關鍵不在於UTF-8編碼,還要考慮渲染採用的字型、字型大小、樣式等引數。
可以借鑑Qt裡面QFontMetrics的實現:
4樓:hillin
每個文字渲染引擎都會提供這樣的功能。Unity裡面可以用這個:
5樓:Belleve
中英文的話你有字型就可以讀尺寸(hmtx/CFF)算出來。但是你要支援其他語種……
這是 Devanagari 的排版過程,經過了大量的符號替換、順序重排,來,你知道具體的規則麼?
烏爾都語使用的 Nastaliq 式阿拉伯文甚至是斜的
6樓:
渲染的長度,那還和字型字型大小字型有關啊~~你到底要渲染效果還是只是要算一下字串佔位數量?
拋開字型的問題,單說不同語言的文字,根據unicode碼表,所有支援的語言,你基本總結一下你需要的文字每個字元的寬度,比如你說的英文1,中文2,還有其他的。
具體判斷語言就按照unicode碼表來,比如:
Armenia:0x0530, 0x058f
Arabic:0x0600, 0x06FF;0x0750, 0x077F;0xFB50, 0xFDFF;0xFE70, 0xFEFF
中日韓漢字:0x4E00, 0x9FBF;0x3400, 0x4DBF;0x20000, 0x2A6DF;0xF900, 0xFAFF;0x2F800, 0x2FA1F;
c語言怎麼從字串中提取自己想要的字元?
如果僅限英文本母數字等鍵盤上打的出的符號,那問題在於 你想要 的字元是啥,怎麼定義想要 滿足什麼條件 條件複雜可能還要用到正規表示式,甚至自己寫parser 坑是無窮無盡的,一切取決於你想要啥 如果包含中文等等世界各國語言的字元,還需要去學習 字元編碼 utf 8 gbk utf 16le utf ...
Python中怎麼提取字串中的漢字?
Datawhale 採用正規表示式的方法對字串進行處理。str1 我 是,速 度 發 中 國 人 1 提取漢字 漢字的範圍為 u4e00 u9fa5 這個是用Unicode表示的 import reres1 join re findall u4e00 u9fa5 str1 print res1 輸出...
求助高手,關於C語言的,怎麼在統計字串的基礎上判斷我輸入的是英文本母?
參考思路是先分詞,再判斷每個詞是不是乙個單詞。模型先簡單點,假設分隔單詞的字元只有空格,單詞只由英文本元組成而且大小寫不敏感。分詞就要實現 string.Split C 語言沒有作為基礎型別的 string,要麼實現乙個,要麼轉換思路 因為只有讀取動作,返回 char 不一定要另外開闢記憶體,比如接...