diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2010-09-13 05:19:36 +0300 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2010-09-13 05:19:36 +0300 |
commit | 0e63b6f673544a52078da0981a245d6a03ab9dbd (patch) | |
tree | ebddc7cdd2b397fd8e8c108443a5247618d486f6 /otfl-font-clr.lua | |
parent | 7ae4943ae02f085a8826258bec3a654e830776ac (diff) | |
download | luaotfload-0e63b6f673544a52078da0981a245d6a03ab9dbd.tar.gz |
Sanitize color before attempting to use it
Right now it just checks the number if fields, may be we should check if
it is a valid hex color value as well.
Diffstat (limited to 'otfl-font-clr.lua')
-rw-r--r-- | otfl-font-clr.lua | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/otfl-font-clr.lua b/otfl-font-clr.lua index a6cf63f..dc14b2c 100644 --- a/otfl-font-clr.lua +++ b/otfl-font-clr.lua @@ -15,8 +15,22 @@ local initializers, format = fonts.initializers, string.format table.insert(fonts.triggers,"color") function initializers.common.color(tfmdata,value) + local sanitized + if value then - tfmdata.color = tostring(value) + if #value == 6 or #value == 8 then + sanitized = value + elseif #value == 7 then + _, _, sanitized = value:find("(......)") + elseif #value > 8 then + _, _, sanitized = value:find("(........)") + else + -- broken color code ignored, issue a warning? + end + end + + if sanitized then + tfmdata.color = sanitized add_color_callback() end end |