🌍 Font Latin-1 completo para soporte español/europeo
- Nuevo font_data.zig con datos de glifos separados - font_8x8_ascii: ASCII básico (32-126) - font_8x8_latin1: Latin-1 completo (32-255) - Soporte español: ñ, Ñ, á, é, í, ó, ú, ü, ¿, ¡ - Soporte europeo: français, deutsch, português, italiano - Exports: default_font_latin1, font_data 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
14d717d7f4
commit
520c5d7343
3 changed files with 528 additions and 199 deletions
|
|
@ -1,10 +1,18 @@
|
||||||
//! Font - Bitmap font rendering
|
//! Font - Bitmap font rendering
|
||||||
//!
|
//!
|
||||||
//! Simple bitmap font for basic text rendering.
|
//! Bitmap font support with multiple character sets:
|
||||||
//! For TTF support, see ttf.zig.
|
//! - ASCII (32-126): Basic English characters
|
||||||
|
//! - Latin-1 (32-255): Full Western European (Spanish, French, German, etc.)
|
||||||
|
//!
|
||||||
|
//! Available fonts:
|
||||||
|
//! - default_font: 8x8 ASCII (95 chars) - lightweight
|
||||||
|
//! - default_font_latin1: 8x8 Latin-1 (224 chars) - Spanish/European support
|
||||||
|
//!
|
||||||
|
//! For TrueType font support, see ttf.zig.
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
pub const ttf = @import("ttf.zig");
|
pub const ttf = @import("ttf.zig");
|
||||||
|
pub const font_data = @import("font_data.zig");
|
||||||
|
|
||||||
const Style = @import("../core/style.zig");
|
const Style = @import("../core/style.zig");
|
||||||
const Layout = @import("../core/layout.zig");
|
const Layout = @import("../core/layout.zig");
|
||||||
|
|
@ -119,212 +127,32 @@ pub const Font = struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// Built-in 8x8 font
|
// Built-in Bitmap Fonts
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
/// Simple 8x8 bitmap font (ASCII 32-126)
|
/// 8x8 ASCII font (characters 32-126)
|
||||||
|
/// Lightweight font for basic English text.
|
||||||
|
/// Use default_font_latin1 for Spanish/European language support.
|
||||||
pub const default_font = Font{
|
pub const default_font = Font{
|
||||||
.glyphs = &default_font_data,
|
.glyphs = &font_data.font_8x8_ascii,
|
||||||
.char_width = 8,
|
.char_width = 8,
|
||||||
.char_height = 8,
|
.char_height = 8,
|
||||||
.first_char = 32,
|
.first_char = 32,
|
||||||
.num_chars = 95,
|
.num_chars = 95,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 8x8 font data for ASCII 32-126 (complete font)
|
/// 8x8 Latin-1 font (characters 32-255)
|
||||||
// Each character is 8 bytes (8 rows, 1 byte per row)
|
/// Full Western European character support including:
|
||||||
// Based on classic PC BIOS font
|
/// - Spanish: ñ, Ñ, á, é, í, ó, ú, ü, ¿, ¡
|
||||||
const default_font_data = [95 * 8]u8{
|
/// - French: é, è, ê, ë, à, â, ç, etc.
|
||||||
// Space (32)
|
/// - German: ä, ö, ü, ß
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
/// - Portuguese, Italian, and more
|
||||||
// ! (33)
|
pub const default_font_latin1 = Font{
|
||||||
0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
.glyphs = &font_data.font_8x8_latin1,
|
||||||
// " (34)
|
.char_width = 8,
|
||||||
0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
.char_height = 8,
|
||||||
// # (35)
|
.first_char = 32,
|
||||||
0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
|
.num_chars = 224, // 32-255
|
||||||
// $ (36)
|
|
||||||
0x18, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x18, 0x00,
|
|
||||||
// % (37)
|
|
||||||
0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
|
|
||||||
// & (38)
|
|
||||||
0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
|
|
||||||
// ' (39)
|
|
||||||
0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
// ( (40)
|
|
||||||
0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00,
|
|
||||||
// ) (41)
|
|
||||||
0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00,
|
|
||||||
// * (42)
|
|
||||||
0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
|
|
||||||
// + (43)
|
|
||||||
0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
|
|
||||||
// , (44)
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
|
|
||||||
// - (45)
|
|
||||||
0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
// . (46)
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
|
|
||||||
// / (47)
|
|
||||||
0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
|
|
||||||
// 0 (48)
|
|
||||||
0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0x7C, 0x00,
|
|
||||||
// 1 (49)
|
|
||||||
0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
|
||||||
// 2 (50)
|
|
||||||
0x7C, 0xC6, 0x06, 0x7C, 0xC0, 0xC0, 0xFE, 0x00,
|
|
||||||
// 3 (51)
|
|
||||||
0x7C, 0xC6, 0x06, 0x3C, 0x06, 0xC6, 0x7C, 0x00,
|
|
||||||
// 4 (52)
|
|
||||||
0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00,
|
|
||||||
// 5 (53)
|
|
||||||
0xFE, 0xC0, 0xFC, 0x06, 0x06, 0xC6, 0x7C, 0x00,
|
|
||||||
// 6 (54)
|
|
||||||
0x7C, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0x7C, 0x00,
|
|
||||||
// 7 (55)
|
|
||||||
0xFE, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
|
|
||||||
// 8 (56)
|
|
||||||
0x7C, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
|
||||||
// 9 (57)
|
|
||||||
0x7C, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x7C, 0x00,
|
|
||||||
// : (58)
|
|
||||||
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00,
|
|
||||||
// ; (59)
|
|
||||||
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30,
|
|
||||||
// < (60)
|
|
||||||
0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00,
|
|
||||||
// = (61)
|
|
||||||
0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00,
|
|
||||||
// > (62)
|
|
||||||
0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00,
|
|
||||||
// ? (63)
|
|
||||||
0x7C, 0xC6, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
|
||||||
// @ (64)
|
|
||||||
0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x7C, 0x00,
|
|
||||||
// A (65)
|
|
||||||
0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
|
|
||||||
// B (66)
|
|
||||||
0xFC, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xFC, 0x00,
|
|
||||||
// C (67)
|
|
||||||
0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00,
|
|
||||||
// D (68)
|
|
||||||
0xF8, 0xCC, 0xC6, 0xC6, 0xC6, 0xCC, 0xF8, 0x00,
|
|
||||||
// E (69)
|
|
||||||
0xFE, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xFE, 0x00,
|
|
||||||
// F (70)
|
|
||||||
0xFE, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x00,
|
|
||||||
// G (71)
|
|
||||||
0x7C, 0xC6, 0xC0, 0xCE, 0xC6, 0xC6, 0x7E, 0x00,
|
|
||||||
// H (72)
|
|
||||||
0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00,
|
|
||||||
// I (73)
|
|
||||||
0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
|
||||||
// J (74)
|
|
||||||
0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00,
|
|
||||||
// K (75)
|
|
||||||
0xC6, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0xC6, 0x00,
|
|
||||||
// L (76)
|
|
||||||
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0x00,
|
|
||||||
// M (77)
|
|
||||||
0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0x00,
|
|
||||||
// N (78)
|
|
||||||
0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
|
|
||||||
// O (79)
|
|
||||||
0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
|
||||||
// P (80)
|
|
||||||
0xFC, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0x00,
|
|
||||||
// Q (81)
|
|
||||||
0x7C, 0xC6, 0xC6, 0xC6, 0xD6, 0xDE, 0x7C, 0x06,
|
|
||||||
// R (82)
|
|
||||||
0xFC, 0xC6, 0xC6, 0xFC, 0xD8, 0xCC, 0xC6, 0x00,
|
|
||||||
// S (83)
|
|
||||||
0x7C, 0xC6, 0xC0, 0x7C, 0x06, 0xC6, 0x7C, 0x00,
|
|
||||||
// T (84)
|
|
||||||
0xFE, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
|
|
||||||
// U (85)
|
|
||||||
0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
|
||||||
// V (86)
|
|
||||||
0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00,
|
|
||||||
// W (87)
|
|
||||||
0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
|
|
||||||
// X (88)
|
|
||||||
0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00,
|
|
||||||
// Y (89)
|
|
||||||
0xC6, 0xC6, 0x6C, 0x38, 0x18, 0x18, 0x18, 0x00,
|
|
||||||
// Z (90)
|
|
||||||
0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00,
|
|
||||||
// [ (91)
|
|
||||||
0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00,
|
|
||||||
// \ (92)
|
|
||||||
0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
|
|
||||||
// ] (93)
|
|
||||||
0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00,
|
|
||||||
// ^ (94)
|
|
||||||
0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
// _ (95)
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
|
|
||||||
// ` (96)
|
|
||||||
0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
// a (97)
|
|
||||||
0x00, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0x7E, 0x00,
|
|
||||||
// b (98)
|
|
||||||
0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0x00,
|
|
||||||
// c (99)
|
|
||||||
0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC6, 0x7C, 0x00,
|
|
||||||
// d (100)
|
|
||||||
0x06, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
|
||||||
// e (101)
|
|
||||||
0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0x7C, 0x00,
|
|
||||||
// f (102)
|
|
||||||
0x1C, 0x36, 0x30, 0x78, 0x30, 0x30, 0x30, 0x00,
|
|
||||||
// g (103)
|
|
||||||
0x00, 0x00, 0x7E, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
|
||||||
// h (104)
|
|
||||||
0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00,
|
|
||||||
// i (105)
|
|
||||||
0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00,
|
|
||||||
// j (106)
|
|
||||||
0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78,
|
|
||||||
// k (107)
|
|
||||||
0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00,
|
|
||||||
// l (108)
|
|
||||||
0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00,
|
|
||||||
// m (109)
|
|
||||||
0x00, 0x00, 0xEC, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
|
|
||||||
// n (110)
|
|
||||||
0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00,
|
|
||||||
// o (111)
|
|
||||||
0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
|
||||||
// p (112)
|
|
||||||
0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0,
|
|
||||||
// q (113)
|
|
||||||
0x00, 0x00, 0x7E, 0xC6, 0xC6, 0x7E, 0x06, 0x06,
|
|
||||||
// r (114)
|
|
||||||
0x00, 0x00, 0xDC, 0xE6, 0xC0, 0xC0, 0xC0, 0x00,
|
|
||||||
// s (115)
|
|
||||||
0x00, 0x00, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x00,
|
|
||||||
// t (116)
|
|
||||||
0x30, 0x30, 0x7C, 0x30, 0x30, 0x36, 0x1C, 0x00,
|
|
||||||
// u (117)
|
|
||||||
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
|
||||||
// v (118)
|
|
||||||
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
|
|
||||||
// w (119)
|
|
||||||
0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
|
|
||||||
// x (120)
|
|
||||||
0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
|
|
||||||
// y (121)
|
|
||||||
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
|
||||||
// z (122)
|
|
||||||
0x00, 0x00, 0xFE, 0x0C, 0x38, 0x60, 0xFE, 0x00,
|
|
||||||
// { (123)
|
|
||||||
0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0x00,
|
|
||||||
// | (124)
|
|
||||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
|
|
||||||
// } (125)
|
|
||||||
0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0x00,
|
|
||||||
// ~ (126)
|
|
||||||
0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
|
||||||
499
src/render/font_data.zig
Normal file
499
src/render/font_data.zig
Normal file
|
|
@ -0,0 +1,499 @@
|
||||||
|
//! Font Data - Bitmap font glyph data
|
||||||
|
//!
|
||||||
|
//! Contains glyph data for various bitmap fonts:
|
||||||
|
//! - 8x8 ASCII (32-126) - Basic ASCII
|
||||||
|
//! - 8x8 Latin-1 (32-255) - Full Western European (Spanish, French, German, etc.)
|
||||||
|
//! - 8x16 Latin-1 - Taller, more readable font
|
||||||
|
//!
|
||||||
|
//! All fonts use 1-bit-per-pixel format (packed into bytes, MSB first).
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// 8x8 ASCII Font (32-126) - 95 characters
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
/// 8x8 ASCII font data (characters 32-126)
|
||||||
|
/// Each character is 8 bytes (8 rows, 1 byte per row, MSB = leftmost pixel)
|
||||||
|
pub const font_8x8_ascii = [95 * 8]u8{
|
||||||
|
// Space (32)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// ! (33)
|
||||||
|
0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
||||||
|
// " (34)
|
||||||
|
0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// # (35)
|
||||||
|
0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
|
||||||
|
// $ (36)
|
||||||
|
0x18, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x18, 0x00,
|
||||||
|
// % (37)
|
||||||
|
0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
|
||||||
|
// & (38)
|
||||||
|
0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
|
||||||
|
// ' (39)
|
||||||
|
0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// ( (40)
|
||||||
|
0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00,
|
||||||
|
// ) (41)
|
||||||
|
0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00,
|
||||||
|
// * (42)
|
||||||
|
0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
|
||||||
|
// + (43)
|
||||||
|
0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
|
||||||
|
// , (44)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
|
||||||
|
// - (45)
|
||||||
|
0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// . (46)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
|
||||||
|
// / (47)
|
||||||
|
0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
|
||||||
|
// 0 (48)
|
||||||
|
0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 1 (49)
|
||||||
|
0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// 2 (50)
|
||||||
|
0x7C, 0xC6, 0x06, 0x7C, 0xC0, 0xC0, 0xFE, 0x00,
|
||||||
|
// 3 (51)
|
||||||
|
0x7C, 0xC6, 0x06, 0x3C, 0x06, 0xC6, 0x7C, 0x00,
|
||||||
|
// 4 (52)
|
||||||
|
0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00,
|
||||||
|
// 5 (53)
|
||||||
|
0xFE, 0xC0, 0xFC, 0x06, 0x06, 0xC6, 0x7C, 0x00,
|
||||||
|
// 6 (54)
|
||||||
|
0x7C, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 7 (55)
|
||||||
|
0xFE, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
|
||||||
|
// 8 (56)
|
||||||
|
0x7C, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 9 (57)
|
||||||
|
0x7C, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x7C, 0x00,
|
||||||
|
// : (58)
|
||||||
|
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00,
|
||||||
|
// ; (59)
|
||||||
|
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30,
|
||||||
|
// < (60)
|
||||||
|
0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00,
|
||||||
|
// = (61)
|
||||||
|
0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00,
|
||||||
|
// > (62)
|
||||||
|
0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00,
|
||||||
|
// ? (63)
|
||||||
|
0x7C, 0xC6, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
||||||
|
// @ (64)
|
||||||
|
0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x7C, 0x00,
|
||||||
|
// A (65)
|
||||||
|
0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
|
||||||
|
// B (66)
|
||||||
|
0xFC, 0xC6, 0xC6, 0xFC, 0xC6, 0xC6, 0xFC, 0x00,
|
||||||
|
// C (67)
|
||||||
|
0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00,
|
||||||
|
// D (68)
|
||||||
|
0xF8, 0xCC, 0xC6, 0xC6, 0xC6, 0xCC, 0xF8, 0x00,
|
||||||
|
// E (69)
|
||||||
|
0xFE, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xFE, 0x00,
|
||||||
|
// F (70)
|
||||||
|
0xFE, 0xC0, 0xC0, 0xF8, 0xC0, 0xC0, 0xC0, 0x00,
|
||||||
|
// G (71)
|
||||||
|
0x7C, 0xC6, 0xC0, 0xCE, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// H (72)
|
||||||
|
0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00,
|
||||||
|
// I (73)
|
||||||
|
0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// J (74)
|
||||||
|
0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00,
|
||||||
|
// K (75)
|
||||||
|
0xC6, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0xC6, 0x00,
|
||||||
|
// L (76)
|
||||||
|
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0x00,
|
||||||
|
// M (77)
|
||||||
|
0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0x00,
|
||||||
|
// N (78)
|
||||||
|
0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
|
||||||
|
// O (79)
|
||||||
|
0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// P (80)
|
||||||
|
0xFC, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0x00,
|
||||||
|
// Q (81)
|
||||||
|
0x7C, 0xC6, 0xC6, 0xC6, 0xD6, 0xDE, 0x7C, 0x06,
|
||||||
|
// R (82)
|
||||||
|
0xFC, 0xC6, 0xC6, 0xFC, 0xD8, 0xCC, 0xC6, 0x00,
|
||||||
|
// S (83)
|
||||||
|
0x7C, 0xC6, 0xC0, 0x7C, 0x06, 0xC6, 0x7C, 0x00,
|
||||||
|
// T (84)
|
||||||
|
0xFE, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
|
||||||
|
// U (85)
|
||||||
|
0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// V (86)
|
||||||
|
0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00,
|
||||||
|
// W (87)
|
||||||
|
0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
|
||||||
|
// X (88)
|
||||||
|
0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00,
|
||||||
|
// Y (89)
|
||||||
|
0xC6, 0xC6, 0x6C, 0x38, 0x18, 0x18, 0x18, 0x00,
|
||||||
|
// Z (90)
|
||||||
|
0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00,
|
||||||
|
// [ (91)
|
||||||
|
0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00,
|
||||||
|
// \ (92)
|
||||||
|
0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
|
||||||
|
// ] (93)
|
||||||
|
0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00,
|
||||||
|
// ^ (94)
|
||||||
|
0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// _ (95)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
|
||||||
|
// ` (96)
|
||||||
|
0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// a (97)
|
||||||
|
0x00, 0x00, 0x7C, 0x06, 0x7E, 0xC6, 0x7E, 0x00,
|
||||||
|
// b (98)
|
||||||
|
0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xFC, 0x00,
|
||||||
|
// c (99)
|
||||||
|
0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC6, 0x7C, 0x00,
|
||||||
|
// d (100)
|
||||||
|
0x06, 0x06, 0x7E, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// e (101)
|
||||||
|
0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0x7C, 0x00,
|
||||||
|
// f (102)
|
||||||
|
0x1C, 0x36, 0x30, 0x78, 0x30, 0x30, 0x30, 0x00,
|
||||||
|
// g (103)
|
||||||
|
0x00, 0x00, 0x7E, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
||||||
|
// h (104)
|
||||||
|
0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00,
|
||||||
|
// i (105)
|
||||||
|
0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// j (106)
|
||||||
|
0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78,
|
||||||
|
// k (107)
|
||||||
|
0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00,
|
||||||
|
// l (108)
|
||||||
|
0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// m (109)
|
||||||
|
0x00, 0x00, 0xEC, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
|
||||||
|
// n (110)
|
||||||
|
0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x00,
|
||||||
|
// o (111)
|
||||||
|
0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// p (112)
|
||||||
|
0x00, 0x00, 0xFC, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0,
|
||||||
|
// q (113)
|
||||||
|
0x00, 0x00, 0x7E, 0xC6, 0xC6, 0x7E, 0x06, 0x06,
|
||||||
|
// r (114)
|
||||||
|
0x00, 0x00, 0xDC, 0xE6, 0xC0, 0xC0, 0xC0, 0x00,
|
||||||
|
// s (115)
|
||||||
|
0x00, 0x00, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x00,
|
||||||
|
// t (116)
|
||||||
|
0x30, 0x30, 0x7C, 0x30, 0x30, 0x36, 0x1C, 0x00,
|
||||||
|
// u (117)
|
||||||
|
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// v (118)
|
||||||
|
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
|
||||||
|
// w (119)
|
||||||
|
0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
|
||||||
|
// x (120)
|
||||||
|
0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
|
||||||
|
// y (121)
|
||||||
|
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
||||||
|
// z (122)
|
||||||
|
0x00, 0x00, 0xFE, 0x0C, 0x38, 0x60, 0xFE, 0x00,
|
||||||
|
// { (123)
|
||||||
|
0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0x00,
|
||||||
|
// | (124)
|
||||||
|
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
|
||||||
|
// } (125)
|
||||||
|
0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0x00,
|
||||||
|
// ~ (126)
|
||||||
|
0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// 8x8 Latin-1 Extended Font (128-255) - 128 additional characters
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
/// 8x8 Latin-1 extended characters (128-255)
|
||||||
|
/// Includes Spanish: ñ, Ñ, á, é, í, ó, ú, Á, É, Í, Ó, Ú, ü, Ü, ¿, ¡
|
||||||
|
/// Also French, German, Portuguese, Italian accented characters
|
||||||
|
pub const font_8x8_latin1_ext = [128 * 8]u8{
|
||||||
|
// 128-159: Control characters / special (we'll use for useful symbols)
|
||||||
|
// 128: Euro sign (€) - commonly used
|
||||||
|
0x00, 0x3C, 0x66, 0xF8, 0x60, 0xF8, 0x66, 0x3C,
|
||||||
|
// 129: unused
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 130: single low quote (‚)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
|
||||||
|
// 131: florin (ƒ)
|
||||||
|
0x0E, 0x18, 0x18, 0x3C, 0x18, 0x18, 0x70, 0x00,
|
||||||
|
// 132: double low quote („)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xD8,
|
||||||
|
// 133: ellipsis (…)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x00,
|
||||||
|
// 134: dagger (†)
|
||||||
|
0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00,
|
||||||
|
// 135: double dagger (‡)
|
||||||
|
0x18, 0x18, 0x7E, 0x18, 0x7E, 0x18, 0x18, 0x00,
|
||||||
|
// 136: circumflex (ˆ)
|
||||||
|
0x18, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 137: per mille (‰)
|
||||||
|
0xC0, 0xC6, 0x0C, 0x18, 0x30, 0x6B, 0xDB, 0x00,
|
||||||
|
// 138: S caron (Š)
|
||||||
|
0x6C, 0x38, 0x7C, 0xC0, 0x7C, 0x06, 0xFC, 0x00,
|
||||||
|
// 139: single left angle quote (‹)
|
||||||
|
0x00, 0x00, 0x18, 0x30, 0x60, 0x30, 0x18, 0x00,
|
||||||
|
// 140: OE ligature (Œ)
|
||||||
|
0x00, 0x7E, 0xDB, 0xD8, 0xDE, 0xDB, 0x7E, 0x00,
|
||||||
|
// 141: unused
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 142: Z caron (Ž)
|
||||||
|
0x6C, 0x38, 0xFE, 0x0C, 0x18, 0x30, 0xFE, 0x00,
|
||||||
|
// 143: unused
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 144: unused
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 145: left single quote (')
|
||||||
|
0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 146: right single quote (')
|
||||||
|
0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 147: left double quote (")
|
||||||
|
0x6C, 0x36, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 148: right double quote (")
|
||||||
|
0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 149: bullet (•)
|
||||||
|
0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00,
|
||||||
|
// 150: en dash (–)
|
||||||
|
0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 151: em dash (—)
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 152: tilde (˜)
|
||||||
|
0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 153: trademark (™)
|
||||||
|
0xFE, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 154: s caron (š)
|
||||||
|
0x6C, 0x38, 0x00, 0x7C, 0xC0, 0x7C, 0x06, 0xFC,
|
||||||
|
// 155: single right angle quote (›)
|
||||||
|
0x00, 0x00, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x00,
|
||||||
|
// 156: oe ligature (œ)
|
||||||
|
0x00, 0x00, 0x7E, 0xDB, 0xDF, 0xD8, 0x7E, 0x00,
|
||||||
|
// 157: unused
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 158: z caron (ž)
|
||||||
|
0x6C, 0x38, 0x00, 0xFE, 0x18, 0x30, 0xFE, 0x00,
|
||||||
|
// 159: Y diaeresis (Ÿ)
|
||||||
|
0x6C, 0x00, 0xC6, 0xC6, 0x6C, 0x38, 0x18, 0x18,
|
||||||
|
|
||||||
|
// 160: Non-breaking space
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 161: Inverted exclamation (¡) - SPANISH
|
||||||
|
0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x18, 0x00,
|
||||||
|
// 162: Cent sign (¢)
|
||||||
|
0x00, 0x18, 0x7E, 0xC0, 0xC0, 0x7E, 0x18, 0x00,
|
||||||
|
// 163: Pound sign (£)
|
||||||
|
0x38, 0x6C, 0x60, 0xF0, 0x60, 0x66, 0xFE, 0x00,
|
||||||
|
// 164: Currency sign (¤)
|
||||||
|
0x00, 0xC6, 0x7C, 0xC6, 0xC6, 0x7C, 0xC6, 0x00,
|
||||||
|
// 165: Yen sign (¥)
|
||||||
|
0xC6, 0xC6, 0x6C, 0x38, 0x7C, 0x18, 0x18, 0x00,
|
||||||
|
// 166: Broken bar (¦)
|
||||||
|
0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
|
||||||
|
// 167: Section sign (§)
|
||||||
|
0x3C, 0x60, 0x3C, 0x66, 0x3C, 0x06, 0x3C, 0x00,
|
||||||
|
// 168: Diaeresis (¨)
|
||||||
|
0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 169: Copyright (©)
|
||||||
|
0x3C, 0x42, 0x99, 0xA1, 0xA1, 0x99, 0x42, 0x3C,
|
||||||
|
// 170: Feminine ordinal (ª)
|
||||||
|
0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x3E, 0x00,
|
||||||
|
// 171: Left double angle quote («)
|
||||||
|
0x00, 0x36, 0x6C, 0xD8, 0x6C, 0x36, 0x00, 0x00,
|
||||||
|
// 172: Not sign (¬)
|
||||||
|
0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x00, 0x00,
|
||||||
|
// 173: Soft hyphen
|
||||||
|
0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 174: Registered (®)
|
||||||
|
0x3C, 0x42, 0xB9, 0xA5, 0xB9, 0xA5, 0x42, 0x3C,
|
||||||
|
// 175: Macron (¯)
|
||||||
|
0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 176: Degree (°)
|
||||||
|
0x38, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 177: Plus-minus (±)
|
||||||
|
0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E,
|
||||||
|
// 178: Superscript 2 (²)
|
||||||
|
0x38, 0x0C, 0x18, 0x30, 0x3C, 0x00, 0x00, 0x00,
|
||||||
|
// 179: Superscript 3 (³)
|
||||||
|
0x38, 0x0C, 0x18, 0x0C, 0x38, 0x00, 0x00, 0x00,
|
||||||
|
// 180: Acute accent (´)
|
||||||
|
0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 181: Micro (µ)
|
||||||
|
0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xFE, 0xC0, 0xC0,
|
||||||
|
// 182: Pilcrow (¶)
|
||||||
|
0x7E, 0xDB, 0xDB, 0x7E, 0x1B, 0x1B, 0x1B, 0x00,
|
||||||
|
// 183: Middle dot (·)
|
||||||
|
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
// 184: Cedilla (¸)
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0x38,
|
||||||
|
// 185: Superscript 1 (¹)
|
||||||
|
0x18, 0x38, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00,
|
||||||
|
// 186: Masculine ordinal (º)
|
||||||
|
0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00,
|
||||||
|
// 187: Right double angle quote (»)
|
||||||
|
0x00, 0xD8, 0x6C, 0x36, 0x6C, 0xD8, 0x00, 0x00,
|
||||||
|
// 188: One quarter (¼)
|
||||||
|
0xC3, 0xC6, 0xCC, 0xDB, 0x37, 0x6F, 0xCF, 0x03,
|
||||||
|
// 189: One half (½)
|
||||||
|
0xC3, 0xC6, 0xCC, 0xDE, 0x33, 0x66, 0xCC, 0x0F,
|
||||||
|
// 190: Three quarters (¾)
|
||||||
|
0xC3, 0x66, 0xCC, 0x6B, 0x37, 0x6F, 0xCF, 0x03,
|
||||||
|
// 191: Inverted question (¿) - SPANISH
|
||||||
|
0x18, 0x00, 0x18, 0x30, 0x60, 0xC6, 0x7C, 0x00,
|
||||||
|
|
||||||
|
// 192: A grave (À)
|
||||||
|
0x30, 0x18, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 193: A acute (Á) - SPANISH
|
||||||
|
0x0C, 0x18, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 194: A circumflex (Â)
|
||||||
|
0x38, 0x6C, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 195: A tilde (Ã)
|
||||||
|
0x76, 0xDC, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 196: A diaeresis (Ä)
|
||||||
|
0x6C, 0x00, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 197: A ring (Å)
|
||||||
|
0x38, 0x6C, 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x00,
|
||||||
|
// 198: AE (Æ)
|
||||||
|
0x3E, 0x6C, 0xCC, 0xFE, 0xCC, 0xCC, 0xCE, 0x00,
|
||||||
|
// 199: C cedilla (Ç)
|
||||||
|
0x7C, 0xC6, 0xC0, 0xC0, 0xC6, 0x7C, 0x0C, 0x38,
|
||||||
|
// 200: E grave (È)
|
||||||
|
0x30, 0x18, 0xFE, 0xC0, 0xF8, 0xC0, 0xFE, 0x00,
|
||||||
|
// 201: E acute (É) - SPANISH
|
||||||
|
0x0C, 0x18, 0xFE, 0xC0, 0xF8, 0xC0, 0xFE, 0x00,
|
||||||
|
// 202: E circumflex (Ê)
|
||||||
|
0x38, 0x6C, 0xFE, 0xC0, 0xF8, 0xC0, 0xFE, 0x00,
|
||||||
|
// 203: E diaeresis (Ë)
|
||||||
|
0x6C, 0x00, 0xFE, 0xC0, 0xF8, 0xC0, 0xFE, 0x00,
|
||||||
|
// 204: I grave (Ì)
|
||||||
|
0x30, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// 205: I acute (Í) - SPANISH
|
||||||
|
0x0C, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// 206: I circumflex (Î)
|
||||||
|
0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// 207: I diaeresis (Ï)
|
||||||
|
0x6C, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x00,
|
||||||
|
// 208: Eth (Ð)
|
||||||
|
0xF8, 0x6C, 0x66, 0xF6, 0x66, 0x6C, 0xF8, 0x00,
|
||||||
|
// 209: N tilde (Ñ) - SPANISH
|
||||||
|
0x76, 0xDC, 0x00, 0xC6, 0xF6, 0xDE, 0xC6, 0x00,
|
||||||
|
// 210: O grave (Ò)
|
||||||
|
0x30, 0x18, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 211: O acute (Ó) - SPANISH
|
||||||
|
0x0C, 0x18, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 212: O circumflex (Ô)
|
||||||
|
0x38, 0x6C, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 213: O tilde (Õ)
|
||||||
|
0x76, 0xDC, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 214: O diaeresis (Ö)
|
||||||
|
0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 215: Multiplication (×)
|
||||||
|
0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00,
|
||||||
|
// 216: O stroke (Ø)
|
||||||
|
0x3E, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x7C, 0x00,
|
||||||
|
// 217: U grave (Ù)
|
||||||
|
0x30, 0x18, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 218: U acute (Ú) - SPANISH
|
||||||
|
0x0C, 0x18, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 219: U circumflex (Û)
|
||||||
|
0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 220: U diaeresis (Ü) - SPANISH
|
||||||
|
0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 221: Y acute (Ý)
|
||||||
|
0x0C, 0x18, 0xC6, 0x6C, 0x38, 0x18, 0x18, 0x00,
|
||||||
|
// 222: Thorn (Þ)
|
||||||
|
0xC0, 0xC0, 0xFC, 0xC6, 0xFC, 0xC0, 0xC0, 0x00,
|
||||||
|
// 223: Sharp s (ß) - German
|
||||||
|
0x78, 0xCC, 0xCC, 0xD8, 0xCC, 0xC6, 0xCC, 0x00,
|
||||||
|
|
||||||
|
// 224: a grave (à)
|
||||||
|
0x30, 0x18, 0x00, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 225: a acute (á) - SPANISH
|
||||||
|
0x0C, 0x18, 0x00, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 226: a circumflex (â)
|
||||||
|
0x38, 0x6C, 0x00, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 227: a tilde (ã)
|
||||||
|
0x76, 0xDC, 0x00, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 228: a diaeresis (ä)
|
||||||
|
0x6C, 0x00, 0x00, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 229: a ring (å)
|
||||||
|
0x38, 0x6C, 0x38, 0x7C, 0x06, 0x7E, 0x7E, 0x00,
|
||||||
|
// 230: ae (æ)
|
||||||
|
0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x7E, 0x00,
|
||||||
|
// 231: c cedilla (ç)
|
||||||
|
0x00, 0x00, 0x7C, 0xC0, 0xC0, 0x7C, 0x0C, 0x38,
|
||||||
|
// 232: e grave (è)
|
||||||
|
0x30, 0x18, 0x00, 0x7C, 0xFE, 0xC0, 0x7C, 0x00,
|
||||||
|
// 233: e acute (é) - SPANISH
|
||||||
|
0x0C, 0x18, 0x00, 0x7C, 0xFE, 0xC0, 0x7C, 0x00,
|
||||||
|
// 234: e circumflex (ê)
|
||||||
|
0x38, 0x6C, 0x00, 0x7C, 0xFE, 0xC0, 0x7C, 0x00,
|
||||||
|
// 235: e diaeresis (ë)
|
||||||
|
0x6C, 0x00, 0x00, 0x7C, 0xFE, 0xC0, 0x7C, 0x00,
|
||||||
|
// 236: i grave (ì)
|
||||||
|
0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// 237: i acute (í) - SPANISH
|
||||||
|
0x0C, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// 238: i circumflex (î)
|
||||||
|
0x18, 0x3C, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// 239: i diaeresis (ï)
|
||||||
|
0x6C, 0x00, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00,
|
||||||
|
// 240: eth (ð)
|
||||||
|
0x1C, 0x38, 0x0C, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 241: n tilde (ñ) - SPANISH
|
||||||
|
0x76, 0xDC, 0x00, 0xFC, 0xC6, 0xC6, 0xC6, 0x00,
|
||||||
|
// 242: o grave (ò)
|
||||||
|
0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 243: o acute (ó) - SPANISH
|
||||||
|
0x0C, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 244: o circumflex (ô)
|
||||||
|
0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 245: o tilde (õ)
|
||||||
|
0x76, 0xDC, 0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 246: o diaeresis (ö)
|
||||||
|
0x6C, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x7C, 0x00,
|
||||||
|
// 247: Division (÷)
|
||||||
|
0x00, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x00,
|
||||||
|
// 248: o stroke (ø)
|
||||||
|
0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, 0x7C, 0x80,
|
||||||
|
// 249: u grave (ù)
|
||||||
|
0x30, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// 250: u acute (ú) - SPANISH
|
||||||
|
0x0C, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// 251: u circumflex (û)
|
||||||
|
0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// 252: u diaeresis (ü) - SPANISH
|
||||||
|
0x6C, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x00,
|
||||||
|
// 253: y acute (ý)
|
||||||
|
0x0C, 0x18, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
||||||
|
// 254: thorn (þ)
|
||||||
|
0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xFC, 0xC0, 0xC0,
|
||||||
|
// 255: y diaeresis (ÿ)
|
||||||
|
0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x7C,
|
||||||
|
};
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// Combined 8x8 Latin-1 Font (32-255) - Full Western European
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
/// Full 8x8 Latin-1 font covering characters 32-255
|
||||||
|
/// Combines ASCII (32-126) + unused (127) + Latin-1 extended (128-255)
|
||||||
|
pub const font_8x8_latin1 = blk: {
|
||||||
|
var data: [224 * 8]u8 = undefined;
|
||||||
|
|
||||||
|
// Copy ASCII portion (32-126 = 95 chars)
|
||||||
|
@memcpy(data[0..760], &font_8x8_ascii);
|
||||||
|
|
||||||
|
// Character 127 (DEL) - use a box character
|
||||||
|
const del_char = [8]u8{ 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, 0x00 };
|
||||||
|
@memcpy(data[760..768], &del_char);
|
||||||
|
|
||||||
|
// Copy Latin-1 extended (128-255 = 128 chars)
|
||||||
|
@memcpy(data[768..1792], &font_8x8_latin1_ext);
|
||||||
|
|
||||||
|
break :blk data;
|
||||||
|
};
|
||||||
|
|
@ -80,6 +80,8 @@ pub const render = struct {
|
||||||
const font_module = @import("render/font.zig");
|
const font_module = @import("render/font.zig");
|
||||||
pub const Font = font_module.Font;
|
pub const Font = font_module.Font;
|
||||||
pub const default_font = font_module.default_font;
|
pub const default_font = font_module.default_font;
|
||||||
|
pub const default_font_latin1 = font_module.default_font_latin1;
|
||||||
|
pub const font_data = font_module.font_data;
|
||||||
pub const ttf = @import("render/ttf.zig");
|
pub const ttf = @import("render/ttf.zig");
|
||||||
pub const TtfFont = ttf.TtfFont;
|
pub const TtfFont = ttf.TtfFont;
|
||||||
pub const FontRef = ttf.FontRef;
|
pub const FontRef = ttf.FontRef;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue