Lua Texter

  • FeynmanLogomaker
    29th Sep 2013 Member 0 Permalink

    MOVED TO: https://powdertoy.co.uk/Discussions/Thread/View.html?Thread=17722

     

    The code:

     

    if not texter_font then dofile('texter_basic.txt') end
    local newmatrix = function(...)
    local data = {...}
    local get = function(x, y)
    return data[y][x]
    end
    local set = function(n, x, y)
    data[y][x] = n
    return n
    end
    return {data = data, get = get, set = set} or 'ERROR: UNABLE TO CREATE 2-D MATRIX'
    end
    function drawLetter(l, x, y)
    for cx = 0, texter_font['width'] - 1 + texter_font[l]['kerning'] do
    for cy = texter_font[l]['descender'], texter_font['height'] - 1 do
    if texter_font[l]['pixels'][cy + 1 - texter_font[l]['descender']][cx + 1] == 1 then
    tpt.create(x + cx, y + cy - texter_font[l]['descender'], 'dmnd')
    end
    end
    end
    end
    function drawText(t, x, y)
    local cl
    local ox = x
    for p = 1, #t do
    cl = string.sub(t, p, p)
    if cl == '\n' then
    x = ox
    y = y + texter_font['height'] + 4
    elseif texter_font[cl] then
    drawLetter(cl, x, y)
    x = x + texter_font['width'] + 1 + texter_font[cl]['kerning']
    else
    drawLetter('NULL', x, y)
    x = x + texter_font['width'] + 1 + texter_font['NULL']['kerning']
    end
    end
    end

     

    The font:

     

    texter_font = {}
    texter_font['width'] = 5
    texter_font['height'] = 7
    texter_font['a'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 1}
    }
    }
    texter_font['b'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 1, 1, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['c'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['d'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 1},
    {0, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['e'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 1, 1, 1, 0},
    {1, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['f'] = {
    ['descender'] = 0,
    ['kerning'] = -1,
    ['pixels'] = {
    {0, 0, 1, 1, 0},
    {0, 1, 0, 0, 0},
    {1, 1, 1, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['g'] = {
    ['descender'] = -2,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {0, 0, 0, 0, 1},
    {0, 1, 1, 1, 0}
    }
    }
    texter_font['h'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['i'] = {
    ['descender'] = 0,
    ['kerning'] = -4,
    ['pixels'] = {
    {1, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['j'] = {
    ['descender'] = -2,
    ['kerning'] = -2,
    ['pixels'] = {
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 1, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {1, 1, 0, 0, 0}
    }
    }
    texter_font['k'] = {
    ['descender'] = 0,
    ['kerning'] = -1,
    ['pixels'] = {
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 1, 0},
    {1, 0, 1, 0, 0},
    {1, 1, 1, 0, 0},
    {1, 0, 0, 1, 0},
    {1, 0, 0, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['l'] = {
    ['descender'] = 0,
    ['kerning'] = -4,
    ['pixels'] = {
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['m'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 1, 0, 1, 0},
    {1, 0, 1, 0, 1},
    {1, 0, 1, 0, 1},
    {1, 0, 1, 0, 1},
    {1, 0, 1, 0, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['n'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 1, 1, 0},
    {1, 1, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['o'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['p'] = {
    ['descender'] = -2,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 1, 1, 1, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 1, 1, 1, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0}
    }
    }
    texter_font['q'] = {
    ['descender'] = -2,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {0, 0, 0, 0, 1},
    {0, 0, 0, 0, 1}
    }
    }
    texter_font['r'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 1, 1, 0},
    {1, 1, 0, 0, 1},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {1, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['s'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {1, 0, 0, 0, 0},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 1},
    {0, 1, 1, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['t'] = {
    ['descender'] = 0,
    ['kerning'] = -2,
    ['pixels'] = {
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {1, 1, 1, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 1, 0, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['u'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 1, 1, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['v'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 0, 1, 0},
    {0, 1, 0, 1, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['w'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 1, 0, 1},
    {1, 0, 1, 0, 1},
    {1, 0, 1, 0, 1},
    {0, 1, 0, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['x'] = {
    ['descender'] = 0,
    ['kerning'] = -1,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 1, 0},
    {1, 0, 0, 1, 0},
    {0, 1, 1, 0, 0},
    {1, 0, 0, 1, 0},
    {1, 0, 0, 1, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['y'] = {
    ['descender'] = -2,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {0, 1, 0, 1, 0},
    {0, 1, 0, 1, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 1, 0, 0, 0}
    }
    }
    texter_font['z'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {1, 1, 1, 1, 1},
    {0, 0, 0, 1, 0},
    {0, 0, 1, 0, 0},
    {0, 1, 0, 0, 0},
    {1, 1, 1, 1, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font[' '] = {
    ['descender'] = 0,
    ['kerning'] = -4,
    ['pixels'] = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }
    texter_font['NULL'] = {
    ['descender'] = 0,
    ['kerning'] = 0,
    ['pixels'] = {
    {1, 1, 1, 1, 1},
    {1, 0, 0, 1, 1},
    {1, 1, 1, 0, 1},
    {1, 1, 0, 1, 1},
    {1, 1, 1, 1, 1},
    {1, 1, 0, 1, 1},
    {1, 1, 1, 1, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0}
    }
    }

     

    Save the font as 'texter_basic.txt' and the texter itself as whatever you want. I will add an uppercase really soon, and a way to do it on a press of a button after that.

    Edited once by FeynmanLogomaker. Last: 29th Sep 2013
Locked by jacob1: duplicate