UNPKG

@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
// Based on https://github.com/luizbills/font4x6 by Luiz Bills | License: Public Domain const characters = [ // [0x00, 0x00, 0x00], // U+0020 (space) [0x22, 0x20, 0x20], // U+0021 (!) [0x55, 0x00, 0x00], // U+0022 (") [0x57, 0x57, 0x50], // U+0023 (#) [0x63, 0x67, 0x20], // U+0024 ($) [0x54, 0x21, 0x50], // U+0025 (%) [0x63, 0x65, 0x60], // U+0026 (&) [0x22, 0x00, 0x00], // U+0027 (') [0x21, 0x11, 0x20], // U+0028 (() [0x24, 0x44, 0x20], // U+0029 ()) [0x52, 0x50, 0x00], // U+002a (*) [0x02, 0x72, 0x00], // U+002b (+) [0x00, 0x00, 0x21], // U+002c (,) [0x00, 0x70, 0x00], // U+002d (-) [0x00, 0x00, 0x10], // U+002e (.) [0x44, 0x21, 0x10], // U+002f (/) [0x75, 0x55, 0x70], // U+0030 (0) [0x32, 0x22, 0x70], // U+0031 (1) [0x74, 0x71, 0x70], // U+0032 (2) [0x74, 0x74, 0x70], // U+0033 (3) [0x55, 0x74, 0x40], // U+0034 (4) [0x71, 0x74, 0x70], // U+0035 (5) [0x71, 0x75, 0x70], // U+0036 (6) [0x74, 0x44, 0x40], // U+0037 (7) [0x75, 0x75, 0x70], // U+0038 (8) [0x75, 0x74, 0x70], // U+0039 (9) [0x00, 0x20, 0x20], // U+003a (:) [0x00, 0x20, 0x21], // U+003b (;) [0x42, 0x12, 0x40], // U+003c (<) [0x07, 0x07, 0x00], // U+003d (=) [0x12, 0x42, 0x10], // U+003e (>) [0x74, 0x60, 0x20], // U+003f (?) [0x25, 0x51, 0x60], // U+0040 (@) [0x25, 0x75, 0x50], // U+0041 (A) [0x35, 0x35, 0x30], // U+0042 (B) [0x61, 0x11, 0x60], // U+0043 (C) [0x35, 0x55, 0x30], // U+0044 (D) [0x71, 0x31, 0x70], // U+0045 (E) [0x71, 0x31, 0x10], // U+0046 (F) [0x61, 0x55, 0x60], // U+0047 (G) [0x55, 0x75, 0x50], // U+0048 (H) [0x72, 0x22, 0x70], // U+0049 (I) [0x44, 0x45, 0x20], // U+004a (J) [0x55, 0x35, 0x50], // U+004b (K) [0x11, 0x11, 0x70], // U+004c (L) [0x57, 0x75, 0x50], // U+004d (M) [0x75, 0x55, 0x50], // U+004e (N) [0x25, 0x55, 0x20], // U+004f (O) [0x75, 0x71, 0x10], // U+0050 (P) [0x65, 0x53, 0x60], // U+0051 (Q) [0x35, 0x35, 0x50], // U+0052 (R) [0x61, 0x74, 0x30], // U+0053 (S) [0x72, 0x22, 0x20], // U+0054 (T) [0x55, 0x55, 0x70], // U+0055 (U) [0x55, 0x52, 0x20], // U+0056 (V) [0x55, 0x77, 0x50], // U+0057 (W) [0x55, 0x25, 0x50], // U+0058 (X) [0x55, 0x22, 0x20], // U+0059 (Y) [0x74, 0x21, 0x70], // U+005a (Z) [0x62, 0x22, 0x60], // U+005b ([) [0x11, 0x24, 0x40], // U+005c (\) [0x32, 0x22, 0x30], // U+005d (]) [0x25, 0x00, 0x00], // U+005e (^) [0x00, 0x00, 0x70], // U+005f (_) [0x12, 0x00, 0x00], // U+0060 (`) [0x06, 0x55, 0x60], // U+0061 (a) [0x13, 0x55, 0x30], // U+0062 (b) [0x06, 0x11, 0x60], // U+0063 (c) [0x46, 0x55, 0x60], // U+0064 (d) [0x02, 0x53, 0x60], // U+0065 (e) [0x42, 0x72, 0x20], // U+0066 (f) [0x02, 0x56, 0x42], // U+0067 (g) [0x11, 0x35, 0x50], // U+0068 (h) [0x02, 0x02, 0x20], // U+0069 (i) [0x02, 0x02, 0x21], // U+006a (j) [0x15, 0x35, 0x50], // U+006b (k) [0x22, 0x22, 0x40], // U+006c (l) [0x05, 0x75, 0x50], // U+006d (m) [0x03, 0x55, 0x50], // U+006e (n) [0x02, 0x55, 0x20], // U+006f (o) [0x03, 0x55, 0x31], // U+0070 (p) [0x06, 0x55, 0x64], // U+0071 (q) [0x02, 0x51, 0x10], // U+0072 (r) [0x06, 0x14, 0x30], // U+0073 (s) [0x27, 0x22, 0x40], // U+0074 (t) [0x05, 0x55, 0x60], // U+0075 (u) [0x05, 0x52, 0x20], // U+0076 (v) [0x05, 0x57, 0x50], // U+0077 (w) [0x05, 0x22, 0x50], // U+0078 (x) [0x05, 0x56, 0x42], // U+0079 (y) [0x07, 0x41, 0x70], // U+007a (z) [0x62, 0x12, 0x60], // U+007b ([) [0x22, 0x22, 0x20], // U+007c (|) [0x32, 0x42, 0x30], // U+007d (]) [0x03, 0x60, 0x00], // 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, }