Lua判断字符宽度值

function UtilCalcStrWidth(str,size, lan)
local fontSize = size
local
lenInByte = #str
local
width = 0

for i=1,lenInByte do
local
curByte = string.byte(str, i)
local byteCount = 1;
if curByte>0 and curByte<=127 then
byteCount = 1
elseif curByte>=192 and curByte<223 then
byteCount = 2
elseif curByte>=224 and curByte<239 then
byteCount = 3
elseif curByte>=240 and curByte<=247 then
byteCount = 4
end

local
char = string.sub(str, i, i+byteCount-1)
i = i + byteCount -1

if byteCount == 1 then
width = width + fontSize * 0.5
--print(char)
else
width = width + fontSize
--print(char)
end
end
--print("总宽度: "..width)
if lan == Language_index.SAUDIARABIA then
return
width / 1.5
else
return
width
end
end


在多语言中,各个国家的文字算出来的宽度不是很准确,目前原因还不明。。。

留下评论

电子邮件地址不会被公开。 必填项已用*标注