Merge kernel-font branch
This commit is contained in:
commit
25c2b5b317
6 changed files with 315 additions and 15 deletions
49
ChangeLog
49
ChangeLog
|
@ -1,3 +1,52 @@
|
||||||
|
2010-01-18 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
Fix parallel builds.
|
||||||
|
|
||||||
|
* conf/common.rmk (font/font.c_DEPENDENCIES): New variable (makes
|
||||||
|
font.c depend on ascii.h).
|
||||||
|
|
||||||
|
2010-01-12 Carles Pina i Estany <carles@pina.cat>
|
||||||
|
|
||||||
|
* Makefile.in (DUSE_ASCII_FAILBACK): New macro.
|
||||||
|
|
||||||
|
2010-01-11 Carles Pina i Estany <carles@pina.cat>
|
||||||
|
|
||||||
|
* font/font.c (GENERATE_ASCII): Change the name to USE_ASCII_FAILBACK.
|
||||||
|
By default: disabled.
|
||||||
|
* Makefile.in (ascii.h): Remove the non-needed grub/bin2h size
|
||||||
|
parameter.
|
||||||
|
|
||||||
|
2010-01-10 Carles Pina i Estany <carles@pina.cat>
|
||||||
|
|
||||||
|
* font/font.c: Update copyright years.
|
||||||
|
* util/grub-mkfont.c (write_font_ascii_bitmap): Change comment format.
|
||||||
|
|
||||||
|
2010-01-10 Carles Pina i Estany <carles@pina.cat>
|
||||||
|
|
||||||
|
* font/font.c: Include `ascii.h'.
|
||||||
|
(ASCII_BITMAP_SIZE): New macro.
|
||||||
|
(ascii_font_glyph): Define.
|
||||||
|
(ascii_glyph_lookup): New function.
|
||||||
|
(grub_font_get_string_width): Change comment. If glyph not found, use
|
||||||
|
ascii_glyph_lookup.
|
||||||
|
(grub_font_get_glyph_with_fallback): If glyph not available returns
|
||||||
|
ascii_glyph_lookup.
|
||||||
|
* util/grub-mkfont.c (file_formats): New enum.
|
||||||
|
(options): Add `ascii-bitmaps' new option.
|
||||||
|
(usage): Add `asii-bitmaps' new option.
|
||||||
|
(write_font_ascii_bitmap): New function.
|
||||||
|
(write_font): Rename to ...
|
||||||
|
(write_font_p2): ... this. Remove print_glyphs call.
|
||||||
|
(main): Use file_format. Implement code for ranges if ascii-bitmaps is
|
||||||
|
used. Call print_glyphs.
|
||||||
|
* Makefile.in (pkgdata_DATA): Add `ascii.h'.
|
||||||
|
|
||||||
|
2010-01-14 Robert Millan <rmh.grub@aybabtu.com>
|
||||||
|
|
||||||
|
* conf/common.rmk (bin_UTILITIES): Add `grub-bin2h'.
|
||||||
|
(grub_bin2h_SOURCES): New variable.
|
||||||
|
* util/bin2h.c: New file.
|
||||||
|
|
||||||
2010-01-20 Vladimir Serbinenko <phcoder@gmail.com>
|
2010-01-20 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* include/multiboot.h: Resynced with spec.
|
* include/multiboot.h: Resynced with spec.
|
||||||
|
|
10
Makefile.in
10
Makefile.in
|
@ -236,7 +236,7 @@ else
|
||||||
|
|
||||||
ifeq ($(enable_grub_mkfont),yes)
|
ifeq ($(enable_grub_mkfont),yes)
|
||||||
|
|
||||||
pkgdata_DATA += unicode.pf2 ascii.pf2
|
pkgdata_DATA += unicode.pf2 ascii.pf2 ascii.h
|
||||||
|
|
||||||
# Arrows and lines are needed to draw the menu, so we always include them
|
# Arrows and lines are needed to draw the menu, so we always include them
|
||||||
UNICODE_ARROWS=0x2190-0x2193
|
UNICODE_ARROWS=0x2190-0x2193
|
||||||
|
@ -247,6 +247,14 @@ unicode.pf2: $(FONT_SOURCE) grub-mkfont
|
||||||
|
|
||||||
ascii.pf2: $(FONT_SOURCE) grub-mkfont
|
ascii.pf2: $(FONT_SOURCE) grub-mkfont
|
||||||
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
|
$(builddir)/grub-mkfont -o $@ $(FONT_SOURCE) -r 0x0-0x7f,$(UNICODE_ARROWS),$(UNICODE_LINES)
|
||||||
|
|
||||||
|
ascii.bitmaps: $(FONT_SOURCE) grub-mkfont
|
||||||
|
$(builddir)/grub-mkfont --ascii-bitmaps -o $@ $(FONT_SOURCE)
|
||||||
|
|
||||||
|
ascii.h: ascii.bitmaps grub-bin2h
|
||||||
|
$(builddir)/grub-bin2h ascii_bitmaps < $< > $@
|
||||||
|
|
||||||
|
TARGET_CFLAGS += -DUSE_ASCII_FAILBACK=1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,9 @@ endif
|
||||||
bin_UTILITIES += grub-mkrelpath
|
bin_UTILITIES += grub-mkrelpath
|
||||||
grub_mkrelpath_SOURCES = gnulib/progname.c util/grub-mkrelpath.c util/misc.c
|
grub_mkrelpath_SOURCES = gnulib/progname.c util/grub-mkrelpath.c util/misc.c
|
||||||
|
|
||||||
|
bin_UTILITIES += grub-bin2h
|
||||||
|
grub_bin2h_SOURCES = gnulib/progname.c util/bin2h.c
|
||||||
|
|
||||||
# For grub-script-check.
|
# For grub-script-check.
|
||||||
bin_UTILITIES += grub-script-check
|
bin_UTILITIES += grub-script-check
|
||||||
util/grub-script-check.c_DEPENDENCIES = grub_script_check_init.h
|
util/grub-script-check.c_DEPENDENCIES = grub_script_check_init.h
|
||||||
|
@ -597,7 +600,7 @@ sh_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
# Common Video Subsystem specific modules.
|
# Common Video Subsystem specific modules.
|
||||||
pkglib_MODULES += video.mod videotest.mod bitmap.mod tga.mod jpeg.mod \
|
pkglib_MODULES += video.mod videotest.mod bitmap.mod tga.mod jpeg.mod \
|
||||||
png.mod font.mod gfxterm.mod video_fb.mod
|
png.mod gfxterm.mod video_fb.mod
|
||||||
|
|
||||||
# For video.mod.
|
# For video.mod.
|
||||||
video_mod_SOURCES = video/video.c
|
video_mod_SOURCES = video/video.c
|
||||||
|
@ -634,7 +637,8 @@ png_mod_SOURCES = video/readers/png.c
|
||||||
png_mod_CFLAGS = $(COMMON_CFLAGS)
|
png_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
png_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
png_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
# For font.mod.
|
pkglib_MODULES += font.mod
|
||||||
|
font/font.c_DEPENDENCIES = ascii.h
|
||||||
font_mod_SOURCES = font/font_cmd.c font/font.c
|
font_mod_SOURCES = font/font_cmd.c font/font.c
|
||||||
font_mod_CFLAGS = $(COMMON_CFLAGS)
|
font_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
font_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
font_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
61
font/font.c
61
font/font.c
|
@ -1,7 +1,7 @@
|
||||||
/* font.c - Font API and font file loader. */
|
/* font.c - Font API and font file loader. */
|
||||||
/*
|
/*
|
||||||
* GRUB -- GRand Unified Bootloader
|
* GRUB -- GRand Unified Bootloader
|
||||||
* Copyright (C) 2003,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
|
* Copyright (C) 2003,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* GRUB is free software: you can redistribute it and/or modify
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -27,6 +27,10 @@
|
||||||
#include <grub/video.h>
|
#include <grub/video.h>
|
||||||
#include <grub/bitmap.h>
|
#include <grub/bitmap.h>
|
||||||
|
|
||||||
|
#ifdef USE_ASCII_FAILBACK
|
||||||
|
#include "ascii.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FONT_DEBUG
|
#ifndef FONT_DEBUG
|
||||||
#define FONT_DEBUG 0
|
#define FONT_DEBUG 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -43,6 +47,7 @@ struct char_index_entry
|
||||||
|
|
||||||
#define FONT_WEIGHT_NORMAL 100
|
#define FONT_WEIGHT_NORMAL 100
|
||||||
#define FONT_WEIGHT_BOLD 200
|
#define FONT_WEIGHT_BOLD 200
|
||||||
|
#define ASCII_BITMAP_SIZE 16
|
||||||
|
|
||||||
struct grub_font
|
struct grub_font
|
||||||
{
|
{
|
||||||
|
@ -129,6 +134,48 @@ static struct grub_font null_font;
|
||||||
/* Flag to ensure module is initialized only once. */
|
/* Flag to ensure module is initialized only once. */
|
||||||
static grub_uint8_t font_loader_initialized;
|
static grub_uint8_t font_loader_initialized;
|
||||||
|
|
||||||
|
#ifdef USE_ASCII_FAILBACK
|
||||||
|
static struct grub_font_glyph *ascii_font_glyph[0x80];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static struct grub_font_glyph *
|
||||||
|
ascii_glyph_lookup (grub_uint32_t code)
|
||||||
|
{
|
||||||
|
#ifdef USE_ASCII_FAILBACK
|
||||||
|
static int ascii_failback_initialized = 0;
|
||||||
|
|
||||||
|
if (code >= 0x80)
|
||||||
|
return unknown_glyph;
|
||||||
|
|
||||||
|
if (ascii_failback_initialized == 0)
|
||||||
|
{
|
||||||
|
int current;
|
||||||
|
for (current = 0; current < 0x80; current++)
|
||||||
|
{
|
||||||
|
ascii_font_glyph[current] = grub_malloc(sizeof(struct grub_font_glyph)
|
||||||
|
+ ASCII_BITMAP_SIZE);
|
||||||
|
|
||||||
|
ascii_font_glyph[current]->width = 8;
|
||||||
|
ascii_font_glyph[current]->height = 16;
|
||||||
|
ascii_font_glyph[current]->offset_x = 0;
|
||||||
|
ascii_font_glyph[current]->offset_y = -2;
|
||||||
|
ascii_font_glyph[current]->device_width = 8;
|
||||||
|
|
||||||
|
grub_memcpy (ascii_font_glyph[current]->bitmap,
|
||||||
|
&ascii_bitmaps[(0x7f - current) * ASCII_BITMAP_SIZE],
|
||||||
|
ASCII_BITMAP_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
ascii_failback_initialized = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ascii_font_glyph[code];
|
||||||
|
#else
|
||||||
|
(void) code;
|
||||||
|
return unknown_glyph;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_font_loader_init (void)
|
grub_font_loader_init (void)
|
||||||
{
|
{
|
||||||
|
@ -865,15 +912,17 @@ grub_font_get_string_width (grub_font_t font, const char *str)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the glyph for FONT corresponding to the Unicode code point CODE.
|
/* Get the glyph for FONT corresponding to the Unicode code point CODE.
|
||||||
Returns a pointer to an glyph indicating there is no glyph available
|
Returns the ASCII glyph for the code if no other fonts are available.
|
||||||
if CODE does not exist in the font. The glyphs are cached once loaded. */
|
The glyphs are cached once loaded. */
|
||||||
struct grub_font_glyph *
|
struct grub_font_glyph *
|
||||||
grub_font_get_glyph (grub_font_t font, grub_uint32_t code)
|
grub_font_get_glyph (grub_font_t font, grub_uint32_t code)
|
||||||
{
|
{
|
||||||
struct grub_font_glyph *glyph;
|
struct grub_font_glyph *glyph;
|
||||||
glyph = grub_font_get_glyph_internal (font, code);
|
glyph = grub_font_get_glyph_internal (font, code);
|
||||||
if (glyph == 0)
|
if (glyph == 0)
|
||||||
glyph = unknown_glyph;
|
{
|
||||||
|
glyph = ascii_glyph_lookup (code);
|
||||||
|
}
|
||||||
return glyph;
|
return glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -968,8 +1017,8 @@ grub_font_get_glyph_with_fallback (grub_font_t font, grub_uint32_t code)
|
||||||
if (best_glyph)
|
if (best_glyph)
|
||||||
return best_glyph;
|
return best_glyph;
|
||||||
else
|
else
|
||||||
/* Glyph not available in any font. Return unknown glyph. */
|
/* Glyph not available in any font. Return ASCII failback. */
|
||||||
return unknown_glyph;
|
return ascii_glyph_lookup (code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
125
util/bin2h.c
Normal file
125
util/bin2h.c
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008,2010 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define _GNU_SOURCE 1
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
|
#include "progname.h"
|
||||||
|
|
||||||
|
static struct option options[] =
|
||||||
|
{
|
||||||
|
{"help", no_argument, 0, 'h' },
|
||||||
|
{"version", no_argument, 0, 'V' },
|
||||||
|
{0, 0, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
usage (int status)
|
||||||
|
{
|
||||||
|
if (status)
|
||||||
|
fprintf (stderr,
|
||||||
|
"Try ``%s --help'' for more information.\n", program_name);
|
||||||
|
else
|
||||||
|
printf ("\
|
||||||
|
Usage: %s [OPTIONS] SYMBOL-NAME\n\
|
||||||
|
\n\
|
||||||
|
-h, --help display this message and exit\n\
|
||||||
|
-V, --version print version information and exit\n\
|
||||||
|
\n\
|
||||||
|
Report bugs to <%s>.\n\
|
||||||
|
", program_name, PACKAGE_BUGREPORT);
|
||||||
|
|
||||||
|
exit (status);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int b, i;
|
||||||
|
char *sym;
|
||||||
|
|
||||||
|
set_program_name (argv[0]);
|
||||||
|
|
||||||
|
/* Check for options. */
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
int c = getopt_long (argc, argv, "snm:r:hVv", options, 0);
|
||||||
|
|
||||||
|
if (c == -1)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'h':
|
||||||
|
usage (0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'V':
|
||||||
|
printf ("%s (%s) %s\n", program_name, PACKAGE_NAME, PACKAGE_VERSION);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
usage (1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optind >= argc)
|
||||||
|
usage (1);
|
||||||
|
|
||||||
|
if (optind + 1 != argc)
|
||||||
|
usage (1);
|
||||||
|
|
||||||
|
sym = argv[optind];
|
||||||
|
|
||||||
|
b = getchar ();
|
||||||
|
if (b == EOF)
|
||||||
|
goto abort;
|
||||||
|
|
||||||
|
printf ("/* THIS CHUNK OF BYTES IS AUTOMATICALY GENERATED */\n"
|
||||||
|
"unsigned char %s[] =\n{\n", sym);
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
printf ("0x%02x", b);
|
||||||
|
|
||||||
|
b = getchar ();
|
||||||
|
if (b == EOF)
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
for (i = 0; i < 16 - 1; i++)
|
||||||
|
{
|
||||||
|
printf (", 0x%02x", b);
|
||||||
|
|
||||||
|
b = getchar ();
|
||||||
|
if (b == EOF)
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf (",\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
printf ("\n};\n");
|
||||||
|
|
||||||
|
abort:
|
||||||
|
exit (0);
|
||||||
|
}
|
|
@ -49,6 +49,12 @@ struct grub_glyph_info
|
||||||
grub_uint8_t bitmap[0];
|
grub_uint8_t bitmap[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum file_formats
|
||||||
|
{
|
||||||
|
PF2,
|
||||||
|
ASCII_BITMAPS
|
||||||
|
};
|
||||||
|
|
||||||
#define GRUB_FONT_FLAG_BOLD 1
|
#define GRUB_FONT_FLAG_BOLD 1
|
||||||
#define GRUB_FONT_FLAG_NOBITMAP 2
|
#define GRUB_FONT_FLAG_NOBITMAP 2
|
||||||
#define GRUB_FONT_FLAG_NOHINTING 4
|
#define GRUB_FONT_FLAG_NOHINTING 4
|
||||||
|
@ -87,6 +93,7 @@ static struct option options[] =
|
||||||
{"help", no_argument, 0, 'h'},
|
{"help", no_argument, 0, 'h'},
|
||||||
{"version", no_argument, 0, 'V'},
|
{"version", no_argument, 0, 'V'},
|
||||||
{"verbose", no_argument, 0, 'v'},
|
{"verbose", no_argument, 0, 'v'},
|
||||||
|
{"ascii-bitmaps", no_argument, 0, 0x102},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -102,6 +109,7 @@ usage (int status)
|
||||||
Usage: %s [OPTIONS] FONT_FILES\n\
|
Usage: %s [OPTIONS] FONT_FILES\n\
|
||||||
\nOptions:\n\
|
\nOptions:\n\
|
||||||
-o, --output=FILE_NAME set output file name\n\
|
-o, --output=FILE_NAME set output file name\n\
|
||||||
|
--ascii-bitmaps save only the ASCII bitmaps\n\
|
||||||
-i, --index=N set face index\n\
|
-i, --index=N set face index\n\
|
||||||
-r, --range=A-B[,C-D] set font range\n\
|
-r, --range=A-B[,C-D] set font range\n\
|
||||||
-n, --name=S set font family name\n\
|
-n, --name=S set font family name\n\
|
||||||
|
@ -337,7 +345,39 @@ print_glyphs (struct grub_font_info *font_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
write_font (struct grub_font_info *font_info, char *output_file)
|
write_font_ascii_bitmap (struct grub_font_info *font_info, char *output_file)
|
||||||
|
{
|
||||||
|
FILE *file;
|
||||||
|
struct grub_glyph_info *glyph;
|
||||||
|
int num;
|
||||||
|
|
||||||
|
file = fopen (output_file, "wb");
|
||||||
|
if (! file)
|
||||||
|
grub_util_error ("Can\'t write to file %s.", output_file);
|
||||||
|
|
||||||
|
int correct_size;
|
||||||
|
for (glyph = font_info->glyph, num = 0; glyph; glyph = glyph->next, num++)
|
||||||
|
{
|
||||||
|
correct_size = 1;
|
||||||
|
if (glyph->width != 8 || glyph->height != 16)
|
||||||
|
{
|
||||||
|
/* printf ("Width or height from glyph U+%04x not supported, skipping.\n", glyph->char_code); */
|
||||||
|
correct_size = 0;
|
||||||
|
}
|
||||||
|
int row;
|
||||||
|
for (row = 0; row < glyph->height; row++)
|
||||||
|
{
|
||||||
|
if (correct_size)
|
||||||
|
fwrite (&glyph->bitmap[row], sizeof(glyph->bitmap[row]), 1, file);
|
||||||
|
else
|
||||||
|
fwrite (&correct_size, 1, 1, file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose (file);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
write_font_pf2 (struct grub_font_info *font_info, char *output_file)
|
||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
grub_uint32_t leng, data;
|
grub_uint32_t leng, data;
|
||||||
|
@ -473,9 +513,6 @@ write_font (struct grub_font_info *font_info, char *output_file)
|
||||||
grub_util_write_image ((char *) &cur->bitmap[0], cur->bitmap_size, file);
|
grub_util_write_image ((char *) &cur->bitmap[0], cur->bitmap_size, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (font_verbosity > 1)
|
|
||||||
print_glyphs (font_info);
|
|
||||||
|
|
||||||
fclose (file);
|
fclose (file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,6 +524,7 @@ main (int argc, char *argv[])
|
||||||
int font_index = 0;
|
int font_index = 0;
|
||||||
int font_size = 0;
|
int font_size = 0;
|
||||||
char *output_file = NULL;
|
char *output_file = NULL;
|
||||||
|
enum file_formats file_format = PF2;
|
||||||
|
|
||||||
memset (&font_info, 0, sizeof (font_info));
|
memset (&font_info, 0, sizeof (font_info));
|
||||||
|
|
||||||
|
@ -552,7 +590,7 @@ main (int argc, char *argv[])
|
||||||
font_info.ranges = xrealloc (font_info.ranges,
|
font_info.ranges = xrealloc (font_info.ranges,
|
||||||
(font_info.num_range +
|
(font_info.num_range +
|
||||||
GRUB_FONT_RANGE_BLOCK) *
|
GRUB_FONT_RANGE_BLOCK) *
|
||||||
sizeof (int) * 2);
|
sizeof (grub_uint32_t) * 2);
|
||||||
|
|
||||||
font_info.ranges[font_info.num_range * 2] = a;
|
font_info.ranges[font_info.num_range * 2] = a;
|
||||||
font_info.ranges[font_info.num_range * 2 + 1] = b;
|
font_info.ranges[font_info.num_range * 2 + 1] = b;
|
||||||
|
@ -591,12 +629,33 @@ main (int argc, char *argv[])
|
||||||
font_verbosity++;
|
font_verbosity++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x102:
|
||||||
|
file_format = ASCII_BITMAPS;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
usage (1);
|
usage (1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (file_format == ASCII_BITMAPS && font_info.num_range > 0)
|
||||||
|
{
|
||||||
|
grub_util_error ("Option --ascii-bitmaps doesn't accept ranges (use ASCII).");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (file_format == ASCII_BITMAPS)
|
||||||
|
{
|
||||||
|
font_info.ranges = xrealloc (font_info.ranges,
|
||||||
|
GRUB_FONT_RANGE_BLOCK *
|
||||||
|
sizeof (grub_uint32_t) * 2);
|
||||||
|
|
||||||
|
font_info.ranges[0] = (grub_uint32_t) 0x00;
|
||||||
|
font_info.ranges[1] = (grub_uint32_t) 0x7f;
|
||||||
|
font_info.num_range = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (! output_file)
|
if (! output_file)
|
||||||
grub_util_error ("no output file is specified");
|
grub_util_error ("no output file is specified");
|
||||||
|
|
||||||
|
@ -638,7 +697,13 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
FT_Done_FreeType (ft_lib);
|
FT_Done_FreeType (ft_lib);
|
||||||
|
|
||||||
write_font (&font_info, output_file);
|
if (file_format == PF2)
|
||||||
|
write_font_pf2 (&font_info, output_file);
|
||||||
|
else if (file_format == ASCII_BITMAPS)
|
||||||
|
write_font_ascii_bitmap (&font_info, output_file);
|
||||||
|
|
||||||
|
if (font_verbosity > 1)
|
||||||
|
print_glyphs (&font_info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue