2006-03-30 Vesa Jaaskelainen <chaac@nic.fi>

* font/manager.c (grub_font_get_glyph): Removed font fixup from
        here...

        * util/unifont2pff.rb: ... and moved it to here.  Improved argument
        parsing to support both hex and dec ranges.  If filename was missing
        show usage information.
This commit is contained in:
chaac 2006-03-31 13:32:52 +00:00
parent bd0d7896cf
commit c2379b9c31
3 changed files with 34 additions and 10 deletions

View file

@ -1,3 +1,12 @@
2006-03-30 Vesa Jaaskelainen <chaac@nic.fi>
* font/manager.c (grub_font_get_glyph): Removed font fixup from
here...
* util/unifont2pff.rb: ... and moved it to here. Improved argument
parsing to support both hex and dec ranges. If filename was missing
show usage information.
2006-03-14 Vesa Jaaskelainen <chaac@nic.fi> 2006-03-14 Vesa Jaaskelainen <chaac@nic.fi>
* DISTLIST: Added include/grub/video.h, term/gfxterm.c, * DISTLIST: Added include/grub/video.h, term/gfxterm.c,

View file

@ -184,8 +184,6 @@ grub_font_get_glyph (grub_uint32_t code,
if (offset) if (offset)
{ {
grub_uint32_t w; grub_uint32_t w;
unsigned int x;
unsigned int y;
int len; int len;
/* Make sure we can find glyphs for error messages. Push active /* Make sure we can find glyphs for error messages. Push active
@ -216,10 +214,8 @@ grub_font_get_glyph (grub_uint32_t code,
goto restart; goto restart;
} }
/* Temporary workaround, fix font bitmap. */ /* Fill glyph with information. */
for (y = 0; y < 16; y++) grub_memcpy (glyph->bitmap, bitmap, w * 16);
for (x = 0; x < w; x++)
glyph->bitmap[y * w + x] = bitmap[x * 16 + y];
glyph->char_width = w; glyph->char_width = w;
glyph->width = glyph->char_width * 8; glyph->width = glyph->char_width * 8;

View file

@ -15,18 +15,26 @@
MAGIC = "PPF\x7f" MAGIC = "PPF\x7f"
def usage(status = 0) def usage(status = 0)
puts "Usage: ruby unifont2pff.rb [RANGE...] FILE" puts "Usage: ruby unifont2pff.rb [RANGE ...] FILE"
exit(status) exit(status)
end end
if ARGV.length == 0
usage(1)
end
file = ARGV.pop file = ARGV.pop
ranges = [] ranges = []
ARGV.each do |range| ARGV.each do |range|
if /\A([0-9a-fA-F]+):([0-9a-fA-F]+)\z/ =~ range if /\A0x([0-9a-fA-F]+)[:-]0x([0-9a-fA-F]+)\z/ =~ range
ranges << [$1.hex, $2.hex] ranges << [$1.hex, $2.hex]
elsif /\A([0-9a-fA-F]+)\z/ =~ range elsif /\A0x([0-9a-fA-F]+)\z/ =~ range
ranges << [$1.hex, $1.hex] ranges << [$1.hex, $1.hex]
elsif /\A([0-9]+)[:-]([0-9]+)\z/ =~ range
ranges << [$1.to_i, $2.to_i]
elsif /\A([0-9]+)\z/ =~ range
ranges << [$1.to_i, $1.to_i]
else else
usage(1) usage(1)
end end
@ -54,6 +62,17 @@ IO.foreach(file) do |line|
raise "invalid bitmap size: #{bitmap}" raise "invalid bitmap size: #{bitmap}"
end end
# Fix byte ordering
w = (bitmap.size / 32)
temp = Array.new
for y in 0...16
for x in 0...w
temp[(y * w + x) * 2 + 0] = bitmap[(x * 16 + y) * 2 + 0].chr
temp[(y * w + x) * 2 + 1] = bitmap[(x * 16 + y) * 2 + 1].chr
end
end
bitmap = temp.to_s
fonts << [code, bitmap] fonts << [code, bitmap]
else else
raise "invalid line format: #{line}" raise "invalid line format: #{line}"