Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --BY KROBYS
- local methods = {}
- local chars = { { charWidth = 0, char = '§'},
- { charWidth = 5, char = 'A' }, { charWidth = 5, char = 'B' },
- { charWidth = 5, char = 'C' }, { charWidth = 5, char = 'D' },
- { charWidth = 5, char = 'E' }, { charWidth = 5, char = 'F' },
- { charWidth = 5, char = 'G' }, { charWidth = 5, char = 'H' },
- { charWidth = 3, char = 'I' }, { charWidth = 5, char = 'J' },
- { charWidth = 5, char = 'K' }, { charWidth = 5, char = 'L' },
- { charWidth = 5, char = 'M' },
- { charWidth = 5, char = 'N' }, { charWidth = 5, char = 'O' },
- { charWidth = 5, char = 'P' }, { charWidth = 5, char = 'Q' },
- { charWidth = 5, char = 'R' }, { charWidth = 5, char = 'S' },
- { charWidth = 5, char = 'T' }, { charWidth = 5, char = 'U' },
- { charWidth = 5, char = 'V' }, { charWidth = 5, char = 'W' },
- { charWidth = 5, char = 'X' }, { charWidth = 5, char = 'Y' },
- { charWidth = 5, char = 'Z' }, { charWidth = 5, char = 'a' },
- { charWidth = 5, char = 'b' }, { charWidth = 5, char = 'c' },
- { charWidth = 5, char = 'd' }, { charWidth = 5, char = 'e' },
- { charWidth = 4, char = 'f' }, { charWidth = 5, char = 'g' },
- { charWidth = 5, char = 'h' }, { charWidth = 1, char = 'i' },
- { charWidth = 5, char = 'j' }, { charWidth = 4, char = 'k' },
- { charWidth = 2, char = 'l' }, { charWidth = 5, char = 'm' },
- { charWidth = 5, char = 'n' }, { charWidth = 5, char = 'o' },
- { charWidth = 5, char = 'p' }, { charWidth = 5, char = 'q' },
- { charWidth = 5, char = 'r' }, { charWidth = 5, char = 's' },
- { charWidth = 3, char = 't' }, { charWidth = 5, char = 'u' },
- { charWidth = 5, char = 'v' }, { charWidth = 5, char = 'w' },
- { charWidth = 5, char = 'x' }, { charWidth = 5, char = 'y' },
- { charWidth = 5, char = 'z' }, { charWidth = 5, char = 'А' },
- { charWidth = 5, char = 'Б' }, { charWidth = 5, char = 'В' },
- { charWidth = 5, char = 'Г' }, { charWidth = 5, char = 'Д' },
- { charWidth = 5, char = 'Е' }, { charWidth = 4, char = 'Ё' },
- { charWidth = 5, char = 'Ж' }, { charWidth = 5, char = 'З' },
- { charWidth = 5, char = 'И' }, { charWidth = 5, char = 'Й' },
- { charWidth = 5, char = 'К' }, { charWidth = 5, char = 'Л' },
- { charWidth = 5, char = 'М' }, { charWidth = 5, char = 'Н' },
- { charWidth = 5, char = 'О' }, { charWidth = 5, char = 'П' },
- { charWidth = 5, char = 'Р' }, { charWidth = 5, char = 'С' },
- { charWidth = 5, char = 'Т' }, { charWidth = 5, char = 'У' },
- { charWidth = 5, char = 'Ф' }, { charWidth = 5, char = 'Х' },
- { charWidth = 6, char = 'Ц' }, { charWidth = 5, char = 'Ч' },
- { charWidth = 5, char = 'Ш' }, { charWidth = 6, char = 'Щ' },
- { charWidth = 5, char = 'Ъ' }, { charWidth = 6, char = 'Ы' },
- { charWidth = 4, char = 'Ь' }, { charWidth = 5, char = 'Э' },
- { charWidth = 6, char = 'Ю' }, { charWidth = 5, char = 'Я' },
- { charWidth = 5, char = 'а' }, { charWidth = 6, char = 'Ю' },
- { charWidth = 4, char = 'Ь' }, { charWidth = 5, char = 'б' },
- { charWidth = 5, char = 'в' }, { charWidth = 5, char = 'г' },
- { charWidth = 5, char = 'ё' }, { charWidth = 5, char = 'ж' },
- { charWidth = 5, char = 'з' }, { charWidth = 5, char = 'и' },
- { charWidth = 5, char = 'й' }, { charWidth = 5, char = 'к' },
- { charWidth = 5, char = 'л' }, { charWidth = 5, char = 'м' },
- { charWidth = 5, char = 'н' }, { charWidth = 5, char = 'о' },
- { charWidth = 5, char = 'п' }, { charWidth = 5, char = 'р' },
- { charWidth = 5, char = 'с' }, { charWidth = 5, char = 'т' },
- { charWidth = 5, char = 'у' }, { charWidth = 5, char = 'ф' },
- { charWidth = 5, char = 'х' }, { charWidth = 5, char = 'ц' },
- { charWidth = 5, char = 'ч' }, { charWidth = 5, char = 'ш' },
- { charWidth = 6, char = 'щ' }, { charWidth = 6, char = 'ъ' },
- { charWidth = 6, char = 'ы' }, { charWidth = 5, char = 'ь' },
- { charWidth = 5, char = 'э' }, { charWidth = 6, char = 'ю' },
- { charWidth = 5, char = 'я' }, { charWidth = 1, char = '!' },
- { charWidth = 6, char = "@" }, { charWidth = 5, char = "#" },
- { charWidth = 5, char = "$" }, { charWidth = 5, char = "%" },
- { charWidth = 5, char = "^" }, { charWidth = 5, char = "&" },
- { charWidth = 4, char = "*" }, { charWidth = 4, char = "(" },
- { charWidth = 4, char = ")" }, { charWidth = 5, char = "-" },
- { charWidth = 5, char = "_" }, { charWidth = 5, char = "=" },
- { charWidth = 5, char = "+" }, { charWidth = 3, char = "[" },
- { charWidth = 3, char = "]" }, { charWidth = 4, char = "{" },
- { charWidth = 4, char = "}" }, { charWidth = 1, char = ";" },
- { charWidth = 1, char = ":" }, { charWidth = 3, char = " " },
- { charWidth = 4, char = "\\"}, { charWidth = 1, char = "," },
- { charWidth = 1, char = "." }, { charWidth = 5, char = "/" },
- { charWidth = 5, char = "<" }, { charWidth = 5, char = ">" },
- { charWidth = 5, char = "?" }, { charWidth = 1, char = "/" }
- }
- local defaultCharWidth = 5
- local unicode = require("unicode")
- function methods.checkWidth(string)
- local stringPixelsWidth = 0.0 -- use a floating-point number
- local ignoreNext = false
- for i = 1, unicode.len(string) do
- local wasCharFound = false
- local char = unicode.sub(string, i, i)
- if ignoreNext then
- ignoreNext = false
- elseif char == '§' then
- ignoreNext = true
- --ignore this and next after this
- else
- for key, value in ipairs(chars) do
- if value.char == char then
- stringPixelsWidth = stringPixelsWidth + value.charWidth + 0.5 -- add half pixel distance
- wasCharFound = true
- break
- end
- end
- if not wasCharFound then
- stringPixelsWidth = stringPixelsWidth + defaultCharWidth + 0.5 -- add half pixel distance
- end
- ignoreNext = false
- end
- end
- return math.floor(stringPixelsWidth) -- round down to integer
- end
- return methods
Advertisement
Add Comment
Please, Sign In to add comment