From: "Vesa Jääskeläinen" <chaac@nic.fi>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: [patch] Moved font fixup from manager to font converter
Date: Thu, 30 Mar 2006 21:41:39 +0300 [thread overview]
Message-ID: <442C2663.4000303@nic.fi> (raw)
[-- Attachment #1: Type: text/plain, Size: 612 bytes --]
Hi,
I have made a small patch that moved this temporary hack from font
manager to font converted. At same time I also made some improvements to
converter. I can't say I am proficient on ruby, but at least it _seems_
to work.
Previously ranges were specified like this 0:123 (which would mean 0x0
to 0x123). After this change 0:123 means 0..123 and 0x0:0x123 would mean
0x0 to 0x123. I also added more intuitive range specifier '-' so you
could specify ranges like 0-255.
Also fixed minor error causing ruby error to be printed if there were no
parameters given.
Thanks,
Vesa Jääskeläinen
[-- Attachment #2: grub2-font-fixup.diff --]
[-- Type: text/plain, Size: 3113 bytes --]
Index: ChangeLog
===================================================================
RCS file: /sources/grub/grub2/ChangeLog,v
retrieving revision 1.226
diff -u -r1.226 ChangeLog
--- ChangeLog 14 Mar 2006 19:08:33 -0000 1.226
+++ ChangeLog 30 Mar 2006 18:22:37 -0000
@@ -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>
* DISTLIST: Added include/grub/video.h, term/gfxterm.c,
Index: font/manager.c
===================================================================
RCS file: /sources/grub/grub2/font/manager.c,v
retrieving revision 1.7
diff -u -r1.7 manager.c
--- font/manager.c 14 Mar 2006 19:08:33 -0000 1.7
+++ font/manager.c 30 Mar 2006 18:22:37 -0000
@@ -184,8 +184,6 @@
if (offset)
{
grub_uint32_t w;
- unsigned int x;
- unsigned int y;
int len;
/* Make sure we can find glyphs for error messages. Push active
@@ -215,11 +213,9 @@
remove_font (font);
goto restart;
}
-
- /* Temporary workaround, fix font bitmap. */
- for (y = 0; y < 16; y++)
- for (x = 0; x < w; x++)
- glyph->bitmap[y * w + x] = bitmap[x * 16 + y];
+
+ /* Fill glyph with information. */
+ grub_memcpy (glyph->bitmap, bitmap, w * 16);
glyph->char_width = w;
glyph->width = glyph->char_width * 8;
Index: util/unifont2pff.rb
===================================================================
RCS file: /sources/grub/grub2/util/unifont2pff.rb,v
retrieving revision 1.2
diff -u -r1.2 unifont2pff.rb
--- util/unifont2pff.rb 24 Feb 2004 17:21:53 -0000 1.2
+++ util/unifont2pff.rb 30 Mar 2006 18:22:37 -0000
@@ -15,18 +15,26 @@
MAGIC = "PPF\x7f"
def usage(status = 0)
- puts "Usage: ruby unifont2pff.rb [RANGE...] FILE"
+ puts "Usage: ruby unifont2pff.rb [RANGE ...] FILE"
exit(status)
end
+if ARGV.length == 0
+ usage(1)
+end
+
file = ARGV.pop
ranges = []
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]
- elsif /\A([0-9a-fA-F]+)\z/ =~ range
+ elsif /\A0x([0-9a-fA-F]+)\z/ =~ range
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
usage(1)
end
@@ -54,6 +62,17 @@
raise "invalid bitmap size: #{bitmap}"
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]
else
raise "invalid line format: #{line}"
next reply other threads:[~2006-03-30 18:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-30 18:41 Vesa Jääskeläinen [this message]
2006-03-31 3:18 ` [patch] Moved font fixup from manager to font converter Yoshinori K. Okuji
2006-04-01 19:39 ` Vesa Jääskeläinen
2006-04-02 0:43 ` Hollis Blanchard
2006-04-02 11:48 ` Marco Gerards
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=442C2663.4000303@nic.fi \
--to=chaac@nic.fi \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.