avoid expensive load of all fonts
PATCH 1/1 avoid expensive load of all fonts
This makes update-grub avoid expensive load of complete font files and instead rely on ascii.pff when it is available. In qemu, it brings startup time roughly from 25s to 1s.
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)
2008-07-04 Robert Millan <[email protected]>
* Makefile.in (UNICODE_ARROWS, UNICODE_LINES): New variables (they define the codes for arrows and lines used for the menu). (ascii.pff): Generate fonts for $(UNICODE_ARROWS) and $(UNICODE_LINES) as well.
* util/update-grub_lib.in (font_path): Prefer ascii.pff over complete fonts, because the latter are too slow.
Makefile.in +6 -1
@@ -142,11 +142,16 @@ ifeq (, $(UNIFONT_HEX)) else pkgdata_DATA += unicode.pff ascii.pff + +# Arrows and lines are needed to draw the menu, so we always include them +UNICODE_ARROWS=0x2190-0x2193 +UNICODE_LINES=0x2501-0x251B + unicode.pff: $(UNIFONT_HEX) ruby $(srcdir)/util/unifont2pff.rb $(UNIFONT_HEX) > $@ ascii.pff: $(UNIFONT_HEX) - ruby $(srcdir)/util/unifont2pff.rb 0-127 $(UNIFONT_HEX) > $@ + ruby $(srcdir)/util/unifont2pff.rb 0x0-0x7f $(UNICODE_ARROWS) $(UNICODE_LINES) $(UNIFONT_HEX) > $@ endif all-local: $(PROGRAMS) $(PKGLIB) $(PKGDATA) $(SCRIPTS) $(MKFILES)
update-grub_lib.in +3 -2
@@ -131,8 +131,9 @@ font_path () { for dir in ${pkgdatadir} /boot/grub /usr/share/grub ; do - # Prefer complete fonts over incomplete ones. - for basename in unicode unifont ascii ; do + # FIXME: We prefer ascii because loading complete fonts is too slow (and + # we don't yet provide the gettext magic that would make unicode useful). + for basename in ascii unicode unifont ; do path="${dir}/${basename}.pff" if is_path_readable_by_grub ${path} > /dev/null ; then echo "${path}"
Committed.
Quoted 65 lines · Robert Millan
This makes update-grub avoid expensive load of complete font files and instead rely on ascii.pff when it is available. In qemu, it brings startup time roughly from 25s to 1s.
Signature · 18 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.) 2008-07-04 Robert Millan <[email protected]> * Makefile.in (UNICODE_ARROWS, UNICODE_LINES): New variables (they define the codes for arrows and lines used for the menu). (ascii.pff): Generate fonts for $(UNICODE_ARROWS) and $(UNICODE_LINES) as well. * util/update-grub_lib.in (font_path): Prefer ascii.pff over complete fonts, because the latter are too slow. Index: Makefile.in ===================================================================Makefile.in +6
-1@@ -142,11 +142,16 @@ ifeq (, $(UNIFONT_HEX)) else pkgdata_DATA += unicode.pff ascii.pff + +# Arrows and lines are needed to draw the menu, so we always include them +UNICODE_ARROWS=0x2190-0x2193 +UNICODE_LINES=0x2501-0x251B + unicode.pff: $(UNIFONT_HEX) ruby $(srcdir)/util/unifont2pff.rb $(UNIFONT_HEX) > $@ ascii.pff: $(UNIFONT_HEX) - ruby $(srcdir)/util/unifont2pff.rb 0-127 $(UNIFONT_HEX) > $@ + ruby $(srcdir)/util/unifont2pff.rb 0x0-0x7f $(UNICODE_ARROWS) $(UNICODE_LINES) $(UNIFONT_HEX) > $@ endif all-local: $(PROGRAMS) $(PKGLIB) $(PKGDATA) $(SCRIPTS) $(MKFILES)Index: util/update-grub_lib.in
===================================================================update-grub_lib.in +3
-2@@ -131,8 +131,9 @@ font_path () { for dir in ${pkgdatadir} /boot/grub /usr/share/grub ; do - # Prefer complete fonts over incomplete ones. - for basename in unicode unifont ascii ; do + # FIXME: We prefer ascii because loading complete fonts is too slow (and + # we don't yet provide the gettext magic that would make unicode useful). + for basename in ascii unicode unifont ; do path="${dir}/${basename}.pff" if is_path_readable_by_grub ${path} > /dev/null ; then echo "${path}"_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)
Quoted 2 lines · Robert Millan
Makefile.in line 154
Quoted 2 lines
Makefile.in +1
-1- ruby $(srcdir)/util/unifont2pff.rb 0-127 $(UNIFONT_HEX) > $@ + ruby $(srcdir)/util/unifont2pff.rb 0x0-0x7f $(UNICODE_ARROWS) $(UNICODE_LINES) $(UNIFONT_HEX) > $@
We should be able to use 0x20-0x7f. I checked it and it seems to be OK.
Signature · 2 lines
Regards, Pavel Roskin
Quoted 5 lines · Pavel Roskin
Quoted 2 lines · Robert Millan
Makefile.in line 154
Quoted 2 lines
Makefile.in +1
-1- ruby $(srcdir)/util/unifont2pff.rb 0-127 $(UNIFONT_HEX) > $@ + ruby $(srcdir)/util/unifont2pff.rb 0x0-0x7f $(UNICODE_ARROWS) $(UNICODE_LINES) $(UNIFONT_HEX) > $@We should be able to use 0x20-0x7f. I checked it and it seems to be OK.
Fine with me. A few milliseconds less :-)
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)