diff options
-rw-r--r-- | apps/main.c | 8 | ||||
-rw-r--r-- | apps/menu.c | 9 | ||||
-rw-r--r-- | apps/recorder/icons.c | 10 | ||||
-rw-r--r-- | apps/recorder/icons.h | 1 | ||||
-rw-r--r-- | apps/tree.c | 36 | ||||
-rw-r--r-- | firmware/Makefile | 10 | ||||
-rw-r--r-- | firmware/X5x8.bdf | 1967 | ||||
-rw-r--r-- | firmware/X5x8.c | 2853 | ||||
-rw-r--r-- | firmware/drivers/lcd.c | 95 | ||||
-rw-r--r-- | firmware/drivers/lcd.h | 7 | ||||
-rw-r--r-- | firmware/font.c | 339 | ||||
-rw-r--r-- | firmware/font.h | 53 | ||||
-rw-r--r-- | firmware/fonts/clR6x8.bdf | 2895 | ||||
-rw-r--r-- | firmware/loadfont.c | 212 | ||||
-rwxr-xr-x | tools/bdf2c | 217 | ||||
-rwxr-xr-x | tools/bdf2fnt | 39 | ||||
-rw-r--r-- | tools/convbdf.c | 287 | ||||
-rw-r--r-- | tools/loadrbf.c | 95 | ||||
-rw-r--r-- | tools/writerbf.c | 112 | ||||
-rw-r--r-- | uisimulator/win32/Makefile | 10 | ||||
-rw-r--r-- | uisimulator/x11/Makefile | 19 |
21 files changed, 3422 insertions, 5852 deletions
diff --git a/apps/main.c b/apps/main.c index 4b8c9e1e7e..b13e5448b9 100644 --- a/apps/main.c +++ b/apps/main.c @@ -68,6 +68,7 @@ void init(void) show_logo(); settings_reset(); settings_load(); + font_load(ROCKBOX_DIR "/default.fon"); sleep(HZ/2); } @@ -89,10 +90,7 @@ void init(void) lcd_init(); - // FIXME should call font_init before this, - // because may use loadable font in show_logo(). - // I didn't call font_init here, since - // disk system isn't up yet. + font_init(); show_logo(); #ifdef DEBUG @@ -148,6 +146,7 @@ void init(void) } settings_load(); + font_load(ROCKBOX_DIR "/default.fon"); mpeg_init( global_settings.volume, global_settings.bass, @@ -160,7 +159,6 @@ void init(void) status_init(); usb_start_monitoring(); power_init(); - font_init(); } int main(void) diff --git a/apps/menu.c b/apps/menu.c index a42929ccf5..5f1b9b64ea 100644 --- a/apps/menu.c +++ b/apps/menu.c @@ -93,14 +93,19 @@ void put_cursorxy(int x, int y, bool on) { #ifdef HAVE_LCD_BITMAP int fh, fw; + int xpos, ypos; lcd_getfontsize(FONT_UI, &fw, &fh); + xpos = x*6; + ypos = y*fh + lcd_getymargin(); + if ( fh > 8 ) + ypos += (fh - 8) / 2; #endif /* place the cursor */ if(on) { #ifdef HAVE_LCD_BITMAP lcd_bitmap ( bitmap_icons_6x8[Cursor], - x*6, y*fh + lcd_getymargin(), 4, 8, true); + xpos, ypos, 4, 8, true); #elif defined(SIMULATOR) /* player simulator */ unsigned char cursor[] = { 0x7f, 0x3e, 0x1c, 0x08 }; @@ -112,7 +117,7 @@ void put_cursorxy(int x, int y, bool on) else { #if defined(HAVE_LCD_BITMAP) /* I use xy here since it needs to disregard the margins */ - lcd_clearrect (x*6, y*fh + lcd_getymargin(), 4, 8); + lcd_clearrect (xpos, ypos, 4, 8); #elif defined(SIMULATOR) /* player simulator in action */ lcd_clearrect (x*6, 12+y*16, 4, 8); diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c index fbfaf6cd8c..0e628d8255 100644 --- a/apps/recorder/icons.c +++ b/apps/recorder/icons.c @@ -69,6 +69,8 @@ unsigned char bitmap_icons_6x8[LastIcon][6] = { 0x58, 0x5f, 0x42, 0x50, 0x55, 0x00 }, /* Mod or ajz file */ { 0x63, 0x7f, 0x3a, 0x7f, 0x63, 0x00 }, + /* Font file */ + { 0x60, 0x70, 0x38, 0x2c, 0x7e, 0x7e }, }; unsigned char bitmap_icons_7x8[][7] = @@ -234,10 +236,10 @@ void statusbar_icon_volume(int percent) /* display volume lever numerical? */ if (TIME_BEFORE(current_tick,switch_tick)) { snprintf(buffer, sizeof(buffer), "%2d", percent); - lcd_getstringsize(buffer, FONT_UI, &width, &height); + lcd_getstringsize(buffer, FONT_SYSFIXED, &width, &height); if (height <= STATUSBAR_HEIGHT) lcd_putsxy(ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 - - width/2, STATUSBAR_Y_POS, buffer, 0); + width/2, STATUSBAR_Y_POS, buffer, FONT_SYSFIXED); } else { /* display volume bar */ volume = volume * 14 / 100; @@ -309,8 +311,8 @@ void statusbar_time(int hour, int minute) strncpy(buffer, "--:--", sizeof buffer); } - lcd_getstringsize(buffer, FONT_UI, &width, &height); + lcd_getstringsize(buffer, FONT_SYSFIXED, &width, &height); if (height <= STATUSBAR_HEIGHT) - lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer, 0); + lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer, FONT_SYSFIXED); } #endif diff --git a/apps/recorder/icons.h b/apps/recorder/icons.h index 3102093898..1cf75151da 100644 --- a/apps/recorder/icons.h +++ b/apps/recorder/icons.h @@ -28,6 +28,7 @@ enum icons_6x8 { Box_Filled, Box_Empty, Slider_Horizontal, File, Folder, Directory, Playlist, Repeat, Selected, Cursor, Wps, Mod_Ajz, + Font, LastIcon }; diff --git a/apps/tree.c b/apps/tree.c index 40d686490a..9689ac5ae9 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -137,7 +137,8 @@ extern unsigned char bitmap_icons_6x8[LastIcon][6]; #define TREE_ATTR_M3U 0x80 /* playlist */ #define TREE_ATTR_WPS 0x100 /* wps config file */ #define TREE_ATTR_MOD 0x200 /* firmware file */ -#define TREE_ATTR_EQ 0x300 /* EQ config file */ +#define TREE_ATTR_EQ 0x400 /* EQ config file */ +#define TREE_ATTR_FONT 0x800 /* font file */ #define TREE_ATTR_MASK 0xffd0 /* which bits tree.c uses (above + DIR) */ static int build_playlist(int start_index) @@ -182,14 +183,12 @@ static int compare(const void* p1, const void* p2) static int showdir(char *path, int start) { int icon_type = 0; -#ifdef HAVE_LCD_BITMAP - int line_height = LINE_HEIGTH; -#endif int i; int tree_max_on_screen; bool dir_buffer_full; #ifdef HAVE_LCD_BITMAP + int line_height = LINE_HEIGTH; int fw, fh; lcd_getfontsize(FONT_UI, &fw, &fh); tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; @@ -255,6 +254,8 @@ static int showdir(char *path, int start) else if (!strcasecmp(&entry->d_name[len-4], ".wps")) dptr->attr |= TREE_ATTR_WPS; #ifdef HAVE_RECORDER_KEYPAD + else if (!strcasecmp(&entry->d_name[len-4], ".fnt")) + dptr->attr |= TREE_ATTR_FONT; else if (!strcasecmp(&entry->d_name[len-4], ".ajz")) #else else if (!strcasecmp(&entry->d_name[len-4], ".mod")) @@ -372,15 +373,24 @@ static int showdir(char *path, int start) icon_type = Mod_Ajz; break; +#ifdef HAVE_LCD_BITMAP + case TREE_ATTR_FONT: + icon_type = Font; + break; +#endif default: icon_type = 0; } if (icon_type) { #ifdef HAVE_LCD_BITMAP + int offset=0; + if ( line_height > 8 ) + offset = (line_height - 8) / 2; lcd_bitmap(bitmap_icons_6x8[icon_type], CURSOR_X * 6 + CURSOR_WIDTH, - MARGIN_Y+(i-start)*line_height, 6, 8, true); + MARGIN_Y+(i-start)*line_height + offset, + 6, 8, true); #else lcd_define_pattern((i-start)*8,tree_icons_5x7[icon_type],8); lcd_putc(LINE_X-1, i-start, i-start); @@ -712,6 +722,22 @@ bool dirbrowse(char *root) restore = true; break; +#ifdef HAVE_LCD_BITMAP + case TREE_ATTR_FONT: + snprintf(buf, sizeof buf, "%s/%s", + currdir, file->name); + font_load(buf); + lcd_getfontsize(FONT_UI, &fw, &fh); + tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; + /* make sure cursor is on screen */ + while ( dircursor > tree_max_on_screen ) { + dircursor--; + dirstart++; + } + restore = true; + break; +#endif + #ifndef SIMULATOR /* firmware file */ case TREE_ATTR_MOD: diff --git a/firmware/Makefile b/firmware/Makefile index 24f5b46614..a5ce323be9 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -19,6 +19,7 @@ SYSTEM_FONT = fonts/alt6x10.bdf # store output files in this directory: OBJDIR = . +TOOLSDIR = ../tools CFLAGS = -W -Wall -O -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) @@ -38,9 +39,8 @@ DIRS = $(subst $(DEPS),".",$(DEPDIRS)) OUTPUT = $(OBJDIR)/librockbox.a - -ifeq (LOADABLE_FONTS,$(findstring LOADABLE_FONTS, $(CFLAGS))) - EXTRA_TARGETS = $(OBJDIR)/system.ajf +ifeq (RECORDER,$(findstring RECORDER, $(CFLAGS))) + OBJS += $(OBJDIR)/sysfont.o endif all: $(OUTPUT) $(EXTRA_TARGETS) @@ -70,6 +70,10 @@ clean: $(OBJDIR)/thread.o: thread.c thread.h $(CC) -c -O -fomit-frame-pointer $(CFLAGS) $< -o $@ +$(OBJDIR)/sysfont.o: fonts/clR6x8.bdf + $(TOOLSDIR)/convbdf -c -o $(OBJDIR)/sysfont.c $< + $(CC) $(CFLAGS) -c $(OBJDIR)/sysfont.c -o $@ + $(OBJDIR)/$(DEPS)/%.d: %.c @$(SHELL) -c 'for d in $(DEPDIRS); do { if [ ! -d $(OBJDIR)/$$d ]; then mkdir $(OBJDIR)/$$d; fi; }; done' @echo "Updating dependencies for $<" diff --git a/firmware/X5x8.bdf b/firmware/X5x8.bdf deleted file mode 100644 index adb452a3ee..0000000000 --- a/firmware/X5x8.bdf +++ /dev/null @@ -1,1967 +0,0 @@ -STARTFONT 2.1 -COMMENT $Xorg: 5x8.bdf,v 1.3 2000/08/18 15:17:39 xorgcvs Exp $ -COMMENT Copyright 1989 Cognition Corp. -COMMENT -COMMENT Permission to use, copy, modify, and distribute this software and its -COMMENT documentation for any purpose and without fee is hereby granted, -COMMENT provided that the above copyright notice appear in all copies and that -COMMENT both that copyright notice and this permission notice appear in -COMMENT supporting documentation, and that the name of Cognition Corp. not be -COMMENT used in advertising or publicity pertaining to distribution of the -COMMENT software without specific, written prior permission. Cognition Corp. -COMMENT makes no representations about the suitability of this software for any -COMMENT purpose. It is provided "as is" without express or implied warranty. -COMMENT -COMMENT COGNITION CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -COMMENT INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -COMMENT EVENT SHALL COGNITION CORP. BE LIABLE FOR ANY SPECIAL, INDIRECT OR -COMMENT CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -COMMENT USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -COMMENT OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -COMMENT PERFORMANCE OF THIS SOFTWARE. -FONT -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV -SIZE 11 75 75 -FONTBOUNDINGBOX 5 8 0 0 -STARTPROPERTIES 19 -FONTNAME_REGISTRY "" -FOUNDRY "Misc" -FAMILY_NAME "Fixed" -WEIGHT_NAME "Medium" -SLANT "R" -SETWIDTH_NAME "Normal" -ADD_STYLE_NAME "" -PIXEL_SIZE 8 -POINT_SIZE 80 -RESOLUTION_X 75 -RESOLUTION_Y 75 -SPACING "C" -AVERAGE_WIDTH 50 -CHARSET_REGISTRY "ISO646.1991" -CHARSET_ENCODING "IRV" -FONT_DESCENT 1 -FONT_ASCENT 7 -COPYRIGHT "Copyright 1989 by Cognition Corp." -DEFAULT_CHAR 0 -ENDPROPERTIES -CHARS 128 -STARTCHAR C000 -ENCODING 0 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C001 -ENCODING 1 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -70 -f8 -70 -20 -00 -00 -ENDCHAR -STARTCHAR C002 -ENCODING 2 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -28 -50 -28 -50 -28 -50 -28 -ENDCHAR -STARTCHAR C003 -ENCODING 3 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -50 -50 -70 -50 -50 -38 -10 -10 -ENDCHAR -STARTCHAR C004 -ENCODING 4 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -e0 -80 -c0 -b8 -a0 -30 -20 -20 -ENDCHAR -STARTCHAR C005 -ENCODING 5 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -60 -80 -60 -00 -30 -28 -30 -28 -ENDCHAR -STARTCHAR C006 -ENCODING 6 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -80 -80 -80 -e0 -38 -20 -30 -20 -ENDCHAR -STARTCHAR C007 -ENCODING 7 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -50 -20 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C010 -ENCODING 8 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -70 -20 -00 -70 -00 -00 -ENDCHAR -STARTCHAR C011 -ENCODING 9 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -90 -d0 -b0 -90 -20 -20 -20 -38 -ENDCHAR -STARTCHAR C012 -ENCODING 10 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -a0 -a0 -a0 -40 -38 -10 -10 -10 -ENDCHAR -STARTCHAR C013 -ENCODING 11 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -e0 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C014 -ENCODING 12 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -e0 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C015 -ENCODING 13 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -38 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C016 -ENCODING 14 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -38 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C017 -ENCODING 15 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -f8 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C020 -ENCODING 16 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -f8 -00 -00 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C021 -ENCODING 17 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -f8 -00 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C022 -ENCODING 18 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -f8 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C023 -ENCODING 19 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -f8 -00 -00 -00 -ENDCHAR -STARTCHAR C024 -ENCODING 20 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -00 -f8 -00 -00 -ENDCHAR -STARTCHAR C025 -ENCODING 21 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -38 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C026 -ENCODING 22 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -e0 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C027 -ENCODING 23 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -f8 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C030 -ENCODING 24 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -f8 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C031 -ENCODING 25 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -20 -20 -20 -20 -20 -20 -20 -ENDCHAR -STARTCHAR C032 -ENCODING 26 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -20 -40 -20 -10 -70 -00 -ENDCHAR -STARTCHAR C033 -ENCODING 27 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -20 -10 -20 -40 -70 -00 -ENDCHAR -STARTCHAR C034 -ENCODING 28 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -f8 -50 -50 -50 -50 -00 -00 -ENDCHAR -STARTCHAR C035 -ENCODING 29 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -f8 -20 -f8 -40 -00 -00 -ENDCHAR -STARTCHAR C036 -ENCODING 30 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -e0 -40 -48 -b0 -00 -ENDCHAR -STARTCHAR C037 -ENCODING 31 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -20 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C040 -ENCODING 32 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -00 -00 -00 -00 -ENDCHAR -STARTCHAR ! -ENCODING 33 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -20 -20 -20 -00 -20 -00 -ENDCHAR -STARTCHAR " -ENCODING 34 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -50 -50 -50 -00 -00 -00 -00 -ENDCHAR -STARTCHAR # -ENCODING 35 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -50 -50 -f8 -50 -f8 -50 -50 -00 -ENDCHAR -STARTCHAR $ -ENCODING 36 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -70 -a0 -70 -28 -70 -20 -00 -ENDCHAR -STARTCHAR % -ENCODING 37 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -50 -20 -50 -10 -00 -00 -ENDCHAR -STARTCHAR & -ENCODING 38 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -20 -50 -50 -20 -50 -50 -28 -00 -ENDCHAR -STARTCHAR ' -ENCODING 39 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -20 -40 -00 -00 -00 -00 -ENDCHAR -STARTCHAR ( -ENCODING 40 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -20 -20 -20 -10 -00 -00 -ENDCHAR -STARTCHAR ) -ENCODING 41 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -20 -20 -20 -40 -00 -00 -ENDCHAR -STARTCHAR * -ENCODING 42 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -30 -78 -30 -48 -00 -00 -ENDCHAR -STARTCHAR + -ENCODING 43 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -20 -f8 -20 -20 -00 -00 -ENDCHAR -STARTCHAR , -ENCODING 44 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -30 -20 -40 -00 -ENDCHAR -STARTCHAR - -ENCODING 45 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -78 -00 -00 -00 -ENDCHAR -STARTCHAR . -ENCODING 46 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -20 -70 -20 -00 -ENDCHAR -STARTCHAR / -ENCODING 47 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -08 -08 -10 -20 -40 -40 -00 -ENDCHAR -STARTCHAR 0 -ENCODING 48 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -50 -50 -50 -50 -20 -00 -ENDCHAR -STARTCHAR 1 -ENCODING 49 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -60 -20 -20 -20 -70 -00 -ENDCHAR -STARTCHAR 2 -ENCODING 50 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -08 -30 -40 -78 -00 -ENDCHAR -STARTCHAR 3 -ENCODING 51 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -10 -08 -48 -30 -00 -ENDCHAR -STARTCHAR 4 -ENCODING 52 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -30 -50 -78 -10 -10 -00 -ENDCHAR -STARTCHAR 5 -ENCODING 53 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -78 -40 -70 -08 -48 -30 -00 -ENDCHAR -STARTCHAR 6 -ENCODING 54 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -40 -50 -68 -48 -30 -00 -ENDCHAR -STARTCHAR 7 -ENCODING 55 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -78 -08 -10 -10 -20 -20 -00 -ENDCHAR -STARTCHAR 8 -ENCODING 56 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -30 -48 -48 -30 -00 -ENDCHAR -STARTCHAR 9 -ENCODING 57 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -58 -28 -08 -30 -00 -ENDCHAR -STARTCHAR : -ENCODING 58 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -30 -00 -30 -30 -00 -00 -ENDCHAR -STARTCHAR ; -ENCODING 59 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -30 -00 -30 -20 -40 -00 -ENDCHAR -STARTCHAR < -ENCODING 60 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -20 -40 -40 -20 -10 -00 -ENDCHAR -STARTCHAR = -ENCODING 61 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -70 -00 -70 -00 -00 -00 -ENDCHAR -STARTCHAR > -ENCODING 62 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -20 -10 -10 -20 -40 -00 -ENDCHAR -STARTCHAR ? -ENCODING 63 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -50 -10 -20 -00 -20 -00 -ENDCHAR -STARTCHAR @ -ENCODING 64 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -30 -48 -98 -a8 -a8 -90 -40 -30 -ENDCHAR -STARTCHAR A -ENCODING 65 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -48 -78 -48 -48 -00 -ENDCHAR -STARTCHAR B -ENCODING 66 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -48 -70 -48 -48 -70 -00 -ENDCHAR -STARTCHAR C -ENCODING 67 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -40 -40 -48 -30 -00 -ENDCHAR -STARTCHAR D -ENCODING 68 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -48 -48 -48 -48 -70 -00 -ENDCHAR -STARTCHAR E -ENCODING 69 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -78 -40 -70 -40 -40 -78 -00 -ENDCHAR -STARTCHAR F -ENCODING 70 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -78 -40 -70 -40 -40 -40 -00 -ENDCHAR -STARTCHAR G -ENCODING 71 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -40 -58 -48 -30 -00 -ENDCHAR -STARTCHAR H -ENCODING 72 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -48 -78 -48 -48 -48 -00 -ENDCHAR -STARTCHAR I -ENCODING 73 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -20 -20 -20 -20 -70 -00 -ENDCHAR -STARTCHAR J -ENCODING 74 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -38 -08 -08 -08 -48 -30 -00 -ENDCHAR -STARTCHAR K -ENCODING 75 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -50 -60 -50 -50 -48 -00 -ENDCHAR -STARTCHAR L -ENCODING 76 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -40 -40 -40 -40 -70 -00 -ENDCHAR -STARTCHAR M -ENCODING 77 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -78 -78 -48 -48 -48 -00 -ENDCHAR -STARTCHAR N -ENCODING 78 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -68 -78 -58 -58 -48 -00 -ENDCHAR -STARTCHAR O -ENCODING 79 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -48 -48 -48 -30 -00 -ENDCHAR -STARTCHAR P -ENCODING 80 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -48 -48 -70 -40 -40 -00 -ENDCHAR -STARTCHAR Q -ENCODING 81 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -48 -68 -58 -30 -08 -ENDCHAR -STARTCHAR R -ENCODING 82 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -48 -48 -70 -58 -48 -00 -ENDCHAR -STARTCHAR S -ENCODING 83 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -30 -48 -20 -10 -48 -30 -00 -ENDCHAR -STARTCHAR T -ENCODING 84 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -f8 -20 -20 -20 -20 -20 -00 -ENDCHAR -STARTCHAR U -ENCODING 85 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -48 -48 -48 -48 -30 -00 -ENDCHAR -STARTCHAR V -ENCODING 86 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -48 -48 -48 -30 -30 -00 -ENDCHAR -STARTCHAR W -ENCODING 87 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -48 -48 -78 -78 -48 -00 -ENDCHAR -STARTCHAR X -ENCODING 88 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -48 -48 -30 -30 -48 -48 -00 -ENDCHAR -STARTCHAR Y -ENCODING 89 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -88 -88 -50 -20 -20 -20 -00 -ENDCHAR -STARTCHAR Z -ENCODING 90 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -78 -08 -10 -20 -40 -78 -00 -ENDCHAR -STARTCHAR [ -ENCODING 91 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -40 -40 -40 -40 -70 -00 -ENDCHAR -STARTCHAR \ -ENCODING 92 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -40 -20 -10 -08 -08 -00 -ENDCHAR -STARTCHAR ] -ENCODING 93 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -70 -10 -10 -10 -10 -70 -00 -ENDCHAR -STARTCHAR ^ -ENCODING 94 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -50 -50 -00 -00 -00 -00 -ENDCHAR -STARTCHAR _ -ENCODING 95 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -00 -00 -00 -78 -ENDCHAR -STARTCHAR ` -ENCODING 96 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -60 -40 -20 -00 -00 -00 -00 -ENDCHAR -STARTCHAR a -ENCODING 97 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -28 -58 -58 -28 -00 -ENDCHAR -STARTCHAR b -ENCODING 98 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -40 -70 -48 -48 -70 -00 -ENDCHAR -STARTCHAR c -ENCODING 99 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -30 -40 -40 -30 -00 -ENDCHAR -STARTCHAR d -ENCODING 100 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -08 -08 -28 -58 -58 -28 -00 -ENDCHAR -STARTCHAR e -ENCODING 101 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -30 -78 -40 -30 -00 -ENDCHAR -STARTCHAR f -ENCODING 102 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -28 -20 -70 -20 -20 -00 -ENDCHAR -STARTCHAR g -ENCODING 103 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -30 -48 -38 -08 -30 -ENDCHAR -STARTCHAR h -ENCODING 104 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -40 -70 -48 -48 -48 -00 -ENDCHAR -STARTCHAR i -ENCODING 105 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -00 -60 -20 -20 -70 -00 -ENDCHAR -STARTCHAR j -ENCODING 106 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -10 -00 -10 -10 -10 -50 -20 -ENDCHAR -STARTCHAR k -ENCODING 107 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -40 -40 -48 -70 -48 -48 -00 -ENDCHAR -STARTCHAR l -ENCODING 108 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -60 -20 -20 -20 -20 -70 -00 -ENDCHAR -STARTCHAR m -ENCODING 109 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -50 -a8 -a8 -88 -00 -ENDCHAR -STARTCHAR n -ENCODING 110 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -70 -48 -48 -48 -00 -ENDCHAR -STARTCHAR o -ENCODING 111 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -30 -48 -48 -30 -00 -ENDCHAR -STARTCHAR p -ENCODING 112 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -70 -48 -70 -40 -40 -ENDCHAR -STARTCHAR q -ENCODING 113 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -38 -48 -38 -08 -08 -ENDCHAR -STARTCHAR r -ENCODING 114 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -50 -68 -40 -40 -00 -ENDCHAR -STARTCHAR s -ENCODING 115 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -70 -60 -10 -70 -00 -ENDCHAR -STARTCHAR t -ENCODING 116 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -20 -70 -20 -28 -10 -00 -ENDCHAR -STARTCHAR u -ENCODING 117 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -48 -48 -48 -38 -00 -ENDCHAR -STARTCHAR v -ENCODING 118 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -50 -50 -50 -20 -00 -ENDCHAR -STARTCHAR w -ENCODING 119 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -88 -a8 -a8 -70 -00 -ENDCHAR -STARTCHAR x -ENCODING 120 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -48 -30 -30 -48 -00 -ENDCHAR -STARTCHAR y -ENCODING 121 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -48 -48 -38 -48 -30 -ENDCHAR -STARTCHAR z -ENCODING 122 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -78 -10 -20 -78 -00 -ENDCHAR -STARTCHAR { -ENCODING 123 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -18 -20 -10 -60 -10 -20 -18 -00 -ENDCHAR -STARTCHAR | -ENCODING 124 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -20 -20 -20 -20 -20 -20 -00 -ENDCHAR -STARTCHAR } -ENCODING 125 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -60 -10 -20 -18 -20 -10 -60 -00 -ENDCHAR -STARTCHAR ~ -ENCODING 126 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -28 -50 -00 -00 -00 -00 -00 -ENDCHAR -STARTCHAR C177 -ENCODING 127 -SWIDTH 1 0 -DWIDTH 5 0 -BBX 5 8 0 -1 -BITMAP -00 -00 -00 -00 -00 -00 -00 -00 -ENDCHAR -ENDFONT diff --git a/firmware/X5x8.c b/firmware/X5x8.c deleted file mode 100644 index 6422cc892d..0000000000 --- a/firmware/X5x8.c +++ /dev/null @@ -1,2853 +0,0 @@ -/* Generated by convbdf on Tue Sep 10 11:31:14 MDT 2002. */ -#include "config.h" -#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) -#include "font.h" - -/* Font information: - - name: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV - pixel size: 8 - ascent: 7 - descent: 1 -*/ - -/* Font character bitmap data. */ -static MWIMAGEBITS X5x8_bits[] = { - -/* Character (0x00): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x01): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | *** | - |***** | - | *** | - | * | - | | - | | - +----------------+ */ -0x0000, -0x2000, -0x7000, -0xf800, -0x7000, -0x2000, -0x0000, -0x0000, - -/* Character (0x02): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | * * | - | * * | - | * * | - | * * | - | * * | - +----------------+ */ -0x0000, -0x2800, -0x5000, -0x2800, -0x5000, -0x2800, -0x5000, -0x2800, - -/* Character (0x03): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * * | - | * * | - | *** | - | * * | - | * * | - | *** | - | * | - | * | - +----------------+ */ -0x5000, -0x5000, -0x7000, -0x5000, -0x5000, -0x3800, -0x1000, -0x1000, - -/* Character (0x04): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - |*** | - |* | - |** | - |* *** | - |* * | - | ** | - | * | - | * | - +----------------+ */ -0xe000, -0x8000, -0xc000, -0xb800, -0xa000, -0x3000, -0x2000, -0x2000, - -/* Character (0x05): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | ** | - |* | - | ** | - | | - | ** | - | * * | - | ** | - | * * | - +----------------+ */ -0x6000, -0x8000, -0x6000, -0x0000, -0x3000, -0x2800, -0x3000, -0x2800, - -/* Character (0x06): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - |* | - |* | - |* | - |*** | - | *** | - | * | - | ** | - | * | - +----------------+ */ -0x8000, -0x8000, -0x8000, -0xe000, -0x3800, -0x2000, -0x3000, -0x2000, - -/* Character (0x07): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x2000, -0x5000, -0x2000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x08): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | *** | - | * | - | | - | *** | - | | - | | - +----------------+ */ -0x0000, -0x2000, -0x7000, -0x2000, -0x0000, -0x7000, -0x0000, -0x0000, - -/* Character (0x09): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - |* * | - |** * | - |* ** | - |* * | - | * | - | * | - | * | - | *** | - +----------------+ */ -0x9000, -0xd000, -0xb000, -0x9000, -0x2000, -0x2000, -0x2000, -0x3800, - -/* Character (0x0a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - |* * | - |* * | - |* * | - | * | - | *** | - | * | - | * | - | * | - +----------------+ */ -0xa000, -0xa000, -0xa000, -0x4000, -0x3800, -0x1000, -0x1000, -0x1000, - -/* Character (0x0b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - |*** | - | | - | | - | | - | | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0xe000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x0c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - |*** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0xe000, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x0d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | *** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3800, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x0e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - | *** | - | | - | | - | | - | | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0x3800, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x0f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - |***** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0xf800, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x10): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - |***** | - | | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0xf800, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x11): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - |***** | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0xf800, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x12): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - |***** | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0xf800, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x13): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - |***** | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0xf800, -0x0000, -0x0000, -0x0000, - -/* Character (0x14): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | | - |***** | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0xf800, -0x0000, -0x0000, - -/* Character (0x15): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - | *** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0x3800, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x16): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - |*** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0xe000, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x17): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - |***** | - | | - | | - | | - | | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0xf800, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x18): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - |***** | - | * | - | * | - | * | - | * | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0xf800, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x19): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * | - | * | - | * | - | * | - | * | - | * | - | * | - +----------------+ */ -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, - -/* Character (0x1a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x1000, -0x2000, -0x4000, -0x2000, -0x1000, -0x7000, -0x0000, - -/* Character (0x1b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x4000, -0x2000, -0x1000, -0x2000, -0x4000, -0x7000, -0x0000, - -/* Character (0x1c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - |***** | - | * * | - | * * | - | * * | - | * * | - | | - | | - +----------------+ */ -0x0000, -0xf800, -0x5000, -0x5000, -0x5000, -0x5000, -0x0000, -0x0000, - -/* Character (0x1d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - |***** | - | * | - |***** | - | * | - | | - | | - +----------------+ */ -0x0000, -0x1000, -0xf800, -0x2000, -0xf800, -0x4000, -0x0000, -0x0000, - -/* Character (0x1e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - |*** | - | * | - | * * | - |* ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0xe000, -0x4000, -0x4800, -0xb000, -0x0000, - -/* Character (0x1f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x2000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x20): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x21): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | | - | * | - | | - +----------------+ */ -0x0000, -0x2000, -0x2000, -0x2000, -0x2000, -0x0000, -0x2000, -0x0000, - -/* Character (0x22): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | * * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x5000, -0x5000, -0x5000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x23): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * * | - | * * | - |***** | - | * * | - |***** | - | * * | - | * * | - | | - +----------------+ */ -0x5000, -0x5000, -0xf800, -0x5000, -0xf800, -0x5000, -0x5000, -0x0000, - -/* Character (0x24): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | *** | - |* * | - | *** | - | * * | - | *** | - | * | - | | - +----------------+ */ -0x2000, -0x7000, -0xa000, -0x7000, -0x2800, -0x7000, -0x2000, -0x0000, - -/* Character (0x25): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * | - | * * | - | * | - | | - | | - +----------------+ */ -0x0000, -0x4000, -0x5000, -0x2000, -0x5000, -0x1000, -0x0000, -0x0000, - -/* Character (0x26): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | * | - | * * | - | * * | - | * | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x2000, -0x5000, -0x5000, -0x2000, -0x5000, -0x5000, -0x2800, -0x0000, - -/* Character (0x27): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * | - | * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x3000, -0x2000, -0x4000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x28): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | | - | | - +----------------+ */ -0x0000, -0x1000, -0x2000, -0x2000, -0x2000, -0x1000, -0x0000, -0x0000, - -/* Character (0x29): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | | - | | - +----------------+ */ -0x0000, -0x4000, -0x2000, -0x2000, -0x2000, -0x4000, -0x0000, -0x0000, - -/* Character (0x2a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | ** | - | **** | - | ** | - | * * | - | | - | | - +----------------+ */ -0x0000, -0x4800, -0x3000, -0x7800, -0x3000, -0x4800, -0x0000, -0x0000, - -/* Character (0x2b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - |***** | - | * | - | * | - | | - | | - +----------------+ */ -0x0000, -0x2000, -0x2000, -0xf800, -0x2000, -0x2000, -0x0000, -0x0000, - -/* Character (0x2c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | ** | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x3000, -0x2000, -0x4000, -0x0000, - -/* Character (0x2d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | **** | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x7800, -0x0000, -0x0000, -0x0000, - -/* Character (0x2e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | * | - | *** | - | * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x2000, -0x7000, -0x2000, -0x0000, - -/* Character (0x2f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x0800, -0x0800, -0x1000, -0x2000, -0x4000, -0x4000, -0x0000, - -/* Character (0x30): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * * | - | * * | - | * * | - | * | - | | - +----------------+ */ -0x0000, -0x2000, -0x5000, -0x5000, -0x5000, -0x5000, -0x2000, -0x0000, - -/* Character (0x31): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | ** | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x2000, -0x6000, -0x2000, -0x2000, -0x2000, -0x7000, -0x0000, - -/* Character (0x32): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * | - | ** | - | * | - | **** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x0800, -0x3000, -0x4000, -0x7800, -0x0000, - -/* Character (0x33): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * | - | * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x1000, -0x0800, -0x4800, -0x3000, -0x0000, - -/* Character (0x34): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | ** | - | * * | - | **** | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x1000, -0x3000, -0x5000, -0x7800, -0x1000, -0x1000, -0x0000, - -/* Character (0x35): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | **** | - | * | - | *** | - | * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x7800, -0x4000, -0x7000, -0x0800, -0x4800, -0x3000, -0x0000, - -/* Character (0x36): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * | - | * * | - | ** * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4000, -0x5000, -0x6800, -0x4800, -0x3000, -0x0000, - -/* Character (0x37): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | **** | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x7800, -0x0800, -0x1000, -0x1000, -0x2000, -0x2000, -0x0000, - -/* Character (0x38): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | ** | - | * * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x3000, -0x4800, -0x4800, -0x3000, -0x0000, - -/* Character (0x39): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * ** | - | * * | - | * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x5800, -0x2800, -0x0800, -0x3000, -0x0000, - -/* Character (0x3a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | ** | - | | - | ** | - | ** | - | | - | | - +----------------+ */ -0x0000, -0x3000, -0x3000, -0x0000, -0x3000, -0x3000, -0x0000, -0x0000, - -/* Character (0x3b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | ** | - | | - | ** | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x3000, -0x3000, -0x0000, -0x3000, -0x2000, -0x4000, -0x0000, - -/* Character (0x3c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x1000, -0x2000, -0x4000, -0x4000, -0x2000, -0x1000, -0x0000, - -/* Character (0x3d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | *** | - | | - | *** | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x7000, -0x0000, -0x7000, -0x0000, -0x0000, -0x0000, - -/* Character (0x3e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x4000, -0x2000, -0x1000, -0x1000, -0x2000, -0x4000, -0x0000, - -/* Character (0x3f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * | - | * | - | | - | * | - | | - +----------------+ */ -0x0000, -0x2000, -0x5000, -0x1000, -0x2000, -0x0000, -0x2000, -0x0000, - -/* Character (0x40): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | ** | - | * * | - |* ** | - |* * * | - |* * * | - |* * | - | * | - | ** | - +----------------+ */ -0x3000, -0x4800, -0x9800, -0xa800, -0xa800, -0x9000, -0x4000, -0x3000, - -/* Character (0x41): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * * | - | **** | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x4800, -0x7800, -0x4800, -0x4800, -0x0000, - -/* Character (0x42): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * * | - | *** | - | * * | - | * * | - | *** | - | | - +----------------+ */ -0x0000, -0x7000, -0x4800, -0x7000, -0x4800, -0x4800, -0x7000, -0x0000, - -/* Character (0x43): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * | - | * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x4000, -0x4000, -0x4800, -0x3000, -0x0000, - -/* Character (0x44): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * * | - | * * | - | * * | - | * * | - | *** | - | | - +----------------+ */ -0x0000, -0x7000, -0x4800, -0x4800, -0x4800, -0x4800, -0x7000, -0x0000, - -/* Character (0x45): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | **** | - | * | - | *** | - | * | - | * | - | **** | - | | - +----------------+ */ -0x0000, -0x7800, -0x4000, -0x7000, -0x4000, -0x4000, -0x7800, -0x0000, - -/* Character (0x46): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | **** | - | * | - | *** | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x7800, -0x4000, -0x7000, -0x4000, -0x4000, -0x4000, -0x0000, - -/* Character (0x47): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * | - | * ** | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x4000, -0x5800, -0x4800, -0x3000, -0x0000, - -/* Character (0x48): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | **** | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x4800, -0x7800, -0x4800, -0x4800, -0x4800, -0x0000, - -/* Character (0x49): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x7000, -0x2000, -0x2000, -0x2000, -0x2000, -0x7000, -0x0000, - -/* Character (0x4a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * | - | * | - | * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3800, -0x0800, -0x0800, -0x0800, -0x4800, -0x3000, -0x0000, - -/* Character (0x4b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | ** | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x5000, -0x6000, -0x5000, -0x5000, -0x4800, -0x0000, - -/* Character (0x4c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x7000, -0x0000, - -/* Character (0x4d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | **** | - | **** | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x7800, -0x7800, -0x4800, -0x4800, -0x4800, -0x0000, - -/* Character (0x4e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | ** * | - | **** | - | * ** | - | * ** | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x6800, -0x7800, -0x5800, -0x5800, -0x4800, -0x0000, - -/* Character (0x4f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * * | - | * * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x4800, -0x4800, -0x4800, -0x3000, -0x0000, - -/* Character (0x50): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * * | - | * * | - | *** | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x7000, -0x4800, -0x4800, -0x7000, -0x4000, -0x4000, -0x0000, - -/* Character (0x51): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * * | - | ** * | - | * ** | - | ** | - | * | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x4800, -0x6800, -0x5800, -0x3000, -0x0800, - -/* Character (0x52): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * * | - | * * | - | *** | - | * ** | - | * * | - | | - +----------------+ */ -0x0000, -0x7000, -0x4800, -0x4800, -0x7000, -0x5800, -0x4800, -0x0000, - -/* Character (0x53): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * * | - | * | - | * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x3000, -0x4800, -0x2000, -0x1000, -0x4800, -0x3000, -0x0000, - -/* Character (0x54): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - |***** | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0xf800, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x0000, - -/* Character (0x55): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | * * | - | * * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x4800, -0x4800, -0x4800, -0x4800, -0x4800, -0x3000, -0x0000, - -/* Character (0x56): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | * * | - | * * | - | ** | - | ** | - | | - +----------------+ */ -0x0000, -0x4800, -0x4800, -0x4800, -0x4800, -0x3000, -0x3000, -0x0000, - -/* Character (0x57): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | * * | - | **** | - | **** | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x4800, -0x4800, -0x7800, -0x7800, -0x4800, -0x0000, - -/* Character (0x58): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | ** | - | ** | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4800, -0x4800, -0x3000, -0x3000, -0x4800, -0x4800, -0x0000, - -/* Character (0x59): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - |* * | - |* * | - | * * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x8800, -0x8800, -0x5000, -0x2000, -0x2000, -0x2000, -0x0000, - -/* Character (0x5a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | **** | - | * | - | * | - | * | - | * | - | **** | - | | - +----------------+ */ -0x0000, -0x7800, -0x0800, -0x1000, -0x2000, -0x4000, -0x7800, -0x0000, - -/* Character (0x5b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x7000, -0x4000, -0x4000, -0x4000, -0x4000, -0x7000, -0x0000, - -/* Character (0x5c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x4000, -0x4000, -0x2000, -0x1000, -0x0800, -0x0800, -0x0000, - -/* Character (0x5d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | *** | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x7000, -0x1000, -0x1000, -0x1000, -0x1000, -0x7000, -0x0000, - -/* Character (0x5e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x2000, -0x5000, -0x5000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x5f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | | - | | - | | - | **** | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x7800, - -/* Character (0x60): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * | - | * | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x6000, -0x4000, -0x2000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x61): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | * ** | - | * ** | - | * * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x2800, -0x5800, -0x5800, -0x2800, -0x0000, - -/* Character (0x62): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | *** | - | * * | - | * * | - | *** | - | | - +----------------+ */ -0x0000, -0x4000, -0x4000, -0x7000, -0x4800, -0x4800, -0x7000, -0x0000, - -/* Character (0x63): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | ** | - | * | - | * | - | ** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3000, -0x4000, -0x4000, -0x3000, -0x0000, - -/* Character (0x64): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * * | - | * ** | - | * ** | - | * * | - | | - +----------------+ */ -0x0000, -0x0800, -0x0800, -0x2800, -0x5800, -0x5800, -0x2800, -0x0000, - -/* Character (0x65): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | ** | - | **** | - | * | - | ** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3000, -0x7800, -0x4000, -0x3000, -0x0000, - -/* Character (0x66): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * * | - | * | - | *** | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x1000, -0x2800, -0x2000, -0x7000, -0x2000, -0x2000, -0x0000, - -/* Character (0x67): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | ** | - | * * | - | *** | - | * | - | ** | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3000, -0x4800, -0x3800, -0x0800, -0x3000, - -/* Character (0x68): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | *** | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4000, -0x4000, -0x7000, -0x4800, -0x4800, -0x4800, -0x0000, - -/* Character (0x69): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | | - | ** | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x2000, -0x0000, -0x6000, -0x2000, -0x2000, -0x7000, -0x0000, - -/* Character (0x6a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | | - | * | - | * | - | * | - | * * | - | * | - +----------------+ */ -0x0000, -0x1000, -0x0000, -0x1000, -0x1000, -0x1000, -0x5000, -0x2000, - -/* Character (0x6b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * * | - | *** | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x4000, -0x4000, -0x4800, -0x7000, -0x4800, -0x4800, -0x0000, - -/* Character (0x6c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | ** | - | * | - | * | - | * | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x6000, -0x2000, -0x2000, -0x2000, -0x2000, -0x7000, -0x0000, - -/* Character (0x6d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - |* * * | - |* * * | - |* * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x5000, -0xa800, -0xa800, -0x8800, -0x0000, - -/* Character (0x6e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | *** | - | * * | - | * * | - | * * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x7000, -0x4800, -0x4800, -0x4800, -0x0000, - -/* Character (0x6f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | ** | - | * * | - | * * | - | ** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3000, -0x4800, -0x4800, -0x3000, -0x0000, - -/* Character (0x70): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | *** | - | * * | - | *** | - | * | - | * | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x7000, -0x4800, -0x7000, -0x4000, -0x4000, - -/* Character (0x71): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | *** | - | * * | - | *** | - | * | - | * | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x3800, -0x4800, -0x3800, -0x0800, -0x0800, - -/* Character (0x72): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | ** * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x5000, -0x6800, -0x4000, -0x4000, -0x0000, - -/* Character (0x73): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | *** | - | ** | - | * | - | *** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x7000, -0x6000, -0x1000, -0x7000, -0x0000, - -/* Character (0x74): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | *** | - | * | - | * * | - | * | - | | - +----------------+ */ -0x0000, -0x2000, -0x2000, -0x7000, -0x2000, -0x2800, -0x1000, -0x0000, - -/* Character (0x75): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | * * | - | * * | - | *** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x4800, -0x4800, -0x4800, -0x3800, -0x0000, - -/* Character (0x76): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | * * | - | * * | - | * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x5000, -0x5000, -0x5000, -0x2000, -0x0000, - -/* Character (0x77): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - |* * | - |* * * | - |* * * | - | *** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x8800, -0xa800, -0xa800, -0x7000, -0x0000, - -/* Character (0x78): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | ** | - | ** | - | * * | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x4800, -0x3000, -0x3000, -0x4800, -0x0000, - -/* Character (0x79): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | * * | - | * * | - | *** | - | * * | - | ** | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x4800, -0x4800, -0x3800, -0x4800, -0x3000, - -/* Character (0x7a): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | **** | - | * | - | * | - | **** | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x7800, -0x1000, -0x2000, -0x7800, -0x0000, - -/* Character (0x7b): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | ** | - | * | - | * | - | ** | - | * | - | * | - | ** | - | | - +----------------+ */ -0x1800, -0x2000, -0x1000, -0x6000, -0x1000, -0x2000, -0x1800, -0x0000, - -/* Character (0x7c): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * | - | * | - | * | - | * | - | * | - | * | - | | - +----------------+ */ -0x0000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x0000, - -/* Character (0x7d): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | ** | - | * | - | * | - | ** | - | * | - | * | - | ** | - | | - +----------------+ */ -0x6000, -0x1000, -0x2000, -0x1800, -0x2000, -0x1000, -0x6000, -0x0000, - -/* Character (0x7e): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | * * | - | * * | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x2800, -0x5000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character (0x7f): - bbw=5, bbh=8, bbx=0, bby=-1, width=5 - +----------------+ - | | - | | - | | - | | - | | - | | - | | - | | - +----------------+ */ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -}; - -/* Character->glyph mapping. */ -static unsigned long X5x8_offset[] = { - 0, /* (0x00) */ - 8, /* (0x01) */ - 16, /* (0x02) */ - 24, /* (0x03) */ - 32, /* (0x04) */ - 40, /* (0x05) */ - 48, /* (0x06) */ - 56, /* (0x07) */ - 64, /* (0x08) */ - 72, /* (0x09) */ - 80, /* (0x0a) */ - 88, /* (0x0b) */ - 96, /* (0x0c) */ - 104, /* (0x0d) */ - 112, /* (0x0e) */ - 120, /* (0x0f) */ - 128, /* (0x10) */ - 136, /* (0x11) */ - 144, /* (0x12) */ - 152, /* (0x13) */ - 160, /* (0x14) */ - 168, /* (0x15) */ - 176, /* (0x16) */ - 184, /* (0x17) */ - 192, /* (0x18) */ - 200, /* (0x19) */ - 208, /* (0x1a) */ - 216, /* (0x1b) */ - 224, /* (0x1c) */ - 232, /* (0x1d) */ - 240, /* (0x1e) */ - 248, /* (0x1f) */ - 256, /* (0x20) */ - 264, /* (0x21) */ - 272, /* (0x22) */ - 280, /* (0x23) */ - 288, /* (0x24) */ - 296, /* (0x25) */ - 304, /* (0x26) */ - 312, /* (0x27) */ - 320, /* (0x28) */ - 328, /* (0x29) */ - 336, /* (0x2a) */ - 344, /* (0x2b) */ - 352, /* (0x2c) */ - 360, /* (0x2d) */ - 368, /* (0x2e) */ - 376, /* (0x2f) */ - 384, /* (0x30) */ - 392, /* (0x31) */ - 400, /* (0x32) */ - 408, /* (0x33) */ - 416, /* (0x34) */ - 424, /* (0x35) */ - 432, /* (0x36) */ - 440, /* (0x37) */ - 448, /* (0x38) */ - 456, /* (0x39) */ - 464, /* (0x3a) */ - 472, /* (0x3b) */ - 480, /* (0x3c) */ - 488, /* (0x3d) */ - 496, /* (0x3e) */ - 504, /* (0x3f) */ - 512, /* (0x40) */ - 520, /* (0x41) */ - 528, /* (0x42) */ - 536, /* (0x43) */ - 544, /* (0x44) */ - 552, /* (0x45) */ - 560, /* (0x46) */ - 568, /* (0x47) */ - 576, /* (0x48) */ - 584, /* (0x49) */ - 592, /* (0x4a) */ - 600, /* (0x4b) */ - 608, /* (0x4c) */ - 616, /* (0x4d) */ - 624, /* (0x4e) */ - 632, /* (0x4f) */ - 640, /* (0x50) */ - 648, /* (0x51) */ - 656, /* (0x52) */ - 664, /* (0x53) */ - 672, /* (0x54) */ - 680, /* (0x55) */ - 688, /* (0x56) */ - 696, /* (0x57) */ - 704, /* (0x58) */ - 712, /* (0x59) */ - 720, /* (0x5a) */ - 728, /* (0x5b) */ - 736, /* (0x5c) */ - 744, /* (0x5d) */ - 752, /* (0x5e) */ - 760, /* (0x5f) */ - 768, /* (0x60) */ - 776, /* (0x61) */ - 784, /* (0x62) */ - 792, /* (0x63) */ - 800, /* (0x64) */ - 808, /* (0x65) */ - 816, /* (0x66) */ - 824, /* (0x67) */ - 832, /* (0x68) */ - 840, /* (0x69) */ - 848, /* (0x6a) */ - 856, /* (0x6b) */ - 864, /* (0x6c) */ - 872, /* (0x6d) */ - 880, /* (0x6e) */ - 888, /* (0x6f) */ - 896, /* (0x70) */ - 904, /* (0x71) */ - 912, /* (0x72) */ - 920, /* (0x73) */ - 928, /* (0x74) */ - 936, /* (0x75) */ - 944, /* (0x76) */ - 952, /* (0x77) */ - 960, /* (0x78) */ - 968, /* (0x79) */ - 976, /* (0x7a) */ - 984, /* (0x7b) */ - 992, /* (0x7c) */ - 1000, /* (0x7d) */ - 1008, /* (0x7e) */ - 1016, /* (0x7f) */ -}; - -/* Exported structure definition. */ -MWCFONT font_X5x8 = { - "X5x8", - 5, - 8, - 7, - 0, - 128, - X5x8_bits, - X5x8_offset, - 0, /* fixed width*/ - 0, - sizeof(X5x8_bits)/sizeof(MWIMAGEBITS), -}; -#endif /* HAVE_LCD_BITMAP */ - diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index 8abc638175..2293191139 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -547,7 +547,6 @@ void lcd_set_contrast(int val) */ unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8]; -static int font=0; static int xmargin=0; static int ymargin=0; @@ -661,11 +660,6 @@ void lcd_clear_display (void) #endif } -void lcd_setfont(int newfont) -{ - font = newfont; -} - void lcd_setmargins(int x, int y) { xmargin = x; @@ -682,10 +676,11 @@ int lcd_getymargin(void) return ymargin; } +static int curfont = FONT_SYSFIXED; + /* * Put a string at specified character position */ -//FIXME require font parameter void lcd_puts(int x, int y, unsigned char *str) { int xpos,ypos,w,h; @@ -707,10 +702,10 @@ void lcd_puts(int x, int y, unsigned char *str) if(!str || !str[0]) return; - lcd_getstringsize(str, font, &w, &h); - xpos = xmargin + x*w / strlen(str); //FIXME why strlen? + lcd_getstringsize(str, curfont, &w, &h); + xpos = xmargin + x*w / strlen(str); ypos = ymargin + y*h; - lcd_putsxy( xpos, ypos, str, font); + lcd_putsxy( xpos, ypos, str, curfont); lcd_clearrect(xpos + w, ypos, LCD_WIDTH - (xpos + w), h); #if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) /* this function is being used when simulating a charcell LCD and @@ -719,6 +714,80 @@ void lcd_puts(int x, int y, unsigned char *str) #endif } +/* set current font*/ +void lcd_setfont(int newfont) +{ + curfont = newfont; +} + +/* + * Return width and height of a given font. + */ +void lcd_getfontsize(int font, int *width, int *height) +{ + struct font* pf = font_get(font); + + *width = pf->maxwidth; + *height = pf->height; +} + + +/* + * Return width and height of a given font. + */ +int lcd_getstringsize(unsigned char *str, int font, int *w, int *h) +{ + struct font* pf = font_get(font); + int ch; + int width = 0; + + while((ch = *str++)) { + /* check input range*/ + if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) + ch = pf->defaultchar; + ch -= pf->firstchar; + + /* get proportional width and glyph bits*/ + width += pf->width? pf->width[ch]: pf->maxwidth; + } + *w = width; + *h = pf->height; + + return width; +} + +/* + * Put a string at specified bit position + */ +void lcd_putsxy(int x, int y, unsigned char *str, int font) +{ + int ch; + struct font* pf = font_get(font); + + while (((ch = *str++) != '\0')) { + bitmap_t *bits; + int width; + + /* check input range*/ + if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) + ch = pf->defaultchar; + ch -= pf->firstchar; + + /* get proportional width and glyph bits*/ + width = pf->width ? pf->width[ch] : pf->maxwidth; + if (x + width > LCD_WIDTH) + break; + + /* no partial-height drawing for now...*/ + if (y + pf->height > LCD_HEIGHT) + break; + bits = pf->bits + (pf->offset ? pf->offset[ch] : (pf->height * ch)); + + lcd_bitmap((unsigned char *)bits, x, y, width, pf->height, true); + x += width; + } +} + /* * Display a bitmap at (x, y), size (nx, ny) * clear is true to clear destination area first @@ -1038,14 +1107,14 @@ void lcd_puts_scroll(int x, int y, unsigned char* string ) unsigned char ch[2]; int w, h; int width, height; - lcd_getfontsize(font, &width, &height); + lcd_getfontsize(curfont, &width, &height); ch[1] = 0; /* zero terminate */ ch[0] = string[0]; width = 0; s->space = 0; while ( ch[0] && - (width + lcd_getstringsize(ch, 0, &w, &h) < + (width + lcd_getstringsize(ch, curfont, &w, &h) < (LCD_WIDTH - x*8))) { width += w; s->space++; @@ -1058,7 +1127,7 @@ void lcd_puts_scroll(int x, int y, unsigned char* string ) #ifdef HAVE_LCD_BITMAP s->space += 2; - lcd_getstringsize(string,0,&w,&h); + lcd_getstringsize(string,curfont,&w,&h); if ( w > LCD_WIDTH - xmargin ) { #else if ( s->textlen > s->space ) { diff --git a/firmware/drivers/lcd.h b/firmware/drivers/lcd.h index 8c89d4c057..388f31c1cf 100644 --- a/firmware/drivers/lcd.h +++ b/firmware/drivers/lcd.h @@ -99,9 +99,6 @@ extern void lcd_double_height (bool on); */ extern unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8]; -extern void lcd_putsxy(int x, int y, unsigned char *string, int font); -extern void lcd_setfont(int font); -extern void lcd_getfontsize(int font, int *width, int *height); extern void lcd_setmargins(int xmargin, int ymargin); extern int lcd_getxmargin(void); extern int lcd_getymargin(void); @@ -118,6 +115,10 @@ extern void lcd_clearpixel(int x, int y); extern void lcd_invertpixel(int x, int y); extern void lcd_roll(int pixels); +extern void lcd_setfont(int font); +extern void lcd_getfontsize(int font, int *width, int *height); +extern void lcd_putsxy(int x, int y, unsigned char *string, int font); + #endif /* CHARCELLS / BITMAP */ extern int lcd_getstringsize(unsigned char *str, int font, int *w, int *h); diff --git a/firmware/font.c b/firmware/font.c index e9c70cd64e..72c7085b7a 100644 --- a/firmware/font.c +++ b/firmware/font.c @@ -30,165 +30,257 @@ #include <string.h> #include "lcd.h" #include "font.h" +#include "file.h" #include "debug.h" #include "panic.h" -/* available compiled-in fonts*/ -extern MWCFONT font_X5x8; -/*extern MWCFONT font_X6x9; */ -/*extern MWCFONT font_courB08; */ -/*extern MWCFONT font_timR08; */ +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* compiled-in font */ +extern struct font sysfont; -/* structure filled in by rbf_load_font*/ -static MWCFONT font_UI; +/* structure filled in by font_load */ +static struct font font_ui; -/* system font table, in order of FONT_xxx definition*/ -struct corefont sysfonts[MAXFONTS] = { - { &font_X5x8, NULL }, /* compiled-in FONT_SYSFIXED*/ - { &font_UI, "/system.fnt" }, /* loaded FONT_UI*/ - { NULL, NULL }, /* no FONT_MP3*/ -}; +/* system font table, in order of FONT_xxx definition */ +static struct font* sysfonts[MAXFONTS] = { &sysfont, &font_ui }; -static void rotate_font_bits(PMWCFONT pf); -static void rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width, - unsigned int height); +/* static buffer allocation structures */ +static unsigned char mbuf[MAX_FONT_SIZE]; +static unsigned char *freeptr = mbuf; +static unsigned char *fileptr; +static unsigned char *eofptr; -void -font_init(void) +static void rotate_font_bits(struct font* pf); +static void rotleft(unsigned char *dst, + bitmap_t *src, + unsigned int width, + unsigned int height); + +void font_init(void) { - struct corefont *cfp; - - for (cfp=sysfonts; cfp < &sysfonts[MAXFONTS]; ++cfp) { - if (cfp->pf && cfp->diskname) { - cfp->pf = rbf_load_font(cfp->diskname, cfp->pf); -#if defined(DEBUG) || defined(SIMULATOR) - if (!cfp->pf) - DEBUGF("Font load failed: %s\n", cfp->diskname); -#endif - } + rotate_font_bits(&sysfont); + memset(&font_ui, 0, sizeof(struct font)); +} - /* one-time rotate font bits to rockbox format*/ - if (cfp->pf && cfp->pf->height) - rotate_font_bits(cfp->pf); - } +static int readshort(unsigned short *sp) +{ + unsigned short s; + + s = *fileptr++ & 0xff; + *sp = (*fileptr++ << 8) | s; + return (fileptr <= eofptr); } -/* - * Return a pointer to an incore font structure. - * If the requested font isn't loaded/compiled-in, - * decrement the font number and try again. - */ -PMWCFONT -getfont(int font) +static int readlong(unsigned long *lp) { - PMWCFONT pf; + unsigned long l; - if (font >= MAXFONTS) - font = 0; - while (1) { - pf = sysfonts[font].pf; - if (pf && pf->height) - return pf; - if (--font < 0) - panicf("No font!"); - } + l = *fileptr++ & 0xff; + l |= *fileptr++ << 8; + l |= *fileptr++ << 16; + *lp = (*fileptr++ << 24) | l; + return (fileptr <= eofptr); } -/* - * Return width and height of a given font. - */ -void lcd_getfontsize(int font, int *width, int *height) +/* read count bytes*/ +static int readstr(char *buf, int count) { - PMWCFONT pf = getfont(font); + int n = count; - *width = pf->maxwidth; - *height = pf->height; + while (--n >= 0) + *buf++ = *fileptr++; + return (fileptr <= eofptr)? count: 0; } -/* - * Return width and height of a given font. - */ -//FIXME rename to font_gettextsize, add baseline -int -lcd_getstringsize(unsigned char *str, int font, int *w, int *h) +/* read totlen bytes, return NUL terminated string*/ +/* may write 1 past buf[totlen]; removes blank pad*/ +static int readstrpad(char *buf, int totlen) { - PMWCFONT pf = getfont(font); - int ch; - int width = 0; - - while((ch = *str++)) { - /* check input range*/ - if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) - ch = pf->defaultchar; - ch -= pf->firstchar; - - /* get proportional width and glyph bits*/ - width += pf->width? pf->width[ch]: pf->maxwidth; + char *p = buf; + int n = totlen; + + while (--n >= 0) + *p++ = *fileptr++; + if (fileptr > eofptr) + return 0; + + p = &buf[totlen]; + *p-- = 0; + while (*p == ' ' && p >= buf) + *p-- = '\0'; + return totlen; +} + +/* read and load font into incore font structure*/ +struct font* font_load(char *path) +{ + int fd, filesize; + unsigned short maxwidth, height, ascent, pad; + unsigned long firstchar, defaultchar, size; + unsigned long i, nbits, noffset, nwidth; + char version[4+1]; + char copyright[256+1]; + struct font* pf = &font_ui; + + memset(pf, 0, sizeof(struct font)); + + /* open and read entire font file*/ + fd = open(path, O_RDONLY|O_BINARY); + if (fd < 0) { + DEBUGF("Can't open font: %s\n", path); + return NULL; + } + + /* currently, font loading replaces earlier font allocation*/ + freeptr = (unsigned char *)(((int)mbuf + 3) & ~3); + + fileptr = freeptr; + filesize = read(fd, fileptr, MAX_FONT_SIZE); + eofptr = fileptr + filesize; + + /* no need for multiple font loads currently*/ + /*freeptr += filesize;*/ + /*freeptr = (unsigned char *)(freeptr + 3) & ~3;*/ /* pad freeptr*/ + + close(fd); + if (filesize == MAX_FONT_SIZE) { + DEBUGF("Font %s too large: %d\n", path, filesize); + return NULL; } - *w = width; - *h = pf->height; - return width; + /* read magic and version #*/ + memset(version, 0, sizeof(version)); + if (readstr(version, 4) != 4) + return NULL; + if (strcmp(version, VERSION) != 0) + return NULL; + + /* internal font name*/ + pf->name = fileptr; + if (readstrpad(pf->name, 64) != 64) + return NULL; + + /* copyright, not currently stored*/ + if (readstrpad(copyright, 256) != 256) + return NULL; + + /* font info*/ + if (!readshort(&maxwidth)) + return NULL; + pf->maxwidth = maxwidth; + if (!readshort(&height)) + return NULL; + pf->height = height; + if (!readshort(&ascent)) + return NULL; + pf->ascent = ascent; + if (!readshort(&pad)) + return NULL; + if (!readlong(&firstchar)) + return NULL; + pf->firstchar = firstchar; + if (!readlong(&defaultchar)) + return NULL; + pf->defaultchar = defaultchar; + if (!readlong(&size)) + return NULL; + pf->size = size; + + /* get variable font data sizes*/ + /* # words of bitmap_t*/ + if (!readlong(&nbits)) + return NULL; + pf->bits_size = nbits; + + /* # longs of offset*/ + if (!readlong(&noffset)) + return NULL; + + /* # bytes of width*/ + if (!readlong(&nwidth)) + return NULL; + + /* variable font data*/ + pf->bits = (bitmap_t *)fileptr; + for (i=0; i<nbits; ++i) + if (!readshort(&pf->bits[i])) + return NULL; + /* pad to longword boundary*/ + fileptr = (unsigned char *)(((int)fileptr + 3) & ~3); + + if (noffset) { + pf->offset = (unsigned long *)fileptr; + for (i=0; i<noffset; ++i) + if (!readlong(&pf->offset[i])) + return NULL; + } + else + pf->offset = NULL; + + if (nwidth) { + pf->width = (unsigned char *)fileptr; + fileptr += nwidth*sizeof(unsigned char); + } + else + pf->width = NULL; + + if (fileptr > eofptr) + return NULL; + + /* one-time rotate font bits to rockbox format*/ + rotate_font_bits(pf); + + return pf; /* success!*/ } /* - * Put a string at specified bit position + * Return a pointer to an incore font structure. + * If the requested font isn't loaded/compiled-in, + * decrement the font number and try again. */ -//FIXME rename font_putsxy? -void -lcd_putsxy(int x, int y, unsigned char *str, int font) +struct font* font_get(int font) { - int ch; - PMWCFONT pf = getfont(font); - - while (((ch = *str++) != '\0')) { - MWIMAGEBITS *bits; - int width; - - /* check input range*/ - if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) - ch = pf->defaultchar; - ch -= pf->firstchar; - - /* get proportional width and glyph bits*/ - width = pf->width? pf->width[ch]: pf->maxwidth; - if (x + width > LCD_WIDTH) - break; - - /* no partial-height drawing for now...*/ - if (y + pf->height > LCD_HEIGHT) - break; - bits = pf->bits + (pf->offset? pf->offset[ch]: (pf->height * ch)); - - lcd_bitmap((unsigned char *)bits, x, y, width, pf->height, true); - x += width; + struct font* pf; + + if (font >= MAXFONTS) + font = 0; + + while (1) { + pf = sysfonts[font]; + if (pf && pf->height) + return pf; + if (--font < 0) + panicf("No font!"); } } /* convert font bitmap data inplace to rockbox format*/ -static void -rotate_font_bits(PMWCFONT pf) +static void rotate_font_bits(struct font* pf) { int i; - int defaultchar = pf->defaultchar - pf->firstchar; - int did_defaultchar = 0; + unsigned long defaultchar = pf->defaultchar - pf->firstchar; + bool did_defaultchar = false; unsigned char buf[256]; for (i=0; i<pf->size; ++i) { - MWIMAGEBITS *bits = pf->bits + - (pf->offset? pf->offset[i]: (pf->height * i)); + bitmap_t *bits = pf->bits + + (pf->offset ? pf->offset[i] : (pf->height * i)); int width = pf->width? pf->width[i]: pf->maxwidth; - int src_bytes = MWIMAGE_BYTES(width) * pf->height; + int src_bytes = BITMAP_BYTES(width) * pf->height; /* * Due to the way the offset map works, * non-mapped characters are mapped to the default * character, and shouldn't be rotated twice. */ - if (i == defaultchar) { + + if (pf->offset && pf->offset[i] == defaultchar) { if (did_defaultchar) continue; - did_defaultchar = 1; + did_defaultchar = true; } /* rotate left for lcd_bitmap function input*/ @@ -200,16 +292,15 @@ rotate_font_bits(PMWCFONT pf) } /* - * Take an MWIMAGEBITS bitmap and convert to Rockbox format. + * Take an bitmap_t bitmap and convert to Rockbox format. * Used for converting font glyphs for the time being. * Can use for standard X11 and Win32 images as well. * * Doing it this way keeps fonts in standard formats, * as well as keeping Rockbox hw bitmap format. */ -static void -rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width, - unsigned int height) +static void rotleft(unsigned char *dst, bitmap_t *src, unsigned int width, + unsigned int height) { unsigned int i,j; unsigned int dst_col = 0; /* destination column*/ @@ -221,17 +312,17 @@ rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width, dst_linelen = (height-1)/8+1; /* calc words of input image*/ - src_words = MWIMAGE_WORDS(width) * height; + src_words = BITMAP_WORDS(width) * height; /* clear background*/ memset(dst, 0, dst_linelen*width); for (i=0; i < src_words; i++) { - MWIMAGEBITS srcmap; /* current src input bit*/ - MWIMAGEBITS dstmap; /* current dst output bit*/ + bitmap_t srcmap; /* current src input bit*/ + bitmap_t dstmap; /* current dst output bit*/ /* calc src input bit*/ - srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1); + srcmap = 1 << (sizeof(bitmap_t)*8-1); /* calc dst output bit*/ if (i>0 && (i%8==0)) { @@ -244,9 +335,9 @@ rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width, for(j=0; j < width; j++) { /* calc input bitmask*/ - MWIMAGEBITS bit = srcmap >> j; + bitmap_t bit = srcmap >> j; if (bit==0) { - srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1); + srcmap = 1 << (sizeof(bitmap_t)*8-1); bit = srcmap >> (j % 16); } diff --git a/firmware/font.h b/firmware/font.h index 645848ee18..44b975bb78 100644 --- a/firmware/font.h +++ b/firmware/font.h @@ -38,13 +38,14 @@ * must be available at system startup. * Fonts are specified in firmware/font.c. */ -#define FONT_SYSFIXED 0 /* system fixed pitch font*/ -#define FONT_UI 1 /* system porportional font*/ -#define FONT_MP3 2 /* font used for mp3 info*/ -#define MAXFONTS 3 /* max # fonts*/ +enum { + FONT_SYSFIXED, /* system fixed pitch font*/ + FONT_UI, /* system porportional font*/ + MAXFONTS +}; /* - * .fnt (.rbf) loadable font file format definition + * .fnt loadable font file format definition * * format len description * ------------------------- ---- ------------------------------ @@ -70,54 +71,42 @@ /* loadable font magic and version #*/ #define VERSION "RB11" -/* MWIMAGEBITS helper macros*/ -#define MWIMAGE_WORDS(x) (((x)+15)/16) /* image size in words*/ -#define MWIMAGE_BYTES(x) (MWIMAGE_WORDS(x)*sizeof(MWIMAGEBITS)) -#define MWIMAGE_BITSPERIMAGE (sizeof(MWIMAGEBITS) * 8) -#define MWIMAGE_BITVALUE(n) ((MWIMAGEBITS) (((MWIMAGEBITS) 1) << (n))) -#define MWIMAGE_FIRSTBIT (MWIMAGE_BITVALUE(MWIMAGE_BITSPERIMAGE - 1)) -#define MWIMAGE_TESTBIT(m) ((m) & MWIMAGE_FIRSTBIT) -#define MWIMAGE_SHIFTBIT(m) ((MWIMAGEBITS) ((m) << 1)) +typedef unsigned short bitmap_t; /* bitmap image unit size*/ -typedef unsigned short MWIMAGEBITS; /* bitmap image unit size*/ +/* bitmap_t helper macros*/ +#define BITMAP_WORDS(x) (((x)+15)/16) /* image size in words*/ +#define BITMAP_BYTES(x) (BITMAP_WORDS(x)*sizeof(bitmap_t)) +#define BITMAP_BITSPERIMAGE (sizeof(bitmap_t) * 8) +#define BITMAP_BITVALUE(n) ((bitmap_t) (((bitmap_t) 1) << (n))) +#define BITMAP_FIRSTBIT (BITMAP_BITVALUE(BITMAP_BITSPERIMAGE - 1)) +#define BITMAP_TESTBIT(m) ((m) & BITMAP_FIRSTBIT) +#define BITMAP_SHIFTBIT(m) ((bitmap_t) ((m) << 1)) /* builtin C-based proportional/fixed font structure */ /* based on The Microwindows Project http://microwindows.org */ -typedef struct { +struct font { char * name; /* font name*/ int maxwidth; /* max width in pixels*/ unsigned int height; /* height in pixels*/ int ascent; /* ascent (baseline) height*/ int firstchar; /* first character in bitmap*/ int size; /* font size in glyphs*/ - MWIMAGEBITS *bits; /* 16-bit right-padded bitmap data*/ + bitmap_t *bits; /* 16-bit right-padded bitmap data*/ unsigned long *offset; /* offsets into bitmap data*/ unsigned char *width; /* character widths or NULL if fixed*/ int defaultchar; /* default char (not glyph index)*/ - long bits_size; /* # words of MWIMAGEBITS bits*/ -#if 0 - char * facename; /* facename of font*/ - char * copyright; /* copyright info for loadable fonts*/ -#endif -} MWCFONT, *PMWCFONT; - -/* structure for rockbox startup font selection*/ -struct corefont { - PMWCFONT pf; /* compiled-in or loaded font*/ - char *diskname; /* diskname if not compiled-in*/ + long bits_size; /* # words of bitmap_t bits*/ }; -extern struct corefont sysfonts[MAXFONTS]; - /* font routines*/ -PMWCFONT getfont(int font); -PMWCFONT rbf_load_font(char *path, PMWCFONT pf); - void font_init(void); +struct font* font_load(char *path); +struct font* font_get(int font); #else /* HAVE_LCD_BITMAP */ #define font_init() +#define font_load(x) #endif diff --git a/firmware/fonts/clR6x8.bdf b/firmware/fonts/clR6x8.bdf new file mode 100644 index 0000000000..7216efa806 --- /dev/null +++ b/firmware/fonts/clR6x8.bdf @@ -0,0 +1,2895 @@ +STARTFONT 2.1 +COMMENT $XConsortium: clR6x8.bdf,v 1.2 94/04/11 12:08:36 gildea Exp $ +COMMENT +COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org +COMMENT 399 Beacon Ave. +COMMENT St. Paul, MN 55104-3527 +COMMENT +COMMENT Permission to use, copy, modify, and distribute this software and +COMMENT its documentation for any purpose and without fee is hereby +COMMENT granted, provided that the above copyright notice appear in all +COMMENT copies and that both that copyright notice and this permission +COMMENT notice appear in supporting documentation, and that the name of +COMMENT Dale Schumacher not be used in advertising or publicity pertaining to +COMMENT distribution of the software without specific, written prior +COMMENT permission. Dale Schumacher makes no representations about the +COMMENT suitability of this software for any purpose. It is provided "as +COMMENT is" without express or implied warranty. +COMMENT +FONT -Schumacher-Clean-Medium-R-Normal--8-80-75-75-C-60-ISO646.1991-IRV +SIZE 8 75 75 +FONTBOUNDINGBOX 6 8 0 -1 +STARTPROPERTIES 20 +FONTNAME_REGISTRY "" +FOUNDRY "Schumacher" +FAMILY_NAME "Clean" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 8 +POINT_SIZE 80 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 60 +CHARSET_REGISTRY "ISO646.1991" +CHARSET_ENCODING "IRV" +FONT_ASCENT 7 +FONT_DESCENT 1 +DEFAULT_CHAR 0 +COPYRIGHT "Copyright 1989 Dale Schumacher." +_XMBDFED_INFO "Edited with xmbdfed 4.5." +ENDPROPERTIES +CHARS 190 +STARTCHAR space +ENCODING 32 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamation mark +ENCODING 33 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +10 +10 +10 +10 +00 +10 +00 +ENDCHAR +STARTCHAR double quote +ENCODING 34 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +28 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hash +ENCODING 35 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +28 +7C +28 +7C +28 +00 +00 +ENDCHAR +STARTCHAR dollar sign +ENCODING 36 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +3C +50 +38 +14 +78 +10 +00 +ENDCHAR +STARTCHAR percent sign +ENCODING 37 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +60 +64 +08 +10 +20 +4C +0C +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +30 +48 +48 +30 +54 +48 +34 +00 +ENDCHAR +STARTCHAR apostrophe +ENCODING 39 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR open bracket +ENCODING 40 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +04 +08 +10 +10 +10 +08 +04 +00 +ENDCHAR +STARTCHAR close bracket +ENCODING 41 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +20 +10 +10 +10 +20 +40 +00 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +54 +38 +54 +10 +00 +00 +ENDCHAR +STARTCHAR plus sign +ENCODING 43 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +10 +7C +10 +10 +00 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +10 +10 +20 +ENDCHAR +STARTCHAR minus sign +ENCODING 45 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR full stop +ENCODING 46 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +10 +10 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +04 +04 +08 +08 +10 +10 +20 +20 +ENDCHAR +STARTCHAR digit zero +ENCODING 48 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +4C +54 +64 +44 +38 +00 +ENDCHAR +STARTCHAR digit one +ENCODING 49 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +30 +10 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR digit two +ENCODING 50 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +04 +08 +10 +20 +7C +00 +ENDCHAR +STARTCHAR digit three +ENCODING 51 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +04 +18 +04 +44 +38 +00 +ENDCHAR +STARTCHAR digit four +ENCODING 52 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +18 +28 +48 +7C +08 +08 +00 +ENDCHAR +STARTCHAR digit five +ENCODING 53 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +40 +78 +04 +04 +44 +38 +00 +ENDCHAR +STARTCHAR digit six +ENCODING 54 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +18 +20 +40 +78 +44 +44 +38 +00 +ENDCHAR +STARTCHAR digit seven +ENCODING 55 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +44 +04 +08 +08 +10 +10 +00 +ENDCHAR +STARTCHAR digit eight +ENCODING 56 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +38 +44 +44 +38 +00 +ENDCHAR +STARTCHAR digit nine +ENCODING 57 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +3C +04 +08 +30 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +10 +00 +00 +10 +10 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +10 +00 +00 +10 +10 +20 +ENDCHAR +STARTCHAR less-than sign +ENCODING 60 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +0C +30 +C0 +30 +0C +00 +00 +ENDCHAR +STARTCHAR equal sign +ENCODING 61 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +7C +00 +7C +00 +00 +00 +ENDCHAR +STARTCHAR greater-than sign +ENCODING 62 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +C0 +30 +0C +30 +C0 +00 +00 +ENDCHAR +STARTCHAR question mark +ENCODING 63 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +04 +08 +10 +00 +10 +00 +ENDCHAR +STARTCHAR commercial at +ENCODING 64 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +5C +5C +58 +40 +38 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +44 +44 +7C +44 +44 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +78 +44 +44 +78 +44 +44 +78 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +40 +40 +40 +44 +38 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +70 +48 +44 +44 +44 +48 +70 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +40 +40 +78 +40 +40 +7C +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +40 +40 +78 +40 +40 +40 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +40 +4C +44 +44 +3C +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +44 +7C +44 +44 +44 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +10 +10 +10 +10 +10 +7C +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +1C +04 +04 +04 +44 +44 +38 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +48 +50 +60 +50 +48 +44 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +40 +40 +40 +40 +40 +7C +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +6C +54 +54 +44 +44 +44 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +64 +64 +54 +4C +4C +44 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +78 +44 +44 +78 +40 +40 +40 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +44 +44 +44 +38 +0C +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +78 +44 +44 +78 +50 +48 +44 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +40 +38 +04 +44 +38 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +10 +10 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +44 +28 +28 +10 +10 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +44 +54 +54 +6C +44 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +28 +10 +28 +44 +44 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +28 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +04 +08 +10 +20 +40 +7C +00 +ENDCHAR +STARTCHAR left square bracket +ENCODING 91 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +1C +10 +10 +10 +10 +10 +1C +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +20 +10 +10 +08 +08 +04 +04 +ENDCHAR +STARTCHAR right square bracket +ENCODING 93 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +70 +10 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR circumflex accent +ENCODING 94 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +FC +00 +ENDCHAR +STARTCHAR grave accent +ENCODING 96 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +08 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +40 +78 +44 +44 +44 +78 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +40 +40 +40 +3C +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +04 +04 +3C +44 +44 +44 +3C +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +38 +44 +7C +40 +38 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +1C +20 +78 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +44 +44 +3C +04 +38 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +40 +78 +44 +44 +44 +44 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +00 +30 +10 +10 +10 +38 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +00 +38 +08 +08 +08 +08 +70 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +40 +48 +50 +60 +50 +48 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +30 +10 +10 +10 +10 +10 +38 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +68 +54 +54 +54 +44 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +58 +64 +44 +44 +44 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +78 +44 +44 +44 +78 +40 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +44 +44 +44 +3C +04 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +58 +60 +40 +40 +40 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +40 +38 +04 +78 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +10 +7C +10 +10 +10 +0C +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +44 +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +44 +44 +28 +28 +10 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +44 +54 +54 +54 +28 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +44 +28 +10 +28 +44 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +44 +44 +44 +3C +04 +38 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +7C +08 +10 +20 +7C +00 +ENDCHAR +STARTCHAR left curly bracket +ENCODING 123 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +04 +08 +08 +10 +08 +08 +04 +00 +ENDCHAR +STARTCHAR pipe symbol +ENCODING 124 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +10 +10 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR right curly bracket +ENCODING 125 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +20 +20 +10 +20 +20 +40 +00 +ENDCHAR +STARTCHAR tilde +ENCODING 126 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +54 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR inverted exclamation +ENCODING 161 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +00 +10 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR cent sign +ENCODING 162 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +3C +50 +50 +3C +10 +00 +ENDCHAR +STARTCHAR pound sign +ENCODING 163 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +18 +24 +20 +78 +20 +20 +7C +00 +ENDCHAR +STARTCHAR euro sign +ENCODING 164 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +1C +20 +78 +20 +78 +20 +1C +00 +ENDCHAR +STARTCHAR yen sign +ENCODING 165 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +44 +28 +7C +10 +7C +10 +00 +ENDCHAR +STARTCHAR broken bar +ENCODING 166 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +10 +10 +00 +10 +10 +10 +00 +ENDCHAR +STARTCHAR section sign +ENCODING 167 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +18 +24 +30 +48 +30 +90 +60 +00 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR copyright sign +ENCODING 169 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +30 +48 +B4 +A4 +B4 +48 +30 +00 +ENDCHAR +STARTCHAR feminine ordinal +ENCODING 170 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +3C +44 +44 +4C +34 +00 +7C +00 +ENDCHAR +STARTCHAR guillemot left +ENCODING 171 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +24 +48 +24 +00 +00 +00 +ENDCHAR +STARTCHAR not sign +ENCODING 172 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +78 +08 +00 +00 +00 +ENDCHAR +STARTCHAR soft hyphen +ENCODING 173 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR registered trademark +ENCODING 174 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +30 +48 +B4 +B4 +AC +48 +30 +00 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR degree sign +ENCODING 176 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +28 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plus or minus +ENCODING 177 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +10 +7C +10 +10 +00 +7C +00 +ENDCHAR +STARTCHAR superscript 2 +ENCODING 178 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +08 +10 +38 +00 +00 +00 +ENDCHAR +STARTCHAR superscript 3 +ENCODING 179 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +30 +08 +30 +08 +30 +00 +00 +00 +ENDCHAR +STARTCHAR spacing acute +ENCODING 180 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR micro sign +ENCODING 181 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +48 +48 +48 +48 +74 +40 +ENDCHAR +STARTCHAR paragraph sign +ENCODING 182 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +3C +54 +54 +54 +34 +14 +14 +00 +ENDCHAR +STARTCHAR middle dot +ENCODING 183 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +10 +30 +ENDCHAR +STARTCHAR suprtscript 1 +ENCODING 185 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +30 +10 +10 +10 +00 +00 +00 +ENDCHAR +STARTCHAR masculine ordinal +ENCODING 186 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +44 +38 +00 +7C +00 +ENDCHAR +STARTCHAR guillemot right +ENCODING 187 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +48 +24 +48 +00 +00 +00 +ENDCHAR +STARTCHAR one quarter +ENCODING 188 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR one half +ENCODING 189 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR three quarters +ENCODING 190 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR inverted question +ENCODING 191 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +00 +10 +08 +04 +44 +38 +00 +ENDCHAR +STARTCHAR large A, grave accent +ENCODING 192 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +10 +28 +44 +7C +44 +00 +ENDCHAR +STARTCHAR large A, acute accent +ENCODING 193 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +20 +10 +28 +44 +7C +44 +00 +ENDCHAR +STARTCHAR large A, circumflex accent +ENCODING 194 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +10 +28 +44 +7C +44 +00 +ENDCHAR +STARTCHAR large A, tilde +ENCODING 195 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +10 +28 +44 +7C +44 +00 +ENDCHAR +STARTCHAR large A, dieresis +ENCODING 196 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +10 +28 +44 +7C +44 +44 +00 +ENDCHAR +STARTCHAR large A, circle +ENCODING 197 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +10 +28 +44 +7C +44 +00 +ENDCHAR +STARTCHAR large AE, diphtong +ENCODING 198 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +0C +18 +28 +4C +78 +48 +4C +00 +ENDCHAR +STARTCHAR large C, cedilla +ENCODING 199 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +40 +40 +44 +38 +10 +30 +ENDCHAR +STARTCHAR large E, grave accent +ENCODING 200 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +7C +40 +70 +40 +7C +00 +ENDCHAR +STARTCHAR large E, acute accent +ENCODING 201 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +7C +40 +70 +40 +7C +00 +ENDCHAR +STARTCHAR large E, circumflex accent +ENCODING 202 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +7C +40 +70 +40 +7C +00 +ENDCHAR +STARTCHAR large E, dieresis +ENCODING 203 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +7C +40 +70 +40 +7C +00 +ENDCHAR +STARTCHAR capital I, grave accent +ENCODING 204 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +7C +10 +10 +10 +7C +00 +ENDCHAR +STARTCHAR capital I, acute accent +ENCODING 205 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +7C +10 +10 +10 +7C +00 +ENDCHAR +STARTCHAR capital I, circumflex accent +ENCODING 206 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +7C +10 +10 +10 +7C +00 +ENDCHAR +STARTCHAR capital I, dieresis +ENCODING 207 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +7C +10 +10 +10 +7C +00 +ENDCHAR +STARTCHAR capital Eth, Icelandic +ENCODING 208 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +70 +48 +44 +E4 +44 +48 +70 +00 +ENDCHAR +STARTCHAR capital N, tilde +ENCODING 209 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +44 +64 +54 +4C +44 +00 +ENDCHAR +STARTCHAR capital O, grave accent +ENCODING 210 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital O, acute accent +ENCODING 211 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital O, circumflex accent +ENCODING 212 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital O, tilde +ENCODING 213 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital O, dieresis +ENCODING 214 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +38 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR multiply sign +ENCODING 215 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +44 +28 +10 +28 +44 +00 +00 +ENDCHAR +STARTCHAR capital O, slash +ENCODING 216 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +4C +54 +64 +44 +38 +00 +ENDCHAR +STARTCHAR capital U, grave accent +ENCODING 217 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital U, acute accent +ENCODING 218 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital U, circumflex accent +ENCODING 219 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +00 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital U, dieresis +ENCODING 220 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +44 +00 +44 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR capital Y, acute accent +ENCODING 221 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +44 +28 +10 +10 +10 +00 +ENDCHAR +STARTCHAR capital Thorn, Icelandic +ENCODING 222 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +78 +44 +44 +44 +78 +40 +00 +ENDCHAR +STARTCHAR sharp s, German +ENCODING 223 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +44 +44 +48 +44 +44 +58 +00 +ENDCHAR +STARTCHAR small a, grave accent +ENCODING 224 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +3C +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small a, acute accent +ENCODING 225 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +3C +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small a, circumflex accent +ENCODING 226 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +00 +3C +44 +4C +34 +00 +ENDCHAR +STARTCHAR small a, tilde +ENCODING 227 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +00 +3C +44 +4C +34 +00 +ENDCHAR +STARTCHAR small a, dieresis +ENCODING 228 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +3C +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small a, circle +ENCODING 229 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +10 +3C +44 +4C +34 +00 +ENDCHAR +STARTCHAR small ae, diphtong +ENCODING 230 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +38 +54 +5C +50 +3C +00 +ENDCHAR +STARTCHAR small c, cedilla +ENCODING 231 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +40 +40 +3C +10 +30 +ENDCHAR +STARTCHAR small e, grave accent +ENCODING 232 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +38 +44 +7C +40 +38 +00 +ENDCHAR +STARTCHAR small e, acute accent +ENCODING 233 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +38 +44 +7C +40 +38 +00 +ENDCHAR +STARTCHAR small e, circumflex accent +ENCODING 234 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +38 +44 +7C +40 +38 +00 +ENDCHAR +STARTCHAR small e, dieresis +ENCODING 235 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +38 +44 +7C +40 +38 +00 +ENDCHAR +STARTCHAR small i, grave accent +ENCODING 236 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +00 +30 +10 +10 +38 +00 +ENDCHAR +STARTCHAR small i, acute accent +ENCODING 237 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +00 +30 +10 +10 +38 +00 +ENDCHAR +STARTCHAR small i, circumflex accent +ENCODING 238 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +00 +30 +10 +10 +38 +00 +ENDCHAR +STARTCHAR small i, dieresis +ENCODING 239 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +30 +10 +10 +10 +38 +00 +ENDCHAR +STARTCHAR small eth, Icelandic +ENCODING 240 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +38 +14 +04 +1C +24 +24 +18 +00 +ENDCHAR +STARTCHAR small n, tilde +ENCODING 241 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +00 +58 +64 +44 +44 +00 +ENDCHAR +STARTCHAR small o, grave accent +ENCODING 242 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR small o, acute accent +ENCODING 243 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR small o, circumflex accent +ENCODING 244 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR small o, tilde +ENCODING 245 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +24 +58 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR small o, dieresis +ENCODING 246 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +38 +44 +44 +44 +38 +00 +ENDCHAR +STARTCHAR division sign +ENCODING 247 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +10 +00 +7C +00 +10 +00 +00 +ENDCHAR +STARTCHAR small o, slash +ENCODING 248 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +00 +00 +3C +4C +54 +64 +78 +00 +ENDCHAR +STARTCHAR small u, grave accent +ENCODING 249 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +20 +10 +44 +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small u, acute accent +ENCODING 250 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +44 +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small u, circumflex accent +ENCODING 251 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +10 +28 +00 +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small u, dieresis +ENCODING 252 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +44 +44 +44 +4C +34 +00 +ENDCHAR +STARTCHAR small y, acute accent +ENCODING 253 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +08 +10 +44 +44 +44 +3C +04 +38 +ENDCHAR +STARTCHAR small thorn, Icelandic +ENCODING 254 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +40 +70 +48 +48 +48 +70 +40 +00 +ENDCHAR +STARTCHAR small y, dieresis +ENCODING 255 +SWIDTH 720 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +28 +00 +44 +44 +44 +3C +04 +38 +ENDCHAR +ENDFONT diff --git a/firmware/loadfont.c b/firmware/loadfont.c deleted file mode 100644 index e78f208b13..0000000000 --- a/firmware/loadfont.c +++ /dev/null @@ -1,212 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (c) 2002 by Greg Haerr <greg@censoft.com> - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -/* - * Load an rbf font, store in incore format. - */ -#include "config.h" - -#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) - -#include <stdio.h> -#include <string.h> -#include "font.h" -#include "file.h" - -#ifndef DEBUGF -#include "debug.h" -#endif - -#ifndef O_BINARY -#define O_BINARY 0 -#endif - -/* static buffer allocation structures*/ -static unsigned char mbuf[MAX_FONT_SIZE]; -static unsigned char *freeptr = mbuf; -static unsigned char *fileptr; -static unsigned char *eofptr; - -static int -READSHORT(unsigned short *sp) -{ - unsigned short s; - - s = *fileptr++ & 0xff; - *sp = (*fileptr++ << 8) | s; - return (fileptr <= eofptr); -} - -static int -READLONG(unsigned long *lp) -{ - unsigned long l; - - l = *fileptr++ & 0xff; - l |= *fileptr++ << 8; - l |= *fileptr++ << 16; - *lp = (*fileptr++ << 24) | l; - return (fileptr <= eofptr); -} - -/* read count bytes*/ -static int -READSTR(char *buf, int count) -{ - int n = count; - - while (--n >= 0) - *buf++ = *fileptr++; - return (fileptr <= eofptr)? count: 0; -} - -/* read totlen bytes, return NUL terminated string*/ -/* may write 1 past buf[totlen]; removes blank pad*/ -static int -READSTRPAD(char *buf, int totlen) -{ - char *p = buf; - int n = totlen; - - while (--n >= 0) - *p++ = *fileptr++; - if (fileptr > eofptr) - return 0; - - p = &buf[totlen]; - *p-- = 0; - while (*p == ' ' && p >= buf) - *p-- = '\0'; - return totlen; -} - -/* read and load font into incore font structure*/ -PMWCFONT -rbf_load_font(char *path, PMWCFONT pf) -{ - int fd, filesize; - unsigned short maxwidth, height, ascent, pad; - unsigned long firstchar, defaultchar, size; - unsigned long i, nbits, noffset, nwidth; - char version[4+1]; - char copyright[256+1]; - - memset(pf, 0, sizeof(MWCFONT)); - - /* open and read entire font file*/ - fd = open(path, O_RDONLY|O_BINARY); - if (fd < 0) { - DEBUGF("Can't open font: %s\n", path); - return NULL; - } -freeptr = (unsigned char *)(((int)mbuf + 3) & ~3); - fileptr = freeptr; - filesize = read(fd, fileptr, MAX_FONT_SIZE); - eofptr = fileptr + filesize; - //freeptr += filesize; - //freeptr = (unsigned char *)(freeptr + 3) & ~3; /* pad freeptr*/ - close(fd); - if (filesize == MAX_FONT_SIZE) { - DEBUGF("Font %s too large: %d\n", path, filesize); - return NULL; - } - - /* read magic and version #*/ - memset(version, 0, sizeof(version)); - if (READSTR(version, 4) != 4) - return NULL; - if (strcmp(version, VERSION) != 0) - return NULL; - - /* internal font name*/ - pf->name = fileptr; - if (READSTRPAD(pf->name, 64) != 64) - return NULL; - - /* copyright, not currently stored*/ - if (READSTRPAD(copyright, 256) != 256) - return NULL; - - /* font info*/ - if (!READSHORT(&maxwidth)) - return NULL; - pf->maxwidth = maxwidth; - if (!READSHORT(&height)) - return NULL; - pf->height = height; - if (!READSHORT(&ascent)) - return NULL; - pf->ascent = ascent; - if (!READSHORT(&pad)) - return NULL; - if (!READLONG(&firstchar)) - return NULL; - pf->firstchar = firstchar; - if (!READLONG(&defaultchar)) - return NULL; - pf->defaultchar = defaultchar; - if (!READLONG(&size)) - return NULL; - pf->size = size; - - /* get variable font data sizes*/ - /* # words of MWIMAGEBITS*/ - if (!READLONG(&nbits)) - return NULL; - pf->bits_size = nbits; - - /* # longs of offset*/ - if (!READLONG(&noffset)) - return NULL; - - /* # bytes of width*/ - if (!READLONG(&nwidth)) - return NULL; - - /* variable font data*/ - pf->bits = (MWIMAGEBITS *)fileptr; - for (i=0; i<nbits; ++i) - if (!READSHORT(&pf->bits[i])) - return NULL; - /* pad to longword boundary*/ - fileptr = (unsigned char *)(((int)fileptr + 3) & ~3); - - if (noffset) { - pf->offset = (unsigned long *)fileptr; - for (i=0; i<noffset; ++i) - if (!READLONG(&pf->offset[i])) - return NULL; - } else pf->offset = NULL; - - if (nwidth) { - pf->width = (unsigned char *)fileptr; - fileptr += nwidth*sizeof(unsigned char); - } else pf->width = NULL; - - if (fileptr > eofptr) - return NULL; - return pf; /* success!*/ -} -#endif /* HAVE_LCD_BITMAP */ - -/* ----------------------------------------------------------------- - * local variables: - * eval: (load-file "rockbox-mode.el") - * vim: et sw=4 ts=8 sts=4 tw=78 - * end: - */ diff --git a/tools/bdf2c b/tools/bdf2c deleted file mode 100755 index 6832e5ce8f..0000000000 --- a/tools/bdf2c +++ /dev/null @@ -1,217 +0,0 @@ -#! /usr/bin/perl -w -# -# Convert BDF files to incore MWCFONT structure 'C' source -# Copyright (c) 2002 by Greg Haerr <greg@censoft.com> -# -# from The Microwindows Project (http://microwindows.org) -# -# modified 09/13/02 correct output when no DEFAULT_CHAR, allow numeric font name -# modified 09/12/02 added -limit <max_encode_hex_value> option -# modified on 09/10/02 by G Haerr -# - fixed DWIDTH 0 parsing -# - don't limit font size to 0x7e characters -# - changed offset data to unsigned long for large fonts -# - don't generate width table if fixed-width -# - added defaultchar to output -# - added bits_size member for loadable fonts -# modified on 3/26/00 by G Haerr added ascent field, fixed $IMAGE_BITS -# modified on 2/10/00 by K Harris to accept any size input character -# modified by G Haerr from bdftobogl for 16 bit MWIMAGEBITS -# originally from BOGL - Ben's Own Graphics Library <pfaffben@debian.org>. - -use POSIX; - -$name = (reverse split /\//, $0)[0]; -$limit_char = 65535; - -while (defined $ARGV[0]) { - my $arg = shift; - - if (($arg eq "-limit") && scalar(@ARGV) > 0) { - $limit_char = hex shift; - } elsif ($arg =~ "-.+") { - print "$name: unknown option '$arg'\n"; - exit 1; - } else { - unshift(@ARGV, $arg); - last; - } -} - -if ($#ARGV < 0) { - print "Usage: $name [-limit <max_encode_hex_value>] font.bdf > font.c\n"; - exit 1; -} - -$IMAGE_BITS = 16; -$IMAGE_NIBBLES = $IMAGE_BITS/4; -$IMAGE_MASK = 0xffff; - -$file = $ARGV[0]; - -$font = $file; -$font =~ s/\.bdf//; -$font =~ tr/a-zA-Z0-9_/_/cs; - -print "/* Generated by $name on ", substr(`date`, 0, -1), ". */\n"; -print "#include \"font.h\"\n\n"; - -open BDF, "<$file" || die; -while (<BDF>) { - chop; - $pixel_size = $1 if /^PIXEL_SIZE (\d+)$/; - $font_ascent = $1 if /^FONT_ASCENT (\d+)$/; - $font_descent = $1 if /^FONT_DESCENT (\d+)$/; - $font_name = $1 if /^FONT (.*)$/; - $default_char = $1 if /^DEFAULT_CHAR (\d+)$/; - ($fbbw, $fbbh, $fbbx, $fbby) = ($1, $2, $3, $4) if /^FONTBOUNDINGBOX (-?\d+) (-?\d+) (-?\d+) (-?\d+)/; - - last if /^CHARS /; -} - -$font_width = $fbbw - $fbbx; -undef $fbbw, undef $fbbh, undef $fbbx, undef $fbby; - -print "/* Font information:\n\n"; -print " name: $font_name\n"; -print " pixel size: $pixel_size\n" if defined $pixel_size; -print " ascent: $font_ascent\n"; -print " descent: $font_descent\n"; -print "*/\n\n"; - -print "/* Font character bitmap data. */\n"; -print "static MWIMAGEBITS _${font}_bits[] = {\n"; - -$ch_height = $font_ascent + $font_descent; -$ofs = 0; -$maxwidth = 0; -$firstchar = -1; -$lastchar = -1; -while (<BDF>) { - chop; - undef $encoding, undef $width, undef $bbx, undef $bby, undef $bbw, undef $bbh if /^STARTCHAR /; - $encoding = $1 if /^ENCODING (\d+)/; - last if defined $encoding && $encoding > $limit_char; - $width = $1 if /^DWIDTH (-?\d+)/; - $width = $font_width if defined $width && $width <= 0; - ($bbw, $bbh, $bbx, $bby) = ($1, $2, $3, $4) if /^BBX (-?\d+) (-?\d+) (-?\d+) (-?\d+)/; - - if (/^BITMAP$/) { - next if !defined $encoding; - $firstchar = $encoding if $firstchar < 0; - $lastchar = $encoding if $lastchar < $encoding; - $encoding_tab[$encoding] = $ofs; - $width -= $bbx, $bbx = 0 if $bbx < 0; - $width[$encoding] = $width; - $maxwidth = $width if $width > $maxwidth; - $ch_words = int (($width+$IMAGE_BITS-1)/$IMAGE_BITS); - $ch_bits = $ch_words*$IMAGE_BITS; - for (my $i = 0; $i < $ch_height; $i++) { - for (my $k = 0; $k < $ch_words; $k++) { - $bm[$i][$k] = 0; - } - } - for (my $i = 0; ; $i++) { - $_ = <BDF>; - chop; - last if /^ENDCHAR$/; - - @hexnibbles = split //,$_; - for (my $k=0; $k<$ch_words; $k++) { - $ndx = $k*$IMAGE_NIBBLES; - $padnibbles = @hexnibbles - $ndx; - last if $padnibbles <= 0; # if bbx pushes bits into next word - # and no more bits from bdf file - $padnibbles = 0 if $padnibbles >= $IMAGE_NIBBLES; - $value = hex join '',@hexnibbles[$ndx..($ndx+$IMAGE_NIBBLES-1-$padnibbles)]; - $value = $value << ($padnibbles*$IMAGE_NIBBLES); - $bm[$ch_height - $font_descent - $bby - $bbh + $i][$k] |= - $value >> ($bbx); - if ($bbx) { # handle overflow into next image_word - $bm[$ch_height - $font_descent - $bby - $bbh + $i][$k+1] = - ($value << ($IMAGE_BITS - $bbx)) & $IMAGE_MASK; - } - } - } - -### printf "\n/* Character %c (0x%02x):\n", $encoding, $encoding; - printf "\n/* Character (0x%02x):\n", $encoding; - print " bbw=$bbw, bbh=$bbh, bbx=$bbx, bby=$bby, width=$width\n"; - print " +", ("-" x $ch_bits), "+\n"; - for (my $i = 0; $i < $ch_height; $i++) { - print " |"; - for (my $k = 0; $k < $ch_words; $k++) { - for (my $j = $IMAGE_BITS - 1; $j >= 0; $j--) { - print $bm[$i][$k] & (1 << $j) ? "*" : " "; - } - } - print "|\n"; - } - print " +", ("-" x $ch_bits), "+ */\n"; - - for (my $i = 0; $i < $ch_height; $i++) { - for ($k=0; $k<$ch_words; $k++) { - $ofs++; - printf "0x%04x, ", $bm[$i][$k]; - } - printf "\n"; - } - } -} - -print "};\n\n"; - -##print STDERR "Maximum character width=$maxwidth\n"; - -$default_char = $firstchar if !defined $default_char; - -print "/* Character->glyph mapping. */\n"; -print "static unsigned long _${font}_offset[] = {\n"; -for (my $i = $firstchar; $i <= $lastchar; $i++) { - my $char = $i; - my $ofs = $encoding_tab[$i]; - $ofs = $encoding_tab[$default_char], $char = $default_char if !defined $ofs; -### printf " $ofs,\t/* %c (0x%02x) */\n", $char, $i; - printf " $ofs,\t/* (0x%02x) */\n", $i; -} -print "};\n\n"; - -$gen_width_table = 0; -for (my $i = $firstchar; $i <= $lastchar; $i++) { - my $char = $i; - my $width = $width[$i]; - $width = $width[$default_char] if !defined $encoding_tab[$i]; - $gen_width_table = 1 if $width != $maxwidth -} - -if ($gen_width_table) { - print "/* Character width data. */\n"; - print "static unsigned char _${font}_width[] = {\n"; - for (my $i = $firstchar; $i <= $lastchar; $i++) { - my $char = $i; - my $width = $width[$i]; - $width = $width[$default_char], $char = $default_char if !defined $encoding_tab[$i]; - ### printf " $width,\t/* %c (0x%02x) */\n", $char, $i; - printf " $width,\t/* (0x%02x) */\n", $i; - } - print "};\n\n"; -} - -$size = $lastchar - $firstchar + 1; - -print "/* Exported structure definition. */\n"; -print "MWCFONT font_${font} = {\n"; -print " \"$font\",\n"; -print " $maxwidth,\n"; -print " $ch_height,\n"; -print " $font_ascent,\n"; -print " $firstchar,\n"; -print " $size,\n"; -print " _${font}_bits,\n"; -print " _${font}_offset,\n"; -if ($gen_width_table) { - print " _${font}_width,\n"; -} else { print " 0, /* fixed width*/\n"; } -print " $default_char,\n"; -print " sizeof(_${font}_bits)/sizeof(MWIMAGEBITS),\n"; -print "};\n"; diff --git a/tools/bdf2fnt b/tools/bdf2fnt deleted file mode 100755 index 2793d11764..0000000000 --- a/tools/bdf2fnt +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# -# bdf2fnt - shell script to convert a BDF file to RBF format -# -# usage: bdf2fnt bdffile (don't use .bdf extension!) -# -# Example: bdf2fnt courB08 -# creates ./courB08.fnt and /tmp/courB08.c -# the .fnt file can be renamed /system.fnt for loading -# the .c file can be moved to firmware dir to compile-in font -# - -# convert from bdf to C source -./bdf2c $1.bdf > /tmp/$1.c - -# compile writerbf with linked C source font -gcc -DARCHOS_RECORDER -DFONT=font_$1 -I../firmware -I../firmware/common -o /tmp/writerbf writerbf.c /tmp/$1.c - -# run writerbf, will write linked incore font to .rbf format -/tmp/writerbf -rm /tmp/writerbf - -# load .rbf font and display it for test -gcc -DARCHOS_RECORDER -DMAX_FONT_SIZE=500000 -I../firmware/common -o /tmp/loadrbf loadrbf.c -/tmp/loadrbf $1.fnt > /tmp/$1.1 -rm /tmp/loadrbf - -# link .c font and diff with .fnt load for test -gcc -DARCHOS_RECORDER -DFONT=font_$1 -I../firmware -I../firmware/common -o /tmp/loadrbf loadrbf.c /tmp/$1.c -/tmp/loadrbf > /tmp/$1.2 -rm /tmp/loadrbf - -# -# we diff the output to ensure correctness -diff /tmp/$1.1 /tmp/$1.2 - -# clean up -rm /tmp/$1.1 /tmp/$1.2 -#rm /tmp/$1.c diff --git a/tools/convbdf.c b/tools/convbdf.c index c8e5837575..00db9ae61f 100644 --- a/tools/convbdf.c +++ b/tools/convbdf.c @@ -16,31 +16,31 @@ /* loadable font magic and version #*/ #define VERSION "RB11" -/* MWIMAGEBITS helper macros*/ -#define MWIMAGE_WORDS(x) (((x)+15)/16) /* image size in words*/ -#define MWIMAGE_BYTES(x) (MWIMAGE_WORDS(x)*sizeof(MWIMAGEBITS)) -#define MWIMAGE_BITSPERIMAGE (sizeof(MWIMAGEBITS) * 8) -#define MWIMAGE_BITVALUE(n) ((MWIMAGEBITS) (((MWIMAGEBITS) 1) << (n))) -#define MWIMAGE_FIRSTBIT (MWIMAGE_BITVALUE(MWIMAGE_BITSPERIMAGE - 1)) -#define MWIMAGE_TESTBIT(m) ((m) & MWIMAGE_FIRSTBIT) -#define MWIMAGE_SHIFTBIT(m) ((MWIMAGEBITS) ((m) << 1)) +/* bitmap_t helper macros*/ +#define BITMAP_WORDS(x) (((x)+15)/16) /* image size in words*/ +#define BITMAP_BYTES(x) (BITMAP_WORDS(x)*sizeof(bitmap_t)) +#define BITMAP_BITSPERIMAGE (sizeof(bitmap_t) * 8) +#define BITMAP_BITVALUE(n) ((bitmap_t) (((bitmap_t) 1) << (n))) +#define BITMAP_FIRSTBIT (BITMAP_BITVALUE(BITMAP_BITSPERIMAGE - 1)) +#define BITMAP_TESTBIT(m) ((m) & BITMAP_FIRSTBIT) +#define BITMAP_SHIFTBIT(m) ((bitmap_t) ((m) << 1)) -typedef unsigned short MWIMAGEBITS; /* bitmap image unit size*/ +typedef unsigned short bitmap_t; /* bitmap image unit size*/ /* builtin C-based proportional/fixed font structure */ /* based on The Microwindows Project http://microwindows.org */ -typedef struct { +struct font { char * name; /* font name*/ int maxwidth; /* max width in pixels*/ int height; /* height in pixels*/ int ascent; /* ascent (baseline) height*/ int firstchar; /* first character in bitmap*/ int size; /* font size in glyphs*/ - MWIMAGEBITS * bits; /* 16-bit right-padded bitmap data*/ - unsigned long * offset; /* offsets into bitmap data*/ - unsigned char * width; /* character widths or NULL if fixed*/ + bitmap_t* bits; /* 16-bit right-padded bitmap data*/ + unsigned long* offset; /* offsets into bitmap data*/ + unsigned char* width; /* character widths or NULL if fixed*/ int defaultchar; /* default char (not glyph index)*/ - long bits_size; /* # words of MWIMAGEBITS bits*/ + long bits_size; /* # words of bitmap_t bits*/ /* unused by runtime system, read in by convbdf*/ char * facename; /* facename of font*/ @@ -48,7 +48,7 @@ typedef struct { int pixel_size; int descent; int fbbw, fbbh, fbbx, fbby; -} MWCFONT, *PMWCFONT; +}; /* END font.h*/ #define isprefix(buf,str) (!strncmp(buf, str, strlen(str))) @@ -64,19 +64,19 @@ int limit_char = 65535; int oflag = 0; char outfile[256]; -void usage(void); -void getopts(int *pac, char ***pav); -int convbdf(char *path); +void usage(void); +void getopts(int *pac, char ***pav); +int convbdf(char *path); -void free_font(PMWCFONT pf); -PMWCFONT bdf_read_font(char *path); -int bdf_read_header(FILE *fp, PMWCFONT pf); -int bdf_read_bitmaps(FILE *fp, PMWCFONT pf); -char * bdf_getline(FILE *fp, char *buf, int len); -MWIMAGEBITS bdf_hexval(unsigned char *buf, int ndx1, int ndx2); +void free_font(struct font* pf); +struct font* bdf_read_font(char *path); +int bdf_read_header(FILE *fp, struct font* pf); +int bdf_read_bitmaps(FILE *fp, struct font* pf); +char * bdf_getline(FILE *fp, char *buf, int len); +bitmap_t bdf_hexval(unsigned char *buf, int ndx1, int ndx2); -int gen_c_source(PMWCFONT pf, char *path); -int gen_fnt_file(PMWCFONT pf, char *path); +int gen_c_source(struct font* pf, char *path); +int gen_fnt_file(struct font* pf, char *path); void usage(void) @@ -96,8 +96,7 @@ usage(void) } /* parse command line options*/ -void -getopts(int *pac, char ***pav) +void getopts(int *pac, char ***pav) { char *p; char **av; @@ -171,8 +170,7 @@ getopts(int *pac, char ***pav) } /* remove directory prefix and file suffix from full path*/ -char * -basename(char *path) +char *basename(char *path) { char *p, *b; static char base[256]; @@ -193,10 +191,9 @@ basename(char *path) return base; } -int -convbdf(char *path) +int convbdf(char *path) { - PMWCFONT pf; + struct font* pf; int ret = 0; pf = bdf_read_font(path); @@ -223,8 +220,7 @@ convbdf(char *path) return ret; } -int -main(int ac, char **av) +int main(int ac, char **av) { int ret = 0; @@ -251,8 +247,7 @@ main(int ac, char **av) } /* free font structure*/ -void -free_font(PMWCFONT pf) +void free_font(struct font* pf) { if (!pf) return; @@ -270,11 +265,10 @@ free_font(PMWCFONT pf) } /* build incore structure from .bdf file*/ -PMWCFONT -bdf_read_font(char *path) +struct font* bdf_read_font(char *path) { FILE *fp; - PMWCFONT pf; + struct font* pf; fp = fopen(path, "rb"); if (!fp) { @@ -282,7 +276,7 @@ bdf_read_font(char *path) return NULL; } - pf = (PMWCFONT)calloc(1, sizeof(MWCFONT)); + pf = (struct font*)calloc(1, sizeof(struct font)); if (!pf) goto errout; @@ -308,8 +302,7 @@ bdf_read_font(char *path) } /* read bdf font header information, return 0 on error*/ -int -bdf_read_header(FILE *fp, PMWCFONT pf) +int bdf_read_header(FILE *fp, struct font* pf) { int encoding; int nchars, maxwidth; @@ -391,7 +384,10 @@ bdf_read_header(FILE *fp, PMWCFONT pf) fprintf(stderr, "Error: bad 'ENCODING'\n"); return 0; } - if (encoding >= 0 && encoding <= limit_char && encoding >= start_char) { + if (encoding >= 0 && + encoding <= limit_char && + encoding >= start_char) { + if (firstchar > encoding) firstchar = encoding; if (lastchar < encoding) @@ -411,7 +407,9 @@ bdf_read_header(FILE *fp, PMWCFONT pf) pf->height = pf->ascent + pf->descent; /* calc default char*/ - if (pf->defaultchar < 0 || pf->defaultchar < firstchar) + if (pf->defaultchar < 0 || + pf->defaultchar < firstchar || + pf->defaultchar > limit_char ) pf->defaultchar = firstchar; /* calc font size (offset/width entries)*/ @@ -423,10 +421,10 @@ bdf_read_header(FILE *fp, PMWCFONT pf) maxwidth = pf->fbbw; /* initially use font maxwidth * height for bits allocation*/ - pf->bits_size = nchars * MWIMAGE_WORDS(maxwidth) * pf->height; + pf->bits_size = nchars * BITMAP_WORDS(maxwidth) * pf->height; /* allocate bits, offset, and width arrays*/ - pf->bits = (MWIMAGEBITS *)malloc(pf->bits_size * sizeof(MWIMAGEBITS) + EXTRA); + pf->bits = (bitmap_t *)malloc(pf->bits_size * sizeof(bitmap_t) + EXTRA); pf->offset = (unsigned long *)malloc(pf->size * sizeof(unsigned long)); pf->width = (unsigned char *)malloc(pf->size * sizeof(unsigned char)); @@ -439,8 +437,7 @@ bdf_read_header(FILE *fp, PMWCFONT pf) } /* read bdf font bitmaps, return 0 on error*/ -int -bdf_read_bitmaps(FILE *fp, PMWCFONT pf) +int bdf_read_bitmaps(FILE *fp, struct font* pf) { long ofs = 0; int maxwidth = 0; @@ -494,7 +491,7 @@ bdf_read_bitmaps(FILE *fp, PMWCFONT pf) continue; } if (strequal(buf, "BITMAP")) { - MWIMAGEBITS *ch_bitmap = pf->bits + ofs; + bitmap_t *ch_bitmap = pf->bits + ofs; int ch_words; if (encoding < 0) @@ -520,11 +517,11 @@ bdf_read_bitmaps(FILE *fp, PMWCFONT pf) pf->width[encoding-pf->firstchar] = width; /* clear bitmap*/ - memset(ch_bitmap, 0, MWIMAGE_BYTES(width) * pf->height); + memset(ch_bitmap, 0, BITMAP_BYTES(width) * pf->height); - ch_words = MWIMAGE_WORDS(width); + ch_words = BITMAP_WORDS(width); #define BM(row,col) (*(ch_bitmap + ((row)*ch_words) + (col))) -#define MWIMAGE_NIBBLES (MWIMAGE_BITSPERIMAGE/4) +#define BITMAP_NIBBLES (BITMAP_BITSPERIMAGE/4) /* read bitmaps*/ for (i=0; ; ++i) { @@ -539,30 +536,30 @@ bdf_read_bitmaps(FILE *fp, PMWCFONT pf) hexnibbles = strlen(buf); for (k=0; k<ch_words; ++k) { - int ndx = k * MWIMAGE_NIBBLES; + int ndx = k * BITMAP_NIBBLES; int padnibbles = hexnibbles - ndx; - MWIMAGEBITS value; + bitmap_t value; if (padnibbles <= 0) break; - if (padnibbles >= MWIMAGE_NIBBLES) + if (padnibbles >= BITMAP_NIBBLES) padnibbles = 0; value = bdf_hexval((unsigned char *)buf, - ndx, ndx+MWIMAGE_NIBBLES-1-padnibbles); - value <<= padnibbles * MWIMAGE_NIBBLES; + ndx, ndx+BITMAP_NIBBLES-1-padnibbles); + value <<= padnibbles * BITMAP_NIBBLES; BM(pf->height - pf->descent - bby - bbh + i, k) |= value >> bbx; /* handle overflow into next image word*/ if (bbx) { BM(pf->height - pf->descent - bby - bbh + i, k+1) = - value << (MWIMAGE_BITSPERIMAGE - bbx); + value << (BITMAP_BITSPERIMAGE - bbx); } } } - ofs += MWIMAGE_WORDS(width) * pf->height; + ofs += BITMAP_WORDS(width) * pf->height; continue; } @@ -590,7 +587,7 @@ bdf_read_bitmaps(FILE *fp, PMWCFONT pf) encodetable = 1; break; } - l += MWIMAGE_WORDS(pf->width[i]) * pf->height; + l += BITMAP_WORDS(pf->width[i]) * pf->height; } if (!encodetable) { free(pf->offset); @@ -611,23 +608,25 @@ bdf_read_bitmaps(FILE *fp, PMWCFONT pf) /* reallocate bits array to actual bits used*/ if (ofs < pf->bits_size) { - pf->bits = realloc(pf->bits, ofs * sizeof(MWIMAGEBITS)); + pf->bits = realloc(pf->bits, ofs * sizeof(bitmap_t)); pf->bits_size = ofs; - } else if (ofs > pf->bits_size) { - fprintf(stderr, "Warning: DWIDTH spec > max FONTBOUNDINGBOX\n"); - if (ofs > pf->bits_size+EXTRA) { - fprintf(stderr, "Error: Not enough bits initially allocated\n"); - return 0; + } + else { + if (ofs > pf->bits_size) { + fprintf(stderr, "Warning: DWIDTH spec > max FONTBOUNDINGBOX\n"); + if (ofs > pf->bits_size+EXTRA) { + fprintf(stderr, "Error: Not enough bits initially allocated\n"); + return 0; + } + pf->bits_size = ofs; } - pf->bits_size = ofs; } return 1; } /* read the next non-comment line, returns buf or NULL if EOF*/ -char * -bdf_getline(FILE *fp, char *buf, int len) +char *bdf_getline(FILE *fp, char *buf, int len) { int c; char *b; @@ -653,36 +652,37 @@ bdf_getline(FILE *fp, char *buf, int len) } /* return hex value of portion of buffer*/ -MWIMAGEBITS -bdf_hexval(unsigned char *buf, int ndx1, int ndx2) +bitmap_t bdf_hexval(unsigned char *buf, int ndx1, int ndx2) { - MWIMAGEBITS val = 0; + bitmap_t val = 0; int i, c; for (i=ndx1; i<=ndx2; ++i) { c = buf[i]; if (c >= '0' && c <= '9') c -= '0'; - else if (c >= 'A' && c <= 'F') - c = c - 'A' + 10; - else if (c >= 'a' && c <= 'f') - c = c - 'a' + 10; - else c = 0; + else + if (c >= 'A' && c <= 'F') + c = c - 'A' + 10; + else + if (c >= 'a' && c <= 'f') + c = c - 'a' + 10; + else + c = 0; val = (val << 4) | c; } return val; } /* generate C source from in-core font*/ -int -gen_c_source(PMWCFONT pf, char *path) +int gen_c_source(struct font* pf, char *path) { FILE *ofp; int i; int did_defaultchar = 0; int did_syncmsg = 0; time_t t = time(0); - MWIMAGEBITS *ofs = pf->bits; + bitmap_t *ofs = pf->bits; char buf[256]; char obuf[256]; char hdr1[] = { @@ -704,7 +704,7 @@ gen_c_source(PMWCFONT pf, char *path) "*/\n" "\n" "/* Font character bitmap data. */\n" - "static MWIMAGEBITS _%s_bits[] = {\n" + "static bitmap_t _font_bits[] = {\n" }; ofp = fopen(path, "w"); @@ -712,7 +712,6 @@ gen_c_source(PMWCFONT pf, char *path) fprintf(stderr, "Can't create %s\n", path); return 1; } - fprintf(stderr, "Generating %s\n", path); strcpy(buf, ctime(&t)); buf[strlen(buf)-1] = 0; @@ -727,8 +726,7 @@ gen_c_source(PMWCFONT pf, char *path) pf->firstchar+pf->size-1, pf->firstchar+pf->size-1, pf->defaultchar, pf->defaultchar, pf->width? "yes": "no", - pf->copyright? pf->copyright: "", - pf->name); + pf->copyright? pf->copyright: ""); /* generate bitmaps*/ for (i=0; i<pf->size; ++i) { @@ -736,15 +734,16 @@ gen_c_source(PMWCFONT pf, char *path) int bitcount = 0; int width = pf->width ? pf->width[i] : pf->maxwidth; int height = pf->height; - MWIMAGEBITS *bits = pf->bits + (pf->offset? pf->offset[i]: (height * i)); - MWIMAGEBITS bitvalue; + bitmap_t *bits = pf->bits + (pf->offset? pf->offset[i]: (height * i)); + bitmap_t bitvalue; /* * Generate bitmap bits only if not this index isn't * the default character in encode map, or the default * character hasn't been generated yet. */ - if (pf->offset && (pf->offset[i] == pf->offset[pf->defaultchar-pf->firstchar])) { + if (pf->offset && + (pf->offset[i] == pf->offset[pf->defaultchar-pf->firstchar])) { if (did_defaultchar) continue; did_defaultchar = 1; @@ -763,13 +762,13 @@ gen_c_source(PMWCFONT pf, char *path) if (x == 0) fprintf(ofp, " |"); if (bitcount <= 0) { - bitcount = MWIMAGE_BITSPERIMAGE; + bitcount = BITMAP_BITSPERIMAGE; bitvalue = *bits++; } - fprintf(ofp, MWIMAGE_TESTBIT(bitvalue)? "*": " "); + fprintf(ofp, BITMAP_TESTBIT(bitvalue)? "*": " "); - bitvalue = MWIMAGE_SHIFTBIT(bitvalue); + bitvalue = BITMAP_SHIFTBIT(bitvalue); --bitcount; if (++x == width) { fprintf(ofp, "|\n"); @@ -779,13 +778,15 @@ gen_c_source(PMWCFONT pf, char *path) } } fprintf(ofp, " +"); - for (x=0; x<width; ++x) fprintf(ofp, "-"); + for (x=0; x<width; ++x) + fprintf(ofp, "-"); fprintf(ofp, "+ */\n"); - } else + } + else fprintf(ofp, " */\n"); bits = pf->bits + (pf->offset? pf->offset[i]: (pf->height * i)); - for (x=MWIMAGE_WORDS(width)*pf->height; x>0; --x) { + for (x=BITMAP_WORDS(width)*pf->height; x>0; --x) { fprintf(ofp, "0x%04x,\n", *bits); if (!did_syncmsg && *bits++ != *ofs++) { fprintf(stderr, "Warning: found encoding values in non-sorted order (not an error).\n"); @@ -793,80 +794,79 @@ gen_c_source(PMWCFONT pf, char *path) } } } - fprintf(ofp, "};\n\n"); + fprintf(ofp, "};\n\n"); if (pf->offset) { /* output offset table*/ fprintf(ofp, "/* Character->glyph mapping. */\n" - "static unsigned long _%s_offset[] = {\n", - pf->name); + "static unsigned long _sysfont_offset[] = {\n"); for (i=0; i<pf->size; ++i) - fprintf(ofp, " %ld,\t/* (0x%02x) */\n", pf->offset[i], i+pf->firstchar); + fprintf(ofp, " %ld,\t/* (0x%02x) */\n", + pf->offset[i], i+pf->firstchar); fprintf(ofp, "};\n\n"); } /* output width table for proportional fonts*/ if (pf->width) { - fprintf(ofp, "/* Character width data. */\n" - "static unsigned char _%s_width[] = {\n", - pf->name); + fprintf(ofp, "/* Character width data. */\n" + "static unsigned char _sysfont_width[] = {\n"); for (i=0; i<pf->size; ++i) - fprintf(ofp, " %d,\t/* (0x%02x) */\n", pf->width[i], i+pf->firstchar); + fprintf(ofp, " %d,\t/* (0x%02x) */\n", + pf->width[i], i+pf->firstchar); fprintf(ofp, "};\n\n"); } - /* output MWCFONT struct*/ + /* output struct font struct*/ if (pf->offset) - sprintf(obuf, "_%s_offset,", pf->name); - else sprintf(obuf, "0, /* no encode table*/"); + sprintf(obuf, "_sysfont_offset,"); + else + sprintf(obuf, "0, /* no encode table*/"); + if (pf->width) - sprintf(buf, "_%s_width,", pf->name); - else sprintf(buf, "0, /* fixed width*/"); + sprintf(buf, "_sysfont_width,"); + else + sprintf(buf, "0, /* fixed width*/"); + fprintf(ofp, "/* Exported structure definition. */\n" - "MWCFONT font_%s = {\n" + "struct font sysfont = {\n" " \"%s\",\n" " %d,\n" " %d,\n" " %d,\n" " %d,\n" " %d,\n" - " _%s_bits,\n" + " _font_bits,\n" " %s\n" " %s\n" " %d,\n" - " sizeof(_%s_bits)/sizeof(MWIMAGEBITS),\n" + " sizeof(_font_bits)/sizeof(bitmap_t),\n" "};\n", - pf->name, pf->name, + pf->name, pf->maxwidth, pf->height, pf->ascent, pf->firstchar, pf->size, - pf->name, obuf, buf, - pf->defaultchar, - pf->name); + pf->defaultchar); return 0; } -static int -WRITEBYTE(FILE *fp, unsigned char c) +static int writebyte(FILE *fp, unsigned char c) { return putc(c, fp) != EOF; } -static int -WRITESHORT(FILE *fp, unsigned short s) +static int writeshort(FILE *fp, unsigned short s) { putc(s, fp); return putc(s>>8, fp) != EOF; } -static int -WRITELONG(FILE *fp, unsigned long l) +static int writelong(FILE *fp, unsigned long l) { putc(l, fp); putc(l>>8, fp); @@ -874,30 +874,28 @@ WRITELONG(FILE *fp, unsigned long l) return putc(l>>24, fp) != EOF; } -static int -WRITESTR(FILE *fp, char *str, int count) +static int writestr(FILE *fp, char *str, int count) { return fwrite(str, 1, count, fp) == count; } -static int -WRITESTRPAD(FILE *fp, char *str, int totlen) +static int writestrpad(FILE *fp, char *str, int totlen) { int ret; - while (str && *str && totlen > 0) + while (str && *str && totlen > 0) { if (*str) { ret = putc(*str++, fp); --totlen; } + } while (--totlen >= 0) ret = putc(' ', fp); return ret; } /* generate .fnt format file from in-core font*/ -int -gen_fnt_file(PMWCFONT pf, char *path) +int gen_fnt_file(struct font* pf, char *path) { FILE *ofp; int i; @@ -907,44 +905,43 @@ gen_fnt_file(PMWCFONT pf, char *path) fprintf(stderr, "Can't create %s\n", path); return 1; } - fprintf(stderr, "Generating %s\n", path); /* write magic and version #*/ - WRITESTR(ofp, VERSION, 4); + writestr(ofp, VERSION, 4); /* internal font name*/ - WRITESTRPAD(ofp, pf->name, 64); + writestrpad(ofp, pf->name, 64); /* copyright*/ - WRITESTRPAD(ofp, pf->copyright, 256); + writestrpad(ofp, pf->copyright, 256); /* font info*/ - WRITESHORT(ofp, pf->maxwidth); - WRITESHORT(ofp, pf->height); - WRITESHORT(ofp, pf->ascent); - WRITESHORT(ofp, 0); - WRITELONG(ofp, pf->firstchar); - WRITELONG(ofp, pf->defaultchar); - WRITELONG(ofp, pf->size); + writeshort(ofp, pf->maxwidth); + writeshort(ofp, pf->height); + writeshort(ofp, pf->ascent); + writeshort(ofp, 0); + writelong(ofp, pf->firstchar); + writelong(ofp, pf->defaultchar); + writelong(ofp, pf->size); /* variable font data sizes*/ - WRITELONG(ofp, pf->bits_size); /* # words of MWIMAGEBITS*/ - WRITELONG(ofp, pf->offset? pf->size: 0); /* # longs of offset*/ - WRITELONG(ofp, pf->width? pf->size: 0); /* # bytes of width*/ + writelong(ofp, pf->bits_size); /* # words of bitmap_t*/ + writelong(ofp, pf->offset? pf->size: 0); /* # longs of offset*/ + writelong(ofp, pf->width? pf->size: 0); /* # bytes of width*/ /* variable font data*/ for (i=0; i<pf->bits_size; ++i) - WRITESHORT(ofp, pf->bits[i]); + writeshort(ofp, pf->bits[i]); if (ftell(ofp) & 2) - WRITESHORT(ofp, 0); /* pad to 32-bit boundary*/ + writeshort(ofp, 0); /* pad to 32-bit boundary*/ if (pf->offset) for (i=0; i<pf->size; ++i) - WRITELONG(ofp, pf->offset[i]); + writelong(ofp, pf->offset[i]); if (pf->width) for (i=0; i<pf->size; ++i) - WRITEBYTE(ofp, pf->width[i]); + writebyte(ofp, pf->width[i]); fclose(ofp); return 0; diff --git a/tools/loadrbf.c b/tools/loadrbf.c deleted file mode 100644 index 769195ea99..0000000000 --- a/tools/loadrbf.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Load an rbf font, store in incore format and display - or - - * Read an incore font and display it. - * - * If FONT defined, just link in FONT and display it - * otherwise, load av[1] and display it - * - * Copyright (c) 2002 by Greg Haerr <greg@censoft.com> - */ -#include <stdio.h> - -/* this should go in a library...*/ -#define DEBUGF printf -#include "../firmware/loadfont.c" - -#ifdef FONT -extern MWCFONT FONT; -PMWCFONT pf = &FONT; -#endif - -/* printf display an incore font*/ -void -dispfont(PMWCFONT pf) -{ - int i; - - printf("Font: '%s' %dx%d ", pf->name, pf->maxwidth, pf->height); - printf("0x%02x-0x%02x (size %d)\n", pf->firstchar, - pf->firstchar+pf->size, pf->size); - printf("\tDefault char 0x%02x ", pf->defaultchar); - printf("(%s width)\n", pf->width? "proportional": "fixed"); - - for (i=0; i<pf->size; ++i) { - int width = pf->width ? pf->width[i] : pf->maxwidth; - int height = pf->height; - int x; - int bitcount = 0; - MWIMAGEBITS *bits = pf->bits + (pf->offset? pf->offset[i]: (height * i)); - MWIMAGEBITS bitvalue; - - printf("\nCharacter 0x%02x (width %d)\n", i+pf->firstchar, width); - printf("+"); - for (x=0; x<width; ++x) printf("-"); - printf("+\n"); - - x = 0; - while (height > 0) { - if (x == 0) printf("|"); - - if (bitcount <= 0) { - bitcount = MWIMAGE_BITSPERIMAGE; - bitvalue = *bits++; - } - - printf( MWIMAGE_TESTBIT(bitvalue)? "*": " "); - - bitvalue = MWIMAGE_SHIFTBIT(bitvalue); - --bitcount; - if (++x == width) { - printf("|\n"); - --height; - x = 0; - bitcount = 0; - } - } - printf("+"); - for (x=0; x<width; ++x) printf("-"); - printf("+\n"); - } -} - -int -main(int ac, char **av) -{ - PMWCFONT pf; - MWCFONT font; -#ifdef FONT - /* if FONT defined, just display linked-in font*/ - extern MWCFONT FONT; - pf = &FONT; -#else - if (ac != 2) { - printf("usage: loadrbf font.rbf\n"); - exit(1); - } - - pf = rbf_load_font(av[1], &font); - if (!pf) { - printf("loadrbf: read error: %s\n", av[1]); - exit(1); - } -#endif - dispfont(pf); - return 0; -} diff --git a/tools/writerbf.c b/tools/writerbf.c deleted file mode 100644 index 3bd55a7c80..0000000000 --- a/tools/writerbf.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * writerbf - write an incore font in .rbf format. - * Must be compiled with -DFONT=font_name and linked - * with compiled in font. - * - * Copyright (c) 2002 by Greg Haerr <greg@censoft.com> - */ -#include <stdio.h> -#include "../firmware/font.h" - -extern MWCFONT FONT; -PMWCFONT pf = &FONT; - -static int -WRITEBYTE(FILE *fp, unsigned char c) -{ - return putc(c, fp) != EOF; -} - -static int -WRITESHORT(FILE *fp, unsigned short s) -{ - putc(s, fp); - return putc(s>>8, fp) != EOF; -} - -static int -WRITELONG(FILE *fp, unsigned long l) -{ - putc(l, fp); - putc(l>>8, fp); - putc(l>>16, fp); - return putc(l>>24, fp) != EOF; -} - -static int -WRITESTR(FILE *fp, char *str, int count) -{ - return fwrite(str, 1, count, fp) == count; -} - -static int -WRITESTRPAD(FILE *fp, char *str, int totlen) -{ - int ret; - - while (*str && totlen > 0) - if (*str) { - ret = putc(*str++, fp); - --totlen; - } - while (--totlen >= 0) - ret = putc(' ', fp); - return ret; -} - -/* write font, < 0 return is error*/ -int -rbf_write_font(PMWCFONT pf) -{ - FILE *ofp; - int i; - char name[256]; - - sprintf(name, "%s.fnt", pf->name); - ofp = fopen(name, "wb"); - if (!ofp) - return -1; - - /* write magic and version #*/ - WRITESTR(ofp, VERSION, 4); - - /* internal font name*/ - WRITESTRPAD(ofp, pf->name, 64); - - /* copyright - FIXME not converted with bdf2c*/ - WRITESTRPAD(ofp, " ", 256); - - /* font info*/ - WRITESHORT(ofp, pf->maxwidth); - WRITESHORT(ofp, pf->height); - WRITESHORT(ofp, pf->ascent); - WRITESHORT(ofp, 0); - WRITELONG(ofp, pf->firstchar); - WRITELONG(ofp, pf->defaultchar); - WRITELONG(ofp, pf->size); - - /* variable font data sizes*/ - WRITELONG(ofp, pf->bits_size); /* # words of MWIMAGEBITS*/ - WRITELONG(ofp, pf->offset? pf->size: 0); /* # longs of offset*/ - WRITELONG(ofp, pf->width? pf->size: 0); /* # bytes of width*/ - - /* variable font data*/ - for (i=0; i<pf->bits_size; ++i) - WRITESHORT(ofp, pf->bits[i]); - if (ftell(ofp) & 2) - WRITESHORT(ofp, 0); /* pad to 32-bit boundary*/ - - if (pf->offset) - for (i=0; i<pf->size; ++i) - WRITELONG(ofp, pf->offset[i]); - - if (pf->width) - for (i=0; i<pf->size; ++i) - WRITEBYTE(ofp, pf->width[i]); -} - -int -main(int ac, char **av) -{ - rbf_write_font(pf); -} diff --git a/uisimulator/win32/Makefile b/uisimulator/win32/Makefile index 1b0464779c..382e71b886 100644 --- a/uisimulator/win32/Makefile +++ b/uisimulator/win32/Makefile @@ -63,7 +63,7 @@ CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) -W -Wall -mwindows APPCFLAGS = $(DEBUG) $(DEFINES) $(APPINCLUDES) -W -Wall -mwindows FIRMSRCS = lcd.c power.c sprintf.c id3.c usb.c \ - mpeg.c powermgmt.c font.c loadfont.c X5x8.c + mpeg.c powermgmt.c font.c sysfont.c APPS = main.c tree.c menu.c credits.c main_menu.c icons.c \ playlist.c showtext.c wps.c wps-display.c settings.c status.c @@ -187,11 +187,9 @@ $(OBJDIR)/id3.o: $(FIRMWAREDIR)/id3.c $(OBJDIR)/font.o: $(FIRMWAREDIR)/font.c $(CC) $(CFLAGS) -c $< -o $@ -$(OBJDIR)/loadfont.o: $(FIRMWAREDIR)/loadfont.c - $(CC) $(CFLAGS) -c $< -o $@ - -$(OBJDIR)/X5x8.o: $(FIRMWAREDIR)/X5x8.c - $(CC) $(CFLAGS) -c $< -o $@ +$(OBJDIR)/sysfont.o: $(FIRMWAREDIR)/fonts/clR6x8.bdf + $(TOOLSDIR)/convbdf -c -o $(OBJDIR)/sysfont.c $< + $(CC) $(APPCFLAGS) -c $(OBJDIR)/sysfont.c -o $@ $(OBJDIR)/status.o: $(APPDIR)/status.c $(CC) $(APPCFLAGS) -c $< -o $@ diff --git a/uisimulator/x11/Makefile b/uisimulator/x11/Makefile index 821e13553f..3f9b999acb 100644 --- a/uisimulator/x11/Makefile +++ b/uisimulator/x11/Makefile @@ -78,7 +78,7 @@ CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) -W -Wall APPCFLAGS = $(DEBUG) $(DEFINES) -DAPPSVERSION=\"$(VERSION)\" $(APPINCLUDES) -W -Wall FIRMSRCS = lcd.c sprintf.c id3.c debug.c usb.c mpeg.c power.c\ - powermgmt.c font.c X5x8.c loadfont.c panic.c + powermgmt.c font.c panic.c sysfont.c APPS = main.c tree.c menu.c credits.c main_menu.c\ playlist.c showtext.c wps.c wps-display.c settings.c status.c icons.c @@ -221,24 +221,13 @@ $(OBJDIR)/lang.o: $(APPDIR)/lang/$(LANGUAGE).lang $(OBJDIR)/lcd.o: $(DRIVERS)/lcd.c $(CC) $(CFLAGS) -c $< -o $@ -$(OBJDIR)/X5x8.o: $(FIRMWAREDIR)/X5x8.c - $(CC) $(APPCFLAGS) -c $< -o $@ - -$(OBJDIR)/X6x9.o: $(FIRMWAREDIR)/X6x9.c - $(CC) $(APPCFLAGS) -c $< -o $@ - -$(OBJDIR)/timR08.o: $(FIRMWAREDIR)/timR08.c - $(CC) $(APPCFLAGS) -c $< -o $@ - -$(OBJDIR)/courB08.o: $(FIRMWAREDIR)/courB08.c - $(CC) $(APPCFLAGS) -c $< -o $@ +$(OBJDIR)/sysfont.o: $(FIRMWAREDIR)/fonts/clR6x8.bdf + $(TOOLSDIR)/convbdf -c -o $(OBJDIR)/sysfont.c $< + $(CC) $(APPCFLAGS) -c $(OBJDIR)/sysfont.c -o $@ $(OBJDIR)/font.o: $(FIRMWAREDIR)/font.c $(CC) $(APPCFLAGS) -c $< -o $@ -$(OBJDIR)/loadfont.o: $(FIRMWAREDIR)/loadfont.c - $(CC) $(APPCFLAGS) -c $< -o $@ - $(OBJDIR)/settings.o: $(APPDIR)/settings.c $(CC) $(APPCFLAGS) -c $< -o $@ |