@litecanvas/plugin-pixel-font
Version:
Plugin to let you render a pixel font to emulate retro vibes in your Litecanvas projects.
130 lines (126 loc) • 4.12 kB
JavaScript
// Based on https://github.com/luizbills/font4x6 by Luiz Bills | License: Public Domain
const characters = [
// [0x00, 0x00, 0x00], // U+0020 (space)
[], // U+0021 (!)
[], // U+0022 (")
[], // U+0023 (#)
[], // U+0024 ($)
[], // U+0025 (%)
[], // U+0026 (&)
[], // U+0027 (')
[], // U+0028 (()
[], // U+0029 ())
[], // U+002a (*)
[], // U+002b (+)
[], // U+002c (,)
[], // U+002d (-)
[], // U+002e (.)
[], // U+002f (/)
[], // U+0030 (0)
[], // U+0031 (1)
[], // U+0032 (2)
[], // U+0033 (3)
[], // U+0034 (4)
[], // U+0035 (5)
[], // U+0036 (6)
[], // U+0037 (7)
[], // U+0038 (8)
[], // U+0039 (9)
[], // U+003a (:)
[], // U+003b (;)
[], // U+003c (<)
[], // U+003d (=)
[], // U+003e (>)
[], // U+003f (?)
[], // U+0040 (@)
[], // U+0041 (A)
[], // U+0042 (B)
[], // U+0043 (C)
[], // U+0044 (D)
[], // U+0045 (E)
[], // U+0046 (F)
[], // U+0047 (G)
[], // U+0048 (H)
[], // U+0049 (I)
[], // U+004a (J)
[], // U+004b (K)
[], // U+004c (L)
[], // U+004d (M)
[], // U+004e (N)
[], // U+004f (O)
[], // U+0050 (P)
[], // U+0051 (Q)
[], // U+0052 (R)
[], // U+0053 (S)
[], // U+0054 (T)
[], // U+0055 (U)
[], // U+0056 (V)
[], // U+0057 (W)
[], // U+0058 (X)
[], // U+0059 (Y)
[], // U+005a (Z)
[], // U+005b ([)
[], // U+005c (\)
[], // U+005d (])
[], // U+005e (^)
[], // U+005f (_)
[], // U+0060 (`)
[], // U+0061 (a)
[], // U+0062 (b)
[], // U+0063 (c)
[], // U+0064 (d)
[], // U+0065 (e)
[], // U+0066 (f)
[], // U+0067 (g)
[], // U+0068 (h)
[], // U+0069 (i)
[], // U+006a (j)
[], // U+006b (k)
[], // U+006c (l)
[], // U+006d (m)
[], // U+006e (n)
[], // U+006f (o)
[], // U+0070 (p)
[], // U+0071 (q)
[], // U+0072 (r)
[], // U+0073 (s)
[], // U+0074 (t)
[], // U+0075 (u)
[], // U+0076 (v)
[], // U+0077 (w)
[], // U+0078 (x)
[], // U+0079 (y)
[], // U+007a (z)
[], // U+007b ([)
[], // U+007c (|)
[], // U+007d (])
[], // U+007e (~)
// [0x00, 0x00, 0x00], // U+007f
]
/**
* @param {LitecanvasInstance} engine
* @param {(number|undefined)[]} bitmap
* @param {number?} color
*/
const render = (engine, bitmap, color = 3) => {
for (y = 0; y < 6; y++) {
for (x = 0; x < 4; x++) {
const i = ~~(y / 2)
if ((y % 2 ? bitmap[i] & 0x0f : bitmap[i] >> 4) & (1 << x)) {
engine.rectfill(x, y, 1, 1, color)
}
}
}
}
export const font = {
id: 'mini',
chars: characters,
// first char code
first: 33,
// char width
w: 4,
// char height
h: 6,
// char renderer
render,
}