Merge pull request #27 from laelnasan/utf8-printing-support
Utf8 printing support
This commit is contained in:
@@ -127,8 +127,20 @@ function label:splitext(text, width)
|
|||||||
for idx = 1, #lines do
|
for idx = 1, #lines do
|
||||||
local line = lines[idx]
|
local line = lines[idx]
|
||||||
while #line > width do
|
while #line > width do
|
||||||
table.insert(result, line:sub(1, width))
|
local size = 0
|
||||||
line = line:sub(width + 1)
|
for i = 1, #line do
|
||||||
|
if (line:byte(i) & 0xc0) ~= 0x80 then
|
||||||
|
size = size + 1
|
||||||
|
if size > width then
|
||||||
|
table.insert(result, line:sub(1, i - 1))
|
||||||
|
line = line:sub(i)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if size <= width then
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
table.insert(result, line)
|
table.insert(result, line)
|
||||||
end
|
end
|
||||||
|
@@ -77,16 +77,18 @@ function textedit:on_event(e)
|
|||||||
|
|
||||||
-- update text
|
-- update text
|
||||||
if e.type == event.ev_keyboard then
|
if e.type == event.ev_keyboard then
|
||||||
if e.key_code > 0x1f and e.key_code < 0x7f then
|
if e.key_name == "Enter" and self:option("multiline") then
|
||||||
self:text_set(self:text() .. e.key_name)
|
|
||||||
return true
|
|
||||||
elseif e.key_name == "Enter" and self:option("multiline") then
|
|
||||||
self:text_set(self:text() .. '\n')
|
self:text_set(self:text() .. '\n')
|
||||||
return true
|
return true
|
||||||
elseif e.key_name == "Backspace" then
|
elseif e.key_name == "Backspace" then
|
||||||
local text = self:text()
|
local text = self:text()
|
||||||
if #text > 0 then
|
if #text > 0 then
|
||||||
self:text_set(text:sub(1, #text - 1))
|
local size = 1
|
||||||
|
-- while continuation byte
|
||||||
|
while (text:byte(#text - size + 1) & 0xc0) == 0x80 do
|
||||||
|
size = size + 1
|
||||||
|
end
|
||||||
|
self:text_set(text:sub(1, #text - size))
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
elseif e.key_name == "CtrlV" then
|
elseif e.key_name == "CtrlV" then
|
||||||
@@ -95,6 +97,9 @@ function textedit:on_event(e)
|
|||||||
self:text_set(self:text() .. pastetext)
|
self:text_set(self:text() .. pastetext)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
|
elseif e.key_code > 0x1f and e.key_code < 0xf8 then
|
||||||
|
self:text_set(self:text() .. string.char(e.key_code))
|
||||||
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user