summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile15
-rw-r--r--README.md57
-rw-r--r--VERSION1
-rwxr-xr-xbin/unpack_bootlogo4
-rw-r--r--bincode.asm131
-rw-r--r--changelog214
-rw-r--r--changelog.upstream496
-rw-r--r--debian/changelog31
-rw-r--r--debian/compat1
-rw-r--r--debian/control14
-rw-r--r--debian/copyright5
-rw-r--r--debian/gfxboot-themes.lintian-overrides2
-rw-r--r--debian/patches/0001-asprintf.patch118
-rw-r--r--debian/patches/0002-ctype.patch32
-rw-r--r--debian/patches/0003-bdf.patch21
-rw-r--r--debian/patches/0004-link-order.patch21
-rw-r--r--debian/patches/0005-buildflags.patch19
-rw-r--r--debian/patches/0006-syslinux-path.patch75
-rw-r--r--debian/patches/0007-ttf-dejavu.patch95
-rw-r--r--debian/patches/0008-adddir.patch23
-rw-r--r--debian/patches/0009-gfxboot-pass-reproducible-and-owner-to-cpio.-Closes-.patch38
-rw-r--r--debian/patches/0010-gfxboot-avoid-including-the-.-directory-in-the-cpio-.patch29
-rw-r--r--debian/patches/0011-themes-example-Makefile-Set-time-on-files-in-example.patch107
-rw-r--r--debian/patches/0012-changelog.upstream-Add-changelog-for-upstream-versio.patch511
-rw-r--r--debian/patches/series12
-rwxr-xr-xdebian/rules29
-rw-r--r--debian/source/options1
-rw-r--r--doc/example.jpgbin0 -> 72296 bytes
-rw-r--r--doc/gfxboot.xml57
-rw-r--r--doc/suse.jpgbin0 -> 36673 bytes
-rwxr-xr-xgfxboot37
-rw-r--r--gfxboot-font.c7
-rwxr-xr-xgit2log945
-rw-r--r--jpg/Makefile16
-rwxr-xr-xjpg/conv165
-rwxr-xr-xjpg/conv21319
-rwxr-xr-xjpg/conv341
-rw-r--r--jpg/getword7
-rw-r--r--jpg/jpg.c948
-rw-r--r--jpg/jpg.h2
-rw-r--r--jpg/test1.jpgbin0 -> 26277 bytes
-rw-r--r--jpg/test2.jpgbin0 -> 120169 bytes
-rw-r--r--jpg/test3.jpgbin0 -> 107826 bytes
-rw-r--r--jpg/test4.jpgbin0 -> 61909 bytes
-rw-r--r--jpg/z2.c160
-rwxr-xr-xmk_vocabulary2
-rw-r--r--test/menu/gfxtest.config15
-rw-r--r--test/menu/isolinux.cfg77
-rw-r--r--themes/example_01/Makefile1
-rw-r--r--themes/example_02/Makefile1
-rw-r--r--themes/example_03/Makefile1
-rw-r--r--themes/example_04/Makefile1
-rw-r--r--themes/example_05/Makefile1
-rw-r--r--themes/example_06/Makefile1
-rw-r--r--themes/example_07/Makefile1
-rw-r--r--themes/openSUSE/Makefile8
-rw-r--r--themes/openSUSE/data-install/en.tlkbin2634128 -> 3048060 bytes
-rw-r--r--themes/openSUSE/data-install/glow.jpgbin0 -> 41322 bytes
-rw-r--r--themes/openSUSE/data-install/languages1
-rw-r--r--themes/openSUSE/data-install/off.jpgbin0 -> 16675 bytes
-rw-r--r--themes/openSUSE/data-install/on.jpgbin0 -> 21469 bytes
-rw-r--r--themes/openSUSE/fonts/16x16.fntbin129384 -> 132819 bytes
-rw-r--r--themes/openSUSE/fonts/16x16.fnt.log83658
-rw-r--r--themes/openSUSE/fonts/Makefile23
-rw-r--r--themes/openSUSE/fonts/README.fonts13
-rw-r--r--themes/openSUSE/help-boot/ar/opt.html8
-rw-r--r--themes/openSUSE/help-boot/ar/opt::help.html22
-rw-r--r--themes/openSUSE/help-boot/ar/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/ar/opt::o_acpi.html20
-rw-r--r--themes/openSUSE/help-boot/ar/opt::o_apm.html18
-rw-r--r--themes/openSUSE/help-boot/ar/opt::o_ide.html9
-rw-r--r--themes/openSUSE/help-boot/ar/opt::o_splash.html9
-rw-r--r--themes/openSUSE/help-boot/ar/opt::profile.html5
-rw-r--r--themes/openSUSE/help-boot/cs/opt.html10
-rw-r--r--themes/openSUSE/help-boot/cs/opt::help.html6
-rw-r--r--themes/openSUSE/help-boot/cs/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/cs/opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-boot/cs/opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-boot/cs/opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-boot/cs/opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-boot/cs/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/de/opt.html10
-rw-r--r--themes/openSUSE/help-boot/de/opt::help.html6
-rw-r--r--themes/openSUSE/help-boot/de/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/de/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/de/opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-boot/de/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/de/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/de/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/es/opt.html8
-rw-r--r--themes/openSUSE/help-boot/es/opt::help.html2
-rw-r--r--themes/openSUSE/help-boot/es/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/es/opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-boot/es/opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-boot/es/opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-boot/es/opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-boot/es/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/fi/opt.html2
-rw-r--r--themes/openSUSE/help-boot/fi/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/fi/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/fi/opt::o_acpi.html2
-rw-r--r--themes/openSUSE/help-boot/fi/opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-boot/fi/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/fr/opt.html10
-rw-r--r--themes/openSUSE/help-boot/fr/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/fr/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/fr/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/fr/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/fr/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/fr/opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-boot/fr/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/hu/opt.html2
-rw-r--r--themes/openSUSE/help-boot/hu/opt::o_acpi.html2
-rw-r--r--themes/openSUSE/help-boot/hu/opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-boot/hu/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/hu/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/it/navi.html2
-rw-r--r--themes/openSUSE/help-boot/it/opt.html8
-rw-r--r--themes/openSUSE/help-boot/it/opt::help.html6
-rw-r--r--themes/openSUSE/help-boot/it/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/it/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/it/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/it/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/it/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/it/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/ja/navi.html2
-rw-r--r--themes/openSUSE/help-boot/ja/opt.html8
-rw-r--r--themes/openSUSE/help-boot/ja/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/ja/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/ja/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/ja/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/ja/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/ja/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/ja/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/ko/navi.html2
-rw-r--r--themes/openSUSE/help-boot/ko/opt.html8
-rw-r--r--themes/openSUSE/help-boot/ko/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/ko/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/ko/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/ko/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/ko/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/ko/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/ko/opt::profile.html4
-rw-r--r--themes/openSUSE/help-boot/nl/navi.html2
-rw-r--r--themes/openSUSE/help-boot/nl/opt.html4
-rw-r--r--themes/openSUSE/help-boot/nl/opt::help.html2
-rw-r--r--themes/openSUSE/help-boot/nl/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/pl/navi.html4
-rw-r--r--themes/openSUSE/help-boot/pl/opt.html8
-rw-r--r--themes/openSUSE/help-boot/pl/opt::help.html22
-rw-r--r--themes/openSUSE/help-boot/pl/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/pl/opt::o_acpi.html20
-rw-r--r--themes/openSUSE/help-boot/pl/opt::o_apm.html18
-rw-r--r--themes/openSUSE/help-boot/pl/opt::o_ide.html9
-rw-r--r--themes/openSUSE/help-boot/pl/opt::o_splash.html9
-rw-r--r--themes/openSUSE/help-boot/pl/opt::profile.html7
-rw-r--r--themes/openSUSE/help-boot/pt_BR/navi.html2
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt.html10
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-boot/pt_BR/opt::profile.html4
-rw-r--r--themes/openSUSE/help-boot/ru/opt.html8
-rw-r--r--themes/openSUSE/help-boot/ru/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/ru/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/ru/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/ru/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/ru/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/ru/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/ru/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/sv/opt.html8
-rw-r--r--themes/openSUSE/help-boot/sv/opt::help.html6
-rw-r--r--themes/openSUSE/help-boot/sv/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/sv/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/sv/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/sv/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/sv/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/sv/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/zh_CN/navi.html2
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt.html8
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::keytable.html2
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/zh_CN/opt::profile.html2
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt.html8
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::help.html4
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::keytable.html4
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-boot/zh_TW/opt::profile.html2
-rw-r--r--themes/openSUSE/help-install/ar/main.html130
-rw-r--r--themes/openSUSE/help-install/ar/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/ar/main::driverupdate.html11
-rw-r--r--themes/openSUSE/help-install/ar/main::failsafe.html8
-rw-r--r--themes/openSUSE/help-install/ar/main::firmware.html8
-rw-r--r--themes/openSUSE/help-install/ar/main::harddisk.html13
-rw-r--r--themes/openSUSE/help-install/ar/main::help.html22
-rw-r--r--themes/openSUSE/help-install/ar/main::install_src.html9
-rw-r--r--themes/openSUSE/help-install/ar/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/ar/main::linux.html7
-rw-r--r--themes/openSUSE/help-install/ar/main::memtest.html11
-rw-r--r--themes/openSUSE/help-install/ar/main::noacpi.html21
-rw-r--r--themes/openSUSE/help-install/ar/main::nolapic.html11
-rw-r--r--themes/openSUSE/help-install/ar/main::opt.html25
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::network.html28
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_acpi.html20
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_apm.html18
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_ide.html9
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_install.html27
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_splash.html9
-rw-r--r--themes/openSUSE/help-install/ar/main::opt::o_vnc.html13
-rw-r--r--themes/openSUSE/help-install/ar/main::rescue.html7
-rw-r--r--themes/openSUSE/help-install/ar/main::videomode.html15
-rw-r--r--themes/openSUSE/help-install/cs/main.html32
-rw-r--r--themes/openSUSE/help-install/cs/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::help.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::opt.html8
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::network.html8
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/cs/main::opt::o_vnc.html6
-rw-r--r--themes/openSUSE/help-install/cs/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/cs/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/da/main.html4
-rw-r--r--themes/openSUSE/help-install/da/main::driverupdate.html2
-rw-r--r--themes/openSUSE/help-install/da/main::harddisk.html2
-rw-r--r--themes/openSUSE/help-install/da/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/da/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/da/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_acpi.html2
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_install.html6
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/da/main::opt::o_vnc.html2
-rw-r--r--themes/openSUSE/help-install/de/main.html30
-rw-r--r--themes/openSUSE/help-install/de/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/de/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/de/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/de/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/de/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/de/main::help.html6
-rw-r--r--themes/openSUSE/help-install/de/main::install_src.html2
-rw-r--r--themes/openSUSE/help-install/de/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/de/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/de/main::memtest.html6
-rw-r--r--themes/openSUSE/help-install/de/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/de/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/de/main::opt.html8
-rw-r--r--themes/openSUSE/help-install/de/main::opt::network.html8
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/de/main::opt::o_vnc.html6
-rw-r--r--themes/openSUSE/help-install/de/main::videomode.html2
-rw-r--r--themes/openSUSE/help-install/es/main.html32
-rw-r--r--themes/openSUSE/help-install/es/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/es/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/es/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/es/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/es/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/es/main::help.html2
-rw-r--r--themes/openSUSE/help-install/es/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/es/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/es/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/es/main::memtest.html2
-rw-r--r--themes/openSUSE/help-install/es/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/es/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/es/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/es/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/es/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/es/main::videomode.html4
-rw-r--r--themes/openSUSE/help-install/fi/main.html12
-rw-r--r--themes/openSUSE/help-install/fi/main::driverupdate.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/fi/main::help.html4
-rw-r--r--themes/openSUSE/help-install/fi/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/fi/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/fi/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/fi/main::nolapic.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::o_acpi.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::o_install.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::opt::o_vnc.html2
-rw-r--r--themes/openSUSE/help-install/fi/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/fr/main.html26
-rw-r--r--themes/openSUSE/help-install/fr/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::harddisk.html6
-rw-r--r--themes/openSUSE/help-install/fr/main::help.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::install_src.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/fr/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/fr/main::opt.html8
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/fr/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/fr/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/gl/main::memtest.html2
-rw-r--r--themes/openSUSE/help-install/gl/main::noacpi.html3
-rw-r--r--themes/openSUSE/help-install/gl/main::opt::o_install.html3
-rw-r--r--themes/openSUSE/help-install/gl/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/hu/main.html14
-rw-r--r--themes/openSUSE/help-install/hu/main::driverupdate.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::install_src.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::nolapic.html4
-rw-r--r--themes/openSUSE/help-install/hu/main::opt.html4
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::network.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::o_acpi.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::o_apm.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::o_install.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::opt::o_vnc.html2
-rw-r--r--themes/openSUSE/help-install/hu/main::videomode.html2
-rw-r--r--themes/openSUSE/help-install/it/main.html32
-rw-r--r--themes/openSUSE/help-install/it/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/it/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/it/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/it/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/it/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/it/main::help.html6
-rw-r--r--themes/openSUSE/help-install/it/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/it/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/it/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/it/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/it/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/it/main::nolapic.html4
-rw-r--r--themes/openSUSE/help-install/it/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/it/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/it/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/it/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/it/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/it/navi.html2
-rw-r--r--themes/openSUSE/help-install/ja/main.html26
-rw-r--r--themes/openSUSE/help-install/ja/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::driverupdate.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::firmware.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::help.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/ja/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/ja/main::memtest.html2
-rw-r--r--themes/openSUSE/help-install/ja/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/ja/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_install.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/ja/main::opt::o_vnc.html6
-rw-r--r--themes/openSUSE/help-install/ja/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/ja/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/ko/main.html34
-rw-r--r--themes/openSUSE/help-install/ko/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/ko/main::firmware.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::harddisk.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::help.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/ko/main::memtest.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::opt.html8
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::network.html8
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/ko/main::opt::o_vnc.html6
-rw-r--r--themes/openSUSE/help-install/ko/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/ko/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/ko/navi.html2
-rw-r--r--themes/openSUSE/help-install/nl/main.html12
-rw-r--r--themes/openSUSE/help-install/nl/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/nl/main::harddisk.html2
-rw-r--r--themes/openSUSE/help-install/nl/main::help.html2
-rw-r--r--themes/openSUSE/help-install/nl/main::noacpi.html4
-rw-r--r--themes/openSUSE/help-install/nl/main::nolapic.html2
-rw-r--r--themes/openSUSE/help-install/pl/main.html130
-rw-r--r--themes/openSUSE/help-install/pl/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/pl/main::driverupdate.html11
-rw-r--r--themes/openSUSE/help-install/pl/main::failsafe.html8
-rw-r--r--themes/openSUSE/help-install/pl/main::firmware.html8
-rw-r--r--themes/openSUSE/help-install/pl/main::harddisk.html13
-rw-r--r--themes/openSUSE/help-install/pl/main::help.html24
-rw-r--r--themes/openSUSE/help-install/pl/main::install_src.html9
-rw-r--r--themes/openSUSE/help-install/pl/main::keytable.html6
-rw-r--r--themes/openSUSE/help-install/pl/main::linux.html7
-rw-r--r--themes/openSUSE/help-install/pl/main::memtest.html11
-rw-r--r--themes/openSUSE/help-install/pl/main::noacpi.html21
-rw-r--r--themes/openSUSE/help-install/pl/main::nolapic.html11
-rw-r--r--themes/openSUSE/help-install/pl/main::opt.html25
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::network.html28
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_acpi.html20
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_apm.html20
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_ide.html9
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_install.html27
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_splash.html9
-rw-r--r--themes/openSUSE/help-install/pl/main::opt::o_vnc.html13
-rw-r--r--themes/openSUSE/help-install/pl/main::rescue.html7
-rw-r--r--themes/openSUSE/help-install/pl/main::videomode.html15
-rw-r--r--themes/openSUSE/help-install/pt_BR/main.html34
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::driverupdate.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::firmware.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::harddisk.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::help.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::install_src.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::memtest.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt.html8
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::network.html8
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_acpi.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::rescue.html4
-rw-r--r--themes/openSUSE/help-install/pt_BR/main::videomode.html8
-rw-r--r--themes/openSUSE/help-install/pt_BR/navi.html2
-rw-r--r--themes/openSUSE/help-install/ru/main.html30
-rw-r--r--themes/openSUSE/help-install/ru/main::bits.html2
-rw-r--r--themes/openSUSE/help-install/ru/main::driverupdate.html6
-rw-r--r--themes/openSUSE/help-install/ru/main::failsafe.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::firmware.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::help.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::install_src.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/ru/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/ru/main::memtest.html6
-rw-r--r--themes/openSUSE/help-install/ru/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/ru/main::nolapic.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::network.html8
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_install.html6
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/ru/main::opt::o_vnc.html6
-rw-r--r--themes/openSUSE/help-install/ru/main::rescue.html4
-rw-r--r--themes/openSUSE/help-install/ru/main::videomode.html8
-rw-r--r--themes/openSUSE/help-install/sv/main.html30
-rw-r--r--themes/openSUSE/help-install/sv/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::firmware.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::help.html6
-rw-r--r--themes/openSUSE/help-install/sv/main::install_src.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::noacpi.html6
-rw-r--r--themes/openSUSE/help-install/sv/main::nolapic.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::network.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_apm.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_ide.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_install.html6
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_splash.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/sv/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/sv/main::videomode.html6
-rw-r--r--themes/openSUSE/help-install/zh_CN/main.html109
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::bits.html4
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::driverupdate.html11
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::failsafe.html8
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::firmware.html6
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::harddisk.html13
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::help.html9
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::install_src.html4
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::keytable.html2
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::linux.html7
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::memtest.html11
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::noacpi.html21
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::nolapic.html11
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt.html25
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::network.html28
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_acpi.html20
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_apm.html18
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_ide.html9
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_install.html27
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_splash.html9
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::opt::o_vnc.html13
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::rescue.html7
-rw-r--r--themes/openSUSE/help-install/zh_CN/main::videomode.html15
-rw-r--r--themes/openSUSE/help-install/zh_TW/main.html34
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::driverupdate.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::failsafe.html2
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::firmware.html2
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::harddisk.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::help.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::install_src.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::keytable.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::linux.html2
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::memtest.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::noacpi.html8
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::nolapic.html6
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt.html6
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::network.html6
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_acpi.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_apm.html6
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_ide.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_install.html8
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_splash.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::opt::o_vnc.html4
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::rescue.html2
-rw-r--r--themes/openSUSE/help-install/zh_TW/main::videomode.html8
-rw-r--r--themes/openSUSE/po/af.po92
-rw-r--r--themes/openSUSE/po/ar.po205
-rw-r--r--themes/openSUSE/po/bg.po92
-rw-r--r--themes/openSUSE/po/bootloader.pot91
-rw-r--r--themes/openSUSE/po/ca.po187
-rw-r--r--themes/openSUSE/po/cs.po206
-rw-r--r--themes/openSUSE/po/da.po132
-rw-r--r--themes/openSUSE/po/de.po178
-rw-r--r--themes/openSUSE/po/el.po198
-rw-r--r--themes/openSUSE/po/es.po182
-rw-r--r--themes/openSUSE/po/et.po130
-rw-r--r--themes/openSUSE/po/fa.po492
-rw-r--r--themes/openSUSE/po/fi.po118
-rw-r--r--themes/openSUSE/po/fr.po182
-rw-r--r--themes/openSUSE/po/gl.po127
-rw-r--r--themes/openSUSE/po/gu.po92
-rw-r--r--themes/openSUSE/po/hi.po246
-rw-r--r--themes/openSUSE/po/hr.po94
-rw-r--r--themes/openSUSE/po/hu.po200
-rw-r--r--themes/openSUSE/po/id.po234
-rw-r--r--themes/openSUSE/po/it.po189
-rw-r--r--themes/openSUSE/po/ja.po196
-rw-r--r--themes/openSUSE/po/ka.po92
-rw-r--r--themes/openSUSE/po/kk.po516
-rw-r--r--themes/openSUSE/po/ko.po204
-rw-r--r--themes/openSUSE/po/ky.po92
-rw-r--r--themes/openSUSE/po/lt.po114
-rw-r--r--themes/openSUSE/po/mr.po92
-rw-r--r--themes/openSUSE/po/nb.po100
-rw-r--r--themes/openSUSE/po/nl.po190
-rw-r--r--themes/openSUSE/po/pa.po92
-rw-r--r--themes/openSUSE/po/pl.po194
-rw-r--r--themes/openSUSE/po/pt.po169
-rw-r--r--themes/openSUSE/po/pt_BR.po178
-rw-r--r--themes/openSUSE/po/ro.po94
-rw-r--r--themes/openSUSE/po/ru.po195
-rw-r--r--themes/openSUSE/po/sk.po104
-rw-r--r--themes/openSUSE/po/sl.po92
-rw-r--r--themes/openSUSE/po/sr.po92
-rw-r--r--themes/openSUSE/po/sv.po177
-rw-r--r--themes/openSUSE/po/ta.po92
-rw-r--r--themes/openSUSE/po/tg.po92
-rw-r--r--themes/openSUSE/po/th.po111
-rw-r--r--themes/openSUSE/po/tr.po92
-rwxr-xr-x[-rw-r--r--]themes/openSUSE/po/uk.po112
-rw-r--r--themes/openSUSE/po/wa.po92
-rw-r--r--themes/openSUSE/po/xh.po92
-rw-r--r--themes/openSUSE/po/zh_CN.po159
-rw-r--r--themes/openSUSE/po/zh_TW.po158
-rw-r--r--themes/openSUSE/po/zu.po92
-rw-r--r--themes/openSUSE/src/bsplash.inc196
-rw-r--r--themes/openSUSE/src/common.inc256
-rw-r--r--themes/openSUSE/src/dia_extralang.inc85
-rw-r--r--themes/openSUSE/src/dia_install.inc92
-rw-r--r--themes/openSUSE/src/dia_lang.inc65
-rw-r--r--themes/openSUSE/src/dia_net.inc6
-rw-r--r--themes/openSUSE/src/dia_video.inc565
-rw-r--r--themes/openSUSE/src/gfxboot.cfg19
-rw-r--r--themes/openSUSE/src/keytables.inc56
-rw-r--r--themes/openSUSE/src/main.bc2
-rw-r--r--themes/openSUSE/src/menu.inc107
-rw-r--r--themes/openSUSE/src/panel.inc1
-rw-r--r--themes/openSUSE/src/serial.inc3
-rw-r--r--themes/openSUSE/src/speech.inc5
-rw-r--r--themes/openSUSE/src/submenu.inc134
-rw-r--r--themes/openSUSE/src/xmenu.inc253
-rw-r--r--themes/openSUSE/talk/en.tlkbin2635307 -> 3048060 bytes
-rwxr-xr-xthemes/openSUSE/talk/po2talk2
-rw-r--r--themes/openSUSE/talk/talk.po56
-rw-r--r--themes/test1/Makefile23
-rw-r--r--themes/test1/jaguar.pcxbin0 -> 277077 bytes
-rw-r--r--themes/test1/test.ps83
-rw-r--r--themes/test2/16x16.fntbin0 -> 23360 bytes
-rw-r--r--themes/test2/Makefile23
-rw-r--r--themes/test2/jaguar.jpgbin0 -> 120169 bytes
-rw-r--r--themes/test2/sky.jpgbin0 -> 26277 bytes
-rw-r--r--themes/test2/test.jpgbin0 -> 26277 bytes
-rw-r--r--themes/test2/test.pcxbin0 -> 25061 bytes
-rw-r--r--themes/test2/test.ps109
-rw-r--r--themes/test2/test1.jpgbin0 -> 26277 bytes
-rw-r--r--themes/test2/test2.pcxbin0 -> 25061 bytes
-rw-r--r--themes/test2/test3.jpgbin0 -> 107826 bytes
-rw-r--r--themes/test2/test4.jpgbin0 -> 61909 bytes
-rw-r--r--themes/test3/16x16.fntbin0 -> 23360 bytes
-rw-r--r--themes/test3/Makefile23
-rw-r--r--themes/test3/head.jpgbin0 -> 1894 bytes
-rw-r--r--themes/test3/head_a.pcxbin0 -> 3613 bytes
-rw-r--r--themes/test3/sky.jpgbin0 -> 26277 bytes
-rw-r--r--themes/test3/test.ps137
-rw-r--r--themes/test3/test4.jpgbin0 -> 61909 bytes
-rw-r--r--themes/test4/Makefile28
-rw-r--r--themes/test4/cat.jpgbin0 -> 166528 bytes
-rw-r--r--themes/test4/cat1.jpgbin0 -> 141073 bytes
-rw-r--r--themes/test4/cat2.jpgbin0 -> 166528 bytes
-rw-r--r--themes/test4/test.ps312
-rw-r--r--themes/test5/Makefile28
-rw-r--r--themes/test5/sky.jpgbin0 -> 26277 bytes
-rw-r--r--themes/test5/test.ps73
-rw-r--r--themes/test7/Makefile23
-rw-r--r--themes/test7/data/foo.wavbin0 -> 24284 bytes
-rw-r--r--themes/test7/data/s01_en.wavbin0 -> 21483 bytes
-rw-r--r--themes/test7/test7.gb136
-rwxr-xr-xthemes/testx/2jpg57
-rw-r--r--themes/testx/Makefile4
-rw-r--r--themes/testx/src/back.pngbin0 -> 237675 bytes
-rw-r--r--themes/testx/src/head.pngbin0 -> 15065 bytes
-rw-r--r--themes/testx/src/ldots.pngbin0 -> 2321 bytes
-rw-r--r--themes/testx/src/phead.pngbin0 -> 13913 bytes
-rw-r--r--themes/testx/src/rdots.pngbin0 -> 4145 bytes
-rw-r--r--themes/testx/src/vdots.pngbin0 -> 2065 bytes
-rw-r--r--utf8/UTF-8-demo.txt212
-rw-r--r--utf8/font1
-rw-r--r--utf8/font21
-rw-r--r--utf8/font31
-rw-r--r--utf8/font41
-rw-r--r--utf8/font51
-rw-r--r--utf8/uf11
-rw-r--r--utf8/uf21
-rw-r--r--utf8/uf31
-rw-r--r--utf8/utf_sample1
692 files changed, 58631 insertions, 45289 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0b89911
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+changelog
+VERSION
diff --git a/Makefile b/Makefile
index dc6ff85..f8a8de7 100644
--- a/Makefile
+++ b/Makefile
@@ -3,8 +3,9 @@ CC = gcc
GIT2LOG := $(shell if [ -x ./git2log ] ; then echo ./git2log --update ; else echo true ; fi)
GITDEPS := $(shell [ -d .git ] && echo .git/HEAD .git/refs/heads .git/refs/tags)
-
VERSION := $(shell $(GIT2LOG) --version VERSION ; cat VERSION)
+BRANCH := $(shell git branch | perl -ne 'print $$_ if s/^\*\s*//')
+PREFIX := gfxboot-$(VERSION)
# THEMES = $(wildcard themes/*)
THEMES = themes/upstream themes/openSUSE themes/SLES themes/SLED themes/KDE
@@ -69,9 +70,19 @@ installsrc:
cp -a themes/example* $(DESTDIR)/usr/share/gfxboot/themes
cp -a bin test $(DESTDIR)/usr/share/gfxboot
+archive: changelog
+ mkdir -p package
+ git archive --prefix=$(PREFIX)/ $(BRANCH) | tar --no-wildcards-match-slash --wildcards --delete 'gfxboot-*/themes' > package/$(PREFIX).tar
+ tar -r -f package/$(PREFIX).tar --mode=0664 --owner=root --group=root --mtime="`git show -s --format=%ci`" --transform='s:^:$(PREFIX)/:' VERSION changelog
+ xz -f package/$(PREFIX).tar
+ for i in $(THEMES) ; do \
+ git archive $(BRANCH) $$i | xz > package/$${i#*/}.tar.xz || break ; \
+ done
+ git archive $(BRANCH) themes/example* | xz > package/examples.tar.xz
+
clean: themes doc
@rm -f gfxboot-compile bincode gfxboot-font addblack bincode.h bin2c *.lst *.map vocabulary.inc vocabulary.h *.o *~
- @rm -rf tmp
+ @rm -rf tmp package
distclean: clean
@for i in themes/example* ; do make -C $$i clean || break ; done
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6f17836
--- /dev/null
+++ b/README.md
@@ -0,0 +1,57 @@
+# gfxboot
+
+## About gfxboot
+
+gfxboot is a graphical boot screen for syslinux (up to version 4) and grub1.
+
+Features
+
+ - editable boot options
+ - a menu system
+ - context sensitive help texts (in html) shown in separate windows
+ - support for different keyboard layouts
+ - i18n support (localization via po files, Unicode char rendering via freetype lib)
+ - text-to-speech support via pc-speaker
+ - can run animations and play wav files
+ - works via serial line (with text-based menus)
+
+## Downloads
+
+Get the latest version from the [openSUSE Build Service](https://software.opensuse.org/package/gfxboot).
+
+## Examples
+
+It is used by [openSUSE Tumbleweed](http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso). The boot screen looks like this:
+
+![openSUSE Tumbleweed boot screen](doc/suse.jpg)
+
+A more minimalistic [example](themes/example_07/example_07.bc) included in the git repository:
+
+![example boot screen](doc/example.jpg)
+
+
+## openSUSE Development
+
+To build, simply run `make`. Install with `make install`.
+
+Basically every new commit into the master branch of the repository will be auto-submitted
+to all current SUSE products. No further action is needed except accepting the pull request.
+
+Submissions are managed by a SUSE internal [jenkins](https://jenkins.io) node in the InstallTools tab.
+
+Each time a new commit is integrated into the master branch of the repository,
+a new submit request is created to the openSUSE Build Service. The devel project
+is [system:install:head](https://build.opensuse.org/package/show/system:install:head/gfxboot).
+
+`*.changes` and version numbers are auto-generated from git commits, you don't have to worry about this.
+
+The spec file is maintained in the Build Service only. If you need to change it for the `master` branch,
+submit to the
+[devel project](https://build.opensuse.org/package/show/system:install:head/gfxboot)
+in the build service directly.
+
+Development happens exclusively in the `master` branch. The branch is used for all current products.
+
+You can find more information about the changes auto-generation and the
+tools used for jenkis submissions in the [linuxrc-devtools
+documentation](https://github.com/openSUSE/linuxrc-devtools#opensuse-development).
diff --git a/VERSION b/VERSION
deleted file mode 100644
index 6cedcff..0000000
--- a/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-4.5.2
diff --git a/bin/unpack_bootlogo b/bin/unpack_bootlogo
index ec83d0b..851a601 100755
--- a/bin/unpack_bootlogo
+++ b/bin/unpack_bootlogo
@@ -21,7 +21,7 @@ sub unpack_bootlogo
@files = `cpio --quiet -t <$dir/bootlogo`;
- system "cd $tmp; cpio --quiet -i <../bootlogo";
+ system "cd $tmp; cpio --quiet --preserve-modification-time -i <../bootlogo";
for (@files) {
chomp;
@@ -48,7 +48,7 @@ sub unpack_bootlogo
}
}
- open P, "| cd $tmp; cpio --quiet -o >../bootlogo";
+ open P, "| cd $tmp; cpio --quiet --reproducible --owner=+0:+0 -o >../bootlogo";
print P "$_\n" for grep $_, @files;
if($xdir) { print P "$_\n" for @ext }
close P;
diff --git a/bincode.asm b/bincode.asm
index ca96944..81201da 100644
--- a/bincode.asm
+++ b/bincode.asm
@@ -309,13 +309,17 @@ gfx_pal_tmp dd 0 ; (lin)
pals dw 0
; the current gfx mode
+; note: for vbe modes, bit 14 (framebuffer mode) is always 0
+; fb_active is used to indicate whether to use fb drawing functions
gfx_mode dw 3
; != 0 if we're using a vbe mode (hi byte of gfx_mode)
vbe_active equ gfx_mode + 1
-pixel_bits db 0 ; pixel size (8 or 16)
-color_bits db 0 ; color bits (8, 15 or 16)
+pixel_bits db 0 ; pixel size (8, 16, or 32)
+color_bits db 0 ; color bits (8, 15, 16, or 24)
pixel_bytes dd 0 ; pixel size in bytes
+; framebuffer start
+framebuffer dd 0 ; (lin)
; segment address of writeable window
window_seg_w dw 0
; segment address of readable window (= gfx_window_seg_w if 0)
@@ -324,6 +328,8 @@ window_seg_r dw 0
window_inc db 0
; currently mapped window
mapped_window db 0
+; do we use the framebuffer for drawing?
+fb_active db 0
; cursor position
gfx_cur equ $ ; both x & y
@@ -3394,6 +3400,10 @@ set_mode_20:
pop word [screen_width]
push word [es:edi+14h]
pop word [screen_height]
+ mov eax,[es:edi+28h]
+ mov [framebuffer],eax
+ or eax,eax
+ setnz byte [fb_active]
movzx eax,byte [es:edi+1dh]
inc eax
@@ -3413,6 +3423,14 @@ set_mode_25:
mov dh,[es:edi+1fh] ; red
add dh,[es:edi+21h] ; green
add dh,[es:edi+23h] ; blue
+ mov dl,dh
+ add dl,[es:edi+25h] ; reserved
+
+ ; workaround for broken VBE info
+ ; assume pixel size (ah) to be at least r+g+b+reserved bits (dl)
+ cmp dl,ah
+ jbe set_mode_40
+ mov ah,dl
jmp set_mode_40
set_mode_30:
cmp al,4 ; PL 8
@@ -3434,6 +3452,11 @@ set_mode_45:
mov [pixel_bytes],ah
mov [color_bits],dh
+ ; VBE linear framebuffer doesn't use win A / win B segments
+ ; skip the test and proceed
+ cmp byte [fb_active],0
+ jnz set_mode_60
+
; we check if win A is readable _and_ writable; if not, we want
; at least a writable win A and a readable win B
; other, even more silly variations are not supported
@@ -3479,8 +3502,13 @@ set_mode_50:
jz set_mode_80
mov [window_inc],al
mov byte [mapped_window],0ffh
- mov ax,4f02h
+set_mode_60:
mov bx,[gfx_mode]
+ cmp byte [fb_active],0
+ jz set_mode_70
+ or bh,40h
+set_mode_70:
+ mov ax,4f02h
int 10h
cmp ax,4fh
jnz set_mode_80
@@ -3501,6 +3529,17 @@ set_mode_90:
mode_init:
; graphics window selectors
+ cmp byte [fb_active],0
+ jz mode_init_20
+
+ mov eax,[framebuffer]
+ mov si,pm_seg.screen_w16
+ call set_gdt_base_pm
+ mov si,pm_seg.screen_r16
+ call set_gdt_base_pm
+ jmp mode_init_40
+
+mode_init_20:
movzx eax,word [window_seg_w]
shl eax,4
mov si,pm_seg.screen_w16
@@ -3508,12 +3547,13 @@ mode_init:
movzx ecx,word [window_seg_r]
shl ecx,4
- jz mode_init_05
+ jz mode_init_30
mov eax,ecx
-mode_init_05:
+mode_init_30:
mov si,pm_seg.screen_r16
call set_gdt_base_pm
+mode_init_40:
; pixel get/set functions
mov dword [setpixel],setpixel_8
@@ -5430,7 +5470,15 @@ prim_aend_10:
jnz prim_aend_10
dec ecx
- lea eax,[ecx+4*ecx+2]
+
+ ; we need 5 * array_size + 2 bytes (for head) for our array
+ ; BUT...
+ ; +8: allocate a bit more memory than strictly necessary
+ ; else memory allocation gets corrupted on hyper-v (bnc #876640)
+ ; (part of the next block gets overwritten)
+ ; it's unclear, why
+ ; even with identical memory layout it doesn't break in other vms
+ lea eax,[ecx+4*ecx+2 + 8]
push ecx
call calloc
@@ -7397,6 +7445,29 @@ prim_settype_90:
ret
+;; screen.framebuffer - ptr to framebuffer
+;
+; group: draw
+;
+; ( -- ptr1 )
+;
+; ptr1: ptr to framebuffer or undef if no fb mode is active
+;
+; example
+; screen.framebuffer
+;
+
+ bits 32
+
+prim_screenframebuffer:
+ xor eax,eax
+ cmp byte [fb_active],0
+ jz prim_screenframebuffer_90
+ mov eax,[framebuffer]
+prim_screenframebuffer_90:
+ jmp pr_getptr_or_none
+
+
;; screen.size - screen size in pixel
;
; group: gfx.screen
@@ -9599,11 +9670,16 @@ prim_setmode:
mov ecx,eax
jmp prim_setmode_80
prim_setmode_30:
+ ; clear fb mode bit
+ and ah,~40h
xchg [gfx_mode],ax
+
push eax
call set_mode
pop eax
jnc prim_setmode_60
+
+ ; restore last mode
xchg [gfx_mode],ax
call set_mode
stc
@@ -12392,6 +12468,32 @@ set_win:
jz set_win_90
cmp [mapped_window],al
jz set_win_90
+ cmp byte [fb_active],0
+ jz set_win_40
+ pusha
+ mov [mapped_window],al
+ mov ah,0
+ shl eax,10h
+ add eax,[framebuffer]
+ mov si,pm_seg.screen_w16
+ call set_gdt_base_pm
+ mov si,pm_seg.screen_r16
+ call set_gdt_base_pm
+
+ mov ax,fs
+ cmp ax,pm_seg.screen_r16
+ jnz set_win_10
+ mov fs,ax
+set_win_10:
+ mov ax,gs
+ cmp ax,pm_seg.screen_w16
+ jnz set_win_20
+ mov gs,ax
+set_win_20:
+
+ popa
+ jmp set_win_90
+set_win_40:
pusha
mov [mapped_window],al
mov ah,[window_inc]
@@ -12813,6 +12915,23 @@ cfont_init:
movzx eax,word [rm_seg.es]
shl eax,4
add eax,ebp
+
+ push eax
+ mov eax,100h*16
+ call calloc
+ xchg eax,edi
+ pop eax
+
+ or edi,edi
+ jz cfont_init_90
+
+ ; copy font for faster access
+ mov esi,eax
+ mov eax,edi
+ mov ecx,100h*16
+ es rep movsb
+
+cfont_init_90:
mov [cfont.lin],eax
mov dword [cfont_height],16
diff --git a/changelog b/changelog
deleted file mode 100644
index c18b5de..0000000
--- a/changelog
+++ /dev/null
@@ -1,214 +0,0 @@
-2014-01-24: HEAD
- - fix compiler warning
- - hrvoje.senjan: use FT_SYNTHESIS_H macro
- - set min video mode to 1024x576
-
-2012-10-01: 4.5.1
- - start using 'default' video entry
-
-2012-03-28: 4.5.0
- - ddc test record
- - rework monitor detection
- - new video selection menu
-
-2011-10-13: 4.4.7
- - fix isohybrid detection
-
-2011-10-13: 4.4.6
- - don't set init boot option (bnc #723678)
-
-2011-09-02: 4.4.5
- - make systemd default
-
-2011-09-02: 4.4.4
- - add config option for default init program
- - use isolinux-config from package
-
-2011-07-07: 4.4.3
- - added KDE theme
- - update upstream theme
-
-2011-07-07: 4.4.2
- - added menu to select init variant (bnc #704417)
- - fix script in case we are on no branch
-
-2011-04-18: 4.4.1
- - restore compat with syslinux 3
- - fix wrong mem access
- - pass back working dir as absolute path
- - pass cwd via sysconfig
-
-2011-04-07: 4.4.0
- - set version to oS 11.5
- - rewrite chdir to work without bootloader chdir support
-
-2011-02-24: 4.3.8
- - default to hd install with isohybrid boot from hd
-
-2011-02-21: 4.3.7
- - new oS 11.4 branding
-
-2011-01-13: 4.3.6
- - update virtual box support
- - fix autoselection of emulator for "gfxboot -p" (bnc #661832)
- - add qemu-kvm to the list auf autoselected emulators (bnc #661832)
-
-2010-10-27: 4.3.5
- - avoid dialogs wider than screen
-
-2010-10-04: 4.3.4
- - remove VERSION
- - create VERSION and changelog from git repo
-
-2010-10-04: 4.3.3
- - updated help text translations (bnc #551046)
-
-2010-10-04: 4.3.2
- - updated translations (bnc #551046)
-
-2010-09-03: 4.3.1
- - new tag
- - show real product name on serial console (bnc #634299)
-
-2010-08-05: 4.3.0
- - add 'lang' option if language has been changed [used to be: if != en_US] (bnc #619983)
- - keyboard label was not translatable (bnc #610638)
-
-2010-07-05: 4.2.3
- - updated translations (bnc #619513)
-
-2010-06-25: 4.2.2
- - updated translations
-
-2010-05-31: 4.2.1
- - clear font flags when setting an undefined font (bnc #609755)
-
-2010-05-20: 4.2.0
- - don't abuse bit 31 in font pointer (bnc #599478)
- - turn on ints explicitly
- - better memory dump
-
-2010-05-19: 4.1.47
- - openSUSE 11.3 theme
-
-2010-04-30: 4.1.46
- - new version
- - set valid tss for pm calls
- - fixed examples to work with latest gfxboot.c32
- - added Asturian (bnc #562202)
- - strip gfxboot.com related parts from syslinux-3.86 patchset
-
-2010-04-16: 4.1.44
- - fix help text formatting
-
-2010-04-16: 4.1.43
- - reset progress bar status after error
-
-2010-04-09: 4.1.42
- - add patches for syslinux 3.86
- - prefer gfxboot.c32 over gfxboot.com
-
-2009-12-10: 4.1.41
- - center main menu (bnc #562089)
- - leave more room for timeout indicator (bnc #551718)
-
-2009-11-16: 4.1.40
- - syslinux patch: fix chdir() return value
-
-2009-10-30: 4.1.39
- - updated help text translations
- - updated translations (bnc #551046)
-
-2009-10-29: 4.1.38
- - add gfxboot.c32 patch
- - extend interface so it works with gfxboot.c32
- - menu layout can be in high memory
- -added --no-unpack option
-
-2009-10-19: 4.1.37
- - fix progress indicator for PXE boot
- - fix syslinux setup
- - get kernel size right
-
-2009-10-19: 4.1.36
- - set correct timeout value
- - localboot should return to text mode
- - set correct timeout value
- - more examples
- - more examples
-
-2009-10-15: 4.1.35
- - install examples
- - added some sample themes
- - improved gfxtest script
-
-2009-10-15: 4.1.34
- - added patches for syslinux 3.83
- - support pxe setup in test script
-
-2009-10-12: 4.1.33
- - updated speech samples
-
-2009-10-12: 4.1.32
- - added swiss french keymap
-
-2009-10-07: 4.1.31
- - the new maps
- - new keyboard mappings, new font
- - make keytable handling more consistent
- - updated keyboard mapping list
- - added syslinux-3.82 patchset
-
-2009-10-02: 4.1.30
- - fix pot
-
-2009-09-30: 4.1.29
- - livecd: add F4=kerneloptions
- - cleaned up po files
- - more flexible translation support
- - new font
- - log more data to allow easier font size adjustments
-
-2009-09-29: 4.1.28
- - set default install type correctly (bnc #542781)
-
-2009-09-28: 4.1.27
- - updated language list
- - fixed grub picture (bnc #542113)
- - make new network dialog translatable
-
-2009-09-24: 4.1.26
- - escape weird chars in URLs
-
-2009-09-18: 4.1.25
- - F-key assignments configurable via gfxboot.cfg
- - fixed evil bug
- - removed old config copies
- - unified config file
- - added memcheck option
-
-2009-09-15: 4.1.24
- - added proxy setup (bnc #329668)
-
-2009-09-14: 4.1.23
- - updated 11.2 openSUSE theme (bnc #538949)
- - added network config dialog
- - up version number
- - fix some nasm warnings
-
-2009-09-09: 4.1.22
- - gfxboot script works with new syslinux
- - fixed bug number
- - no fb after F9 for live cd (bnc #391313)
- - use new 'mount' instruction
- - improved gfxtest script; removed old test script
- - added --version option to gfxboot
- - allow empty menus
- - rm temp files
- - removed obsolete themes
- - added new gfxtest script
- - support qemu-kvm
- - Ilyas Bakirov: added Kirghiz support
- - implemented realloc function
- - file read works with files of unknown size (-1)
-
diff --git a/changelog.upstream b/changelog.upstream
new file mode 100644
index 0000000..17cb2cc
--- /dev/null
+++ b/changelog.upstream
@@ -0,0 +1,496 @@
+2020-10-22: 4.5.73
+ - Translated using Weblate (Hindi)
+
+2020-08-25: 4.5.72
+ - Translated using Weblate (Persian)
+ - Translated using Weblate (Portuguese)
+
+2020-07-29: 4.5.71
+ - Translated using Weblate (French)
+ - Translated using Weblate (Galician)
+ - Translated using Weblate (Hindi)
+ - Translated using Weblate (Russian)
+ - Translated using Weblate (Ukrainian)
+ - Translated using Weblate (Spanish)
+ - Added translation using Weblate (Persian)
+
+2020-06-15: 4.5.70
+ - merge pr openSUSE/sw_20
+ - add 'default' and 'https' install methods (bsc#1171018)
+ - adjust config file description
+ - add https dialog title
+
+2020-05-27: 4.5.69
+ - merge pr openSUSE/sw_10
+ - add F8-shortcut for language selection (jsc#SLE-12810, jsc#SLE-12479)
+ - actual implementation of language switch
+
+2020-04-14: 4.5.68
+ - Translated using Weblate (Indonesian)
+ - Translated using Weblate (Swedish)
+ - Translated using Weblate (Thai)
+
+2020-02-26: 4.5.67
+ - Translated using Weblate (Spanish)
+
+2020-02-11: 4.5.66
+ - Translated using Weblate (Finnish)
+
+2020-01-29: 4.5.65
+ - Translated using Weblate (Finnish)
+
+2020-01-16: 4.5.64
+ - merge pr openSUSE/sw_10
+ - rework font settings (bsc#1159874)
+
+2019-12-10: 4.5.63
+ - Translated using Weblate (German)
+
+2019-12-09: 4.5.62
+ - merge pr openSUSE/sw_09
+ - prepare gfxboot for syslinux 6.x (jsc#SLE-2969)
+ - adjust gfxtest script to work with syslinux 6.x
+
+2019-12-07: 4.5.61
+ - Translated using Weblate (Chinese (China))
+
+2019-12-06: 4.5.60
+ - Translated using Weblate (Czech)
+ - Translated using Weblate (Danish)
+
+2019-12-05: 4.5.59
+ - Translated using Weblate (German)
+ - Translated using Weblate (Portuguese (Brazil))
+ - Translated using Weblate (Slovak)
+
+2019-12-05: 4.5.58
+ - Translated using Weblate (Catalan)
+ - Translated using Weblate (Japanese)
+
+2019-12-05: 4.5.57
+ - merge pr openSUSE/sw_08
+ - rebuild font file to support latest language additions
+ - make more boot menu texts translatable
+
+2019-12-04: 4.5.56
+ - merge pr crayxt/master
+ - Add Kazakh translation.
+ - Add Kazakh language definition.
+ - Add Kazakh to the list of languages.
+
+2019-11-05: 4.5.55
+ - Translated using Weblate (Indonesian)
+
+2019-10-29: 4.5.54
+ - Translated using Weblate (Indonesian)
+
+2019-10-23: 4.5.53
+ - Translated using Weblate (Estonian)
+
+2019-10-22: 4.5.52
+ - Translated using Weblate (Spanish)
+
+2019-08-17: 4.5.51
+ - Translated using Weblate (Portuguese)
+
+2019-04-05: 4.5.50
+ - merge pr openSUSE/sw_04
+ - fix SLES splash calculation (bsc#1129387)
+
+2019-03-12: 4.5.49
+ - merge pr joseivanlopez/remove_master-boot-code
+ - Replace master-bood-code by syslinux version
+
+2019-02-05: 4.5.48
+ - merge pr openSUSE/sw_03
+ - ensure theme builds are reproducible (bsc#1124165)
+ - adjust unpack_bootlogo script
+
+2018-09-10: 4.5.47
+ - Translated using Weblate (Arabic)
+
+2018-06-19: 4.5.46
+ - merge pr openSUSE/sw_02
+ - rework video mode list composition (bsc#1096971)
+ - remove obsolete qemu options from gfxboot script
+
+2018-06-12: 4.5.45
+ - merge pr openSUSE/sw_01
+ - don't crash if vbe video mode list is empty (bsc#1096971)
+ - replace genisoimage with mkisofs
+
+2018-04-27: 4.5.44
+ - Translated using Weblate (Greek)
+
+2018-04-27: 4.5.43
+ - Translated using Weblate (Greek)
+
+2018-04-27: 4.5.42
+ - merge pr openSUSE/sw_02
+ - enhance documentation
+ - add sample screenshots
+ - merge pr openSUSE/sw_03
+ - update git2log script
+
+2018-04-09: 4.5.41
+ - Translated using Weblate (Catalan)
+
+2018-04-03: 4.5.40
+ - Translated using Weblate (Indonesian)
+
+2018-03-24: 4.5.39
+ - Translated using Weblate (Spanish)
+
+2018-03-22: 4.5.38
+ - Translated using Weblate (Portuguese)
+
+2018-03-22: 4.5.37
+ - Translated using Weblate (Portuguese)
+
+2018-03-08: 4.5.36
+ - Translated using Weblate (Galician)
+
+2018-03-03: 4.5.35
+ - Translated using Weblate (French)
+ - Translated using Weblate (Danish)
+
+2018-02-26: 4.5.34
+ - Translated using Weblate (Dutch)
+
+2018-02-21: 4.5.33
+ - Translated using Weblate (Dutch)
+
+2018-02-21: 4.5.32
+ - Translated using Weblate (Ukrainian)
+
+2018-02-20: 4.5.31
+ - Translated using Weblate (Finnish)
+
+2018-02-20: 4.5.30
+ - Translated using Weblate (Finnish)
+
+2018-02-02: 4.5.29
+ - Translated using Weblate (Indonesian)
+
+2018-01-31: 4.5.28
+ - Translated using Weblate (Danish)
+
+2018-01-31: 4.5.27
+ - Translated using Weblate (Catalan)
+
+2018-01-28: 4.5.26
+ - Translated using Weblate (Danish)
+
+2018-01-26: 4.5.25
+ - Translated using Weblate (Slovak)
+ - Translated using Weblate (Japanese)
+
+2018-01-23: 4.5.24
+ - merge pr openSUSE/sw_01
+ - add config file entries to specify a title for the main screen
+ (bsc#1077188)
+ - fix bug processing serial menu entries (bsc#1075852)
+
+2017-10-05: 4.5.23
+ - merge pr openSUSE/bsc_1061383
+ - fix linear framebuffer activation (bsc#1061383)
+ - add gfx mode number and framebuffer address to debug status
+
+2017-09-12: 4.5.22
+ - merge pr openSUSE/bsc_980570
+ - prefer linear framebuffer modes for drawing (bsc#980570)
+ - bincode: Fix coreboot LFB mode
+ - color bits detection: add workaround for broken vbe info
+ - better fallback video mode selection
+
+2017-05-09: 4.5.21
+ - merge pr openSUSE/bsc_1033202
+ - fix UK keyboard setting (bsc#1033202)
+
+2016-11-23: 4.5.20
+ - merge pr openSUSE/test_10
+ - adjust keymap names to be consistent again (bsc#1009914)
+ - update git2log script
+
+2016-11-07: 4.5.19
+ - merge pr Davidmp1/patch-3
+ - Update ca.po
+
+2016-10-19: 4.5.18
+ - merge pr embar-/patch-1
+ - Update lt.po
+ - merge pr Davidmp1/patch-1
+ - Update ca.po
+
+2016-10-17: 4.5.17
+ - merge pr openSUSE/bsc_780621
+ - fix bug calculating video and xvideo options (bsc#780621)
+
+2016-10-14: 4.5.16
+ - merge pr openSUSE/test_9
+ - updated sound samples
+ - updated texts that are run through espeak
+ - adjust to changed sox syntax
+ - re-rendered font
+ - ensure sound samples are loaded only once
+ - one more text to sample
+ - again updated sound samples
+ - use new functions to pass on video menu settings to bootloader
+ - adjust to new menu engine
+ - adjust to new menu engine
+ - rework video mode menu
+ - implement enhanced menu layout engine
+
+2016-09-13: 4.5.15
+ - merge pr ancorgs/new_keymaps
+ - Adapted to the new keymaps used by linuxrc and YaST
+
+2016-08-08: 4.5.14
+ - merge pr openSUSE/bsc_988392
+ - fix boot-label redrawing after language change (bsc#988392)
+
+2016-06-13: 4.5.13
+ - merge pr openSUSE/trans_2016
+ - make 'systemboot' and 'more' menu entries translatable
+ - updated translations
+
+2015-12-04: 4.5.12
+ - merge pr openSUSE/bsc_957893
+ - fix booting from submenu (bsc#957893)
+
+2015-11-12: 4.5.11
+ - merge pr openSUSE/bsc_906990
+ - implement support for sub-menues (bsc#906990)
+ - documented submenu syntax
+ - show submenu indicator in RTL layout
+ - on leaving a submenu, restore cursor position
+
+2015-10-19: 4.5.10
+ - update translations (bsc#950962)
+
+2015-10-01: 4.5.9
+ - implement LEAP boot splash
+
+2015-09-29: 4.5.8
+ - merge pr imobach/add-readme
+ - Add a basic README.md
+
+2014-10-14: 4.5.7
+ - updated git2log
+ - added 'archive' Makefile target
+
+2014-10-02: 4.5.6
+ - work around memory corruption issue seen on hyper-v (bnc#876640)
+
+2014-09-17: 4.5.5
+ - remove duplicate 'Default' from po file
+ - translation update
+ - translation update 2
+ - recreated font to match latest translations
+ - fix compiler warning
+
+2014-08-25: 4.5.4
+ - added two more texts to pot file
+
+2014-08-25: 4.5.3
+ - adjust network dialog to latest linuxrc
+ - make 'Upgrade" translatable
+
+2014-01-24: 4.5.2
+ - set min video mode to 1024x576
+ - hrvoje.senjan: use FT_SYNTHESIS_H macro
+ - fix compiler warning
+
+2012-10-01: 4.5.1
+ - start using 'default' video entry
+
+2012-03-28: 4.5.0
+ - rework monitor detection new video selection menu
+ - ddc test record
+
+2011-10-13: 4.4.7
+ - fix isohybrid detection
+
+2011-10-13: 4.4.6
+ - don't set init boot option (bnc#723678)
+
+2011-09-02: 4.4.5
+ - make systemd default
+
+2011-09-02: 4.4.4
+ - use isolinux-config from package
+ - add config option for default init program
+
+2011-07-07: 4.4.3
+ - update upstream theme
+ - added KDE theme
+
+2011-07-07: 4.4.2
+ - fix script in case we are on no branch
+ - added menu to select init variant (bnc#704417)
+
+2011-04-18: 4.4.1
+ - pass cwd via sysconfig
+ - pass back working dir as absolute path
+ - fix wrong mem access
+ - restore compat with syslinux 3
+
+2011-04-07: 4.4.0
+ - rewrite chdir to work without bootloader chdir support
+ - set version to oS 11.5
+
+2011-02-24: 4.3.8
+ - default to hd install with isohybrid boot from hd
+
+2011-02-21: 4.3.7
+ - new oS 11.4 branding
+
+2011-01-13: 4.3.6
+ - fix autoselection of emulator for "gfxboot -p" (bnc#661832)
+ - add qemu-kvm to the list auf autoselected emulators (bnc#661832)
+ - update virtual box support
+
+2010-10-27: 4.3.5
+ - avoid dialogs wider than screen
+
+2010-10-04: 4.3.4
+ - create VERSION and changelog from git repo
+ - remove VERSION
+
+2010-10-04: 4.3.3
+ - updated help text translations (bnc#551046)
+
+2010-10-04: 4.3.2
+ - updated translations (bnc#551046)
+
+2010-09-03: 4.3.1
+ - show real product name on serial console (bnc#634299)
+ - new tag
+
+2010-08-05: 4.3.0
+ - add 'lang' option if language has been changed [used to be: if !=
+ en_US] (bnc#619983)
+ - keyboard label was not translatable (bnc#610638)
+
+2010-07-05: 4.2.3
+ - updated translations (bnc#619513)
+
+2010-06-25: 4.2.2
+ - updated translations
+
+2010-05-31: 4.2.1
+ - clear font flags when setting an undefined font (bnc#609755)
+
+2010-05-20: 4.2.0
+ - don't abuse bit 31 in font pointer (bnc#599478)
+ - turn on ints explicitly
+ - better memory dump
+
+2010-05-19: 4.1.47
+ - openSUSE 11.3 theme
+
+2010-04-30: 4.1.46
+ - strip gfxboot.com related parts from syslinux-3.86 patchset
+ - added Asturian (bnc#562202)
+ - fixed examples to work with latest gfxboot.c32
+ - set valid tss for pm calls
+ - new version
+
+2010-04-16: 4.1.44
+ - fix help text formatting
+
+2010-04-16: 4.1.43
+ - reset progress bar status after error
+
+2010-04-09: 4.1.42
+ - add patches for syslinux 3.86
+ - prefer gfxboot.c32 over gfxboot.com
+
+2009-12-10: 4.1.41
+ - leave more room for timeout indicator (bnc#551718)
+ - center main menu (bnc#562089)
+
+2009-11-16: 4.1.40
+ - syslinux patch: fix chdir() return value
+
+2009-10-30: 4.1.39
+ - updated translations (bnc#551046)
+ - updated help text translations
+
+2009-10-29: 4.1.38
+ - added --no-unpack option
+ - menu layout can be in high memory
+ - extend interface so it works with gfxboot.c32
+ - add gfxboot.c32 patch
+
+2009-10-19: 4.1.37
+ - get kernel size right
+ - fix syslinux setup
+ - fix progress indicator for PXE boot
+
+2009-10-19: 4.1.36
+ - more examples
+ - more examples
+ - set correct timeout value
+ - set correct timeout value
+ - localboot should return to text mode
+
+2009-10-15: 4.1.35
+ - added some sample themes
+ - improved gfxtest script
+ - install examples
+
+2009-10-15: 4.1.34
+ - support pxe setup in test script
+ - added patches for syslinux 3.83
+
+2009-10-12: 4.1.33
+ - updated speech samples
+
+2009-10-12: 4.1.32
+ - added swiss french keymap
+
+2009-10-07: 4.1.31
+ - added syslinux-3.82 patchset
+ - updated keyboard mapping list
+ - make keytable handling more consistent
+ - new keyboard mappings, new font
+ - the new maps
+
+2009-10-02: 4.1.30
+ - fix pot
+
+2009-09-30: 4.1.29
+ - log more data to allow easier font size adjustments
+ - new font
+ - cleaned up po files
+ - more flexible translation support
+ - livecd: add F4=kerneloptions
+
+2009-09-29: 4.1.28
+ - set default install type correctly (bnc#542781)
+
+2009-09-28: 4.1.27
+ - make new network dialog translatable
+ - updated language list
+ - fixed grub picture (bnc#542113)
+
+2009-09-24: 4.1.26
+ - escape weird chars in URLs
+
+2009-09-18: 4.1.25
+ - unified config file
+ - added memcheck option
+ - removed old config copies
+ - fixed evil bug
+ - F-key assignments configurable via gfxboot.cfg
+
+2009-09-15: 4.1.24
+ - added proxy setup (bnc#329668)
+
+2009-09-14: 4.1.23
+ - fix some nasm warnings
+ - up version number
+ - updated 11.2 openSUSE theme (bnc#538949)
+ - added network config dialog
+
diff --git a/debian/changelog b/debian/changelog
index 42a9b2d..824eadb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,34 @@
+gfxboot (4.5.73-1) unstable; urgency=medium
+
+ * QA upload.
+ * Update to new upstream version 4.5.73. (Closes: #783398)
+ * gfxboot: pass --reproducible and --owner to cpio. (Closes: #978946)
+ * gfxboot: avoid including the "." directory in the cpio archive.
+ (Closes: #978946)
+ * themes/example*/Makefile: Set time on files in example themes using
+ Makefile as a reference time. (Closes: #978946)
+ * debian/rules: Pass C.UTF-8 locale when building documentation.
+ (Closes: #979125)
+ * debian/control: Set Rules-Requires-Root to "no".
+ * debian/rules: Create a VERSION file since upstream expects it.
+ * debian/rules: Do not build test themes.
+ * debian/control: Update Vcs headers.
+ * debian/copyright: Use https URLs and drop broken link
+ * debian/control: Update Homepage.
+ * debian/source/options, debian/rules: Drop custom compression.
+ * Update to debhelper-compat 13.
+ * debian/rules: Remove obsolete dh_install override.
+ * debian/rules: Do not pass --parallel to dh as it is now the default.
+ * debian/rules: Add target to update upstream changelog.
+ * changelog.upstream: Add changelog for upstream version 4.5.73.
+ * debian/rules: Copy upstream changelog during build.
+ * gfxboot-themes: Add lintian override for
+ package-contains-documentation-outside-usr-share-doc.
+ * debian/control: Update Standards-Version to 4.5.1.
+ * debian/control: Add ${perl:Depends} to Depends.
+
+ -- Vagrant Cascadian <vagrant@reproducible-builds.org> Sun, 03 Jan 2021 18:04:09 -0800
+
gfxboot (4.5.2-1.1-6) unstable; urgency=medium
* QA Upload.
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index ec63514..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
index e19f18e..e0644f1 100644
--- a/debian/control
+++ b/debian/control
@@ -3,22 +3,24 @@ Section: misc
Priority: optional
Maintainer: Debian QA Group <packages@qa.debian.org>
Build-Depends:
- debhelper (>= 9),
+ debhelper-compat (= 13),
cpio,
nasm,
libfreetype6-dev,
libhtml-parser-perl,
w3m,
xmlto,
-Standards-Version: 3.9.5
-Homepage: http://gfxboot.sourceforge.net/
-Vcs-Browser: http://daniel-baumann.ch/gitweb/?p=debian/packages/gfxboot.git
-Vcs-Git: git://daniel-baumann.ch/git/debian/packages/gfxboot.git
+Standards-Version: 4.5.1
+Rules-Requires-Root: no
+Homepage: https://en.opensuse.org/SDB:Gfxboot
+Vcs-Browser: https://browse.dgit.debian.org/gfxboot.git/
+Vcs-Git: https://git.dgit.debian.org/gfxboot.git
Package: gfxboot
Architecture: any-amd64 any-i386
Depends:
${misc:Depends},
+ ${perl:Depends},
${shlibs:Depends},
Recommends: e2fsprogs
Suggests: gfxboot-themes, reiserfsprogs, xfsprogs
@@ -32,6 +34,7 @@ Package: gfxboot-dev
Architecture: any-amd64 any-i386
Depends:
${misc:Depends},
+ ${perl:Depends},
${shlibs:Depends},
gfxboot (= ${binary:Version}),
cpio,
@@ -51,6 +54,7 @@ Package: gfxboot-themes
Architecture: all
Depends:
${misc:Depends},
+ ${perl:Depends},
gfxboot (>= ${source:Version}),
Recommends: gfxboot-dev
Conflicts:
diff --git a/debian/copyright b/debian/copyright
index 5c09f5d..182a47a 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,8 +1,7 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: gfxboot
Upstream-Contact: Steffen Winterfeldt <snwint@suse.de>
-Source: http://software.opensuse.org/package/gfxboot
- http://gitorious.org/gfxboot
+Source: https://software.opensuse.org/package/gfxboot
Files: *
Copyright: 2004-2014 SUSE LINUX Products GmbH
diff --git a/debian/gfxboot-themes.lintian-overrides b/debian/gfxboot-themes.lintian-overrides
new file mode 100644
index 0000000..3dc45c8
--- /dev/null
+++ b/debian/gfxboot-themes.lintian-overrides
@@ -0,0 +1,2 @@
+# These files are actually part of the theme, not documentation
+gfxboot-themes binary: package-contains-documentation-outside-usr-share-doc usr/share/gfxboot/themes/*
diff --git a/debian/patches/0001-asprintf.patch b/debian/patches/0001-asprintf.patch
new file mode 100644
index 0000000..b3a74fa
--- /dev/null
+++ b/debian/patches/0001-asprintf.patch
@@ -0,0 +1,118 @@
+From: Colin Watson <cjwatson@debian.org>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Fix some non-exploitable buffer overflows in mkbootmsg (LP: #27011).
+
+---
+ gfxboot-compile.c | 32 ++++++++++++++++++++------------
+ 1 file changed, 20 insertions(+), 12 deletions(-)
+
+diff --git a/gfxboot-compile.c b/gfxboot-compile.c
+index dd882e8..835450e 100644
+--- a/gfxboot-compile.c
++++ b/gfxboot-compile.c
+@@ -1763,7 +1763,7 @@ void log_cline(FILE *lf)
+ }
+
+
+-char *add_to_line(char *s)
++char *add_to_line(const char *s)
+ {
+ static char buf[10240] = {};
+ static int ind = 0;
+@@ -1812,7 +1812,7 @@ void decompile(unsigned char *data, unsigned size)
+ unsigned inst_size;
+ dict_t *d;
+ unsigned type;
+- char *s, buf[1024];
++ char *s, *buf;
+ unsigned char *p;
+
+ // setup initial vocabulary
+@@ -1889,13 +1889,15 @@ void decompile(unsigned char *data, unsigned size)
+ }
+
+ case t_unsigned:
+- sprintf(buf, "%d", val);
++ asprintf(&buf, "%d", val);
+ add_to_line(buf);
++ free(buf);
+ break;
+
+ case t_string:
++ buf = malloc(strlen((char *) data + i + u + 1) * 4 + 3);
+ buf[0] = '"';
+- for(j = 1, p = data + i + u + 1; *p && j < sizeof buf - 10; p++) {
++ for(j = 1, p = data + i + u + 1; *p; p++) {
+ if(*p == '\n') {
+ buf[j++] = '\\';
+ buf[j++] = 'n';
+@@ -1917,16 +1919,18 @@ void decompile(unsigned char *data, unsigned size)
+ buf[j++] = '"';
+ buf[j] = 0;
+ s = add_to_line(buf);
++ free(buf);
+ break;
+
+ case t_sec:
+ if(val < dict_size && dict[val].name) {
+- sprintf(buf, "%s", dict[val].name);
++ asprintf(&buf, "%s", dict[val].name);
+ }
+ else {
+- sprintf(buf, "name_%d", val);
++ asprintf(&buf, "name_%d", val);
+ }
+ s = add_to_line(buf);
++ free(buf);
+ printf("%s\n", s);
+ add_to_line("");
+ break;
+@@ -1939,38 +1943,42 @@ void decompile(unsigned char *data, unsigned size)
+ }
+ }
+ if(s) {
+- sprintf(buf, "%s", s);
++ asprintf(&buf, "%s", s);
+ }
+ else {
+- sprintf(buf, "prim_<%d>", val);
++ asprintf(&buf, "prim_<%d>", val);
+ }
+ s = add_to_line(buf);
++ free(buf);
+ printf("%s\n", s);
+ add_to_line("");
+ break;
+
+ case t_bool:
+- sprintf(buf, "%s", val ? "true" : "false");
++ asprintf(&buf, "%s", val ? "true" : "false");
+ s = add_to_line(buf);
++ free(buf);
+ printf("%s\n", s);
+ add_to_line("");
+ break;
+
+ case t_none:
+- sprintf(buf, ".undef");
++ asprintf(&buf, ".undef");
+ s = add_to_line(buf);
++ free(buf);
+ printf("%s\n", s);
+ add_to_line("");
+ break;
+
+ case t_dict_idx:
+ if(val < dict_size && dict[val].name) {
+- sprintf(buf, "/%s", dict[val].name);
++ asprintf(&buf, "/%s", dict[val].name);
+ }
+ else {
+- sprintf(buf, "/name_%d", val);
++ asprintf(&buf, "/name_%d", val);
+ }
+ add_to_line(buf);
++ free(buf);
+ break;
+
+ default:
diff --git a/debian/patches/0002-ctype.patch b/debian/patches/0002-ctype.patch
new file mode 100644
index 0000000..7e7a372
--- /dev/null
+++ b/debian/patches/0002-ctype.patch
@@ -0,0 +1,32 @@
+From: Colin Watson <cjwatson@debian.org>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Make sure to pass unsigned chars to isspace(), per the C standard;
+ not doing so
+
+can cause problems on powerpc and other architectures.
+---
+ gfxboot-compile.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gfxboot-compile.c b/gfxboot-compile.c
+index 835450e..0914d53 100644
+--- a/gfxboot-compile.c
++++ b/gfxboot-compile.c
+@@ -658,7 +658,7 @@ char *next_word(char **ptr)
+
+ *word = 0;
+
+- while(isspace(*s)) if(*s++ == '\n') line++;
++ while(isspace((unsigned char) *s)) if(*s++ == '\n') line++;
+
+ if(!*s) {
+ *ptr = s;
+@@ -757,7 +757,7 @@ char *next_word(char **ptr)
+ word[n] = 0;
+ }
+ else {
+- while(!isspace(*s)) s++;
++ while(!isspace((unsigned char) *s)) s++;
+ }
+
+ if(!is_str) {
diff --git a/debian/patches/0003-bdf.patch b/debian/patches/0003-bdf.patch
new file mode 100644
index 0000000..c5a579b
--- /dev/null
+++ b/debian/patches/0003-bdf.patch
@@ -0,0 +1,21 @@
+From: Colin Watson <cjwatson@ubuntu.com>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Try .bdf files in gfxboot-font.
+
+---
+ gfxboot-font.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfxboot-font.c b/gfxboot-font.c
+index 423f27d..a3c2637 100644
+--- a/gfxboot-font.c
++++ b/gfxboot-font.c
+@@ -921,7 +921,7 @@ char *search_font(char *font_path, char *name)
+ char *font_name = NULL;
+ char *cur_path, *sep;
+ struct stat sbuf;
+- static char *suffix[] = { "", ".otf", ".ttf", ".ttc", ".pfa", ".pfb", ".pcf.gz" };
++ static char *suffix[] = { "", ".otf", ".ttf", ".ttc", ".pfa", ".pfb", ".pcf.gz", ".bdf" };
+
+ if(!font_path || !name) return NULL;
+
diff --git a/debian/patches/0004-link-order.patch b/debian/patches/0004-link-order.patch
new file mode 100644
index 0000000..d9772c1
--- /dev/null
+++ b/debian/patches/0004-link-order.patch
@@ -0,0 +1,21 @@
+From: Colin Watson <cjwatson@ubuntu.com>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Fix link order with 'ld --as-needed' (Closes: #605771).
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 6921559..54af87c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -18,7 +18,7 @@ changelog: $(GITDEPS)
+ $(GIT2LOG) --changelog changelog
+
+ gfxboot-font: gfxboot-font.c
+- $(CC) $(CFLAGS) -I /usr/include/freetype2 -lfreetype $< -o $@
++ $(CC) $(CFLAGS) -I /usr/include/freetype2 $< -lfreetype -o $@
+
+ gfxboot-compile: gfxboot-compile.c vocabulary.h bincode.h
+ $(CC) $(CFLAGS) $< -o $@
diff --git a/debian/patches/0005-buildflags.patch b/debian/patches/0005-buildflags.patch
new file mode 100644
index 0000000..8c51b4f
--- /dev/null
+++ b/debian/patches/0005-buildflags.patch
@@ -0,0 +1,19 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Avoid overwriting buildflags.
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 54af87c..f8a8de7 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,5 @@
+ CC = gcc
+-CFLAGS = -g -Wall -Wno-pointer-sign -O2 -fomit-frame-pointer
++#CFLAGS = -g -Wall -Wno-pointer-sign -O2 -fomit-frame-pointer
+
+ GIT2LOG := $(shell if [ -x ./git2log ] ; then echo ./git2log --update ; else echo true ; fi)
+ GITDEPS := $(shell [ -d .git ] && echo .git/HEAD .git/refs/heads .git/refs/tags)
diff --git a/debian/patches/0006-syslinux-path.patch b/debian/patches/0006-syslinux-path.patch
new file mode 100644
index 0000000..f240498
--- /dev/null
+++ b/debian/patches/0006-syslinux-path.patch
@@ -0,0 +1,75 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Updating syslinux paths (Closes: #682974).
+
+---
+ gfxboot | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/gfxboot b/gfxboot
+index f597c4f..c809762 100755
+--- a/gfxboot
++++ b/gfxboot
+@@ -989,9 +989,9 @@ my @vm_order = qw ( qemu64 qemu32 qemu qemu-kvm vbox vbox64 vboxsdl vmplayer vmw
+ my %bl_list = (
+ grub => '/usr/sbin/grub',
+ lilo => '/sbin/lilo',
+- isolinux => '/usr/share/syslinux/isolinux.bin',
++ isolinux => '/usr/lib/syslinux/isolinux.bin',
+ syslinux => '/usr/bin/syslinux',
+- pxelinux => '/usr/share/syslinux/pxelinux.0',
++ pxelinux => '/usr/lib/syslinux/pxelinux.0',
+ bd => '/usr/bin/bd',
+ bochs => '/usr/bin/bochs',
+ );
+@@ -1793,8 +1793,8 @@ sub prepare_isolinux
+ $arch_dir = 'i386';
+ $arch_dir = 'x86_64' if $opt_64 && !$opt_32;
+
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.c32";
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.com" unless -f $comboot;
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.c32";
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
+ $comboot = 0 unless -f $comboot;
+
+ # syslinux 6.x
+@@ -1867,7 +1867,7 @@ sub prepare_isolinux
+ close F;
+ }
+
+- system "cp $opt_syslinux/usr/share/syslinux/isolinux.bin $dst/$loader" and die "error: no isolinux\n";
++ system "cp $opt_syslinux/usr/lib/syslinux/isolinux.bin $dst/$loader" and die "error: no isolinux\n";
+ system "cp $comboot $dst/$loader" if $comboot;
+
+ for my $f ("ldlinux.c32", "libcom32.c32") {
+@@ -1917,8 +1917,8 @@ sub prepare_syslinux
+
+ die "error: syslinux not found\n" unless -f "$opt_syslinux/$bl_list{syslinux}";
+
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.c32";
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.com" unless -f $comboot;
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.c32";
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
+ $comboot = 0 unless -f $comboot;
+
+ # syslinux 6.x
+@@ -2034,8 +2034,8 @@ sub prepare_pxelinux
+ $arch_dir = 'i386';
+ $arch_dir = 'x86_64' if $opt_64 && !$opt_32;
+
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.c32";
+- $comboot = "$opt_syslinux/usr/share/syslinux/gfxboot.com" unless -f $comboot;
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.c32";
++ $comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
+ $comboot = 0 unless -f $comboot;
+
+ # syslinux 6.x
+@@ -2108,7 +2108,7 @@ sub prepare_pxelinux
+ close F;
+ }
+
+- system "cp $opt_syslinux/usr/share/syslinux/pxelinux.0 $dst/$loader" and die "error: no pxelinux\n";
++ system "cp $opt_syslinux/usr/lib/syslinux/pxelinux.0 $dst/$loader" and die "error: no pxelinux\n";
+ system "cp $comboot $dst/$loader" if $comboot;
+
+ for my $f ("ldlinux.c32", "libcom32.c32") {
diff --git a/debian/patches/0007-ttf-dejavu.patch b/debian/patches/0007-ttf-dejavu.patch
new file mode 100644
index 0000000..a35d418
--- /dev/null
+++ b/debian/patches/0007-ttf-dejavu.patch
@@ -0,0 +1,95 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: gfxboot expects fonts to be in /usr/share/fonts/truetype et al,
+
+not in subdirectories within like debian based systems do.
+
+The proper fix is to make search_font() in gfxboot-font recursive,
+however, for the time being we add the paths manually here.
+---
+ themes/example_02/Makefile | 2 +-
+ themes/example_03/Makefile | 2 +-
+ themes/example_04/Makefile | 2 +-
+ themes/example_05/Makefile | 2 +-
+ themes/example_06/Makefile | 2 +-
+ themes/example_07/Makefile | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/themes/example_02/Makefile b/themes/example_02/Makefile
+index 0fb4640..c0d551d 100644
+--- a/themes/example_02/Makefile
++++ b/themes/example_02/Makefile
+@@ -16,7 +16,7 @@ bootlogo: example_*.bc font
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=20 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=20 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo *.fnt
+diff --git a/themes/example_03/Makefile b/themes/example_03/Makefile
+index cffce2e..4e18e35 100644
+--- a/themes/example_03/Makefile
++++ b/themes/example_03/Makefile
+@@ -16,7 +16,7 @@ bootlogo: example_*.bc font
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=20 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=20 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo *.fnt
+diff --git a/themes/example_04/Makefile b/themes/example_04/Makefile
+index 07357a5..e54c817 100644
+--- a/themes/example_04/Makefile
++++ b/themes/example_04/Makefile
+@@ -16,7 +16,7 @@ bootlogo: example_*.bc font
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=32 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=32 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo *.fnt
+diff --git a/themes/example_05/Makefile b/themes/example_05/Makefile
+index 07357a5..e54c817 100644
+--- a/themes/example_05/Makefile
++++ b/themes/example_05/Makefile
+@@ -16,7 +16,7 @@ bootlogo: example_*.bc font
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=32 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=32 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo *.fnt
+diff --git a/themes/example_06/Makefile b/themes/example_06/Makefile
+index bf21c5d..0a3c7cd 100644
+--- a/themes/example_06/Makefile
++++ b/themes/example_06/Makefile
+@@ -20,7 +20,7 @@ bootlogo: example_*.bc font
+ @ln -snf bootlogo message
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=32 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=32 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo message *.fnt
+diff --git a/themes/example_07/Makefile b/themes/example_07/Makefile
+index bf21c5d..0a3c7cd 100644
+--- a/themes/example_07/Makefile
++++ b/themes/example_07/Makefile
+@@ -20,7 +20,7 @@ bootlogo: example_*.bc font
+ @ln -snf bootlogo message
+
+ font:
+- $(GFXBOOT_FONT) -v -f DejaVuSans:size=32 font.fnt >font.log
++ $(GFXBOOT_FONT) -v -p /usr/share/fonts/truetype/ttf-dejavu -f DejaVuSans:size=32 font.fnt >font.log
+
+ clean:
+ rm -rf *~ *.log *.dir bootlogo message *.fnt
diff --git a/debian/patches/0008-adddir.patch b/debian/patches/0008-adddir.patch
new file mode 100644
index 0000000..ec9c483
--- /dev/null
+++ b/debian/patches/0008-adddir.patch
@@ -0,0 +1,23 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 3 Jan 2021 02:06:39 -0800
+Subject: Replacing adddir location with absolute name in order to allow to
+ compile the
+
+themes from any location, not just /usr/share/gfxboot/themes/foo.
+---
+ themes/openSUSE/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/themes/openSUSE/Makefile b/themes/openSUSE/Makefile
+index 9272d1f..547614e 100644
+--- a/themes/openSUSE/Makefile
++++ b/themes/openSUSE/Makefile
+@@ -10,7 +10,7 @@ else
+ PREPARED = $(shell [ -f .prepared ] && echo 1)
+ endif
+
+-ADDDIR = ../../bin/adddir
++ADDDIR ?= /usr/share/gfxboot/bin/adddir
+ BFLAGS = -O -v -L ../..
+
+ SUBDIRS = fonts help-boot help-install po src
diff --git a/debian/patches/0009-gfxboot-pass-reproducible-and-owner-to-cpio.-Closes-.patch b/debian/patches/0009-gfxboot-pass-reproducible-and-owner-to-cpio.-Closes-.patch
new file mode 100644
index 0000000..ccca801
--- /dev/null
+++ b/debian/patches/0009-gfxboot-pass-reproducible-and-owner-to-cpio.-Closes-.patch
@@ -0,0 +1,38 @@
+From: Vagrant Cascadian <vagrant@reproducible-builds.org>
+Date: Fri, 1 Jan 2021 03:38:21 +0000
+Subject: gfxboot: pass --reproducible and --owner to cpio. (Closes: #978946)
+
+Apply fixes for reproducibilty, similar to:
+
+ https://github.com/openSUSE/gfxboot/pull/35
+
+See also:
+
+ https://bugs.debian.org/978946
+ https://tests.reproducible-builds.org/debian/issues/unstable/users_and_groups_in_cpio_archive_issue.html
+---
+ gfxboot | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gfxboot b/gfxboot
+index c809762..75cdba3 100755
+--- a/gfxboot
++++ b/gfxboot
+@@ -2616,7 +2616,7 @@ sub pack_archive
+ }
+
+ if(@pack_list) {
+- open $f, "| ( cd $dir ; cpio --quiet -o ) >$file/$archive";
++ open $f, "| ( cd $dir ; cpio --quiet --reproducible --owner=+0:+0 -o ) >$file/$archive";
+ print $f join("\n", @pack_list);
+ close $f;
+ }
+@@ -2625,7 +2625,7 @@ sub pack_archive
+ else {
+ $file = $gfxboot_tmp->file;
+
+- $i = system "cd $dir ; find . | cpio --quiet -o >$file 2>/dev/null";
++ $i = system "cd $dir ; find . | cpio --quiet --reproducible --owner=+0:+0 -o >$file 2>/dev/null";
+ die "$file: failed to create archive\n" if $i;
+ }
+
diff --git a/debian/patches/0010-gfxboot-avoid-including-the-.-directory-in-the-cpio-.patch b/debian/patches/0010-gfxboot-avoid-including-the-.-directory-in-the-cpio-.patch
new file mode 100644
index 0000000..2838e9e
--- /dev/null
+++ b/debian/patches/0010-gfxboot-avoid-including-the-.-directory-in-the-cpio-.patch
@@ -0,0 +1,29 @@
+From: Vagrant Cascadian <vagrant@reproducible-builds.org>
+Date: Sun, 3 Jan 2021 03:21:23 +0000
+Subject: gfxboot: avoid including the "." directory in the cpio archive.
+ (Closes: #978946)
+
+The "." directory is at best extraneous, and is a little trickier to
+avoid a resulting embedded timestamp.
+
+See also:
+
+ https://bugs.debian.org/978946
+ https://tests.reproducible-builds.org/debian/issues/unstable/timestamps_in_cpio_archive_issue.html
+---
+ gfxboot | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfxboot b/gfxboot
+index 75cdba3..0ede732 100755
+--- a/gfxboot
++++ b/gfxboot
+@@ -2625,7 +2625,7 @@ sub pack_archive
+ else {
+ $file = $gfxboot_tmp->file;
+
+- $i = system "cd $dir ; find . | cpio --quiet --reproducible --owner=+0:+0 -o >$file 2>/dev/null";
++ $i = system "cd $dir ; find . -mindepth 1 | cpio --quiet --reproducible --owner=+0:+0 -o >$file 2>/dev/null";
+ die "$file: failed to create archive\n" if $i;
+ }
+
diff --git a/debian/patches/0011-themes-example-Makefile-Set-time-on-files-in-example.patch b/debian/patches/0011-themes-example-Makefile-Set-time-on-files-in-example.patch
new file mode 100644
index 0000000..0ef88c9
--- /dev/null
+++ b/debian/patches/0011-themes-example-Makefile-Set-time-on-files-in-example.patch
@@ -0,0 +1,107 @@
+From: Vagrant Cascadian <vagrant@reproducible-builds.org>
+Date: Fri, 1 Jan 2021 04:09:40 +0000
+Subject: themes/example*/Makefile: Set time on files in example themes using
+ Makefile as a reference time. (Closes: #978946)
+
+Similar to fixes applied in other themes:
+
+ https://github.com/openSUSE/gfxboot/pull/35
+
+See also:
+
+ https://bugs.debian.org/978946
+ https://tests.reproducible-builds.org/debian/issues/unstable/timestamps_in_cpio_archive_issue.html
+---
+ themes/example_01/Makefile | 1 +
+ themes/example_02/Makefile | 1 +
+ themes/example_03/Makefile | 1 +
+ themes/example_04/Makefile | 1 +
+ themes/example_05/Makefile | 1 +
+ themes/example_06/Makefile | 1 +
+ themes/example_07/Makefile | 1 +
+ 7 files changed, 7 insertions(+)
+
+diff --git a/themes/example_01/Makefile b/themes/example_01/Makefile
+index a3d1be4..c54659d 100644
+--- a/themes/example_01/Makefile
++++ b/themes/example_01/Makefile
+@@ -12,6 +12,7 @@ bootlogo: example_*.bc
+ @rm -rf $@.dir
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ clean:
+diff --git a/themes/example_02/Makefile b/themes/example_02/Makefile
+index c0d551d..5eb150c 100644
+--- a/themes/example_02/Makefile
++++ b/themes/example_02/Makefile
+@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp font.fnt $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+diff --git a/themes/example_03/Makefile b/themes/example_03/Makefile
+index 4e18e35..2c7de7c 100644
+--- a/themes/example_03/Makefile
++++ b/themes/example_03/Makefile
+@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp clouds.jpg font.fnt $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+diff --git a/themes/example_04/Makefile b/themes/example_04/Makefile
+index e54c817..b3bcd70 100644
+--- a/themes/example_04/Makefile
++++ b/themes/example_04/Makefile
+@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp clouds.jpg font.fnt $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+diff --git a/themes/example_05/Makefile b/themes/example_05/Makefile
+index e54c817..b3bcd70 100644
+--- a/themes/example_05/Makefile
++++ b/themes/example_05/Makefile
+@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp clouds.jpg font.fnt $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+
+ font:
+diff --git a/themes/example_06/Makefile b/themes/example_06/Makefile
+index 0a3c7cd..88c0b08 100644
+--- a/themes/example_06/Makefile
++++ b/themes/example_06/Makefile
+@@ -16,6 +16,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp $(FILES) $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+ @ln -snf bootlogo message
+
+diff --git a/themes/example_07/Makefile b/themes/example_07/Makefile
+index 0a3c7cd..88c0b08 100644
+--- a/themes/example_07/Makefile
++++ b/themes/example_07/Makefile
+@@ -16,6 +16,7 @@ bootlogo: example_*.bc font
+ @mkdir $@.dir
+ $(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ @cp $(FILES) $@.dir
++ touch --reference Makefile $@.dir/*
+ $(GFXBOOT) --archive $@.dir --pack-archive $@
+ @ln -snf bootlogo message
+
diff --git a/debian/patches/0012-changelog.upstream-Add-changelog-for-upstream-versio.patch b/debian/patches/0012-changelog.upstream-Add-changelog-for-upstream-versio.patch
new file mode 100644
index 0000000..c234da1
--- /dev/null
+++ b/debian/patches/0012-changelog.upstream-Add-changelog-for-upstream-versio.patch
@@ -0,0 +1,511 @@
+From: Vagrant Cascadian <vagrant@debian.org>
+Date: Sun, 3 Jan 2021 16:37:22 -0800
+Subject: changelog.upstream: Add changelog for upstream version 4.5.73.
+
+---
+ changelog.upstream | 496 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 496 insertions(+)
+ create mode 100644 changelog.upstream
+
+diff --git a/changelog.upstream b/changelog.upstream
+new file mode 100644
+index 0000000..17cb2cc
+--- /dev/null
++++ b/changelog.upstream
+@@ -0,0 +1,496 @@
++2020-10-22: 4.5.73
++ - Translated using Weblate (Hindi)
++
++2020-08-25: 4.5.72
++ - Translated using Weblate (Persian)
++ - Translated using Weblate (Portuguese)
++
++2020-07-29: 4.5.71
++ - Translated using Weblate (French)
++ - Translated using Weblate (Galician)
++ - Translated using Weblate (Hindi)
++ - Translated using Weblate (Russian)
++ - Translated using Weblate (Ukrainian)
++ - Translated using Weblate (Spanish)
++ - Added translation using Weblate (Persian)
++
++2020-06-15: 4.5.70
++ - merge pr openSUSE/sw_20
++ - add 'default' and 'https' install methods (bsc#1171018)
++ - adjust config file description
++ - add https dialog title
++
++2020-05-27: 4.5.69
++ - merge pr openSUSE/sw_10
++ - add F8-shortcut for language selection (jsc#SLE-12810, jsc#SLE-12479)
++ - actual implementation of language switch
++
++2020-04-14: 4.5.68
++ - Translated using Weblate (Indonesian)
++ - Translated using Weblate (Swedish)
++ - Translated using Weblate (Thai)
++
++2020-02-26: 4.5.67
++ - Translated using Weblate (Spanish)
++
++2020-02-11: 4.5.66
++ - Translated using Weblate (Finnish)
++
++2020-01-29: 4.5.65
++ - Translated using Weblate (Finnish)
++
++2020-01-16: 4.5.64
++ - merge pr openSUSE/sw_10
++ - rework font settings (bsc#1159874)
++
++2019-12-10: 4.5.63
++ - Translated using Weblate (German)
++
++2019-12-09: 4.5.62
++ - merge pr openSUSE/sw_09
++ - prepare gfxboot for syslinux 6.x (jsc#SLE-2969)
++ - adjust gfxtest script to work with syslinux 6.x
++
++2019-12-07: 4.5.61
++ - Translated using Weblate (Chinese (China))
++
++2019-12-06: 4.5.60
++ - Translated using Weblate (Czech)
++ - Translated using Weblate (Danish)
++
++2019-12-05: 4.5.59
++ - Translated using Weblate (German)
++ - Translated using Weblate (Portuguese (Brazil))
++ - Translated using Weblate (Slovak)
++
++2019-12-05: 4.5.58
++ - Translated using Weblate (Catalan)
++ - Translated using Weblate (Japanese)
++
++2019-12-05: 4.5.57
++ - merge pr openSUSE/sw_08
++ - rebuild font file to support latest language additions
++ - make more boot menu texts translatable
++
++2019-12-04: 4.5.56
++ - merge pr crayxt/master
++ - Add Kazakh translation.
++ - Add Kazakh language definition.
++ - Add Kazakh to the list of languages.
++
++2019-11-05: 4.5.55
++ - Translated using Weblate (Indonesian)
++
++2019-10-29: 4.5.54
++ - Translated using Weblate (Indonesian)
++
++2019-10-23: 4.5.53
++ - Translated using Weblate (Estonian)
++
++2019-10-22: 4.5.52
++ - Translated using Weblate (Spanish)
++
++2019-08-17: 4.5.51
++ - Translated using Weblate (Portuguese)
++
++2019-04-05: 4.5.50
++ - merge pr openSUSE/sw_04
++ - fix SLES splash calculation (bsc#1129387)
++
++2019-03-12: 4.5.49
++ - merge pr joseivanlopez/remove_master-boot-code
++ - Replace master-bood-code by syslinux version
++
++2019-02-05: 4.5.48
++ - merge pr openSUSE/sw_03
++ - ensure theme builds are reproducible (bsc#1124165)
++ - adjust unpack_bootlogo script
++
++2018-09-10: 4.5.47
++ - Translated using Weblate (Arabic)
++
++2018-06-19: 4.5.46
++ - merge pr openSUSE/sw_02
++ - rework video mode list composition (bsc#1096971)
++ - remove obsolete qemu options from gfxboot script
++
++2018-06-12: 4.5.45
++ - merge pr openSUSE/sw_01
++ - don't crash if vbe video mode list is empty (bsc#1096971)
++ - replace genisoimage with mkisofs
++
++2018-04-27: 4.5.44
++ - Translated using Weblate (Greek)
++
++2018-04-27: 4.5.43
++ - Translated using Weblate (Greek)
++
++2018-04-27: 4.5.42
++ - merge pr openSUSE/sw_02
++ - enhance documentation
++ - add sample screenshots
++ - merge pr openSUSE/sw_03
++ - update git2log script
++
++2018-04-09: 4.5.41
++ - Translated using Weblate (Catalan)
++
++2018-04-03: 4.5.40
++ - Translated using Weblate (Indonesian)
++
++2018-03-24: 4.5.39
++ - Translated using Weblate (Spanish)
++
++2018-03-22: 4.5.38
++ - Translated using Weblate (Portuguese)
++
++2018-03-22: 4.5.37
++ - Translated using Weblate (Portuguese)
++
++2018-03-08: 4.5.36
++ - Translated using Weblate (Galician)
++
++2018-03-03: 4.5.35
++ - Translated using Weblate (French)
++ - Translated using Weblate (Danish)
++
++2018-02-26: 4.5.34
++ - Translated using Weblate (Dutch)
++
++2018-02-21: 4.5.33
++ - Translated using Weblate (Dutch)
++
++2018-02-21: 4.5.32
++ - Translated using Weblate (Ukrainian)
++
++2018-02-20: 4.5.31
++ - Translated using Weblate (Finnish)
++
++2018-02-20: 4.5.30
++ - Translated using Weblate (Finnish)
++
++2018-02-02: 4.5.29
++ - Translated using Weblate (Indonesian)
++
++2018-01-31: 4.5.28
++ - Translated using Weblate (Danish)
++
++2018-01-31: 4.5.27
++ - Translated using Weblate (Catalan)
++
++2018-01-28: 4.5.26
++ - Translated using Weblate (Danish)
++
++2018-01-26: 4.5.25
++ - Translated using Weblate (Slovak)
++ - Translated using Weblate (Japanese)
++
++2018-01-23: 4.5.24
++ - merge pr openSUSE/sw_01
++ - add config file entries to specify a title for the main screen
++ (bsc#1077188)
++ - fix bug processing serial menu entries (bsc#1075852)
++
++2017-10-05: 4.5.23
++ - merge pr openSUSE/bsc_1061383
++ - fix linear framebuffer activation (bsc#1061383)
++ - add gfx mode number and framebuffer address to debug status
++
++2017-09-12: 4.5.22
++ - merge pr openSUSE/bsc_980570
++ - prefer linear framebuffer modes for drawing (bsc#980570)
++ - bincode: Fix coreboot LFB mode
++ - color bits detection: add workaround for broken vbe info
++ - better fallback video mode selection
++
++2017-05-09: 4.5.21
++ - merge pr openSUSE/bsc_1033202
++ - fix UK keyboard setting (bsc#1033202)
++
++2016-11-23: 4.5.20
++ - merge pr openSUSE/test_10
++ - adjust keymap names to be consistent again (bsc#1009914)
++ - update git2log script
++
++2016-11-07: 4.5.19
++ - merge pr Davidmp1/patch-3
++ - Update ca.po
++
++2016-10-19: 4.5.18
++ - merge pr embar-/patch-1
++ - Update lt.po
++ - merge pr Davidmp1/patch-1
++ - Update ca.po
++
++2016-10-17: 4.5.17
++ - merge pr openSUSE/bsc_780621
++ - fix bug calculating video and xvideo options (bsc#780621)
++
++2016-10-14: 4.5.16
++ - merge pr openSUSE/test_9
++ - updated sound samples
++ - updated texts that are run through espeak
++ - adjust to changed sox syntax
++ - re-rendered font
++ - ensure sound samples are loaded only once
++ - one more text to sample
++ - again updated sound samples
++ - use new functions to pass on video menu settings to bootloader
++ - adjust to new menu engine
++ - adjust to new menu engine
++ - rework video mode menu
++ - implement enhanced menu layout engine
++
++2016-09-13: 4.5.15
++ - merge pr ancorgs/new_keymaps
++ - Adapted to the new keymaps used by linuxrc and YaST
++
++2016-08-08: 4.5.14
++ - merge pr openSUSE/bsc_988392
++ - fix boot-label redrawing after language change (bsc#988392)
++
++2016-06-13: 4.5.13
++ - merge pr openSUSE/trans_2016
++ - make 'systemboot' and 'more' menu entries translatable
++ - updated translations
++
++2015-12-04: 4.5.12
++ - merge pr openSUSE/bsc_957893
++ - fix booting from submenu (bsc#957893)
++
++2015-11-12: 4.5.11
++ - merge pr openSUSE/bsc_906990
++ - implement support for sub-menues (bsc#906990)
++ - documented submenu syntax
++ - show submenu indicator in RTL layout
++ - on leaving a submenu, restore cursor position
++
++2015-10-19: 4.5.10
++ - update translations (bsc#950962)
++
++2015-10-01: 4.5.9
++ - implement LEAP boot splash
++
++2015-09-29: 4.5.8
++ - merge pr imobach/add-readme
++ - Add a basic README.md
++
++2014-10-14: 4.5.7
++ - updated git2log
++ - added 'archive' Makefile target
++
++2014-10-02: 4.5.6
++ - work around memory corruption issue seen on hyper-v (bnc#876640)
++
++2014-09-17: 4.5.5
++ - remove duplicate 'Default' from po file
++ - translation update
++ - translation update 2
++ - recreated font to match latest translations
++ - fix compiler warning
++
++2014-08-25: 4.5.4
++ - added two more texts to pot file
++
++2014-08-25: 4.5.3
++ - adjust network dialog to latest linuxrc
++ - make 'Upgrade" translatable
++
++2014-01-24: 4.5.2
++ - set min video mode to 1024x576
++ - hrvoje.senjan: use FT_SYNTHESIS_H macro
++ - fix compiler warning
++
++2012-10-01: 4.5.1
++ - start using 'default' video entry
++
++2012-03-28: 4.5.0
++ - rework monitor detection new video selection menu
++ - ddc test record
++
++2011-10-13: 4.4.7
++ - fix isohybrid detection
++
++2011-10-13: 4.4.6
++ - don't set init boot option (bnc#723678)
++
++2011-09-02: 4.4.5
++ - make systemd default
++
++2011-09-02: 4.4.4
++ - use isolinux-config from package
++ - add config option for default init program
++
++2011-07-07: 4.4.3
++ - update upstream theme
++ - added KDE theme
++
++2011-07-07: 4.4.2
++ - fix script in case we are on no branch
++ - added menu to select init variant (bnc#704417)
++
++2011-04-18: 4.4.1
++ - pass cwd via sysconfig
++ - pass back working dir as absolute path
++ - fix wrong mem access
++ - restore compat with syslinux 3
++
++2011-04-07: 4.4.0
++ - rewrite chdir to work without bootloader chdir support
++ - set version to oS 11.5
++
++2011-02-24: 4.3.8
++ - default to hd install with isohybrid boot from hd
++
++2011-02-21: 4.3.7
++ - new oS 11.4 branding
++
++2011-01-13: 4.3.6
++ - fix autoselection of emulator for "gfxboot -p" (bnc#661832)
++ - add qemu-kvm to the list auf autoselected emulators (bnc#661832)
++ - update virtual box support
++
++2010-10-27: 4.3.5
++ - avoid dialogs wider than screen
++
++2010-10-04: 4.3.4
++ - create VERSION and changelog from git repo
++ - remove VERSION
++
++2010-10-04: 4.3.3
++ - updated help text translations (bnc#551046)
++
++2010-10-04: 4.3.2
++ - updated translations (bnc#551046)
++
++2010-09-03: 4.3.1
++ - show real product name on serial console (bnc#634299)
++ - new tag
++
++2010-08-05: 4.3.0
++ - add 'lang' option if language has been changed [used to be: if !=
++ en_US] (bnc#619983)
++ - keyboard label was not translatable (bnc#610638)
++
++2010-07-05: 4.2.3
++ - updated translations (bnc#619513)
++
++2010-06-25: 4.2.2
++ - updated translations
++
++2010-05-31: 4.2.1
++ - clear font flags when setting an undefined font (bnc#609755)
++
++2010-05-20: 4.2.0
++ - don't abuse bit 31 in font pointer (bnc#599478)
++ - turn on ints explicitly
++ - better memory dump
++
++2010-05-19: 4.1.47
++ - openSUSE 11.3 theme
++
++2010-04-30: 4.1.46
++ - strip gfxboot.com related parts from syslinux-3.86 patchset
++ - added Asturian (bnc#562202)
++ - fixed examples to work with latest gfxboot.c32
++ - set valid tss for pm calls
++ - new version
++
++2010-04-16: 4.1.44
++ - fix help text formatting
++
++2010-04-16: 4.1.43
++ - reset progress bar status after error
++
++2010-04-09: 4.1.42
++ - add patches for syslinux 3.86
++ - prefer gfxboot.c32 over gfxboot.com
++
++2009-12-10: 4.1.41
++ - leave more room for timeout indicator (bnc#551718)
++ - center main menu (bnc#562089)
++
++2009-11-16: 4.1.40
++ - syslinux patch: fix chdir() return value
++
++2009-10-30: 4.1.39
++ - updated translations (bnc#551046)
++ - updated help text translations
++
++2009-10-29: 4.1.38
++ - added --no-unpack option
++ - menu layout can be in high memory
++ - extend interface so it works with gfxboot.c32
++ - add gfxboot.c32 patch
++
++2009-10-19: 4.1.37
++ - get kernel size right
++ - fix syslinux setup
++ - fix progress indicator for PXE boot
++
++2009-10-19: 4.1.36
++ - more examples
++ - more examples
++ - set correct timeout value
++ - set correct timeout value
++ - localboot should return to text mode
++
++2009-10-15: 4.1.35
++ - added some sample themes
++ - improved gfxtest script
++ - install examples
++
++2009-10-15: 4.1.34
++ - support pxe setup in test script
++ - added patches for syslinux 3.83
++
++2009-10-12: 4.1.33
++ - updated speech samples
++
++2009-10-12: 4.1.32
++ - added swiss french keymap
++
++2009-10-07: 4.1.31
++ - added syslinux-3.82 patchset
++ - updated keyboard mapping list
++ - make keytable handling more consistent
++ - new keyboard mappings, new font
++ - the new maps
++
++2009-10-02: 4.1.30
++ - fix pot
++
++2009-09-30: 4.1.29
++ - log more data to allow easier font size adjustments
++ - new font
++ - cleaned up po files
++ - more flexible translation support
++ - livecd: add F4=kerneloptions
++
++2009-09-29: 4.1.28
++ - set default install type correctly (bnc#542781)
++
++2009-09-28: 4.1.27
++ - make new network dialog translatable
++ - updated language list
++ - fixed grub picture (bnc#542113)
++
++2009-09-24: 4.1.26
++ - escape weird chars in URLs
++
++2009-09-18: 4.1.25
++ - unified config file
++ - added memcheck option
++ - removed old config copies
++ - fixed evil bug
++ - F-key assignments configurable via gfxboot.cfg
++
++2009-09-15: 4.1.24
++ - added proxy setup (bnc#329668)
++
++2009-09-14: 4.1.23
++ - fix some nasm warnings
++ - up version number
++ - updated 11.2 openSUSE theme (bnc#538949)
++ - added network config dialog
++
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..313389d
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,12 @@
+0001-asprintf.patch
+0002-ctype.patch
+0003-bdf.patch
+0004-link-order.patch
+0005-buildflags.patch
+0006-syslinux-path.patch
+0007-ttf-dejavu.patch
+0008-adddir.patch
+0009-gfxboot-pass-reproducible-and-owner-to-cpio.-Closes-.patch
+0010-gfxboot-avoid-including-the-.-directory-in-the-cpio-.patch
+0011-themes-example-Makefile-Set-time-on-files-in-example.patch
+0012-changelog.upstream-Add-changelog-for-upstream-versio.patch
diff --git a/debian/rules b/debian/rules
index 70fa8d1..2c66920 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,5 +1,6 @@
#!/usr/bin/make -f
+include /usr/share/dpkg/pkg-info.mk
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
SHELL := sh -e
@@ -7,12 +8,25 @@ SHELL := sh -e
GFXBOOT_PATH = $(CURDIR)
%:
- dh ${@} --parallel
+ dh $@
-override_dh_auto_build:
+VERSION:
+ echo $(DEB_VERSION_UPSTREAM) > VERSION
+
+changelog:
+ cp changelog.upstream changelog
+
+update-upstream-changelog:
+ # Needs to be run manually upon new upstream versions
+ git checkout -b upstream-tmp-$(DEB_VERSION_UPSTREAM) $(DEB_VERSION_UPSTREAM) && ./git2log --changelog changelog
+ git checkout dgit/sid
+ git branch -d upstream-tmp-$(DEB_VERSION_UPSTREAM)
+ cp changelog changelog.upstream
+
+override_dh_auto_build: VERSION changelog
dh_auto_build -- CFLAGS="$(CFLAGS) $(CPPFLAGS)"
- $(MAKE) -C doc doc
+ LC_ALL=C.UTF-8 $(MAKE) -C doc doc
# gfxboot-dev
mkdir -p build/examples
@@ -26,7 +40,7 @@ override_dh_auto_build:
# gfxboot-themes
mkdir -p build
cp -aL themes build/themes
- rm -rf build/themes/example*
+ rm -rf build/themes/example* build/themes/test*
PATH=$(GFXBOOT_PATH):$${PATH} ADDDIR=$(GFXBOOT_PATH)/bin/adddir $(MAKE) -C build/themes/openSUSE/help-install
PATH=$(GFXBOOT_PATH):$${PATH} ADDDIR=$(GFXBOOT_PATH)/bin/adddir $(MAKE) -C build/themes/openSUSE
@@ -45,6 +59,7 @@ override_dh_auto_clean:
$(MAKE) -C doc clean
rm -rf build
+ rm -f VERSION changelog
override_dh_auto_install:
dh_auto_install
@@ -81,16 +96,10 @@ override_dh_auto_install:
cp -aL build/themes/$${_THEME}/message build/themes/$${_THEME}/help-boot/*.hlp build/themes/$${_THEME}/po/*.tr debian/gfxboot-themes/etc/bootsplash/themes/$${_THEME}/bootloader; \
done
-override_dh_builddeb:
- dh_builddeb -- -Zxz
-
override_dh_fixperms:
dh_fixperms
find . debian -name "*.xcf" | xargs chmod 0644
-override_dh_install:
- dh_install --fail-missing
-
override_dh_strip:
dh_strip --dbgsym-migration='gfxboot-dbg (<< 4.5.2-1.1-6~)'
diff --git a/debian/source/options b/debian/source/options
deleted file mode 100644
index 5bd47b7..0000000
--- a/debian/source/options
+++ /dev/null
@@ -1 +0,0 @@
-compression = xz
diff --git a/doc/example.jpg b/doc/example.jpg
new file mode 100644
index 0000000..69dcdae
--- /dev/null
+++ b/doc/example.jpg
Binary files differ
diff --git a/doc/gfxboot.xml b/doc/gfxboot.xml
index f4e1570..d76dafe 100644
--- a/doc/gfxboot.xml
+++ b/doc/gfxboot.xml
@@ -90,6 +90,63 @@
</sect1>
+ <sect1 id="submenus">
+ <title>syslinux Submenus</title>
+
+ <para>
+ gfxboot allows you to have submenus with syslinux (without the menu module) by extending the
+ syslinux config file syntax a bit.
+ </para>
+
+ <para>
+ Submenu entries have a label stating with <command>'->FOO '</command> (note
+ the space) where <command>FOO</command> is an arbitrary string identifying the submenu.
+ </para>
+
+ <para>
+ Menu (or submenu) entries that have an <command>append</command> entry <command>'->BAR'</command>
+ link to submenu <command>BAR</command>. The maximum submenu nesting depth is 16.
+ </para>
+
+ <para>
+ As there are spaces in labels required to make this work, use the <command>menu label</command>
+ statement in syslinux.
+ </para>
+
+ <para>
+ Note that this way you can still use the <command>label</command> statement to reach any
+ menu item (even if it's in a submenu) directly, which keeps the config file also usable
+ in text mode.
+ </para>
+
+ <example><title/><para><programlisting>
+
+ # normal entry
+ label linux
+ kernel linux
+ append initrd=initrd
+
+ # link to submenu
+ label submenu
+ menu label My Submenu
+ append ->1
+
+ # 1st submenu entry
+ label item1
+ menu label ->1 Submenu Item #1
+ kernel linux
+ append initrd=initrd sub=1
+
+ # 2nd submenu entry
+ label item2
+ menu label ->1 Submenu Item #2
+ kernel linux
+ append initrd=initrd sub=2
+
+ </programlisting></para></example>
+
+ </sect1>
+
<sect1 id="reference">
<title>Reference</title>
diff --git a/doc/suse.jpg b/doc/suse.jpg
new file mode 100644
index 0000000..db73b37
--- /dev/null
+++ b/doc/suse.jpg
Binary files differ
diff --git a/gfxboot b/gfxboot
index f7cda36..0ede732 100755
--- a/gfxboot
+++ b/gfxboot
@@ -1562,7 +1562,7 @@ sub fake_menu
my $menu;
if($type eq 'install') {
- $menu->{list} = [ 'harddisk', 'linux', 'repair', 'rescue', 'mediachk', 'firmware', 'memtest' ];
+ $menu->{list} = [ 'harddisk', 'linux', 'upgrade', 'repair', 'rescue', 'mediachk', 'firmware', 'memtest' ];
$menu->{default} = 0;
}
else {
@@ -1637,7 +1637,7 @@ sub prepare_grub
$hdimage->type(1);
$hdimage->label('GFXBOOT');
$hdimage->fs('fat');
- $hdimage->mbr('/usr/lib/boot/master-boot-code');
+ $hdimage->mbr('/usr/share/syslinux/mbr.bin');
$hdimage->add_files(<$dst/*>);
$hdimage->write($img);
@@ -1757,7 +1757,7 @@ sub prepare_lilo
$hdimage->type(1);
$hdimage->label('GFXBOOT');
$hdimage->fs('fat');
- $hdimage->mbr('/usr/lib/boot/master-boot-code');
+ $hdimage->mbr('/usr/share/syslinux/mbr.bin');
$hdimage->add_files(<$dst/*>);
$hdimage->write($img);
@@ -1797,6 +1797,9 @@ sub prepare_isolinux
$comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
$comboot = 0 unless -f $comboot;
+ # syslinux 6.x
+ $opt_no_unpack = 1 if -r "$opt_syslinux/usr/share/syslinux/libcom32.c32";
+
my $menu = fake_menu 'install';
if($opt_verbose) {
@@ -1867,6 +1870,12 @@ sub prepare_isolinux
system "cp $opt_syslinux/usr/lib/syslinux/isolinux.bin $dst/$loader" and die "error: no isolinux\n";
system "cp $comboot $dst/$loader" if $comboot;
+ for my $f ("ldlinux.c32", "libcom32.c32") {
+ if(-r "$opt_syslinux/usr/share/syslinux/$f" ) {
+ system "cp $opt_syslinux/usr/share/syslinux/$f $dst/$loader"
+ }
+ }
+
for (@opt_test_addfiles) {
system "cp -r $_ $dst/${loader}" and die "error copying file: $_\n";
}
@@ -1885,7 +1894,7 @@ sub prepare_isolinux
symlink "i386", "$dst/boot/x86_64" if -d "$dst/boot/i386";
}
- system "genisoimage" . ($opt_verbose ? "" : " --quiet") .
+ system "mkisofs" . ($opt_verbose ? "" : " --quiet") .
" -o $img -f -r -no-emul-boot -boot-load-size 4 -boot-info-table" .
" -b ${loader}isolinux.bin -hide boot.catalog $dst";
@@ -1912,6 +1921,9 @@ sub prepare_syslinux
$comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
$comboot = 0 unless -f $comboot;
+ # syslinux 6.x
+ $opt_no_unpack = 1 if -r "$opt_syslinux/usr/share/syslinux/libcom32.c32";
+
my $menu = fake_menu 'install';
if($opt_verbose) {
@@ -1991,7 +2003,7 @@ sub prepare_syslinux
$hdimage->type(1);
$hdimage->label('GFXBOOT');
$hdimage->fs('fat');
- $hdimage->mbr('/usr/lib/boot/master-boot-code');
+ $hdimage->mbr('/usr/share/syslinux/mbr.bin');
$hdimage->add_files(<$dst/*>);
$hdimage->write($img);
@@ -2026,6 +2038,9 @@ sub prepare_pxelinux
$comboot = "$opt_syslinux/usr/lib/syslinux/gfxboot.com" unless -f $comboot;
$comboot = 0 unless -f $comboot;
+ # syslinux 6.x
+ $opt_no_unpack = 1 if -r "$opt_syslinux/usr/share/syslinux/libcom32.c32";
+
my $menu = fake_menu 'install';
if($opt_verbose) {
@@ -2096,6 +2111,12 @@ sub prepare_pxelinux
system "cp $opt_syslinux/usr/lib/syslinux/pxelinux.0 $dst/$loader" and die "error: no pxelinux\n";
system "cp $comboot $dst/$loader" if $comboot;
+ for my $f ("ldlinux.c32", "libcom32.c32") {
+ if(-r "$opt_syslinux/usr/share/syslinux/$f" ) {
+ system "cp $opt_syslinux/usr/share/syslinux/$f $dst/$loader"
+ }
+ }
+
for (@opt_test_addfiles) {
system "cp -r $_ $dst/${loader}" and die "error copying file: $_\n";
}
@@ -2128,8 +2149,6 @@ sub run_qemu
$q = "MALLOC_CHECK_=0 $q -enable-kvm" if -d "/sys/devices/system/kvm";
- $q .= " -m 512";
-
$q .= " -boot c" if $vm_env->{boot} eq 'hd';
$q .= " -boot d" if $vm_env->{boot} eq 'cd';
$q .= " -boot a" if $vm_env->{boot} eq 'fd';
@@ -2597,7 +2616,7 @@ sub pack_archive
}
if(@pack_list) {
- open $f, "| ( cd $dir ; cpio --quiet -o ) >$file/$archive";
+ open $f, "| ( cd $dir ; cpio --quiet --reproducible --owner=+0:+0 -o ) >$file/$archive";
print $f join("\n", @pack_list);
close $f;
}
@@ -2606,7 +2625,7 @@ sub pack_archive
else {
$file = $gfxboot_tmp->file;
- $i = system "cd $dir ; find . | cpio --quiet -o >$file 2>/dev/null";
+ $i = system "cd $dir ; find . -mindepth 1 | cpio --quiet --reproducible --owner=+0:+0 -o >$file 2>/dev/null";
die "$file: failed to create archive\n" if $i;
}
diff --git a/gfxboot-font.c b/gfxboot-font.c
index db2629d..a3c2637 100644
--- a/gfxboot-font.c
+++ b/gfxboot-font.c
@@ -162,7 +162,8 @@ int main(int argc, char **argv)
int i, j, k, err, ofs;
char *str, *str1, *t, *s, *s1, *font_spec;
iconv_t ic = (iconv_t) -1, ic2;
- char obuf[4], ibuf[6];
+ unsigned char obuf[4];
+ char ibuf[6];
char obuf2[4*0x100], ibuf2[0x100];
char *obuf_ptr, *ibuf_ptr;
size_t obuf_left, ibuf_left;
@@ -337,7 +338,7 @@ int main(int argc, char **argv)
if(k >= 0 || (k == -1 && !obuf_left)) {
ok = 1;
if(!obuf_left) {
- i = *(int *) obuf;
+ i = obuf[0] + (obuf[1] << 8) + (obuf[2] << 16) + (obuf[3] << 24);
if(i >= 0x20) {
insert_int_list(&opt.chars, i, i);
}
@@ -920,7 +921,7 @@ char *search_font(char *font_path, char *name)
char *font_name = NULL;
char *cur_path, *sep;
struct stat sbuf;
- static char *suffix[] = { "", ".ttf", ".pfa", ".pfb", ".pcf.gz", ".bdf" };
+ static char *suffix[] = { "", ".otf", ".ttf", ".ttc", ".pfa", ".pfb", ".pcf.gz", ".bdf" };
if(!font_path || !name) return NULL;
diff --git a/git2log b/git2log
new file mode 100755
index 0000000..02b6fcb
--- /dev/null
+++ b/git2log
@@ -0,0 +1,945 @@
+#! /usr/bin/perl
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+#
+# This script is maintained at https://github.com/openSUSE/linuxrc-devtools
+#
+# If you're in another project, this is just a copy.
+# You may update it to the latest version from time to time...
+#
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+use strict;
+
+use Getopt::Long;
+
+use Data::Dumper;
+$Data::Dumper::Sortkeys = 1;
+$Data::Dumper::Terse = 1;
+$Data::Dumper::Indent = 1;
+
+sub usage;
+sub changelog_outdated;
+sub get_github_project;
+sub get_version;
+sub get_tags;
+sub get_log;
+sub is_formatted_tag;
+sub get_branch;
+sub choose_tags;
+sub add_head_tag;
+sub tags_to_str;
+sub format_log;
+sub format_all_logs;
+sub fix_dates;
+sub add_line_breaks;
+sub format_date_obs;
+sub format_date_iso;
+sub raw_date_to_s;
+
+usage 0 if !@ARGV;
+
+my @changelog_deps = qw ( .git/HEAD .git/refs/heads .git/refs/tags );
+
+my $branch;
+my $current_version;
+my @tags;
+my @all_tags;
+my $config;
+
+my $opt_log;
+my $opt_version;
+my $opt_branch;
+my $opt_update;
+my $opt_file;
+my $opt_start;
+my $opt_max;
+my $opt_width = 66;
+my $opt_width_fuzz = 8;
+my $opt_sep_width = 68;
+my $opt_format = 'internal'; # obs, internal
+my $opt_merge_msg_before = 1; # log auto generated pr merge message before the commit messages (vs. after)
+my $opt_join_author = 1; # join consecutive commit messages as long as they are by the same author
+my $opt_keep_date = 1; # don't join consecutive commit messages if they have different time stamps
+my $opt_default_email = 'opensuse-packaging@opensuse.org'; # default email to use in changelog
+
+GetOptions(
+ 'help' => sub { usage 0 },
+ 'version' => \$opt_version,
+ 'branch' => \$opt_branch,
+ 'update' => \$opt_update,
+ 'start=s' => \$opt_start,
+ 'format=s' => \$opt_format,
+ 'max=i' => \$opt_max,
+ 'width=i' => \$opt_width,
+ 'fuzz=i' => \$opt_width_fuzz,
+ 'merge-msg=s' => sub { $opt_merge_msg_before = ($_[1] eq 'after' ? 0 : 1) },
+ 'join-author!' => \$opt_join_author,
+ 'keep-date!' => \$opt_keep_date,
+ 'log|changelog' => \$opt_log,
+ 'default-email=s' => \$opt_default_email,
+) || usage 1;
+
+# ensure we are used correctly
+usage 1 if @ARGV > 1 || !($opt_log || $opt_version || $opt_branch);
+$opt_file = @ARGV ? shift : '-';
+
+die "no git repo\n" unless -d ".git";
+
+# if update option has been give write changelog only if git refs are newer
+exit 0 if $opt_update && $opt_file ne '-' && -f($opt_file) && !changelog_outdated($opt_file);
+
+$opt_max = 2 if $opt_version || $opt_branch;
+
+# gather some data
+get_github_project;
+get_branch;
+get_log;
+fix_dates;
+get_tags;
+choose_tags;
+add_head_tag;
+get_version;
+
+# just print current branch
+if($opt_branch) {
+ open my $f, ">$opt_file";
+ print $f $config->{branch} ? $config->{branch} : "master", "\n";
+ close $f;
+
+ exit 0;
+}
+
+# just print current version
+if($opt_version) {
+ my $old_version;
+
+ if($opt_file ne '-' && open(my $f, $opt_file)) {
+ chomp($old_version = <$f>);
+ close $f;
+ }
+
+ if($config->{version} ne $old_version) {
+ open my $f, ">$opt_file";
+ print $f "$config->{version}\n";
+ close $f;
+ }
+
+ exit 0;
+}
+
+# set start tag
+if($opt_start) {
+ my $x = is_formatted_tag $opt_start;
+ die "$opt_start: not a valid start tag\n" if !$x;
+ $x->{branch} = $config->{branch} if !$x->{branch};
+ $config->{start} = $x;
+}
+
+format_all_logs;
+
+open my $f, ">$opt_file";
+
+print $f $_->{formatted} for @{$config->{log}};
+
+close $f;
+
+exit 0;
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# usage(exit_code)
+#
+# Print help message and exit.
+# - exit_code: exit code
+#
+# Function does not return.
+#
+sub usage
+{
+ my $err = shift;
+
+ print <<" usage";
+Usage: git2log [OPTIONS] [FILE]
+Create changelog and project version from git repo.
+ --changelog Write changelog to FILE.
+ --version Write version number to FILE.
+ --branch Write current branch to FILE.
+ --start START_TAG Start with tag START_TAG.
+ --max N Write at most MAX long entries.
+ --update Write changelog or version only if FILE is outdated.
+ --format FORMAT Write log using FORMAT. Supported FORMATs are 'internal' (default) and 'obs'.
+ --width WIDTH Reformat log entries to be max WIDTH chars wide.
+ --fuzz FUZZ Allow log lines to be up to FUZZ chars longer as WIDTH to avoid
+ line breaks leaving tiny bits on the last line.
+ --merge-msg WHERE Log message about merges before or after the actual merge commit messages.
+ Valid values for WHERE are 'after' and 'before' (default).
+ --join-author Join consecutive commits as long as they are by the same author. (default)
+ --no-join-author Keep consecutive commits by the same author separate.
+ --keep-date Join consecutive commits only if they have the same date. (default)
+ --no-keep-date Join consecutive commits even if dates differ.
+ --default-email Use this email in changelog entries if no other suitable email could be
+ determined (default: opensuse-packaging\@opensuse.org).
+ --help Print this help text.
+ usage
+
+ exit $err;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# res = changelog_outdated(file)
+#
+# Return status of changelog file.
+# - file: changelog file name
+# - res: status
+# 1: file is newer than the last git repo change and should be updated
+# 0: file is still recent enough
+#
+# Relies on global var @changelog_deps.
+#
+sub changelog_outdated
+{
+ my $file = $_[0];
+
+ my $changelog_time = (stat $file)[9];
+
+ return 1 if !defined $changelog_time;
+
+ for (@changelog_deps) {
+ return 1 if (stat)[9] > $changelog_time;
+ }
+
+ return 0;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# get_github_project()
+#
+# Set $config->{github_project} to the github project name.
+#
+sub get_github_project
+{
+ if(`git config remote.origin.url` =~ m#github.com[:/]+(\S+/\S+)#) {
+ $config->{github_project} = $1;
+ $config->{github_project} =~ s/\.git$//;
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# get_version()
+#
+# Set $config->{branch} and $config->{version} to the current branch and
+# version info.
+#
+# This might be taken directly from HEAD if HEAD is tagged or otherwise be
+# exprapolated from the most recent tag (cf. add_head_tag()).
+#
+sub get_version
+{
+ $config->{version} = "0.0";
+
+ my $tag = $config->{log}[0]{tags}[0];
+
+ if($tag->{version}) {
+ $config->{version} = $tag->{version};
+ $config->{branch} = $tag->{branch};
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# get_tags()
+#
+# Parse $config->{raw_log}, extract tag names, and split into per-tag
+# sections.
+#
+# Only tags recognized by is_formatted_tag() are considered.
+#
+# The parsed logs is stored in $config->{log}, an array of log sections.
+# Each section is a hash with these keys:
+# - 'tags': array of tags for this section
+# - 'commit': git commit id associated with these tags
+# - 'lines': git log lines
+#
+sub get_tags
+{
+ my $log_entry;
+
+ for (@{$config->{raw_log}}) {
+ if(/^commit (\S+)( \((.*)\))?/) {
+ my $commit = $1;
+ my $tag_list = $3;
+ my $xtag;
+
+ for my $t (split /, /, $tag_list) {
+ if($t =~ /tag: (\S+)/) {
+ my $tag = $1;
+ my $x = is_formatted_tag $tag;
+ push @$xtag, $x if $x;
+ }
+ }
+
+ if($xtag) {
+ if($log_entry) {
+ push @{$config->{log}}, $log_entry;
+ last if $opt_max && @{$config->{log}} >= $opt_max;
+ }
+ $log_entry = { commit => $commit, tags => $xtag };
+ }
+ else {
+ $log_entry = { commit => $commit } if !$log_entry;
+ }
+ }
+
+ push @{$log_entry->{lines}}, $_ if $log_entry;
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# get_log()
+#
+# Read git log and store lines as array in $config->{raw_log} (trailing
+# newlines removed).
+#
+sub get_log
+{
+ chomp(@{$config->{raw_log}} = `git log --pretty=medium --date=raw --topo-order --decorate`);
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# hash_ref = is_formatted_tag(tag_name)
+#
+# Parse tag and return hash ref with branch and version number parts or
+# undef if it doesn't match.
+# - tag_name: tag as string
+# - hash_ref: hash ref with internal tag representation (with keys 'branch' and 'version').
+#
+# This expects tags of the form "VERSION" or "BRANCH-VERSION" where VERSION
+# consists of decimal numbers separated by dots '.' and BRANCH can be any
+# string.
+# (Note: it doesn't really have to be the name of an existing branch.)
+#
+# Tags not conforming to this convention are ignored.
+#
+sub is_formatted_tag
+{
+ if($_[0] =~ /^((.+)-)?((\d+\.)*\d+)$/) {
+ return { branch => $2, version => $3 }
+ }
+
+ return undef;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# get_branch()
+#
+# Get currently active git branch and store in $config->{branch}.
+#
+# 'master' branch is represented by empty 'branch' key.
+#
+sub get_branch
+{
+ chomp(my $branch = `git rev-parse --abbrev-ref HEAD`);
+
+ $branch = "" if $branch eq 'master';
+
+ $config->{branch} = $branch;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# res = tag_sort(a, b)
+#
+# Compare 2 tags.
+# - a, b: refs to tag hash
+# - res: -1, 0, 1
+#
+# This is used when we have to decide between alternative tags.
+# (Prefer 'lesser' variant.)
+#
+sub tag_sort
+{
+ my ($x, $y);
+
+ $x = length $a->{version};
+ $y = length $b->{version};
+
+ # longer version number first
+ return $y <=> $x if $y <=> $x;
+
+ return $a->{branch} cmp $b->{branch};
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# str = tag_to_str(tag_ref)
+#
+# Convert tag into string.
+# - tag_ref: ref to hash with 'branch' and 'version' keys
+# - str: string (e.g. "foo-1.44")
+#
+# 'master' branch is represented by missing/empty 'branch' key.
+#
+sub tag_to_str
+{
+ my $tag = $_[0];
+ my $str;
+
+ $str = "$tag->{branch}-" if $tag->{branch} ne "";
+ $str .= $tag->{version};
+
+ return $str;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# str = tags_to_str(tag_array_ref)
+#
+# Convert array of tags into string.
+# - tag_array_ref: ref to array of tags
+# - str: string (e.g. "(tag1, tag2)"
+#
+# This function is used only internally for debugging.
+#
+sub tags_to_str
+{
+ my $tags = $_[0];
+ my $str;
+
+ for my $t (@$tags) {
+ $str .= ", " if $str;
+ $str .= tag_to_str $t;
+ }
+
+ return "($str)";
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# choose_tags()
+#
+# Scan commit messages and extract tag & branch information.
+#
+# This stores the tag/branch info in $config->{log}[]{tags}.
+#
+sub choose_tags
+{
+ my $branch = $config->{branch};
+
+ for my $x (@{$config->{log}}) {
+ # printf "# %s\n", tags_to_str($x->{tags});
+
+ # no tag info? -> ignore
+ next if !$x->{tags};
+
+ # single tag? -> remember branch info
+ if(@{$x->{tags}} == 1) {
+ $branch = $x->{tags}[0]{branch};
+ next;
+ }
+
+ # several tags? -> choose one
+
+ # any with current branch name?
+ my @t = grep { $_->{branch} eq $branch } @{$x->{tags}};
+
+ # no? -> choose among all
+ @t = @{$x->{tags}} if @t == 0;
+
+ # prefer longest version number, then alphanumerically smallest branch name
+ @t = sort tag_sort @t;
+
+ $branch = $t[0]{branch};
+ $x->{tags} = [ $t[0] ];
+
+ # printf "X %s\n", tags_to_str($x->{tags});
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# add_head_tag()
+#
+# Suggest tag for HEAD if there isn't one.
+#
+# Basically, use branch + version from most recent tag and increment version.
+#
+sub add_head_tag
+{
+ return if @{$config->{log}} < 2;
+
+ # HEAD tagged already?
+ return if $config->{log}[0]{tags};
+
+ # the first tagged commit if HEAD isn't tagged
+ my $tag = { %{$config->{log}[1]{tags}[0]} };
+
+ # increment version
+ $tag->{version} =~ s/(\d+)$/$1 + 1/e;
+
+ $config->{log}[0]{tags}[0] = $tag;
+
+ # remember that the tag was generated
+ $config->{log}[0]{was_untagged} = 1;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# fix_dates()
+#
+# Adjust time stamps in entire git log.
+#
+# The time stamps of the git commits are not necessarily ordered by date.
+# But the generated changelog is required to have a strictly monotonic time.
+#
+# We do this by going through the log in reverse and rewriting any dates we
+# find whenever the date decreases.
+#
+# A minimum time difference of 1 second beween entries is maintained.
+#
+# Not very subtle but it works.
+#
+sub fix_dates
+{
+ my $last_date;
+
+ for (reverse @{$config->{raw_log}}) {
+ # e.g. "Date: 1443184889 +0200"
+ if(/^(Date:\s+)(\S+)(\s+\S+)/) {
+ if(defined $last_date && $2 < $last_date) {
+ $_ = "$1$last_date$3\n";
+ }
+ else {
+ $last_date = $2;
+ }
+
+ # ensure a minimal time gap of 1 second
+ $last_date += 1;
+ }
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# format_all_logs()
+#
+# Format the entire git log.
+#
+# This is done for every code version individually (the log has already been
+# split accordingly).
+#
+# If $config->{start} is set, use this as starting point. Else format the
+# entire git log.
+#
+sub format_all_logs
+{
+ # check if start tag actually exists - if not, print nothing
+ if($config->{start}) {
+ my $tag_found;
+ for (@{$config->{log}}) {
+ $tag_found = 1, last if grep { tag_to_str($config->{start}) eq tag_to_str($_) } @{$_->{tags}};
+ }
+ return if !$tag_found;
+ }
+
+ for (@{$config->{log}}) {
+ if($config->{start}) {
+ # stop if we meet the start tag
+ last if grep { tag_to_str($config->{start}) eq tag_to_str($_) } @{$_->{tags}};
+ }
+ format_log $_;
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# format_log(log)
+#
+# Format log messages.
+# - log: is an array ref with individual commits
+#
+# All commits belong to a specific code version (stored in $log->{tag}).
+# $log->{formatted} holds the result.
+#
+# The process is done in several individual steps, documented below in the code.
+#
+sub format_log
+{
+ my $log = $_[0];
+
+ my $merge;
+ my $commit;
+ my $saved_commit;
+ my $commits;
+
+ for (@{$log->{lines}}) {
+ if(/^commit (\S+)/) {
+ $commit = { ref => $1 };
+ push @{$commits}, $commit;
+
+ if(
+ $merge &&
+ $merge->{merge_end} eq substr($commit->{ref}, 0, length($merge->{merge_end}))
+ ) {
+ undef $merge;
+ }
+
+ if($merge) {
+ $commit->{merge_ref} = $merge->{ref};
+ $commit->{date} = $merge->{date};
+ # add to all commits so it's not lost when we re-arrange
+ $commit->{merge_msg} = $merge->{msg} if $merge->{msg};
+ # saved entry no longer needed
+ undef $saved_commit;
+ }
+
+ next;
+ }
+
+ if(/^Merge: (\S+)/) {
+ if($commit) {
+ $merge = { merge_end => $1, ref => $commit->{ref} } unless $merge;
+ $saved_commit = pop @{$commits};
+ }
+ undef $commit;
+ next;
+ }
+
+ if(/^Date:\s+(\S.*)/) {
+ if($commit) {
+ $commit->{date} = $1 if !$commit->{date};
+ }
+ elsif($merge) {
+ $merge->{date} = $1 if !$merge->{date};
+ }
+ next;
+ }
+
+ if(/^Author:\s+(\S.*)/) {
+ $commit->{author} = $1 if $commit;
+ $merge->{author} = $1 if $merge && !$merge->{author};
+ next;
+ }
+
+ if($commit) {
+ push @{$commit->{lines}}, $_ if s/^ //;
+ }
+ elsif($merge && !$merge->{msg}) {
+ if(/^ Merge pull request (#\d+) from (\S+)/) {
+ if($config->{github_project}) {
+ $merge->{msg} = "merge gh#$config->{github_project}$1";
+ }
+ else {
+ $merge->{msg} = "merge pr $2";
+ }
+ }
+ elsif(/^ Merge branch '([^']+)'/) {
+ $merge->{msg} = "merge branch $1";
+ }
+ }
+ }
+
+ # it can happen that there's a lonely merge commit left at the end
+ if($merge && $saved_commit) {
+ $saved_commit->{merge_ref} = $merge->{ref};
+ $saved_commit->{date} = $merge->{date};
+ $saved_commit->{author} = $merge->{author};
+ $saved_commit->{merge_msg} = $merge->{msg} if $merge->{msg};
+ $saved_commit->{formatted} = [];
+
+ push @{$commits}, $saved_commit;
+ }
+
+ # Note: the individual steps below work on the array @$commits and modify
+ # its content.
+
+ # step 1
+ # - if there are paragraphs starting with '@log@' or '@+log@'
+ # - delete first paragraph (short summary)
+ # - else
+ # - keep only first paragraph
+ # - if there is a paragraph starting with '@-log', delete entire log
+ # - tag commits that have a '@log@' tag so we can delete untagged commits
+ # belonging to the same merge commit later
+
+ my $tagged_merges = {};
+
+ for my $commit (@$commits) {
+ my $para_cnt = 0;
+ my $delete_all = 0;
+ my $delete_first = 0;
+ for (@{$commit->{lines}}) {
+ $para_cnt++ if $_ eq "";
+ $para_cnt = 0, $delete_first = 1 if /^\@\+log\@/;
+ $delete_all = 1 if /^\@\-log\@/;
+ if(/^\@log\@/) {
+ $para_cnt = 0;
+ $commit->{clear} = 1;
+ $tagged_merges->{$commit->{merge_ref}} = 1 if $commit->{merge_ref} || $log->{was_untagged};
+ }
+ $_ = undef if $para_cnt;
+ }
+ shift @{$commit->{lines}} if $delete_first;
+ $commit->{lines} = [] if $delete_all;
+ }
+
+ # step 2
+ # - clean up tagged commits or commits belonging to tagged merges
+
+ for my $commit (@$commits) {
+ next unless $commit->{clear} || $tagged_merges->{$commit->{merge_ref}};
+ for (@{$commit->{lines}}) {
+ last if /^\@\+?log\@/;
+ $_ = undef;
+ }
+ }
+
+ # step 3
+ # - join lines
+
+ for my $commit (@$commits) {
+ my $lines;
+ my $line;
+
+ for (@{$commit->{lines}}) {
+ next if $_ eq "";
+ if(
+ s/^\s*[+\-][\-\s]*// ||
+ s/^\@\+?log\@// ||
+ $line eq ""
+ ) {
+ s/^\s*//;
+ push @$lines, $line if $line ne "";
+ $line = $_;
+ }
+ else {
+ s/^\s*//;
+ $line .= " " if $line ne "";
+ $line .= $_;
+ }
+ }
+ push @$lines, $line if $line ne "";
+
+ $commit->{formatted} = $lines if $lines;
+ }
+
+ # step 4
+ # - fix small glitches
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted};
+ for (@{$commit->{formatted}}) {
+ s/(fate|bnc|bsc)\s*(#\d+)/\L$1\E$2/ig;
+ }
+ }
+
+ # step 5
+ # - add merge info at the top or bottom (depending on $opt_merge_msg_before)
+
+ my $merge_logged;
+
+ for my $commit ($opt_merge_msg_before ? reverse(@$commits) : @$commits) {
+ next unless $commit->{formatted};
+
+ if($commit->{merge_ref} && !$merge_logged->{$commit->{merge_ref}}) {
+ $merge_logged->{$commit->{merge_ref}} = 1;
+ if($commit->{merge_msg}) {
+ if($opt_merge_msg_before) {
+ unshift @{$commit->{formatted}}, $commit->{merge_msg};
+ }
+ else {
+ push @{$commit->{formatted}}, $commit->{merge_msg};
+ }
+ }
+ }
+ }
+
+ # step 6
+ # - join commit messages with same author (optionally even with different dates)
+
+ my $commit0;
+
+ for my $commit (@$commits) {
+ next if !$commit->{formatted};
+ $commit0 = $commit, next if !$commit0;
+
+ if(
+ # $commit->{merge_ref} eq $commit0->{merge_ref} &&
+ (
+ $opt_join_author && ($commit->{author} eq $commit0->{author})
+ && (!$opt_keep_date || $commit->{date} eq $commit0->{date})
+ )
+ || $opt_format eq 'internal'
+ ) {
+ unshift @{$commit0->{formatted}}, @{$commit->{formatted}};
+ delete $commit->{formatted};
+ }
+ else {
+ $commit0 = $commit;
+ }
+ }
+
+ # step 7
+ # - add version tag at the end of the first log entry
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted};
+
+ if($opt_format eq 'obs') {
+ push @{$commit->{formatted}}, $log->{tags}[0]{version} if defined $log->{tags}[0]{version};
+ }
+ else {
+ # push @{$commit->{formatted}}, tag_to_str($log->{tags}[0]);
+ }
+
+ last;
+ }
+
+ # step 8
+ # - add line breaks
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted};
+ for (@{$commit->{formatted}}) {
+ $_ = add_line_breaks $_;
+ }
+ }
+
+ # step 9
+ # - generate final log message
+ #
+ # note: non-(open)suse email addresses are replaced by $opt_default_email
+
+ my $formated_log;
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted} && @{$commit->{formatted}};
+
+ if($opt_format eq 'obs') {
+ $formated_log .= "-" x $opt_sep_width . "\n";
+ $formated_log .= format_date_obs($commit->{date});
+ }
+ else {
+ $formated_log .= format_date_iso($commit->{date});
+ }
+ if($opt_format eq 'obs') {
+ my $auth = $commit->{author};
+ $auth =~ s/^.*<//;
+ $auth =~ s/>.*$//;
+ # replace non-suse e-mail addresses with a generic one
+ if($auth !~ /\@(suse\.(com|cz|de)|opensuse\.org)$/) {
+ $auth = $opt_default_email;
+ }
+ $formated_log .= " - $auth\n\n";
+ }
+ else {
+ $formated_log .= ":\t" . tag_to_str($log->{tags}[0]) . "\n";
+ }
+
+ for (@{$commit->{formatted}}) {
+ s/^/\t/mg if $opt_format eq 'internal';
+ $formated_log .= "$_\n";
+ }
+
+ $formated_log .= "\n";
+ }
+
+ $log->{formatted} = $formated_log;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# new_text = add_line_breaks(text)
+#
+# Add line breaks to text.
+# - text: some text
+# - new_text: same text, reformatted
+#
+# Lines are formatted to have a maximal length of $opt_width. If this causes
+# the last line to be shorter than $opt_width_fuzz, it is appended to the
+# previous line.
+#
+sub add_line_breaks
+{
+ my @words = split /\s+/, @_[0];
+ my $remaining_len = length(join '', @words);
+
+ my $str = shift(@words);
+ my $len = length $str;
+
+ my $next_len;
+ my $word_len;
+
+ for (@words) {
+ $word_len = length;
+ $remaining_len -= $word_len;
+ $next_len = $len + $word_len + 1;
+ if(
+ $next_len >= $opt_width &&
+ $next_len + $remaining_len + 1 >= $opt_width + $opt_width_fuzz
+ ) {
+ $str .= "\n $_";
+ $len = $word_len;
+ }
+ else {
+ $str .= " $_";
+ $len += $word_len + 1;
+ }
+ }
+
+ return "- " . $str;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# seconds = raw_date_to_s(git_date)
+#
+# Convert git raw date to seconds.
+# - git_date: raw git format (e.g. "1443184889 +0200")
+# - seconds: the seconds part (e.g. "1443184889")
+#
+sub raw_date_to_s
+{
+ return (split / /, $_[0])[0];
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# date = format_date_obs(git_date)
+#
+# Convert git raw date to obs format.
+# - git_date: raw git format (e.g. "1443184889 +0200")
+# - date: obs format ("Fri Sep 25 12:41:29 UTC 2015")
+#
+sub format_date_obs
+{
+ my @d = gmtime(raw_date_to_s($_[0]));
+
+ return
+ qw(Sun Mon Tue Wed Thu Fri Sat)[$d[6]] . " " .
+ qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)[$d[4]] . " " .
+ $d[3] . " " .
+ sprintf("%02d:%02d:%02d", $d[2], $d[1], $d[0]) . " UTC " .
+ (1900 + $d[5]);
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# date = format_date_iso(git_date)
+#
+# Convert git raw date to iso format.
+# - git_date: raw git format (e.g. "1443184889 +0200")
+# - date: obs format ("2015-09-25")
+#
+sub format_date_iso
+{
+ my @d = gmtime(raw_date_to_s($_[0]));
+
+ return sprintf("%04d-%02d-%02d", 1900 + $d[5], $d[4] + 1, $d[3]);
+}
diff --git a/jpg/Makefile b/jpg/Makefile
new file mode 100644
index 0000000..c7ea63e
--- /dev/null
+++ b/jpg/Makefile
@@ -0,0 +1,16 @@
+all: z2 jpeg.S
+
+z2: z2.c jpg.o
+ gcc -O2 -Wall z2.c jpg.o -o z2
+
+jpg.o: jpg.c
+ gcc -O2 -Wall -c jpg.c
+
+jpeg.S jpeg.inc: jpg.c
+ gcc -fomit-frame-pointer -S -Os -Wall -c jpg.c
+ ./conv1 jpg.s >jpeg1.s
+ ./conv2 -o jpeg2.s jpeg1.s
+ ./conv3 jpeg2.s >jpeg.S 2>jpeg.inc
+
+clean:
+ rm -f *~ *.o *.i *.s *.S *.inc *.pnm z2
diff --git a/jpg/conv1 b/jpg/conv1
new file mode 100755
index 0000000..933cb85
--- /dev/null
+++ b/jpg/conv1
@@ -0,0 +1,65 @@
+#! /usr/bin/perl
+
+# gcc -save-temps -fomit-frame-pointer -Os -Wall -c jpg.c
+# convert: .data -> .text
+# ## add: .code16gcc
+# convert: .local/.comm foo,bar,??? -> foo: .space bar,0
+# remove: .size, .type, .align
+# remove .section .note...
+# remove .ident
+# replace getword
+
+sub fix_getword;
+
+@f = (<>);
+
+$getword = `cat getword`;
+
+for (@f) {
+ undef $_ if /^\s*\.(size|align|p2align|text|section|ident|local|data|file)/;
+ $_ = "\n" if /^\s*\.type/;
+ if(/^\s*\.globl/) {
+ push @globl, "\t$_";
+ undef $_;
+ }
+
+ if(/^\s*\.comm\s+(\S+),(\d+),\d+\s*$/) {
+ push @comm, ( "\n", "$1:\n", "\t.space\t$2,0\n" );
+ undef $_;
+ }
+}
+
+unshift @globl, ( "\t.file\t\"jpeg.S\"\n", "\t.text\n",
+ # "\t\.code16gcc\n",
+ "\n"
+);
+
+fix_getword;
+
+$_ = join '', @globl, @comm, @f; s/\n{3,}/\n\n/g; @f = split /\n/;
+
+print "$_\n" for @f;
+
+for (qw ( getword )) {
+ if($fixes{$_} != 1) {
+ print STDERR "error: fix failed: $_\n"
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub fix_getword
+{
+ for (@f) {
+ if(/^getword:/ .. /^\s*ret\b/) {
+ if(/^getword:/) {
+ $_ = $getword;
+ $fixes{getword}++;
+ }
+ else {
+ undef $_;
+ }
+ }
+ }
+}
+
diff --git a/jpg/conv2 b/jpg/conv2
new file mode 100755
index 0000000..9d42fc3
--- /dev/null
+++ b/jpg/conv2
@@ -0,0 +1,1319 @@
+#! /usr/bin/perl
+
+# tack pointer usage and assign proper segment registers
+
+use Getopt::Long;
+Getopt::Long::Configure("bundling");
+
+sub add_prefix;
+sub get_arg;
+sub decode_instr;
+sub decode_arg;
+sub trace_it;
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub is_ref;
+sub is_reg;
+sub is_num;
+sub is_sym;
+sub const_add;
+sub const_eval;
+sub const_eval_addr;
+sub push_on_stack;
+sub pop_from_stack;
+sub start_trace;
+sub trace_it;
+sub clone_state;
+sub show_state;
+sub start_trace;
+sub set_state;
+sub del_state_context;
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+$re_reg = '%[a-z]+';
+$re_symbol = '[._a-zA-Z][\._a-zA-Z0-9]*';
+$re_num = '[\-\+]?\d+';
+
+%full_reg = (
+ '%al' => '%eax',
+ '%ah' => '%eax',
+ '%ax' => '%eax',
+ '%bl' => '%ebx',
+ '%bh' => '%ebx',
+ '%bx' => '%ebx',
+ '%cl' => '%ecx',
+ '%ch' => '%ecx',
+ '%cx' => '%ecx',
+ '%dl' => '%edx',
+ '%dh' => '%edx',
+ '%dx' => '%edx',
+ '%si' => '%esi',
+ '%di' => '%edi',
+ '%bp' => '%ebp',
+ '%sp' => '%esp',
+);
+
+
+$opt_verbose = 0;
+$opt_out_file = '-';
+
+GetOptions(
+ 'v' => sub { $opt_verbose++ },
+ 'q' => sub { $opt_verbose-- },
+ 'o=s' => \$opt_out_file,
+);
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+$static_data_seg = 'fs';
+# see trace_it() for more configs
+
+while(<>) {
+ chomp;
+
+ $text{$.}{orig} = $_;
+
+ if(s/^\s*($re_symbol)://) {
+ $symbol{$1}{line} = $.;
+ $c = $1;
+ $context = $c unless $1 =~ /^\.L/;
+ $ofs = 0;
+ }
+
+ s/\s*#.*//;
+ s/^\s*//;
+
+ if(/^.globl\s+(\S+)$/) {
+ $global{$1} = $.;
+ undef $_;
+ }
+
+ if(defined($ofs) && /^\.(long|byte)\s+(\d+)$/) {
+ $ofs += 1 if $1 eq 'byte';
+ $ofs += 4 if $1 eq 'long';
+ if($context) {
+ $symbol{$context}{size} = $ofs;
+ $seg = $symbol{$context}{seg};
+ if($seg && $seg ne 'cs') {
+ warn "$.: moving $context from \"$seg\" to \"cs\"\n"
+ }
+ $symbol{$context}{seg} = "cs";
+ }
+ undef $_;
+ }
+ else {
+ undef $ofs unless /^\s*$/;
+ }
+
+ if(/^\.space\s+(\d+)\s*\,\s*(\d+)$/) {
+ if($2) {
+ warn "$.: $context has nonzero data\n";
+ }
+ if($context) {
+ $symbol{$context}{size} = $1;
+ $seg = $symbol{$context}{seg};
+ if($seg && $seg ne $static_data_seg) {
+ warn "$.: moving $context from \"$seg\" to \"$static_data_seg\"\n"
+ }
+ $symbol{$context}{seg} = $static_data_seg;
+ }
+ undef $_;
+ }
+
+ $text{$.}{op} = $_;
+ $text{$.}{context} = $context;
+}
+
+for (sort { $a <=> $b } keys %text) {
+ decode_instr $_;
+}
+
+trace_it;
+
+
+for (keys %text) {
+ add_prefix $_;
+}
+
+open F, ">$opt_out_file";
+
+for (sort { $a <=> $b } keys %text) {
+ if($text{$_}{new}) {
+ print F "\t# $text{$_}{new_comment}\n" if $opt_verbose >= 0 && $text{$_}{new_comment};
+ printf F "%s\n", $text{$_}{new};
+ }
+ else {
+ printf F "%s\n", $text{$_}{orig};
+ }
+ if($opt_verbose >= 2 && $text{$_}{instr}) {
+
+ if($opt_verbose >= 3) {
+ $state = $text{$_}{state};
+ print F "\t # $state->{'..ilog'}\n" if $state->{'..ilog'};
+ if($state->{'..addr'}) {
+ print F "\t # mem ref: " . join(', ', @{$state->{'..addr'}}) . "\n";
+ }
+ print F show_state("\t #");
+ }
+ }
+}
+
+if($opt_verbose >= 2) {
+ print F "\n# symbols:\n";
+ for (sort { $symbol{$a}{line} <=> $symbol{$b}{line} } keys %symbol) {
+ printf F "# %s (%sseg = %s, size %d)\n",
+ $_,
+ $global{$_} ? "global, " : "",
+ $symbol{$_}{seg},
+ $symbol{$_}{size};
+ }
+}
+
+close F;
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub add_prefix
+{
+ local $_;
+ my ($l, $state, $seg, $s, @i, $n, @a, $i, @c, $d);
+
+ $l = shift;
+
+ return if !($state = $text{$l}{state});
+
+ return unless $text{$l}{instr};
+
+ for (@{$state->{'..addr'}}) {
+ undef $s;
+ @i = split /\+/;
+ next if !$i[0];
+ $s = $symbol{$i[0]}{seg} if is_sym($i[0]) && $symbol{$i[0]}{seg};
+
+ if(!$s || ($seg && $s ne $seg)) {
+ warn "$l: can't determine segment\n"
+ }
+ $seg = $s if $s;
+ }
+
+ for ($i = 0; $i < @{$text{$l}{arg}}; $i++) {
+ if($seg && $state->{'..addr'}[$i]) {
+ $d = $text{$l}{arg}[$i]{seg};
+ $d = 'ds' unless $d;
+ $a[$i] = "%$seg:" if $seg ne $d;
+ push @c, "$text{$l}{arg}[$i]{orig} = %$seg:$state->{'..addr'}[$i]";
+ }
+ $a[$i] .= $text{$l}{arg}[$i]{orig};
+ }
+
+ $n = "\t$text{$l}{instr}";
+ $n .= "\t" . join(', ', @a) if @a;
+
+ $text{$l}{new_comment} = join(', ', @c) if @c;
+ $text{$l}{new} = $n;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub get_arg
+{
+ local $_;
+
+ $_ = shift;
+
+ if(/^([^,()]*(\(.*?\))?[^,()]*)/) {
+ return $1;
+ }
+
+ return undef;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub decode_instr
+{
+ local $_;
+ my ($l, $op, $instr, $arg1, $arg2, $arg3, @arg, $arg, $is_branch);
+
+ $l = shift;
+
+ $op = $text{$l}{op};
+
+ return unless $op =~ s/^(\S+)\s*//;
+
+ $instr = $1;
+
+ return if $instr =~ /^\.(file|text|code16gcc)$/;
+
+ $is_branch = 1 if $instr =~ /^(call|j)/;
+
+ $arg1 = get_arg $op;
+ substr($op, 0, length($arg1)) = "";
+ $op =~ s/^,\s*//;
+
+ $arg2 = get_arg $op;
+ substr($op, 0, length($arg2)) = "";
+ $op =~ s/^,\s*//;
+
+ $arg3 = get_arg $op;
+ substr($op, 0, length($arg3)) = "";
+ $op =~ s/^,\s*//;
+
+ if($op) {
+ warn "$l: error splitting args\n"
+ }
+
+# print "[$instr] [$arg1] [$arg2] [$arg3]\n";
+
+ $text{$l}{instr} = $instr;
+
+ $. = $l;
+
+ if($arg1) {
+ $arg = decode_arg $arg1, $is_branch;
+ push @arg, $arg;
+ }
+
+ if($arg2) {
+ $arg = decode_arg $arg2, $is_branch;
+ push @arg, $arg;
+ }
+
+ if($arg3) {
+ $arg = decode_arg $arg3, $is_branch;
+ push @arg, $arg;
+ }
+
+ $text{$l}{arg} = [ @arg ];
+
+# for $arg (@arg) {
+# print "$arg->{orig},\tval = $arg->{val}\n";
+# }
+
+# print "$text{$l}{arg}[0]{orig}\n";
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub decode_arg
+{
+ local $_;
+ my ($is_branch, $arg, $p, $v, $seg, $l, @i);
+
+ $_ = shift;
+ $is_branch = shift;
+
+ $arg->{orig} = $_;
+
+ if(/^(\*?)($re_reg)$/o) {
+ $arg->{val} = $2;
+
+ if($1) {
+ warn "$.: arg with \"*\"?\n" unless $is_branch;
+ }
+
+ return $arg;
+ }
+
+ if(s/^([*\$]?)([^*,:%()]+)//) {
+ $p = $1;
+ $v = $2;
+ if($v =~ s/^($re_symbol)([\+\-])?//i) {
+ $v = "-$v" if $2 eq '-';
+ $l = $1;
+ }
+
+ if($v && $v !~ /^$re_num$/o) {
+ warn "$.: $v is not a number\n";
+ }
+
+ if($l) {
+ warn "$.: unknown symbol $l\n" unless $symbol{$l};
+ $v = "+$v" if $v;
+ $arg->{val} = "$l$v";
+ }
+ else {
+ $arg->{val} = $v;
+ }
+
+ if($is_branch) {
+ warn "$.: arg with \"$p\"?\n" if $p eq '$';
+ $arg->{val} = "*$arg->{val}" if $p eq '*';
+ }
+ else {
+ warn "$.: arg with \"$p\"?\n" if $p eq '*';
+ $arg->{val} = "*$arg->{val}" unless $p eq '$';
+ }
+ }
+
+ if(/^\(.+\)$/) {
+ s/(^\(|\)$)//g;
+ @i = split /\s*,\s*/;
+ $i[2] = 1 unless $i[2];
+ if($i[0] eq '%esp' || $i[0] eq '%ebp') {
+ $arg->{seg} = 'ss';
+ }
+ if($i[1] && $i[1] eq $i[0]) {
+ $i[0] = undef;
+ $i[2]++;
+ }
+
+ $arg->{val} = '*' unless $arg->{val};
+
+ $arg->{val} .= "+$i[0]" if $i[0];
+ $arg->{val} .= "+$i[1]" if $i[1];
+ $arg->{val} .= "*$i[2]" if $i[2] > 1;
+
+ $arg->{val} =~ s/^\*\+/*/;
+
+ return $arg;
+ }
+
+ warn "$.: don't understand \"$arg->{orig}\"\n" if $_;
+
+ return $arg;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+sub is_ref
+{
+ return $_[0] =~ /^\*/o;
+}
+
+
+sub is_reg
+{
+ return $_[0] =~ /^$re_reg$/o;
+}
+
+
+sub is_num
+{
+ return $_[0] =~ /^$re_num$/o;
+}
+
+
+sub is_sym
+{
+ return $symbol{$_[0]};
+}
+
+
+sub const_add
+{
+ local $_;
+ my (@i, $i, $ok, $arg1, $arg2);
+
+ ($arg1, $arg2) = @_;
+
+ if($arg1 eq '?') {
+ ($arg2, $arg1) = ($arg1, $arg2);
+ }
+
+ if($symbol{$arg1}) {
+ ($arg2, $arg1) = ($arg1, $arg2);
+ }
+
+ if(is_num($arg1)) {
+ ($arg2, $arg1) = ($arg1, $arg2);
+ }
+
+ @i = split /\+/, $arg1;
+
+ if(is_num $arg2) {
+ for (@i) {
+ if(/^$re_num$/o) {
+ $_ += $arg2;
+ $ok = 1;
+ last;
+ }
+ elsif($_ eq '?') {
+ $ok = 1;
+ last;
+ }
+ }
+ push @i, $arg2 unless $ok;
+ }
+ elsif(is_sym $arg2) {
+ if(is_num $arg1) {
+ @i = ( $arg2 );
+ push @i, $arg1 if $arg1 != 0;
+ }
+ elsif($arg1 eq '?') {
+ @i = ( $arg2, '?' );
+ }
+ else {
+ @i = ( '?' );
+ }
+ }
+ elsif($arg2 eq '?') {
+ for (@i) {
+ if(/^$re_num$/o || $_ eq '?') {
+ $_ = '?';
+ $ok = 1;
+ last;
+ }
+ }
+ @i = ( '?' ) unless $ok;
+ }
+ else {
+ @i = ( '?' );
+ }
+
+ $i = join '+', @i;
+
+ # print ">>$arg1 + $arg2 = $i<<\n";
+
+ return $i;
+}
+
+
+sub const_eval
+{
+ local $_;
+ my ($arg, @i, @j, $sym, $val, $nosym, $ref, $i, $fact);
+
+ $arg = shift;
+
+ $val = 0;
+
+ $ref = 1 if $arg =~ s/^\*//;
+
+ @i = split /\+/, $arg;
+
+ for (@i) {
+ undef $fact;
+ if(/^%/ && s/\*(\d+)$//) {
+ $fact = $1;
+ undef $fact if $fact == 1;
+ }
+ if(is_reg($_) && defined($state->{$_})) {
+ if(is_num($state->{$_}) && defined($fact)) {
+ $fact *= $state->{$_};
+ push @j, "$fact";
+ }
+ elsif(!defined($fact)) {
+ push @j, split(/\+/, $state->{$_});
+ }
+ else {
+ push @j, '?';
+ }
+ }
+ else {
+ push @j, $_;
+ }
+ }
+
+ for (@j) {
+ if($symbol{$_}) {
+ $nosym = 1 if $sym;
+ $sym = $_;
+ next;
+ }
+
+ if(/^$re_num$/o) {
+ $val += $_ unless $val eq '?';
+ next;
+ }
+
+ $val = '?';
+ }
+
+ $i = '?';
+
+ if(!$nosym) {
+ if($sym && $val) {
+ $i = "$sym+$val";
+ }
+ elsif($sym) {
+ $i = $sym;
+ }
+ elsif(defined($val)) {
+ $i = "$val";
+ }
+ }
+
+ if($ref) {
+ if($state->{$i}) {
+ $i = $state->{$i};
+ }
+ else {
+ $i = '?';
+ }
+ }
+
+ return $i;
+}
+
+
+sub const_eval_addr
+{
+ local $_;
+
+ $_ = shift;
+
+ return $_ if /^${re_reg}$/;
+
+ $_ =~ s/^\*//;
+
+ return const_eval $_;
+}
+
+
+sub push_on_stack
+{
+ my ($new_sp);
+
+ $new_sp = const_add $state->{"%esp"}, -4;
+
+ $state->{"%esp"} = $new_sp;
+ $state->{"$new_sp"} = $_[0];
+}
+
+
+sub pop_from_stack
+{
+ my ($new_sp, $i);
+
+ $new_sp = const_add $state->{"%esp"}, 4;
+
+ $i = $state->{$state->{"%esp"}};
+
+ delete $state->{$state->{"%esp"}};
+ $state->{"%esp"} = $new_sp;
+
+ return $i;
+}
+
+
+sub trace_it
+{
+ undef @branch_states;
+
+ $symbol{stack}{size} = 1000;
+ $symbol{stack}{seg} = 'ss';
+
+ $symbol{jpg}{seg} = 'es';
+ $symbol{pic}{seg} = 'es';
+
+ $state->{"%esp"} = "stack+1000";
+ push_on_stack "jpg";
+ push_on_stack "0+%cs";
+ $state->{"%eip"} = "$symbol{jpeg_get_size}{line}+%cs";
+ push @branch_states, clone_state($state);
+
+ $state->{"%esp"} = "stack+1000";
+ push_on_stack "32";
+ push_on_stack "111";
+ push_on_stack "11";
+ push_on_stack "222";
+ push_on_stack "22";
+ push_on_stack "pic";
+ push_on_stack "jpg";
+ push_on_stack "0+%cs";
+ $state->{"%eip"} = "$symbol{jpeg_decode}{line}+%cs";
+ push @branch_states, clone_state($state);
+
+ undef $state;
+
+ while($state = pop @branch_states) {
+ start_trace;
+ }
+}
+
+
+sub clone_state
+{
+ my ($new_state);
+
+ $new_state->{$_} = $state->{$_} for keys %{$state};
+
+ return $new_state;
+}
+
+
+sub show_state
+{
+ local $_;
+ my ($s);
+
+ for (sort keys %{$state}) {
+ $s .= "$_[0] $_ = $state->{$_}\n" unless /^\.\./;
+ }
+
+ return $s;
+}
+
+
+sub start_trace
+{
+ local $_;
+ my ($op, $c, $ok, $opc, $br);
+
+ $pc = 0;
+
+ $br = @branch_states;
+
+ # print "starting at: $state->{'%eip'} ($br)\n";
+
+ $state->{'..stop'} = undef;
+
+ do {
+ $state->{'..addr'} = undef;
+ $state->{'..ilog'} = undef;
+
+ if($state->{"%eip"} =~ /^(${re_num})\+%cs$/) {
+ $pc = $1;
+ }
+ else {
+ warn "$state->{'%eip'}: oops, got lost\n";
+ return;
+ }
+
+ return if !$pc;
+
+ if(!exists($text{"$pc"})) {
+ warn "$state->{'%eip'}: oops, got lost\n";
+ return;
+ }
+
+ if($state->{"..%oeip"} =~ /^(${re_num})\+%cs$/) {
+ $opc = $1;
+ }
+ else {
+ $opc = 0;
+ }
+
+ $loc = "$opc->$pc";
+
+ $op = $text{"$pc"};
+
+ print "# $loc: $op->{orig}\n" if $opt_verbose >= 2;
+
+ $ok = 0;
+
+ $state->{"..%oeip"} = $state->{"%eip"};
+
+ $state->{"%eip"} = const_add $state->{"%eip"}, 1;
+
+ if($op->{instr}) {
+ if($c = $opcodes{$op->{instr}}) {
+ &$c($op);
+ $ok = 1;
+ }
+ else {
+ warn "$pc: unknown opcode: $op->{instr}\n";
+ }
+ }
+
+ $text{"$pc"}{state} = clone_state;
+
+ print "# $state->{'..ilog'}\n" if $opt_verbose >= 1;
+
+ if($opt_verbose >= 3) {
+ print show_state if $ok;
+ }
+
+ } while(!$state->{'..stop'});
+}
+
+
+sub set_state
+{
+ $state->{$_[0]} = "$_[1]";
+}
+
+
+sub del_state_context
+{
+ local $_;
+
+ return unless $_[0];
+
+ for (keys %text) {
+ undef $text{$_}{state} if $text{$_}{context} eq $_[0];
+ }
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+BEGIN {
+ %opcodes = (
+ pushl => \&op_pushl,
+ popl => \&op_popl,
+ movl => \&op_movl,
+ movzbl => \&op_movl,
+ movzwl => \&op_movl,
+ movl => \&op_movl,
+ movw => \&op_movl,
+ movb => \&op_movl,
+ xchgb => \&op_xchgb,
+ leal => \&op_leal,
+ xorl => \&op_alu2,
+ sall => \&op_alu2,
+ sarl => \&op_alu2,
+ shll => \&op_alu2,
+ shrl => \&op_alu2,
+ addl => \&op_alu2,
+ subl => \&op_alu2,
+ incl => \&op_alu1,
+ decl => \&op_alu1,
+ negl => \&op_alu1,
+ notl => \&op_alu1,
+ setg => \&op_alu1,
+ setge => \&op_alu1,
+ setl => \&op_alu1,
+ setle => \&op_alu1,
+ sete => \&op_alu1,
+ setne => \&op_alu1,
+ incb => \&op_alu1,
+ decb => \&op_alu1,
+ testl => \&op_alu2,
+ cmpl => \&op_alu2,
+ orl => \&op_alu2,
+ andl => \&op_alu2,
+ orb => \&op_alu2,
+ subb => \&op_alu2,
+ addb => \&op_alu2,
+ cmpb => \&op_alu2,
+ testb => \&op_alu2,
+ imull => \&op_imull,
+ ret => \&op_ret,
+ call => \&op_jmp,
+ jmp => \&op_jmp,
+ je => \&op_jmp,
+ jne => \&op_jmp,
+ jg => \&op_jmp,
+ jng => \&op_jmp,
+ jl => \&op_jmp,
+ jnl => \&op_jmp,
+ js => \&op_jmp,
+ jns => \&op_jmp,
+ ja => \&op_jmp,
+ jna => \&op_jmp,
+ jb => \&op_jmp,
+ jnb => \&op_jmp,
+ jbe => \&op_jmp,
+ jle => \&op_jmp,
+ jge => \&op_jmp,
+ cltd => \&op_cltd,
+ idivl => \&op_idivl,
+ );
+}
+
+
+sub op_pushl
+{
+ my ($op, $args, $val1, $arg1);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 1) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+
+ $val1 = const_eval $arg1;
+
+ $state->{'..addr'}[0] = const_eval_addr $arg1 if is_ref $arg1;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg {$val1}";
+
+ push_on_stack $val1;
+}
+
+
+sub op_popl
+{
+ my ($op, $args, $val1, $arg1);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 1) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+
+ $val1 = const_eval_addr $arg1;
+
+ $state->{'..addr'}[0] = $val1 if is_ref $arg1;
+
+ set_state $val1, pop_from_stack;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg {$val1}";
+}
+
+
+sub op_movl
+{
+ my ($op, $args, $val1, $val2, $arg1, $arg2, $val3);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 2) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+
+ if($full_reg{$arg1}) {
+ $arg1 = $full_reg{$arg1};
+ }
+
+ if($full_reg{$arg2}) {
+ $arg2 = $full_reg{$arg2};
+ }
+
+ $val1 = const_eval $arg1;
+ $val2 = const_eval_addr $arg2;
+
+ $val3 = $val1;
+
+ if(
+ $op->{instr} eq 'movzbl' ||
+ $op->{instr} eq 'movzwl' ||
+ $op->{instr} eq 'movb' ||
+ $op->{instr} eq 'movw'
+ ) {
+ $val3 = '?';
+ }
+
+ $state->{'..addr'}[0] = const_eval_addr $arg1 if is_ref $arg1;
+ $state->{'..addr'}[1] = $val2 if is_ref $arg2;
+
+ set_state $val2, $val3;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}, $arg2 {$val2}";
+}
+
+
+sub op_leal
+{
+ my ($op, $args, $val1, $val2, $arg1, $arg2);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 2) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+
+ $val1 = const_eval_addr $arg1;
+ $val2 = const_eval_addr $arg2;
+
+ set_state $val2, $val1;
+
+ # $state->{'..addr'}[0] = $val1;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}, $arg2 {$val2}";
+}
+
+
+sub op_xchgb
+{
+ my ($op, $args, $val1, $val2, $arg1, $arg2, $val3);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 2) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+
+ if($full_reg{$arg1}) {
+ $arg1 = $full_reg{$arg1};
+ }
+
+ if($full_reg{$arg2}) {
+ $arg2 = $full_reg{$arg2};
+ }
+
+ $val1 = const_eval_addr $arg1;
+ $val2 = const_eval_addr $arg2;
+
+ $val3 = '?';
+
+ $state->{'..addr'}[0] = $val1 if is_ref $arg1;
+ $state->{'..addr'}[1] = $val2 if is_ref $arg2;
+
+ set_state $val1, $val3;
+ set_state $val2, $val3;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}, $arg2 {$val2}";
+}
+
+
+sub op_alu2
+{
+ my ($op, $args, $val1, $val2, $val3, $arg1, $arg2, $arg3, $no_change);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 2) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+
+ if($full_reg{$arg1}) {
+ $arg1 = $full_reg{$arg1};
+ }
+
+ if($full_reg{$arg2}) {
+ $arg2 = $full_reg{$arg2};
+ }
+
+ $val1 = const_eval $arg1;
+ $val2 = const_eval $arg2;
+ $arg3 = const_eval_addr $arg2;
+
+ $val3 = '?';
+
+ if($op->{instr} eq 'sall' || $op->{instr} eq 'shll') {
+ if(is_num($val1) && is_num($val2)) {
+ $val3 = $val2 << $val1;
+ }
+ elsif($arg1 eq '0') {
+ $val3 = $val2;
+ }
+ }
+ elsif($op->{instr} eq 'sarl' || $op->{instr} eq 'shrl') {
+ if(is_num($val1) && is_num($val2)) {
+ if($val1 >= 1 && $op->{instr} eq 'shrl') {
+ $val3 = ($val2 & (1 << 31)) >> $val1;
+ }
+ else {
+ $val3 = $val2 >> $val1;
+ }
+ }
+ elsif($arg1 eq '0') {
+ $val3 = $val2;
+ }
+ }
+ elsif($op->{instr} eq 'xorl') {
+ if(is_num($val1) && is_num($val2)) {
+ $val3 = ($val1 + 0) ^ ($val2 + 0);
+ $val3 = $val3;
+ }
+ elsif($arg1 eq $arg2) {
+ $val3 = '0';
+ }
+ }
+ elsif($op->{instr} eq 'addl') {
+ if(is_num($val1) || is_num($val2)) {
+ $val3 = const_add $val1, $val2;
+ }
+ elsif($symbol{$val1} || $symbol{$val2}) {
+ $val3 = const_add $val1, $val2;
+ }
+ elsif($val1 eq '?' || $val2 eq '?') {
+ $val3 = const_add $val1, $val2;
+ }
+ }
+ elsif($op->{instr} eq 'subl') {
+ if(is_num($val1)) {
+ $val3 = const_add $val2, -$val1;
+ }
+ }
+ elsif($op->{instr} eq 'orl') {
+ if(is_num($val1) && is_num($val2)) {
+ $val3 = $val1 | $val2;
+ }
+ elsif($arg1 eq $arg2) {
+ $val3 = $val2;
+ }
+ }
+ elsif($op->{instr} eq 'andl') {
+ if(is_num($val1) && is_num($val2)) {
+ $val3 = $val1 & $val2;
+ }
+ elsif($arg1 eq $arg2) {
+ $val3 = $val2;
+ }
+ }
+ elsif($op->{instr} eq 'orb' || $op->{instr} eq 'subb' || $op->{instr} eq 'addb') {
+ }
+ elsif(
+ $op->{instr} eq 'cmpl' || $op->{instr} eq 'testl' ||
+ $op->{instr} eq 'cmpb' || $op->{instr} eq 'testb'
+ ) {
+ $no_change = 1;
+ }
+
+ $state->{'..addr'}[0] = const_eval_addr $arg1 if is_ref $arg1;
+ $state->{'..addr'}[1] = $arg3 if is_ref $arg2;
+
+ set_state $arg3, $val3 unless $no_change;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}, $arg2 {$val2}";
+}
+
+
+sub op_alu1
+{
+ my ($op, $args, $val1, $val2, $arg1, $arg2);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 1) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+
+ if($full_reg{$arg1}) {
+ $arg1 = $full_reg{$arg1};
+ }
+
+ $val1 = const_eval $arg1;
+ $arg2 = const_eval_addr $arg1;
+
+ $val2 = '?';
+
+ if($op->{instr} eq 'incl') {
+ $val2 = const_add $val1, 1;
+ }
+ elsif($op->{instr} eq 'decl') {
+ $val2 = const_add $val1, -1;
+ }
+ elsif(
+ $op->{instr} eq 'negl' ||
+ $op->{instr} eq 'notl' ||
+ $op->{instr} eq 'incb' ||
+ $op->{instr} eq 'decb' ||
+ $op->{instr} =~ /^set/
+ ) {
+ $val2 = '?';
+ }
+
+ $state->{'..addr'}[0] = $arg2 if is_ref $arg1;
+
+ set_state $arg2, $val2;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}";
+}
+
+
+sub op_imull
+{
+ my ($op, $args, $val1, $val2, $val3, $arg1, $arg2, $arg3, $arg4, $fact);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 2 && $args != 3) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ if($args == 2) {
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+ }
+ else {
+ $arg1 = $op->{arg}[0]->{val};
+ $arg2 = $op->{arg}[1]->{val};
+ $arg3 = $op->{arg}[2]->{val};
+ }
+
+ if($full_reg{$arg1}) {
+ $arg1 = $full_reg{$arg1};
+ }
+
+ if($full_reg{$arg2}) {
+ $arg2 = $full_reg{$arg2};
+ }
+
+ $val1 = const_eval $arg1;
+ $val2 = const_eval $arg2;
+
+ if($args == 2) {
+ $arg4 = const_eval_addr $arg2;
+ }
+ else {
+ $arg4 = const_eval_addr $arg3;
+ }
+
+ $val3 = '?';
+
+ if(is_num($val1) && is_num($val2)) {
+ $val3 = $val1 * $val2;
+ }
+
+ if($args == 2) {
+ $state->{'..addr'}[0] = const_eval_addr $arg1 if is_ref $arg1;
+ $state->{'..addr'}[1] = $arg4 if is_ref $arg2;
+ }
+ else {
+ $state->{'..addr'}[0] = const_eval_addr $arg1 if is_ref $arg1;
+ $state->{'..addr'}[1] = const_eval_addr $arg2 if is_ref $arg2;
+ $state->{'..addr'}[1] = $arg4 if is_ref $arg3;
+ }
+
+ set_state $arg4, $val3;
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}, $arg2 {$val2}";
+}
+
+
+sub op_cltd
+{
+ my ($op, $args);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 0) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ set_state "%edx", '?';
+
+ $state->{'..ilog'} = "$loc: $op->{instr}";
+}
+
+
+sub op_idivl
+{
+ my ($op, $args, $val1, $val2, $arg1, $arg2);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 1) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+
+ $val1 = const_eval $arg1;
+ $arg2 = const_eval_addr $arg1;
+
+ $state->{'..addr'}[0] = $arg2 if is_ref $arg1;
+
+ set_state "%eax", '?';
+ set_state "%edx", '?';
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg1 {$val1}";
+}
+
+
+sub op_ret
+{
+ my ($op, $args, $i);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ # no 'ret n' support
+ if($args != 0) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $state->{'%eip'} = pop_from_stack;
+
+ $state->{'..ilog'} = "$loc: $op->{instr}";
+}
+
+
+sub op_jmp
+{
+ my ($op, $args, $val1, $arg1, $ns, $taken);
+
+ $op = shift;
+
+ $args = @{$op->{arg}};
+
+ if($args != 1) {
+ warn "$pc: invalid number of arguments\n";
+ return;
+ }
+
+ $arg1 = $op->{arg}[0]->{val};
+
+ $val1 = const_eval $arg1;
+
+ if($symbol{$val1}) {
+ $val1 = "$symbol{$val1}{line}+%cs";
+ }
+
+ $state->{'..ilog'} = "$loc: $op->{instr} $arg {$val1}";
+
+ if($op->{instr} eq 'call') {
+ if($val1 =~ /^(${re_num})\+%cs$/ && $text{$1}{state}) {
+ $taken = 1;
+ }
+
+ # del_state_context $arg1;
+
+ # print ">> $loc: call $arg1\n";
+
+ # evil hack to avoid loops
+ if(!$taken) {
+ push_on_stack $state->{'%eip'};
+ $state->{'%eip'} = $val1;
+ }
+ }
+ else {
+ if($val1 =~ /^(${re_num})\+%cs$/ && $text{$1}{state}) {
+ $taken = 1;
+ }
+
+ if($op->{instr} eq 'jmp') {
+ # unconditional braches
+ if($taken) {
+ $state->{'..stop'} = 1;
+ # print "** $loc: stopped\n";
+ }
+ $state->{'%eip'} = $val1;
+ }
+ else {
+ # conditional branches
+
+ if(!$taken) {
+ $ns = clone_state;
+ $ns->{'%eip'} = $val1;
+
+ push @branch_states, $ns;
+ }
+ }
+ }
+}
+
+
diff --git a/jpg/conv3 b/jpg/conv3
new file mode 100755
index 0000000..43e4422
--- /dev/null
+++ b/jpg/conv3
@@ -0,0 +1,41 @@
+#! /usr/bin/perl
+
+@f = (<>);
+
+$ofs = 0;
+
+for (@f) {
+ if(/^(\S*):/) {
+ $symbol = $1;
+ next;
+ }
+
+ if(/^\s*\.space\s+(\d+),\s*(\d+)/) {
+ $symbol{$symbol} = $ofs;
+ $ofs += $1;
+ undef $_;
+ }
+}
+
+
+for (@f) {
+ if(/^(\S*):/) {
+ $symbol = $1;
+
+ if(defined $symbol{$symbol}) {
+ undef $_;
+
+ if(!$datasize) {
+ $datasize = 1;
+ $size = "\t\tjpg_data_size\tequ $ofs\n";
+ }
+
+ $_ = "\t.equ\t$symbol, $symbol{$symbol}\n"
+ }
+ next;
+ }
+}
+
+print @f;
+
+print STDERR $size;
diff --git a/jpg/getword b/jpg/getword
new file mode 100644
index 0000000..50ad07f
--- /dev/null
+++ b/jpg/getword
@@ -0,0 +1,7 @@
+getword:
+ movl datap, %edx
+ movzwl (%edx), %eax
+ addl $2, %edx
+ xchgb %al, %ah
+ movl %edx, datap
+ ret
diff --git a/jpg/jpg.c b/jpg/jpg.c
new file mode 100644
index 0000000..c4a9bac
--- /dev/null
+++ b/jpg/jpg.c
@@ -0,0 +1,948 @@
+#include "jpg.h"
+
+#define ERR_NO_SOI 1
+#define ERR_NOT_8BIT 2
+#define ERR_HEIGHT_MISMATCH 3
+#define ERR_WIDTH_MISMATCH 4
+#define ERR_BAD_WIDTH_OR_HEIGHT 5
+#define ERR_TOO_MANY_COMPPS 6
+#define ERR_ILLEGAL_HV 7
+#define ERR_QUANT_TABLE_SELECTOR 8
+#define ERR_NOT_YCBCR_221111 9
+#define ERR_UNKNOWN_CID_IN_SCAN 10
+#define ERR_NOT_SEQUENTIAL_DCT 11
+#define ERR_WRONG_MARKER 12
+#define ERR_NO_EOI 13
+#define ERR_BAD_TABLES 14
+#define ERR_DEPTH_MISMATCH 15
+
+#define ISHIFT 11
+
+#define IFIX(a) ((int)((a) * (1 << ISHIFT) + .5))
+#define IMULT(a, b) (((a) * (b)) >> ISHIFT)
+#define ITOINT(a) ((a) >> ISHIFT)
+
+#ifndef __P
+# define __P(x) x
+#endif
+
+/* special markers */
+#define M_BADHUFF -1
+#define M_EOF 0x80
+
+struct in {
+ unsigned int bits;
+ int left;
+ int marker;
+ void *data;
+};
+
+/*********************************/
+struct dec_hufftbl;
+struct enc_hufftbl;
+
+union hufftblp {
+ struct dec_hufftbl *dhuff;
+ struct enc_hufftbl *ehuff;
+};
+
+struct scan {
+ int dc; /* old dc value */
+
+ union hufftblp hudc;
+ union hufftblp huac;
+ int next; /* when to switch to next scan */
+
+ int cid; /* component id */
+ int hv; /* horiz/vert, copied from comp */
+ int tq; /* quant tbl, copied from comp */
+};
+
+/*********************************/
+
+#define DECBITS 8 /* seems to be the optimum */
+
+struct dec_hufftbl {
+ int maxcode[17];
+ int valptr[16];
+ unsigned char vals[256];
+ unsigned int llvals[1 << DECBITS];
+};
+
+struct jpeg_decdata {
+ int dcts[6 * 64 + 16];
+ int out[64 * 6];
+ int dquant[3][64];
+};
+
+static void decode_mcus __P((struct in *, int *, int, struct scan *, int *));
+static void dec_makehuff __P((struct dec_hufftbl *, int *, unsigned char *));
+
+static void setinput __P((struct in *));
+/*********************************/
+
+#undef PREC
+#define PREC int
+
+static void idctqtab __P((unsigned char *, PREC *));
+static void idct __P((int *, int *, PREC *, PREC, int));
+static void scaleidctqtab __P((PREC *, PREC));
+
+/*********************************/
+
+static void initcol __P((PREC[][64]));
+
+static void col221111(int *out, unsigned char *pic, int width, int bits);
+static unsigned char tmp_img[16*16*4]; /* 16 x 16, 32 bit color */
+
+/*********************************/
+
+#define M_SOI 0xd8
+#define M_APP0 0xe0
+#define M_DQT 0xdb
+#define M_SOF0 0xc0
+#define M_DHT 0xc4
+#define M_DRI 0xdd
+#define M_SOS 0xda
+#define M_RST0 0xd0
+#define M_EOI 0xd9
+#define M_COM 0xfe
+
+static unsigned char *datap;
+static struct jpeg_decdata decdata;
+
+static void memset(void *p, int c, int n)
+{
+ unsigned char *x = p;
+
+ while(n--) *x++ = c;
+}
+
+
+static int getbyte(void)
+{
+ return *datap++;
+}
+
+static int getword(void)
+{
+ int c1, c2;
+ c1 = *datap;
+ c2 = datap[1];
+ datap += 2;
+ return c1 << 8 | c2;
+}
+
+struct comp {
+ int cid;
+ int hv;
+ int tq;
+};
+
+#define MAXCOMP 4
+struct jpginfo {
+ int nc; /* number of components */
+ int ns; /* number of scans */
+ int dri; /* restart interval */
+};
+
+static struct jpginfo info;
+static struct comp comps[MAXCOMP];
+
+static struct scan dscans[MAXCOMP];
+
+static unsigned char quant[4][64];
+
+static struct dec_hufftbl dhuff[4];
+
+#define dec_huffdc (dhuff + 0)
+#define dec_huffac (dhuff + 2)
+
+static struct in in;
+
+static int readtables(int till)
+{
+ int m, l, i, j, lq, pq, tq;
+ int tc, th, tt;
+
+ for (;;) {
+ if (getbyte() != 0xff)
+ return -1;
+ if ((m = getbyte()) == till)
+ break;
+
+ switch (m) {
+ case 0xc2:
+ return 0;
+
+ case M_DQT:
+ lq = getword();
+ while (lq > 2) {
+ pq = getbyte();
+ tq = pq & 15;
+ if (tq > 3)
+ return -1;
+ pq >>= 4;
+ if (pq != 0)
+ return -1;
+ for (i = 0; i < 64; i++)
+ quant[tq][i] = getbyte();
+ lq -= 64 + 1;
+ }
+ break;
+
+ case M_DHT:
+ l = getword();
+ while (l > 2) {
+ int hufflen[16], k;
+ unsigned char huffvals[256];
+
+ tc = getbyte();
+ th = tc & 15;
+ tc >>= 4;
+ tt = tc * 2 + th;
+ if (tc > 1 || th > 1)
+ return -1;
+ for (i = 0; i < 16; i++)
+ hufflen[i] = getbyte();
+ l -= 1 + 16;
+ k = 0;
+ for (i = 0; i < 16; i++) {
+ for (j = 0; j < hufflen[i]; j++)
+ huffvals[k++] = getbyte();
+ l -= hufflen[i];
+ }
+ dec_makehuff(dhuff + tt, hufflen,
+ huffvals);
+ }
+ break;
+
+ case M_DRI:
+ l = getword();
+ info.dri = getword();
+ break;
+
+ default:
+ l = getword();
+ while (l-- > 2)
+ getbyte();
+ break;
+ }
+ }
+ return 0;
+}
+
+static void dec_initscans(void)
+{
+ int i;
+
+ for (i = 0; i < info.ns; i++)
+ dscans[i].dc = 0;
+}
+
+int jpeg_decode(unsigned char *buf, unsigned char *pic, int x0, int x1, int y0, int y1, int color_bits)
+{
+ int i, j, m, tac, tdc;
+ int mcusx, mcusy, mx, my;
+ int max[6];
+ int width, height;
+ int mx0, mx1, my0, my1;
+
+ datap = buf;
+ if (getbyte() != 0xff)
+ return ERR_NO_SOI;
+ if (getbyte() != M_SOI)
+ return ERR_NO_SOI;
+ if (readtables(M_SOF0))
+ return ERR_BAD_TABLES;
+ if(info.dri) return ERR_WRONG_MARKER;
+
+ getword();
+ i = getbyte();
+ if (i != 8)
+ return ERR_NOT_8BIT;
+
+ height = getword();
+ width = getword();
+
+ info.nc = getbyte();
+ if (info.nc > MAXCOMP)
+ return ERR_TOO_MANY_COMPPS;
+ for (i = 0; i < info.nc; i++) {
+ int h, v;
+ comps[i].cid = getbyte();
+ comps[i].hv = getbyte();
+ v = comps[i].hv & 15;
+ h = comps[i].hv >> 4;
+ comps[i].tq = getbyte();
+ if (h > 3 || v > 3)
+ return ERR_ILLEGAL_HV;
+ if (comps[i].tq > 3)
+ return ERR_QUANT_TABLE_SELECTOR;
+ }
+ if (readtables(M_SOS))
+ return ERR_BAD_TABLES;
+ getword();
+ info.ns = getbyte();
+ if (info.ns != 3)
+ return ERR_NOT_YCBCR_221111;
+ for (i = 0; i < 3; i++) {
+ dscans[i].cid = getbyte();
+ tdc = getbyte();
+ tac = tdc & 15;
+ tdc >>= 4;
+ if (tdc > 1 || tac > 1)
+ return ERR_QUANT_TABLE_SELECTOR;
+ for (j = 0; j < info.nc; j++)
+ if (comps[j].cid == dscans[i].cid)
+ break;
+ if (j == info.nc)
+ return ERR_UNKNOWN_CID_IN_SCAN;
+ dscans[i].hv = comps[j].hv;
+ dscans[i].tq = comps[j].tq;
+ dscans[i].hudc.dhuff = dec_huffdc + tdc;
+ dscans[i].huac.dhuff = dec_huffac + tac;
+ }
+
+ i = getbyte();
+ j = getbyte();
+ m = getbyte();
+
+ if (i != 0 || j != 63 || m != 0)
+ return ERR_NOT_SEQUENTIAL_DCT;
+
+ if (dscans[0].cid != 1 || dscans[1].cid != 2 || dscans[2].cid != 3)
+ return ERR_NOT_YCBCR_221111;
+
+ if (dscans[0].hv != 0x22 || dscans[1].hv != 0x11 || dscans[2].hv != 0x11)
+ return ERR_NOT_YCBCR_221111;
+
+ mcusx = (width + 15) >> 4;
+ mcusy = (height + 15) >> 4;
+
+ mx0 = x0 >> 4;
+ my0 = y0 >> 4;
+
+ /* inclusive! */
+ mx1 = ((x1 + 15) >> 4) - 1;
+ my1 = ((y1 + 15) >> 4) - 1;
+
+ if(my1 < mcusy) mcusy = my1 + 1;
+
+ idctqtab(quant[dscans[0].tq], decdata.dquant[0]);
+ idctqtab(quant[dscans[1].tq], decdata.dquant[1]);
+ idctqtab(quant[dscans[2].tq], decdata.dquant[2]);
+ initcol(decdata.dquant);
+ setinput(&in);
+
+ dec_initscans();
+
+ dscans[0].next = 6 - 4;
+ dscans[1].next = 6 - 4 - 1;
+ dscans[2].next = 6 - 4 - 1 - 1; /* 411 encoding */
+ for (my = 0; my < mcusy; my++) {
+ for (mx = 0; mx < mcusx; mx++) {
+ decode_mcus(&in, decdata.dcts, 6, dscans, max);
+
+ if(
+ my >= my0 && my <= my1 &&
+ mx >= mx0 && mx <= mx1
+ ) {
+ int i0, i1, j0, j1, yofs;
+
+ idct(decdata.dcts, decdata.out, decdata.dquant[0], IFIX(128.5), max[0]);
+ idct(decdata.dcts + 64, decdata.out + 64, decdata.dquant[0], IFIX(128.5), max[1]);
+ idct(decdata.dcts + 128, decdata.out + 128, decdata.dquant[0], IFIX(128.5), max[2]);
+ idct(decdata.dcts + 192, decdata.out + 192, decdata.dquant[0], IFIX(128.5), max[3]);
+ idct(decdata.dcts + 256, decdata.out + 256, decdata.dquant[1], IFIX(0.5), max[4]);
+ idct(decdata.dcts + 320, decdata.out + 320, decdata.dquant[2], IFIX(0.5), max[5]);
+
+ // color_bits * 2: actually 16 * (color_bits / 8)
+ col221111(decdata.out, tmp_img, color_bits * 2, color_bits);
+
+ j0 = my == my0 ? y0 - 16 * my : 0;
+ j1 = my == my1 ? y1 - 16 * my : 16;
+ for(j = j0; j < j1; j++) {
+ yofs = (16 * my - y0 + j) * (x1 - x0);
+ i0 = mx == mx0 ? x0 - 16 * mx : 0;
+ i1 = mx == mx1 ? x1 - 16 * mx : 16;
+
+ switch(color_bits) {
+ case 8:
+ for(i = i0; i < i1; i++) {
+ *((unsigned char *) pic + 16 * mx - x0 + i + yofs) =
+ *((unsigned char *) tmp_img + 16 * j + i);
+ }
+ break;
+
+ case 16:
+ for(i = i0; i < i1; i++) {
+ *((unsigned short *) pic + 16 * mx - x0 + i + yofs) =
+ *((unsigned short *) tmp_img + 16 * j + i);
+ }
+ break;
+
+ case 32:
+ for(i = i0; i < i1; i++) {
+ *((unsigned *) pic + 16 * mx - x0 + i + yofs) =
+ *((unsigned *) tmp_img + 16 * j + i);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+/****************************************************************/
+/************** huffman decoder ***************/
+/****************************************************************/
+
+static int fillbits __P((struct in *, int, unsigned int));
+static int dec_rec2
+__P((struct in *, struct dec_hufftbl *, int *, int, int));
+
+static void setinput(in)
+struct in *in;
+{
+ in->left = 0;
+ in->bits = 0;
+ in->marker = 0;
+}
+
+static int fillbits(in, le, bi)
+struct in *in;
+int le;
+unsigned int bi;
+{
+ int b, m;
+
+ if (in->marker) {
+ if (le <= 16)
+ in->bits = bi << 16, le += 16;
+ return le;
+ }
+ while (le <= 24) {
+ b = getbyte();
+ if (b == 0xff && (m = getbyte()) != 0) {
+ in->marker = m;
+ if (le <= 16)
+ bi = bi << 16, le += 16;
+ break;
+ }
+ bi = bi << 8 | b;
+ le += 8;
+ }
+ in->bits = bi; /* tmp... 2 return values needed */
+ return le;
+}
+
+#define LEBI_DCL int le, bi
+#define LEBI_GET(in) (le = in->left, bi = in->bits)
+#define LEBI_PUT(in) (in->left = le, in->bits = bi)
+
+#define GETBITS(in, n) ( \
+ (le < (n) ? le = fillbits(in, le, bi), bi = in->bits : 0), \
+ (le -= (n)), \
+ bi >> le & ((1 << (n)) - 1) \
+)
+
+#define UNGETBITS(in, n) ( \
+ le += (n) \
+)
+
+
+static int dec_rec2(in, hu, runp, c, i)
+struct in *in;
+struct dec_hufftbl *hu;
+int *runp;
+int c, i;
+{
+ LEBI_DCL;
+
+ LEBI_GET(in);
+ if (i) {
+ UNGETBITS(in, i & 127);
+ *runp = i >> 8 & 15;
+ i >>= 16;
+ } else {
+ for (i = DECBITS; (c = ((c << 1) | GETBITS(in, 1))) >= (hu->maxcode[i]); i++);
+ if (i >= 16) {
+ in->marker = M_BADHUFF;
+ return 0;
+ }
+ i = hu->vals[hu->valptr[i] + c - hu->maxcode[i - 1] * 2];
+ *runp = i >> 4;
+ i &= 15;
+ }
+ if (i == 0) { /* sigh, 0xf0 is 11 bit */
+ LEBI_PUT(in);
+ return 0;
+ }
+ /* receive part */
+ c = GETBITS(in, i);
+ if (c < (1 << (i - 1)))
+ c += (-1 << i) + 1;
+ LEBI_PUT(in);
+ return c;
+}
+
+#define DEC_REC(in, hu, r, i) ( \
+ r = GETBITS(in, DECBITS), \
+ i = hu->llvals[r], \
+ i & 128 ? \
+ ( \
+ UNGETBITS(in, i & 127), \
+ r = i >> 8 & 15, \
+ i >> 16 \
+ ) \
+ : \
+ ( \
+ LEBI_PUT(in), \
+ i = dec_rec2(in, hu, &r, r, i), \
+ LEBI_GET(in), \
+ i \
+ ) \
+)
+
+static void decode_mcus(in, dct, n, sc, maxp)
+struct in *in;
+int *dct;
+int n;
+struct scan *sc;
+int *maxp;
+{
+ struct dec_hufftbl *hu;
+ int i, r, t;
+ LEBI_DCL;
+
+ memset(dct, 0, n * 64 * sizeof(*dct));
+ LEBI_GET(in);
+ while (n-- > 0) {
+ hu = sc->hudc.dhuff;
+ *dct++ = (sc->dc += DEC_REC(in, hu, r, t));
+
+ hu = sc->huac.dhuff;
+ i = 63;
+ while (i > 0) {
+ t = DEC_REC(in, hu, r, t);
+ if (t == 0 && r == 0) {
+ dct += i;
+ break;
+ }
+ dct += r;
+ *dct++ = t;
+ i -= r + 1;
+ }
+ *maxp++ = 64 - i;
+ if (n == sc->next)
+ sc++;
+ }
+ LEBI_PUT(in);
+}
+
+static void dec_makehuff(hu, hufflen, huffvals)
+struct dec_hufftbl *hu;
+int *hufflen;
+unsigned char *huffvals;
+{
+ int code, k, i, j, d, x, c, v;
+ for (i = 0; i < (1 << DECBITS); i++)
+ hu->llvals[i] = 0;
+
+/*
+ * llvals layout:
+ *
+ * value v already known, run r, backup u bits:
+ * vvvvvvvvvvvvvvvv 0000 rrrr 1 uuuuuuu
+ * value unknown, size b bits, run r, backup u bits:
+ * 000000000000bbbb 0000 rrrr 0 uuuuuuu
+ * value and size unknown:
+ * 0000000000000000 0000 0000 0 0000000
+ */
+ code = 0;
+ k = 0;
+ for (i = 0; i < 16; i++, code <<= 1) { /* sizes */
+ hu->valptr[i] = k;
+ for (j = 0; j < hufflen[i]; j++) {
+ hu->vals[k] = *huffvals++;
+ if (i < DECBITS) {
+ c = code << (DECBITS - 1 - i);
+ v = hu->vals[k] & 0x0f; /* size */
+ for (d = 1 << (DECBITS - 1 - i); --d >= 0;) {
+ if (v + i < DECBITS) { /* both fit in table */
+ x = d >> (DECBITS - 1 - v -
+ i);
+ if (v && x < (1 << (v - 1)))
+ x += (-1 << v) + 1;
+ x = x << 16 | (hu-> vals[k] & 0xf0) << 4 |
+ (DECBITS - (i + 1 + v)) | 128;
+ } else
+ x = v << 16 | (hu-> vals[k] & 0xf0) << 4 |
+ (DECBITS - (i + 1));
+ hu->llvals[c | d] = x;
+ }
+ }
+ code++;
+ k++;
+ }
+ hu->maxcode[i] = code;
+ }
+ hu->maxcode[16] = 0x20000; /* always terminate decode */
+}
+
+/****************************************************************/
+/************** idct ***************/
+/****************************************************************/
+
+#define ONE ((PREC)IFIX(1.))
+#define S2 ((PREC)IFIX(0.382683432))
+#define C2 ((PREC)IFIX(0.923879532))
+#define C4 ((PREC)IFIX(0.707106781))
+
+#define S22 ((PREC)IFIX(2 * 0.382683432))
+#define C22 ((PREC)IFIX(2 * 0.923879532))
+#define IC4 ((PREC)IFIX(1 / 0.707106781))
+
+#define C3IC1 ((PREC)IFIX(0.847759065)) /* c3/c1 */
+#define C5IC1 ((PREC)IFIX(0.566454497)) /* c5/c1 */
+#define C7IC1 ((PREC)IFIX(0.198912367)) /* c7/c1 */
+
+#define XPP(a,b) (t = a + b, b = a - b, a = t)
+#define XMP(a,b) (t = a - b, b = a + b, a = t)
+#define XPM(a,b) (t = a + b, b = b - a, a = t)
+
+#define ROT(a,b,s,c) ( t = IMULT(a + b, s), \
+ a = IMULT(a, c - s) + t, \
+ b = IMULT(b, c + s) - t)
+
+#define IDCT \
+( \
+ XPP(t0, t1), \
+ XMP(t2, t3), \
+ t2 = IMULT(t2, IC4) - t3, \
+ XPP(t0, t3), \
+ XPP(t1, t2), \
+ XMP(t4, t7), \
+ XPP(t5, t6), \
+ XMP(t5, t7), \
+ t5 = IMULT(t5, IC4), \
+ ROT(t4, t6, S22, C22),\
+ t6 -= t7, \
+ t5 -= t6, \
+ t4 -= t5, \
+ XPP(t0, t7), \
+ XPP(t1, t6), \
+ XPP(t2, t5), \
+ XPP(t3, t4) \
+)
+
+static unsigned char zig2[64] = {
+ 0, 2, 3, 9, 10, 20, 21, 35,
+ 14, 16, 25, 31, 39, 46, 50, 57,
+ 5, 7, 12, 18, 23, 33, 37, 48,
+ 27, 29, 41, 44, 52, 55, 59, 62,
+ 15, 26, 30, 40, 45, 51, 56, 58,
+ 1, 4, 8, 11, 19, 22, 34, 36,
+ 28, 42, 43, 53, 54, 60, 61, 63,
+ 6, 13, 17, 24, 32, 38, 47, 49
+};
+
+void idct(in, out, quant, off, max)
+int *in;
+int *out;
+PREC *quant;
+PREC off;
+int max;
+{
+ PREC t0, t1, t2, t3, t4, t5, t6, t7, t;
+ PREC tmp[64], *tmpp;
+ int i, j;
+ unsigned char *zig2p;
+
+ t0 = off;
+ if (max == 1) {
+ t0 += in[0] * quant[0];
+ for (i = 0; i < 64; i++)
+ out[i] = ITOINT(t0);
+ return;
+ }
+ zig2p = zig2;
+ tmpp = tmp;
+ for (i = 0; i < 8; i++) {
+ j = *zig2p++;
+ t0 += in[j] * quant[j];
+ j = *zig2p++;
+ t5 = in[j] * quant[j];
+ j = *zig2p++;
+ t2 = in[j] * quant[j];
+ j = *zig2p++;
+ t7 = in[j] * quant[j];
+ j = *zig2p++;
+ t1 = in[j] * quant[j];
+ j = *zig2p++;
+ t4 = in[j] * quant[j];
+ j = *zig2p++;
+ t3 = in[j] * quant[j];
+ j = *zig2p++;
+ t6 = in[j] * quant[j];
+ IDCT;
+ tmpp[0 * 8] = t0;
+ tmpp[1 * 8] = t1;
+ tmpp[2 * 8] = t2;
+ tmpp[3 * 8] = t3;
+ tmpp[4 * 8] = t4;
+ tmpp[5 * 8] = t5;
+ tmpp[6 * 8] = t6;
+ tmpp[7 * 8] = t7;
+ tmpp++;
+ t0 = 0;
+ }
+ for (i = 0; i < 8; i++) {
+ t0 = tmp[8 * i + 0];
+ t1 = tmp[8 * i + 1];
+ t2 = tmp[8 * i + 2];
+ t3 = tmp[8 * i + 3];
+ t4 = tmp[8 * i + 4];
+ t5 = tmp[8 * i + 5];
+ t6 = tmp[8 * i + 6];
+ t7 = tmp[8 * i + 7];
+ IDCT;
+ out[8 * i + 0] = ITOINT(t0);
+ out[8 * i + 1] = ITOINT(t1);
+ out[8 * i + 2] = ITOINT(t2);
+ out[8 * i + 3] = ITOINT(t3);
+ out[8 * i + 4] = ITOINT(t4);
+ out[8 * i + 5] = ITOINT(t5);
+ out[8 * i + 6] = ITOINT(t6);
+ out[8 * i + 7] = ITOINT(t7);
+ }
+}
+
+static unsigned char zig[64] = {
+ 0, 1, 5, 6, 14, 15, 27, 28,
+ 2, 4, 7, 13, 16, 26, 29, 42,
+ 3, 8, 12, 17, 25, 30, 41, 43,
+ 9, 11, 18, 24, 31, 40, 44, 53,
+ 10, 19, 23, 32, 39, 45, 52, 54,
+ 20, 22, 33, 38, 46, 51, 55, 60,
+ 21, 34, 37, 47, 50, 56, 59, 61,
+ 35, 36, 48, 49, 57, 58, 62, 63
+};
+
+static PREC aaidct[8] = {
+ IFIX(0.3535533906), IFIX(0.4903926402),
+ IFIX(0.4619397663), IFIX(0.4157348062),
+ IFIX(0.3535533906), IFIX(0.2777851165),
+ IFIX(0.1913417162), IFIX(0.0975451610)
+};
+
+
+static void idctqtab(qin, qout)
+unsigned char *qin;
+PREC *qout;
+{
+ int i, j;
+
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < 8; j++)
+ qout[zig[i * 8 + j]] = qin[zig[i * 8 + j]] *
+ IMULT(aaidct[i], aaidct[j]);
+}
+
+static void scaleidctqtab(q, sc)
+PREC *q;
+PREC sc;
+{
+ int i;
+
+ for (i = 0; i < 64; i++)
+ q[i] = IMULT(q[i], sc);
+}
+
+/****************************************************************/
+/************** color decoder ***************/
+/****************************************************************/
+
+/*
+ * YCbCr Color transformation:
+ *
+ * y:0..255 Cb:-128..127 Cr:-128..127
+ *
+ * R = Y + 1.40200 * Cr
+ * G = Y - 0.34414 * Cb - 0.71414 * Cr
+ * B = Y + 1.77200 * Cb
+ *
+ * =>
+ * Cr *= 1.40200;
+ * Cb *= 1.77200;
+ * Cg = 0.19421 * Cb + .50937 * Cr;
+ * R = Y + Cr;
+ * G = Y - Cg;
+ * B = Y + Cb;
+ *
+ * =>
+ * Cg = (50 * Cb + 130 * Cr + 128) >> 8;
+ */
+
+static void initcol(q)
+PREC q[][64];
+{
+ scaleidctqtab(q[1], IFIX(1.77200));
+ scaleidctqtab(q[2], IFIX(1.40200));
+}
+
+/* This is optimized for the stupid sun SUNWspro compiler. */
+#define STORECLAMP(a,x) \
+( \
+ (a) = (x), \
+ (unsigned int)(x) >= 256 ? \
+ ((a) = (x) < 0 ? 0 : 255) \
+ : \
+ 0 \
+)
+
+#define CLAMP(x) ((unsigned int)(x) >= 256 ? ((x) < 0 ? 0 : 255) : (x))
+
+#define CBCRCG(xin) \
+( \
+ cb = outc[0 + xin], \
+ cr = outc[64 + xin], \
+ cg = (50 * cb + 130 * cr + 128) >> 8 \
+)
+
+#define PIC(yin, xin, p, xout) \
+( \
+ y = outy[(yin) * 8 + xin], \
+ STORECLAMP(p[(xout) * 4 + 0], y + cb), \
+ STORECLAMP(p[(xout) * 4 + 1], y - cg), \
+ STORECLAMP(p[(xout) * 4 + 2], y + cr) \
+)
+
+#define PIC221111x(xin, xin_4, xin_3) \
+( \
+ CBCRCG(xin), \
+ PIC(xin_4 + 0, xin_3 + 0, pic0, xin * 2 + 0), \
+ PIC(xin_4 + 0, xin_3 + 1, pic0, xin * 2 + 1), \
+ PIC(xin_4 + 1, xin_3 + 0, pic1, xin * 2 + 0), \
+ PIC(xin_4 + 1, xin_3 + 1, pic1, xin * 2 + 1) \
+)
+
+#define PIC_16(yin, xin, p, xout, add) \
+( \
+ y = outy[(yin) * 8 + xin], \
+ *(unsigned short *) (p + (xout) * 2) = store_16(CLAMP(y + cr), CLAMP(y - cg), CLAMP(y + cb), add) \
+)
+
+#define PIC221111_16x(xin, xin_4, xin_3) \
+( \
+ CBCRCG(xin), \
+ PIC_16(xin_4 + 0, xin_3 + 0, pic0, xin * 2 + 0, 3 * 0x55), \
+ PIC_16(xin_4 + 0, xin_3 + 1, pic0, xin * 2 + 1, 0 * 0x55), \
+ PIC_16(xin_4 + 1, xin_3 + 0, pic1, xin * 2 + 0, 1 * 0x55), \
+ PIC_16(xin_4 + 1, xin_3 + 1, pic1, xin * 2 + 1, 2 * 0x55) \
+)
+
+#define PIC_8(yin, xin, p, xout, add) \
+( \
+ y = outy[(yin) * 8 + xin], \
+ p[(xout)] = store_8(CLAMP(y + cr), CLAMP(y - cg), CLAMP(y + cb), add) \
+)
+
+#define PIC221111_8x(xin, xin_4, xin_3) \
+( \
+ CBCRCG(xin), \
+ PIC_8(xin_4 + 0, xin_3 + 0, pic0, xin * 2 + 0, 3 * 0x55), \
+ PIC_8(xin_4 + 0, xin_3 + 1, pic0, xin * 2 + 1, 0 * 0x55), \
+ PIC_8(xin_4 + 1, xin_3 + 0, pic1, xin * 2 + 0, 1 * 0x55), \
+ PIC_8(xin_4 + 1, xin_3 + 1, pic1, xin * 2 + 1, 2 * 0x55) \
+)
+
+
+static unsigned store_16(unsigned r, unsigned g, unsigned b, unsigned add)
+{
+ unsigned rgb;
+
+ rgb = (((r << 5) - r + add) >> 8) << 11;
+ rgb += (((g << 6) - g + add) >> 8) << 5;
+ rgb += ((b << 5) - b + add) >> 8;
+
+ return rgb;
+}
+
+static unsigned store_8(unsigned r, unsigned g, unsigned b, unsigned add)
+{
+ unsigned rgb;
+
+#if 0
+ r = ((r << 2) - r + add) >> 8;
+ g = ((g << 3) - g + add) >> 8;
+ b = ((b << 3) - b + add) >> 8;
+
+ rgb = (r << 6) + (g << 3) + b;
+#endif
+
+ rgb = (((r << 2) - r + add) >> 8) << 6;
+ rgb += (((g << 3) - g + add) >> 8) << 3;
+ rgb += ((b << 3) - b + add) >> 8;
+
+ return rgb;
+}
+
+static void col221111(int *out, unsigned char *pic, int width, int bits)
+{
+ int i, j, k, k_4, k_3;
+ unsigned char *pic0, *pic1;
+ int *outy, *outc;
+ int cr, cg, cb, y;
+
+ pic0 = pic;
+ pic1 = pic + width;
+ outy = out;
+ outc = out + 64 * 4;
+ for(i = 2; i > 0; i--) {
+ for(j = 4; j > 0; j--) {
+ for(k = 0; k < 8; k++) {
+ k_4 = (k >> 2) << 3;
+ k_3 = (k & 3) << 1;
+ switch(bits) {
+ case 8:
+ PIC221111_8x(k, k_4, k_3);
+ break;
+ case 16:
+ PIC221111_16x(k, k_4, k_3);
+ break;
+ case 32:
+ PIC221111x(k, k_4, k_3);
+ break;
+ }
+ }
+ outc += 8;
+ outy += 16;
+ pic0 += 2 * width;
+ pic1 += 2 * width;
+ }
+ outy += 64 * 2 - 16 * 4;
+ }
+}
+
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+unsigned jpeg_get_size(unsigned char *buf)
+{
+ unsigned u;
+
+ datap = buf;
+ getbyte(); getbyte();
+ if(readtables(M_SOF0)) return 0;
+ getword(); getbyte();
+
+ u = getword() << 16;
+ u += getword();
+
+ return u;
+}
+
diff --git a/jpg/jpg.h b/jpg/jpg.h
new file mode 100644
index 0000000..b730943
--- /dev/null
+++ b/jpg/jpg.h
@@ -0,0 +1,2 @@
+int jpeg_decode(unsigned char *jpg, unsigned char *img, int x_0, int x_1, int y_0, int y_1, int color_bits);
+unsigned jpeg_get_size(unsigned char *buf);
diff --git a/jpg/test1.jpg b/jpg/test1.jpg
new file mode 100644
index 0000000..1a69e73
--- /dev/null
+++ b/jpg/test1.jpg
Binary files differ
diff --git a/jpg/test2.jpg b/jpg/test2.jpg
new file mode 100644
index 0000000..650bfaf
--- /dev/null
+++ b/jpg/test2.jpg
Binary files differ
diff --git a/jpg/test3.jpg b/jpg/test3.jpg
new file mode 100644
index 0000000..28c2773
--- /dev/null
+++ b/jpg/test3.jpg
Binary files differ
diff --git a/jpg/test4.jpg b/jpg/test4.jpg
new file mode 100644
index 0000000..c889f3b
--- /dev/null
+++ b/jpg/test4.jpg
Binary files differ
diff --git a/jpg/z2.c b/jpg/z2.c
new file mode 100644
index 0000000..a7c7741
--- /dev/null
+++ b/jpg/z2.c
@@ -0,0 +1,160 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "jpg.h"
+
+int main(int argc, char **argv)
+{
+ int fd, i, width, height;
+ unsigned char *jpg = malloc(1 << 20);
+ unsigned char *img, *p;
+ unsigned char pixel[3];
+ unsigned x, z;
+ unsigned x0, x1, y0, y1;
+ unsigned bits = 0;
+
+ if(argc < 4) return 1;
+
+ if(!strcmp(argv[1], "--8")) {
+ bits = 8;
+ }
+
+ if(!strcmp(argv[1], "--16")) {
+ bits = 16;
+ }
+
+ if(!strcmp(argv[1], "--24")) {
+ bits = 24;
+ }
+
+ if(!strcmp(argv[1], "--32")) {
+ bits = 32;
+ }
+
+ if(!bits) return 10;
+
+ fd = open(argv[2], O_RDONLY);
+
+ if(fd == -1) return 2;
+
+ i = read(fd, jpg, 1 << 20);
+
+ if(i < 0) return 3;
+
+ close(fd);
+
+ jpg = realloc(jpg, i);
+
+ x = jpeg_get_size(jpg);
+
+ width = x & 0xffff;
+ height = x >> 16;
+
+ fprintf(stderr, "size = %d bytes, width = %d, height = %d\n", i, width, height);
+
+ img = malloc(width * height * 4);
+
+ x0 = 0;
+ x1 = width;
+ y0 = 0;
+ y1 = height;
+
+ i = jpeg_decode(jpg, img, x0, x1, y0, y1, bits);
+
+ width = x1 - x0;
+ height = y1 - y0;
+
+ fprintf(stderr, "decode = %d\n", i);
+
+ fprintf(stderr,
+ "%02x %02x %02x %02x %02x %02x %02x %02x\n",
+ img[0], img[1], img[2], img[3],
+ img[4], img[5], img[6], img[7]
+ );
+
+ if(argc >= 3) {
+
+ fd = open(argv[3], O_WRONLY | O_CREAT | O_TRUNC, 0644);
+
+ if(fd >= 0) {
+ char *s = NULL;
+
+ i = asprintf(&s, "P6\n%d %d\n255\n", width, height);
+ if(i > 0) write(fd, s, i);
+
+ free(s);
+
+ switch(bits) {
+ case 8:
+ for(i = 0, p = img; i < width * height; i++) {
+ x = *p++;
+ // 2 3 3
+
+ z = x >> (4 + 2);
+ pixel[0] = z * 0x55;
+
+ z = (x >> 3) & 0x07;
+ pixel[1] = z * 0x24 + (z >> 1);
+
+ z = x & 0x7;
+ pixel[2] = z * 0x24 + (z >> 1);
+
+ write(fd, &pixel, 3);
+ }
+ break;
+
+ case 16:
+ for(i = 0, p = img; i < width * height; i++) {
+ x = p[0] + (p[1] << 8);
+ p += 2;
+
+ // 5 6 5
+
+ pixel[0] = ((x >> 11) & 0x1f) << 3;
+ pixel[0] += pixel[0] >> 5;
+ pixel[1] = ((x >> 5) & 0x3f) << 2;
+ pixel[1] += pixel[1] >> 6;
+ pixel[2] = (x & 0x1f) << 3;
+ pixel[2] += pixel[2] >> 5;
+
+ write(fd, &pixel, 3);
+ }
+ break;
+
+ case 24:
+ for(i = 0, p = img; i < width * height; i++) {
+ pixel[2] = *p++;
+ pixel[1] = *p++;
+ pixel[0] = *p++;
+
+ write(fd, &pixel, 3);
+ }
+ break;
+
+ case 32:
+ for(i = 0, p = img; i < width * height; i++) {
+ pixel[2] = *p++;
+ pixel[1] = *p++;
+ pixel[0] = *p++;
+ p++;
+
+ write(fd, &pixel, 3);
+ }
+ break;
+
+ }
+
+ close(fd);
+ }
+ }
+
+ return 0;
+}
+
+
diff --git a/mk_vocabulary b/mk_vocabulary
index 102d05e..47808f0 100755
--- a/mk_vocabulary
+++ b/mk_vocabulary
@@ -17,7 +17,7 @@
trace dtrace
malloc free realloc memsize dumpmem
gettype settype
- screen.size image.colors vscreen.size monitorsize displaysizes
+ screen.size image.colors vscreen.size monitorsize displaysizes screen.framebuffer
moveto currentpoint lineto setcolor currentcolor putpixel getpixel
setfont currentfont fontheight strsize show settextmodecolor
image loadpalette setpalette getpalette
diff --git a/test/menu/gfxtest.config b/test/menu/gfxtest.config
new file mode 100644
index 0000000..2590441
--- /dev/null
+++ b/test/menu/gfxtest.config
@@ -0,0 +1,15 @@
+# all files in this directory ex this config file are added
+# to the bootloader directory
+
+# archive file name in theme directory
+archive=bootlogo
+
+# setup function name in 'gfxtest' script
+setup=isolinux
+
+# list of files to remove in bootloader directory
+rm_files=""
+
+# additional 'gfxboot' args
+args=""
+
diff --git a/test/menu/isolinux.cfg b/test/menu/isolinux.cfg
new file mode 100644
index 0000000..55b303d
--- /dev/null
+++ b/test/menu/isolinux.cfg
@@ -0,0 +1,77 @@
+default harddisk
+
+# hard disk
+label harddisk
+ localboot -2
+
+# install
+label linux
+ kernel linux
+ append initrd=initrd splash=silent showopts
+
+# upgrade
+label upgrade
+ kernel linux
+ append initrd=initrd splash=silent upgrade=1 showopts
+
+# submenu1
+label submenu1
+ menu label My Sub Menu 1
+ append ->1
+
+# submenu2
+label submenu2
+ menu label My Sub Menu 2
+ append ->2
+
+label xxx11
+ menu label ->1 Sub Menu 1 Item #1
+ kernel linux
+ append initrd=initrd splash=silent showopts sub=1.1
+
+# submenu
+label xxx12
+ menu label ->1 Sub Menu 1 Item #2
+ kernel linux
+ append initrd=initrd splash=silent showopts sub=1.2
+
+# submenu
+label xxx13
+ menu label ->1 Sub Menu 1 Item #3
+ kernel linux
+ append initrd=initrd splash=silent showopts sub=1.3
+
+label rescue
+ kernel linux
+ append initrd=initrd splash=silent showopts rescue=1
+
+# memory test
+label memtest
+ kernel memtest
+
+# submenu2
+label submenu2
+ menu label ->1 My Sub Menu 2
+ append ->2
+
+label xxx21
+ menu label ->2 Sub Menu 2 Item #1
+ kernel linux
+ append initrd=initrd splash=silent showopts sub=2.1
+
+# submenu1
+label submenu1
+ menu label ->2 My Sub Menu 1
+ append ->1
+
+# submenu
+label xxx22
+ menu label ->2 Sub Menu 2 Item #2
+ kernel linux
+ append initrd=initrd splash=silent showopts sub=2.2
+
+
+ui gfxboot bootlogo message
+implicit 1
+prompt 1
+timeout 600
diff --git a/themes/example_01/Makefile b/themes/example_01/Makefile
index a3d1be4..c54659d 100644
--- a/themes/example_01/Makefile
+++ b/themes/example_01/Makefile
@@ -12,6 +12,7 @@ bootlogo: example_*.bc
@rm -rf $@.dir
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
clean:
diff --git a/themes/example_02/Makefile b/themes/example_02/Makefile
index c0d551d..5eb150c 100644
--- a/themes/example_02/Makefile
+++ b/themes/example_02/Makefile
@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp font.fnt $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
font:
diff --git a/themes/example_03/Makefile b/themes/example_03/Makefile
index 4e18e35..2c7de7c 100644
--- a/themes/example_03/Makefile
+++ b/themes/example_03/Makefile
@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp clouds.jpg font.fnt $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
font:
diff --git a/themes/example_04/Makefile b/themes/example_04/Makefile
index e54c817..b3bcd70 100644
--- a/themes/example_04/Makefile
+++ b/themes/example_04/Makefile
@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp clouds.jpg font.fnt $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
font:
diff --git a/themes/example_05/Makefile b/themes/example_05/Makefile
index e54c817..b3bcd70 100644
--- a/themes/example_05/Makefile
+++ b/themes/example_05/Makefile
@@ -13,6 +13,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp clouds.jpg font.fnt $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
font:
diff --git a/themes/example_06/Makefile b/themes/example_06/Makefile
index 0a3c7cd..88c0b08 100644
--- a/themes/example_06/Makefile
+++ b/themes/example_06/Makefile
@@ -16,6 +16,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp $(FILES) $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
@ln -snf bootlogo message
diff --git a/themes/example_07/Makefile b/themes/example_07/Makefile
index 0a3c7cd..88c0b08 100644
--- a/themes/example_07/Makefile
+++ b/themes/example_07/Makefile
@@ -16,6 +16,7 @@ bootlogo: example_*.bc font
@mkdir $@.dir
$(GFXBOOT_COMPILE) $(BFLAGS) -l $@.log -c $< $@.dir/init
@cp $(FILES) $@.dir
+ touch --reference Makefile $@.dir/*
$(GFXBOOT) --archive $@.dir --pack-archive $@
@ln -snf bootlogo message
diff --git a/themes/openSUSE/Makefile b/themes/openSUSE/Makefile
index 3a71f9b..547614e 100644
--- a/themes/openSUSE/Makefile
+++ b/themes/openSUSE/Makefile
@@ -49,14 +49,15 @@ bootlogo: src/main.bin src/gfxboot.cfg help-install/.ready po/.ready fonts/.read
perl -p -e 's/^(layout=.*)/$$1,install/' src/gfxboot.cfg >bootlogo.dir/gfxboot.cfg
perl -pi -e 's/^(theme=).*/$$1$(THEME)/' bootlogo.dir/gfxboot.cfg
perl -pi -e 's/^(product=).*/$$1$(PRODUCT)/' bootlogo.dir/gfxboot.cfg
+ perl -pi -e 's/^(mainmenu.title=).*/$$1$(PRODUCT)/' bootlogo.dir/gfxboot.cfg
cp -rL data-install/* fonts/*.fnt po/*.tr bootlogo.dir
cp -rL help-install/*.hlp bootlogo.dir
cp src/main.bin bootlogo.dir/init
ifdef DEFAULT_LANG
@echo $(DEFAULT_LANG) >bootlogo.dir/lang
endif
- @sh -c 'cd bootlogo.dir; chmod +t * ; chmod -t init languages'
- @sh -c 'cd bootlogo.dir; echo * | sed -e "s/ /\n/g" | cpio --quiet -o >../bootlogo'
+ @sh -c 'cd bootlogo.dir; chmod +t * ; chmod -t init languages ; touch -r ../src/main.bc *'
+ @sh -c 'cd bootlogo.dir; echo * | sed -e "s/ /\n/g" | cpio --quiet --reproducible --owner=+0:+0 -o >../bootlogo'
message: src/main.bin src/gfxboot.cfg help-boot/.ready po/.ready fonts/.ready
@rm -rf message.dir
@@ -71,7 +72,8 @@ ifdef DEFAULT_LANG
@echo $(DEFAULT_LANG) >message.dir/lang
@echo $(DEFAULT_LANG) >>message.dir/languages
endif
- @sh -c 'cd message.dir; echo * | sed -e "s/ /\n/g" | cpio --quiet -o >../message'
+ @sh -c 'cd message.dir; touch -r ../src/main.bc *'
+ @sh -c 'cd message.dir; echo * | sed -e "s/ /\n/g" | cpio --quiet --reproducible --owner=+0:+0 -o >../message'
clean:
@for i in $(SUBDIRS) ; do [ ! -f $$i/Makefile ] || make -C $$i clean || break ; done
diff --git a/themes/openSUSE/data-install/en.tlk b/themes/openSUSE/data-install/en.tlk
index 62e85cc..3d7e236 100644
--- a/themes/openSUSE/data-install/en.tlk
+++ b/themes/openSUSE/data-install/en.tlk
Binary files differ
diff --git a/themes/openSUSE/data-install/glow.jpg b/themes/openSUSE/data-install/glow.jpg
new file mode 100644
index 0000000..69fc4d4
--- /dev/null
+++ b/themes/openSUSE/data-install/glow.jpg
Binary files differ
diff --git a/themes/openSUSE/data-install/languages b/themes/openSUSE/data-install/languages
index 6c4008c..5ede3a6 100644
--- a/themes/openSUSE/data-install/languages
+++ b/themes/openSUSE/data-install/languages
@@ -26,6 +26,7 @@ it_IT
he_IL
ja_JP
jv_ID
+kk_KZ
km_KH
ko_KR
ky_KG
diff --git a/themes/openSUSE/data-install/off.jpg b/themes/openSUSE/data-install/off.jpg
new file mode 100644
index 0000000..7f4dc70
--- /dev/null
+++ b/themes/openSUSE/data-install/off.jpg
Binary files differ
diff --git a/themes/openSUSE/data-install/on.jpg b/themes/openSUSE/data-install/on.jpg
new file mode 100644
index 0000000..19947e1
--- /dev/null
+++ b/themes/openSUSE/data-install/on.jpg
Binary files differ
diff --git a/themes/openSUSE/fonts/16x16.fnt b/themes/openSUSE/fonts/16x16.fnt
index 628d0d5..3304048 100644
--- a/themes/openSUSE/fonts/16x16.fnt
+++ b/themes/openSUSE/fonts/16x16.fnt
Binary files differ
diff --git a/themes/openSUSE/fonts/16x16.fnt.log b/themes/openSUSE/fonts/16x16.fnt.log
index a909d6e..25744c3 100644
--- a/themes/openSUSE/fonts/16x16.fnt.log
+++ b/themes/openSUSE/fonts/16x16.fnt.log
@@ -1,13 +1,13 @@
Font List
- #0 NachlieliCLM-Bold (ok)
- File /usr/share/fonts/Type1/NachlieliCLM-Bold.pfa
+ #0 NachlieliCLM-Light (ok)
+ File /usr/share/fonts/truetype/NachlieliCLM-Light.otf
Size 14
Height 9, Baseline 1
c 0x0590-0x05ff
- #1 KacstBook (ok)
- File /usr/share/fonts/truetype/KacstBook.ttf
- Size 12, dY 2
- Height 18, Baseline 3
+ #1 NotoNaskhArabic-Regular (ok)
+ File /usr/share/fonts/truetype/NotoNaskhArabic-Regular.ttf
+ Size 13, dY 2
+ Height 18, Baseline 4
c 0x0600-0x06ff
c 0xfe70-0xfefc
#2 MuktiNarrow (ok)
@@ -15,20 +15,20 @@ Font List
Size 18
Height 13, Baseline 0
c 0x0981-0x09fa
- #3 lohit_hi (ok)
- File /usr/share/fonts/truetype/lohit_hi.ttf
- Size 16
- Height 18, Baseline 3
- c 0x0901-0x0970
- #4 lohit_pa (ok)
- File /usr/share/fonts/truetype/lohit_pa.ttf
+ #3 Lohit-Devanagari (ok)
+ File /usr/share/fonts/truetype/Lohit-Devanagari.ttf
Size 15
Height 19, Baseline 4
+ c 0x0901-0x0970
+ #4 Lohit-Punjabi (ok)
+ File /usr/share/fonts/truetype/Lohit-Punjabi.ttf
+ Size 14
+ Height 18, Baseline 4
c 0x0a01-0x0a74
- #5 lohit_gu (ok)
- File /usr/share/fonts/truetype/lohit_gu.ttf
- Size 15
- Height 17, Baseline 4
+ #5 Lohit-Gujarati (ok)
+ File /usr/share/fonts/truetype/Lohit-Gujarati.ttf
+ Size 15, dY 1
+ Height 19, Baseline 4
c 0x0a81-0x0af1
#6 TSCu_Paranar (ok)
File /usr/share/fonts/truetype/TSCu_Paranar.ttf
@@ -38,12 +38,12 @@ Font List
#7 lklug (ok)
File /usr/share/fonts/truetype/lklug.ttf
Size 17, dY 1
- Height 19, Baseline 4
+ Height 18, Baseline 3
c 0x0d82-0x0df4
#8 Loma (ok)
File /usr/share/fonts/truetype/Loma.ttf
Size 13
- Height 18, Baseline 3
+ Height 17, Baseline 3
c 0x0e01-0x0e7f
#9 Loma (ok)
File /usr/share/fonts/truetype/Loma.ttf
@@ -55,15 +55,19 @@ Font List
Size 16, dY -2
Height 0, Baseline 0
c 0x1780-0x17f9
- #11 DejaVuSans-Bold (ok)
- File /usr/share/fonts/truetype/DejaVuSans-Bold.ttf
+ #11 DejaVuSans (ok)
+ File /usr/share/fonts/truetype/DejaVuSans.ttf
Size 14
- Height 18, Baseline 4
- #12 FZHeiTi (ok)
- File /usr/share/fonts/truetype/FZHeiTi.ttf
+ Height 19, Baseline 4
+ #12 ipag (ok)
+ File /usr/share/fonts/truetype/ipag.ttf
Size 17
- Height 18, Baseline 3
- #13 gulim (ok)
+ Height 17, Baseline 2
+ #13 uming (ok)
+ File /usr/share/fonts/truetype/uming.ttc
+ Size 17
+ Height 17, Baseline 2
+ #14 gulim (ok)
File /usr/share/fonts/truetype/gulim.ttf
Size 17
Height 16, Baseline 3
@@ -72,67 +76,339 @@ Missing Chars
0x0008-0x000a
0x001b-0x001c
0x0080-0x009f
- 0x2029
Top Chars
- 0x064b
- 0x0908
+ 0x013a
0x0913-0x0914
- 0x093f-0x0940
0x0947-0x0948
0x094b-0x094c
- 0x0a10
- 0x0a48
- 0x0a4c
- 0x0a70-0x0a71
+ 0x0a82
+ 0x0a8f
+ 0x0a93
+ 0x0abf-0x0ac0
+ 0x0ac7-0x0ac8
+ 0x0acb
0x0bc0
0x0bc2
0x0bcd
0x0dd2
- 0x0e4a
- 0x2558
- 0x255a-0x255b
- 0x255d
- 0x2567
- 0x2569
- 0x256c
+ 0x304c
0x305a
- 0x3073
- 0x30b2
- 0x30c0
- 0x30dd
- 0x4ee4
+ 0x3070
+ 0x30ba
+ 0x30c7
+ 0x30d7
+ 0x4e13
+ 0x4eae
+ 0x4ec5
+ 0x4ef6
+ 0x4efd
+ 0x4f3c
+ 0x4f4e
+ 0x4f7f
+ 0x4f86
+ 0x503c
+ 0x50a8
+ 0x50c5
+ 0x5132
0x5148
- 0x5617
- 0x5831
+ 0x5173
+ 0x5176
+ 0x51b3
+ 0x51bb
+ 0x51c6
+ 0x5219
+ 0x5224
+ 0x5236
+ 0x5272
+ 0x52a1
+ 0x52a8-0x52a9
+ 0x52b9
+ 0x534f
+ 0x5354-0x5355
+ 0x5361
+ 0x53c2
+ 0x53d1
+ 0x53d8
+ 0x53e6
+ 0x5404
+ 0x542f
+ 0x54cd
+ 0x555f
+ 0x56fe
+ 0x5728
+ 0x5757
+ 0x57df
+ 0x57fa
+ 0x5834
+ 0x586b
0x58ca
- 0x66ab
+ 0x5904
+ 0x5907
+ 0x591a
+ 0x591f
+ 0x5931
+ 0x5934
+ 0x597d
+ 0x59cb
+ 0x5b57-0x5b58
+ 0x5b89
+ 0x5b8c
+ 0x5b9a
+ 0x5b9e-0x5b9f
+ 0x5bc6
+ 0x5be6
+ 0x5beb
+ 0x5bf9
+ 0x5bfc
+ 0x5c07
+ 0x5c31
+ 0x5e0c
+ 0x5e26
+ 0x5e7e
+ 0x5e95
+ 0x5f0f
+ 0x5f20
+ 0x5f55
+ 0x5f8c
+ 0x5f97
+ 0x5fdc
+ 0x6001
+ 0x6027
+ 0x60c5
+ 0x610f
+ 0x614b
+ 0x61b6
+ 0x61c9
+ 0x6216
+ 0x6218
+ 0x6226
+ 0x6236-0x6237
+ 0x6267
+ 0x626b
+ 0x627e
+ 0x629e
+ 0x62bc
+ 0x62e9
+ 0x62ec
+ 0x6307
+ 0x6309
+ 0x633f
+ 0x635f
+ 0x6362
+ 0x636e
+ 0x6372
+ 0x6383
+ 0x63a5
+ 0x63a7
+ 0x63a9
+ 0x63cf-0x63d0
+ 0x63d2
+ 0x63db
+ 0x63f4
+ 0x640d
+ 0x641c
+ 0x643a
+ 0x64c7
+ 0x64cd
+ 0x64d4
+ 0x64da
+ 0x652f
+ 0x6551
+ 0x6578
+ 0x65b0
+ 0x65bd
+ 0x65f6
+ 0x663e
+ 0x6642
+ 0x665a
+ 0x6682
0x6703
- 0x6e96
+ 0x6709
+ 0x671f
+ 0x672a
+ 0x673a
+ 0x6765
+ 0x6784
+ 0x6790
+ 0x6807
+ 0x6837-0x6839
+ 0x683c
+ 0x684c
+ 0x68c0
+ 0x691c
+ 0x696d
+ 0x69cb
+ 0x69d8
+ 0x6a19
+ 0x6a21
+ 0x6a5f
+ 0x6a94
+ 0x6aa2
+ 0x6b61
+ 0x6c7a
+ 0x6d4b
+ 0x6d4f
+ 0x6d88
+ 0x6dc6
+ 0x6e05
+ 0x6e08
+ 0x6eda
+ 0x7063
+ 0x70b9
+ 0x719f
+ 0x7279
+ 0x72c0
+ 0x7372
+ 0x7387
+ 0x751a
+ 0x751f
+ 0x7522
+ 0x7565
+ 0x756b
0x7576
- 0x7981
+ 0x76d1
+ 0x76d8
+ 0x76f8
+ 0x77e2
+ 0x77e5
+ 0x77ed
+ 0x786e
+ 0x789f
+ 0x78b0
+ 0x78c1
+ 0x79fb
+ 0x7a0d
+ 0x7a7a
+ 0x7aef
+ 0x7b2c
+ 0x7b46
+ 0x7b49
+ 0x7b56
+ 0x7b80
+ 0x7b97
+ 0x7ba1
+ 0x7bad
+ 0x7bc4
+ 0x7c7b
+ 0x7d20
+ 0x7d22
+ 0x7d30
+ 0x7d71
+ 0x7dad
+ 0x7dd2
+ 0x7df4
+ 0x7e41
+ 0x7e6a
+ 0x7e7c
0x7e8c
+ 0x7ed5
+ 0x7edf
+ 0x7eed
+ 0x7f16
+ 0x7f3a
+ 0x7fa9
+ 0x8003
+ 0x8005
+ 0x8054
+ 0x81ea
+ 0x8207
0x820a
- 0x8655
- 0x87a2
- 0x8a9e
+ 0x8272
+ 0x83b7
+ 0x865f
+ 0x88c5
+ 0x88fd
+ 0x8996
+ 0x89bd
+ 0x89c6
+ 0x89c8-0x89c9
+ 0x8a66
+ 0x8aaa
+ 0x8acb
+ 0x8ba1
+ 0x8bb8
+ 0x8bbe
+ 0x8bd5
+ 0x8be5
+ 0x8bed
+ 0x8bef
+ 0x8bf4
+ 0x8bf7
+ 0x8bfb
+ 0x8ca0
+ 0x8cc7
0x8cf4
+ 0x8d1f
+ 0x8d23
+ 0x8d56
+ 0x8def
0x8edf
- 0x9a57
+ 0x8f03
+ 0x8f09
+ 0x8f2f
+ 0x8f38
+ 0x8f6c
+ 0x8f91
+ 0x8f93
+ 0x8fa8
+ 0x9009
+ 0x9023
+ 0x9053
+ 0x9055
+ 0x9060
+ 0x907f
+ 0x90e8
+ 0x90fd
+ 0x9375
+ 0x94fe
+ 0x9519
+ 0x952e
+ 0x95b1
+ 0x9665
+ 0x968f
+ 0x96e2
+ 0x9752
+ 0x97cc
+ 0x9879
+ 0x987b
+ 0x9884
+ 0x9891
+ 0x9898
+ 0x9a8c
+ 0x9ad4
+ 0xff08-0xff09
Bottom Chars
+ 0x064a
+ 0x0941-0x0943
0x0a0a
0x0a42
- 0x0a4d
- 0x0ac1-0x0ac3
- 0x0acd
+ 0x0ac1
+ 0x0ac3
0x0b86
- 0x0dbd
+ 0x10d2-0x10d5
+ 0x10d9-0x10da
+ 0x10df
+ 0x10e2-0x10e5
+ 0x10e7
+ 0x10ea
0x2320-0x2321
+ 0x2502
+ 0x250c
+ 0x2510
+ 0x251c
+ 0x2524
+ 0x252c
+ 0x253c
+ 0x2551-0x2557
+ 0x255e-0x2566
+ 0x256a-0x256c
0x2584
0x2588
0x258c
0x2590-0x2593
+ 0xfef2
Font Size
Height: 19
@@ -140,34 +416,34 @@ Font Size
Line Height: 18
Char 0x0020 ' '
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 0 x 0
- Advance: 5
+ Advance: 4
Offset: 0 x 0
- _____
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- ->|.....|<-
- |.....|
- |.....|
- |.....|
- |.....|
- -----
+ ____
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ ->|....|<-
+ |....|
+ |....|
+ |....|
+ |....|
+ ----
Char 0x0021 '!'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 10
Advance: 6
Offset: 2 x 0
@@ -177,16 +453,16 @@ Char 0x0021 '!'
|......|
|......|
|......|
- |..##..|
- |..##..|
- |..##..|
- |..##..|
- |..##..|
- |..cc..|
- |..aa..|
+ |..c7..|
+ |..c7..|
+ |..c7..|
+ |..c6..|
+ |..b6..|
+ |..a5..|
+ |.. ..|
|.. ..|
- |..##..|
- ->|..##..|<-
+ |..c7..|
+ ->|..c7..|<-
|......|
|......|
|......|
@@ -194,34 +470,34 @@ Char 0x0021 '!'
------
Char 0x0022 '"'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 5 x 4
- Advance: 7
+ Advance: 6
Offset: 1 x 6
- _______
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- ->|.......|<-
- |.......|
- |.......|
- |.......|
- |.......|
- -------
+ ______
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ |.97 #1|
+ |.97 #1|
+ |.97 #1|
+ |.97 #1|
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ ->|......|<-
+ |......|
+ |......|
+ |......|
+ |......|
+ ------
Char 0x0023 '#'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
Advance: 12
Offset: 1 x 0
@@ -231,16 +507,16 @@ Char 0x0023 '#'
|............|
|............|
|............|
- |. 4#3 c8 .|
- |. 7# 1#5 .|
- |. ab 4#2 .|
- |.2#########.|
- |. 4#2 #8 .|
- |. 8# 2#4 .|
- |.#########2.|
- |. 2#5 aa .|
- |. 5#2 #7 .|
- ->|. 8# 3#4 .|<-
+ |. 1# #1 .|
+ |. 4a 3c .|
+ |. 77 69 .|
+ |.1########9.|
+ |. 1# #1 .|
+ |. 5a 3b .|
+ |.c#######c .|
+ |. c2 b4 .|
+ |. 1# #1 .|
+ ->|. 5a 3b .|<-
|............|
|............|
|............|
@@ -248,88 +524,88 @@ Char 0x0023 '#'
------------
Char 0x0024 '$'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 13
- Advance: 10
- Offset: 2 x -2
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |.. # .|
- |.. # .|
- |.. 8c#b4 .|
- |..9#3#18 .|
- |..##1# .|
- |..c#c#51 .|
- |..5#####5.|
- |.. 26###c.|
- |.. #1##.|
- |..a4 #2#a.|
- ->|..39##c91.|<-
- |.. # .|
- |.. # .|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 1 x -2
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 9 .|
+ |. 9 .|
+ |. 8c#b5 .|
+ |.8b29281.|
+ |.b6 9 .|
+ |.8b39 .|
+ |. 7c#a5 .|
+ |. a4c6.|
+ |. 9 79.|
+ |.94192c6.|
+ ->|.29c#b7 .|<-
+ |. 9 .|
+ |. 9 .|
+ |.........|
+ |.........|
+ ---------
Char 0x0025 '%'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 13 x 10
- Advance: 14
- Offset: 1 x 0
- ______________
- |..............|
- |..............|
- |..............|
- |..............|
- |..............|
- |.1a#a1 5##2 |
- |.a#4#a 2##5 |
- |.## ## b#8 |
- |.## ## 8#b |
- |.a#4#94##4a#a1|
- |.1a#a3##5a#4#a|
- |. a#8 ## ##|
- |. 7#b ## ##|
- |. 3##2 a#4#9|
- ->|. 1c#5 1a#a1|<-
- |..............|
- |..............|
- |..............|
- |..............|
- --------------
-
-Char 0x0026 '&'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 10
Advance: 13
- Offset: 1 x 0
+ Offset: 0 x 0
_____________
|.............|
|.............|
|.............|
|.............|
|.............|
- |. 19##a4 .|
- |. b#3 39 .|
- |. ##2 .|
- |. 1##b1 .|
- |.1c#8#c1 #c.|
- |.a#5 5#c21#9.|
- |.## 5#c8#4.|
- |.c#1 5##b .|
- |.5#a2 28##a .|
- ->|. 3a###b56#7.|<-
+ | 3cc6 1c1 |
+ | c42#2 96 |
+ |2c 95 4a |
+ |2c 95 c2 |
+ | c41#2873bc6 |
+ | 3cc63b c41c3|
+ | b31# 86|
+ | 68 1# 86|
+ | 2c c41c3|
+ ->| a4 3bc7 |<-
|.............|
|.............|
|.............|
|.............|
-------------
+Char 0x0026 '&'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 10
+ Advance: 11
+ Offset: 1 x 0
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |. 19#b5 |
+ |. 9a1181 |
+ |. c5 |
+ |. 9a |
+ |. 8#8 |
+ |.8b3c9 5c |
+ |.#4 1ba 98 |
+ |.#4 abc1 |
+ |.9c3 17#c1 |
+ ->|. 6b#c829c1|<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
+
Char 0x0027 '''
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 4
Advance: 4
Offset: 1 x 6
@@ -339,10 +615,10 @@ Char 0x0027 '''
|....|
|....|
|....|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
+ |.97.|
+ |.97.|
+ |.97.|
+ |.97.|
|....|
|....|
|....|
@@ -356,77 +632,77 @@ Char 0x0027 '''
----
Char 0x0028 '('
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 12
- Advance: 6
+ Advance: 5
Offset: 1 x -1
- ______
- |......|
- |......|
- |......|
- |......|
- |. 6#9.|
- |. c#2.|
- |.4#9 .|
- |.9#5 .|
- |.c#1 .|
- |.## .|
- |.## .|
- |.c#1 .|
- |.9#5 .|
- |.5#9 .|
- ->|. c#2.|<-
- |. 6#9.|
- |......|
- |......|
- |......|
- ------
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |. 1c1|
+ |. 87 |
+ |.1#2 |
+ |.5b |
+ |.99 |
+ |.a7 |
+ |.a7 |
+ |.99 |
+ |.5c |
+ |.1#2 |
+ ->|. 87 |<-
+ |. 1c1|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x0029 ')'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 12
- Advance: 6
+ Advance: 5
Offset: 1 x -1
- ______
- |......|
- |......|
- |......|
- |......|
- |.9#6 .|
- |.2#c .|
- |. 9#4.|
- |. 5#9.|
- |. 1#c.|
- |. ##.|
- |. ##.|
- |. 1#c.|
- |. 5#9.|
- |. 9#4.|
- ->|.2#c .|<-
- |.9#6 .|
- |......|
- |......|
- |......|
- ------
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.87 |
+ |.1#1 |
+ |. a7 |
+ |. 5c |
+ |. 2#1|
+ |. 1#3|
+ |. 1#3|
+ |. 2#1|
+ |. 5c |
+ |. 97 |
+ ->|.1#1 |<-
+ |.87 |
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x002a '*'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 7
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 6
Advance: 7
- Offset: 0 x 3
+ Offset: 0 x 4
_______
|.......|
|.......|
|.......|
|.......|
|.......|
- | # |
- |86 # 68|
- |5cb#bc5|
- | 1c#c1 |
- |5cb#bc5|
- |86 # 68|
- | # |
+ | a |
+ |48 a 84|
+ | 39c93 |
+ | 39c93 |
+ |48 a 84|
+ | a |
+ |.......|
|.......|
|.......|
->|.......|<-
@@ -437,10 +713,10 @@ Char 0x002a '*'
-------
Char 0x002b '+'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 9
Advance: 12
- Offset: 2 x 0
+ Offset: 1 x 0
____________
|............|
|............|
@@ -448,15 +724,15 @@ Char 0x002b '+'
|............|
|............|
|............|
- |............|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |..########..|
- |..########..|
- |.. ## ..|
- |.. ## ..|
- ->|.. ## ..|<-
+ |. 96 .|
+ |. 96 .|
+ |. 96 .|
+ |. 96 .|
+ |.7########3.|
+ |. 96 .|
+ |. 96 .|
+ |. 96 .|
+ ->|. 96 .|<-
|............|
|............|
|............|
@@ -464,64 +740,37 @@ Char 0x002b '+'
------------
Char 0x002c ','
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 3 x 5
- Advance: 5
- Offset: 0 x -2
- _____
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- | ##..|
- | ##..|
- ->|1#b..|<-
- |6#1..|
- |b5 ..|
- |.....|
- |.....|
- -----
+ Font: #11 DejaVuSans (14)
+ Bitmap: 3 x 3
+ Advance: 4
+ Offset: 1 x -1
+ ____
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |.5#1|
+ ->|.6b |<-
+ |.a3 |
+ |....|
+ |....|
+ |....|
+ ----
Char 0x002d '-'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 4 x 2
- Advance: 6
- Offset: 1 x 3
- ______
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |.####.|
- |.####.|
- |......|
- |......|
- ->|......|<-
- |......|
- |......|
- |......|
- |......|
- ------
-
-Char 0x002e '.'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 2 x 3
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 1
Advance: 5
- Offset: 1 x 0
+ Offset: 0 x 3
_____
|.....|
|.....|
@@ -534,18 +783,45 @@ Char 0x002e '.'
|.....|
|.....|
|.....|
+ |4###5|
+ |.....|
|.....|
- |.##..|
- |.##..|
- ->|.##..|<-
+ ->|.....|<-
|.....|
|.....|
|.....|
|.....|
-----
+Char 0x002e '.'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 2 x 2
+ Advance: 4
+ Offset: 1 x 0
+ ____
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |.7#.|
+ ->|.7#.|<-
+ |....|
+ |....|
+ |....|
+ |....|
+ ----
+
Char 0x002f '/'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 5 x 12
Advance: 5
Offset: 0 x -2
@@ -555,349 +831,349 @@ Char 0x002f '/'
|.....|
|.....|
|.....|
- | 8b|
- | c7|
- | 3#3|
- | 7# |
- | b9 |
- | 1#5 |
- | 5#1 |
- | 9b |
- | #7 |
- ->|3#3 |<-
- |7c |
- |b8 |
+ | 87|
+ | c3|
+ | 2# |
+ | 69 |
+ | a5 |
+ | 1#1 |
+ | 5a |
+ | 96 |
+ | #2 |
+ ->|3c |<-
+ |78 |
+ |b4 |
|.....|
|.....|
-----
Char 0x0030 '0'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 2a##a2 .|
- |.1#a11a#1.|
- |.8#3 3#8.|
- |.c# 1#b.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#b.|
- |.8#3 3#8.|
- |.1#a11a#1.|
- ->|. 2a##a2 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 5b#b4 .|
+ |.3#5 6#2.|
+ |.a9 b8.|
+ |.#6 7c.|
+ |.#4 6#.|
+ |.#4 6#.|
+ |.#6 7c.|
+ |.a9 b8.|
+ |.3#5 6#2.|
+ ->|. 5b#b4 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0031 '1'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 10
- Advance: 10
- Offset: 2 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..3a## ..|
- |..a3## ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- ->|..######..|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
+ Offset: 1 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 5b#5 .|
+ |.582#5 .|
+ |. #5 .|
+ |. #5 .|
+ |. #5 .|
+ |. #5 .|
+ |. #5 .|
+ |. #5 .|
+ |. #5 .|
+ ->|.3#####8.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0032 '2'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 10
- Advance: 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.39c#c7 ..|
- |.a4 8#7..|
- |. #c..|
- |. 1##..|
- |. 9#b..|
- |. 8##4..|
- |. 8##3 ..|
- |. 7##3 ..|
- |.7##4 ..|
- ->|.#######..|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.29cca2 .|
+ |.94118#1.|
+ |. #5.|
+ |. 1#4.|
+ |. 9c .|
+ |. 7#2 .|
+ |. 7#3 .|
+ |. 6#3 .|
+ |.6#3 .|
+ ->|.######7.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0033 '3'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.39c##b71.|
- |.a41 17#a.|
- |. ##.|
- |. 17#8.|
- |. ####b1.|
- |. 29#9.|
- |. 1##.|
- |. 1#c.|
- |.a41 19#6.|
- ->|.39c#ca4 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.17c#b4 .|
+ |.751 5#3.|
+ |. c6.|
+ |. 5#2.|
+ |. 2###4 .|
+ |. 5#4.|
+ |. 99.|
+ |. 99.|
+ |.93 16#4.|
+ ->|.3a#ca4 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0034 '4'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 4c## .|
- |. 2c2## .|
- |. b5 ## .|
- |. 97 ## .|
- |.7a ## .|
- |.c1 ## .|
- |.########.|
- |. ## .|
- |. ## .|
- ->|. ## .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 6#9 |
+ | 2ca9 |
+ | b499 |
+ | 88 99 |
+ | 5b 99 |
+ |1c2 99 |
+ |4#######1|
+ | 99 |
+ | 99 |
+ ->| 99 |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0035 '5'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.####### .|
- |.## .|
- |.## .|
- |.####c93 .|
- |.a41 3b#4.|
- |. 2#b.|
- |. ##.|
- |. 2#b.|
- |.a51 2b#4.|
- ->|.39c##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.6##### .|
+ |.6a .|
+ |.6a .|
+ |.6##c92 .|
+ |.54 19#1.|
+ |. c7.|
+ |. a9.|
+ |. c7.|
+ |.93 19#2.|
+ ->|.3a#c92 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0036 '6'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 7c#b4 .|
- |. bb2 29 .|
- |.6#2 .|
- |.b#a##b5 .|
- |.##9 9#6.|
- |.##1 1#c.|
- |.c# ##.|
- |.8#1 1#b.|
- |.1#9 9#4.|
- ->|. 29##b4 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 18cc7 .|
+ |. c91 54.|
+ |.7c .|
+ |.b8 .|
+ |.#79#c7 .|
+ |.##4 2c8.|
+ |.c9 6#.|
+ |.99 6#.|
+ |.2#4 2c8.|
+ ->|. 4b#c7 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0037 '7'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.########.|
- |. 3#c.|
- |. a#6.|
- |. 2## .|
- |. 9#7 .|
- |. 2##1 .|
- |. 9#7 .|
- |. 2##1 .|
- |. 8#8 .|
- ->|. 1##1 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.b#####9.|
+ |. 2#4.|
+ |. 7c .|
+ |. c7 .|
+ |. 4#2 .|
+ |. 9a .|
+ |. 1#5 .|
+ |. 6# .|
+ |. b8 .|
+ ->|. 3#2 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0038 '8'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.18c##c81.|
- |.a#6 6#a.|
- |.## ##.|
- |.9#6 6#9.|
- |. b####b .|
- |.8#8 8#8.|
- |.## ##.|
- |.## ##.|
- |.8#8 8#8.|
- ->|. 7b##b7 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 7c#c7 .|
+ |.7c2 3#6.|
+ |.a8 99.|
+ |.5c2 3c4.|
+ |. 7###6 .|
+ |.7c3 3c6.|
+ |.#6 7c.|
+ |.#6 7c.|
+ |.8c3 3c7.|
+ ->|. 7c#c7 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0039 '9'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 4b##92 .|
- |.4#9119#1.|
- |.b#1 1#8.|
- |.## #c.|
- |.c#1 1##.|
- |.6#9 9##.|
- |. 5b##a#b.|
- |. 3#6.|
- |. 92 2bb .|
- ->|. 4b#c7 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 7c#a3 .|
+ |.9b2 5#1.|
+ |.#4 b7.|
+ |.#4 bb.|
+ |.9b2 5#c.|
+ |.18c#98c.|
+ |. 9a.|
+ |. 1#6.|
+ |.54 2ab .|
+ ->|.18#c8 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x003a ':'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 2 x 8
- Advance: 6
+ Font: #11 DejaVuSans (14)
+ Bitmap: 3 x 7
+ Advance: 5
Offset: 1 x 0
- ______
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |.##...|
- |.##...|
- |.##...|
- |. ...|
- |. ...|
- |.##...|
- |.##...|
- ->|.##...|<-
- |......|
- |......|
- |......|
- |......|
- ------
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.5#1.|
+ |.5#1.|
+ |. .|
+ |. .|
+ |. .|
+ |.5#1.|
+ ->|.5#1.|<-
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x003b ';'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 3 x 10
- Advance: 6
- Offset: 0 x -2
- ______
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- | ##...|
- | ##...|
- | ##...|
- | ...|
- | ...|
- | ##...|
- | ##...|
- ->|1#b...|<-
- |6#1...|
- |b5 ...|
- |......|
- |......|
- ------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 3 x 8
+ Advance: 5
+ Offset: 1 x -1
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.5#1.|
+ |.5#1.|
+ |. .|
+ |. .|
+ |. .|
+ |.5#1.|
+ ->|.6b .|<-
+ |.a3 .|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x003c '<'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 8
Advance: 12
Offset: 1 x 0
____________
@@ -908,14 +1184,14 @@ Char 0x003c '<'
|............|
|............|
|............|
- |. 16b..|
- |. 5a##c..|
- |. 49##c73 ..|
- |.##c83 ..|
- |.##c73 ..|
- |. 49##c73 ..|
- |. 15a##c..|
- ->|. 16b..|<-
+ |. 493.|
+ |. 27c#81.|
+ |. 5a#a5 .|
+ |.5#c71 .|
+ |.5#c71 .|
+ |. 5a#a5 .|
+ |. 27c#81.|
+ ->|. 493.|<-
|............|
|............|
|............|
@@ -923,10 +1199,10 @@ Char 0x003c '<'
------------
Char 0x003d '='
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 6
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 4
Advance: 12
- Offset: 1 x 2
+ Offset: 1 x 3
____________
|............|
|............|
@@ -935,12 +1211,12 @@ Char 0x003d '='
|............|
|............|
|............|
- |.#########..|
- |.#########..|
- |. ..|
- |. ..|
- |.#########..|
- |.#########..|
+ |............|
+ |.7########3.|
+ |. .|
+ |. .|
+ |.7########3.|
+ |............|
|............|
->|............|<-
|............|
@@ -950,8 +1226,8 @@ Char 0x003d '='
------------
Char 0x003e '>'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 8
Advance: 12
Offset: 1 x 0
____________
@@ -962,14 +1238,14 @@ Char 0x003e '>'
|............|
|............|
|............|
- |.b61 ..|
- |.c##a5 ..|
- |. 37c##94 ..|
- |. 37c##..|
- |. 37c##..|
- |. 37c##94 ..|
- |.c##a51 ..|
- ->|.b61 ..|<-
+ |.683 .|
+ |.3a#b61 .|
+ |. 16b#93 .|
+ |. 38#c2.|
+ |. 38#c2.|
+ |. 16b#93 .|
+ |.39#b61 .|
+ ->|.683 .|<-
|............|
|............|
|............|
@@ -977,34 +1253,34 @@ Char 0x003e '>'
------------
Char 0x003f '?'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 6 x 10
- Advance: 8
+ Advance: 7
Offset: 1 x 0
- ________
- |........|
- |........|
- |........|
- |........|
- |........|
- |.3a##91.|
- |.93 4#a.|
- |. 1##.|
- |. a#9.|
- |. 1b#9 .|
- |. 9#8 .|
- |. ## .|
- |. .|
- |. ## .|
- ->|. ## .|<-
- |........|
- |........|
- |........|
- |........|
- --------
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.4a#c6 |
+ |.92 5#3|
+ |. #5|
+ |. 8c |
+ |. 8b1 |
+ |. 2#1 |
+ |. 3# |
+ |. |
+ |. 4# |
+ ->|. 4# |<-
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ -------
Char 0x0040 '@'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 12 x 12
Advance: 14
Offset: 1 x -2
@@ -1015,50 +1291,50 @@ Char 0x0040 '@'
|..............|
|..............|
|. 5a##b71 .|
- |. 1b93 27c4 .|
- |. b6 2c2.|
- |.69 1a#9## 69.|
- |.b3 9#45## 1c.|
- |.# ## ## #.|
- |.# ## ## 3b.|
- |.b3 9#45##2b3.|
- |.69 1a#9##a3 .|
- ->|. b6 .|<-
- |. 1b93 279 .|
- |. 5a##c82 .|
+ |. 1ba31 27c3 .|
+ |. b5 2c1.|
+ |.78 8#c6c 59.|
+ |.c2 7a11ac 1#.|
+ |.# b3 3c #.|
+ |.# b3 3c 3b.|
+ |.c1 7a11ac2b4.|
+ |.78 8#b6c92 .|
+ ->|. c5 .|<-
+ |. 2b93 279 .|
+ |. 6a##b82 .|
|..............|
|..............|
--------------
Char 0x0041 'A'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 10
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 10
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x0042 'B'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 10
Advance: 10
Offset: 1 x 0
@@ -1068,16 +1344,16 @@ Char 0x0042 'B'
|..........|
|..........|
|..........|
- |.#####c81.|
- |.## 6#a.|
- |.## ##.|
- |.## 6#a.|
- |.#######2.|
- |.## 7#9.|
- |.## ##.|
- |.## ##.|
- |.## 7#9.|
- ->|.#####c81.|<-
+ |.8####a2 .|
+ |.8a 19c .|
+ |.8a 3#2.|
+ |.8a 18c .|
+ |.8####c3 .|
+ |.8a 6#1.|
+ |.8a c7.|
+ |.8a c7.|
+ |.8a 6#3.|
+ ->|.8####a4 .|<-
|..........|
|..........|
|..........|
@@ -1085,34 +1361,34 @@ Char 0x0042 'B'
----------
Char 0x0043 'C'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 10
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |. 39c##c9.|
- |. 7#82 14a.|
- |.5#9 .|
- |.a#2 .|
- |.## .|
- |.## .|
- |.a#2 .|
- |.5#9 .|
- |. 7#82 14a.|
- ->|. 39c##ca.|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ Advance: 10
+ Offset: 0 x 0
+ __________
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ | 17c#c93.|
+ | 1ca3 13a.|
+ | 9c .|
+ | #6 .|
+ |2#4 .|
+ |2#4 .|
+ | #6 .|
+ | 9c .|
+ | 1ca3 13a.|
+ ->| 17c#c93.|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x0044 'D'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 10
Advance: 11
Offset: 1 x 0
@@ -1122,16 +1398,16 @@ Char 0x0044 'D'
|...........|
|...........|
|...........|
- |.####c94 .|
- |.## 29#8 .|
- |.## 9#5.|
- |.## 2#a.|
- |.## ##.|
- |.## ##.|
- |.## 2#a.|
- |.## 9#5.|
- |.## 29#8 .|
- ->|.####c94 .|<-
+ |.8###ca5 .|
+ |.8a 14ca .|
+ |.8a 1#6.|
+ |.8a 9a.|
+ |.8a 7c.|
+ |.8a 7c.|
+ |.8a 9a.|
+ |.8a 1#6.|
+ |.8a 14ca .|
+ ->|.8###ca5 .|<-
|...........|
|...........|
|...........|
@@ -1139,7 +1415,7 @@ Char 0x0044 'D'
-----------
Char 0x0045 'E'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 10
Advance: 9
Offset: 1 x 0
@@ -1149,16 +1425,16 @@ Char 0x0045 'E'
|.........|
|.........|
|.........|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
|.........|
|.........|
|.........|
@@ -1166,61 +1442,61 @@ Char 0x0045 'E'
---------
Char 0x0046 'F'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 10
- Advance: 9
+ Advance: 8
Offset: 1 x 0
- _________
- |.........|
- |.........|
- |.........|
- |.........|
- |.........|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.## .|<-
- |.........|
- |.........|
- |.........|
- |.........|
- ---------
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |.8#####3|
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8####b |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ ->|.8a |<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
Char 0x0047 'G'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |............|
- |............|
- |............|
- |............|
- |. 4ac##c9 .|
- |. 9#71 14a .|
- |.5#8 .|
- |.b#2 .|
- |.## ####.|
- |.## ##.|
- |.a#3 ##.|
- |.5#9 ##.|
- |. 8#a3 2##.|
- ->|. 49c##ca8.|<-
- |............|
- |............|
- |............|
- |............|
- ------------
+ Advance: 11
+ Offset: 0 x 0
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ | 17b#ca5 .|
+ | 1ca3 275.|
+ | 9c .|
+ | #6 .|
+ |2#4 .|
+ |2#4 c##9.|
+ | #6 99.|
+ | 9c 99.|
+ | 1ca31 2b9.|
+ ->| 17b#cb71.|<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
Char 0x0048 'H'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 10
Advance: 11
Offset: 1 x 0
@@ -1230,16 +1506,16 @@ Char 0x0048 'H'
|...........|
|...........|
|...........|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.#########.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- ->|.## ##.|<-
+ |.8a 3#2.|
+ |.8a 3#2.|
+ |.8a 3#2.|
+ |.8a 3#2.|
+ |.8#######2.|
+ |.8a 3#2.|
+ |.8a 3#2.|
+ |.8a 3#2.|
+ |.8a 3#2.|
+ ->|.8a 3#2.|<-
|...........|
|...........|
|...........|
@@ -1247,7 +1523,7 @@ Char 0x0048 'H'
-----------
Char 0x0049 'I'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 10
Advance: 4
Offset: 1 x 0
@@ -1257,16 +1533,16 @@ Char 0x0049 'I'
|....|
|....|
|....|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- ->|.##.|<-
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ |.8a.|
+ ->|.8a.|<-
|....|
|....|
|....|
@@ -1274,7 +1550,7 @@ Char 0x0049 'I'
----
Char 0x004a 'J'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 13
Advance: 4
Offset: -1 x -3
@@ -1284,132 +1560,78 @@ Char 0x004a 'J'
|.....|
|.....|
|.....|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- ->| ##.|<-
- | ##.|
- | 7#9.|
- |#c8 .|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ ->| 8a.|<-
+ | 99.|
+ | 2#5.|
+ |ac7 .|
|.....|
----
Char 0x004b 'K'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 10
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |.## 3##6 |
- |.## 3##5 |
- |.## 4##4 |
- |.##4##3 |
- |.####5 |
- |.##6##3 |
- |.## 5##4 |
- |.## 5##4 |
- |.## 5##5 |
- ->|.## 4##6|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
-
-Char 0x004c 'L'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
Advance: 9
Offset: 1 x 0
_________
- |.........|
- |.........|
- |.........|
- |.........|
- |.........|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
- |.........|
- |.........|
- |.........|
- |.........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |.8a 3#7 |
+ |.8a 4#6 |
+ |.8a 5#5 |
+ |.8a6#4 |
+ |.8##4 |
+ |.8bbb1 |
+ |.8a1bb1 |
+ |.8a 1bb1 |
+ |.8a bb1 |
+ ->|.8a bb1|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
---------
-Char 0x004d 'M'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 10
- Advance: 13
- Offset: 1 x 0
- _____________
- |.............|
- |.............|
- |.............|
- |.............|
- |.............|
- |.###2 2###.|
- |.###8 9###.|
- |.##c#1 1#c##.|
- |.##6#8 8#6##.|
- |.## c#2#c ##.|
- |.## 6#c#6 ##.|
- |.## c#c ##.|
- |.## 5#5 ##.|
- |.## ##.|
- ->|.## ##.|<-
- |.............|
- |.............|
- |.............|
- |.............|
- -------------
-
-Char 0x004e 'N'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 10
- Advance: 11
+Char 0x004c 'L'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 8
Offset: 1 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |.##8 ##.|
- |.###3 ##.|
- |.###b ##.|
- |.##5#6 ##.|
- |.## a#1 ##.|
- |.## 2#a ##.|
- |.## 7#5##.|
- |.## bc##.|
- |.## 3###.|
- ->|.## 8##.|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ ->|.8#####a|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
-Char 0x004f 'O'
- Font: #11 DejaVuSans-Bold (14)
+Char 0x004d 'M'
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
Advance: 12
Offset: 1 x 0
@@ -1419,25 +1641,25 @@ Char 0x004f 'O'
|............|
|............|
|............|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
+ |.8#8 7#a.|
+ |.8c# cca.|
+ |.8aa5 4b8a.|
+ |.8a5a 968a.|
+ |.8a #21#18a.|
+ |.8a 8769 8a.|
+ |.8a 3cc4 8a.|
+ |.8a bc 8a.|
+ |.8a 8a.|
+ ->|.8a 8a.|<-
|............|
|............|
|............|
|............|
------------
-Char 0x0050 'P'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
+Char 0x004e 'N'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
Advance: 10
Offset: 1 x 0
__________
@@ -1446,51 +1668,105 @@ Char 0x0050 'P'
|..........|
|..........|
|..........|
- |.#####b6 .|
- |.## 19#6.|
- |.## 1#c.|
- |.## ##.|
- |.## 2#c.|
- |.## 19#6.|
- |.#####b6 .|
- |.## .|
- |.## .|
- ->|.## .|<-
+ |.8#7 3#1|
+ |.8##1 3#1|
+ |.8ab8 3#1|
+ |.8a3#2 3#1|
+ |.8a a9 3#1|
+ |.8a 2#33#1|
+ |.8a 9a3#1|
+ |.8a 1#7#1|
+ |.8a 8##1|
+ ->|.8a 1##1|<-
|..........|
|..........|
|..........|
|..........|
----------
+Char 0x004f 'O'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 10
+ Advance: 11
+ Offset: 0 x 0
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
+
+Char 0x0050 'P'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 8
+ Offset: 1 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |.8###c7 |
+ |.8a 3#8|
+ |.8a 7c|
+ |.8a 7c|
+ |.8a 3#8|
+ |.8###c7 |
+ |.8a |
+ |.8a |
+ |.8a |
+ ->|.8a |<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
Char 0x0051 'Q'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 12
- Advance: 12
- Offset: 1 x -2
- ____________
- |............|
- |............|
- |............|
- |............|
- |............|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#8 8#6.|
- |. a#6 6#b .|
- ->|. 6b###8 .|<-
- |. 4#c2 .|
- |. 6#c1.|
- |............|
- |............|
- ------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 12
+ Advance: 11
+ Offset: 0 x -2
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c##a1 |<-
+ | 7#2 |
+ | ab |
+ |...........|
+ |...........|
+ -----------
Char 0x0052 'R'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 10
Advance: 10
Offset: 1 x 0
@@ -1500,16 +1776,16 @@ Char 0x0052 'R'
|..........|
|..........|
|..........|
- |.#####c8 |
- |.## 18#9 |
- |.## ## |
- |.## #c |
- |.## 18#8 |
- |.######c |
- |.## 2a#5 |
- |.## 1#c |
- |.## 9#4|
- ->|.## 4#a|<-
+ |.8###c7 |
+ |.8a 3c8 |
+ |.8a 7c |
+ |.8a 7c |
+ |.8a 3c7 |
+ |.8####9 |
+ |.8a 4#4 |
+ |.8a 7c |
+ |.8a c7 |
+ ->|.8a 5#1|<-
|..........|
|..........|
|..........|
@@ -1517,7 +1793,61 @@ Char 0x0052 'R'
----------
Char 0x0053 'S'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 9
+ Offset: 1 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 7c#b6 .|
+ |.9b2 266.|
+ |.#5 .|
+ |.#8 .|
+ |.4#c962 .|
+ |. 148b#5.|
+ |. 8#.|
+ |. 5#.|
+ |.a41 3ba.|
+ ->|.39c#c7 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
+
+Char 0x0054 'T'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |########8|
+ | 5# |
+ | 5# |
+ | 5# |
+ | 5# |
+ | 5# |
+ | 5# |
+ | 5# |
+ | 5# |
+ ->| 5# |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
+
+Char 0x0055 'U'
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 10
Advance: 10
Offset: 1 x 0
@@ -1527,133 +1857,79 @@ Char 0x0053 'S'
|..........|
|..........|
|..........|
- |. 7c##cb .|
- |.8#5 4a .|
- |.c# .|
- |.##b74 .|
- |.4c####91.|
- |. 38c##a.|
- |. 7##.|
- |. #c.|
- |.b52 5#7.|
- ->|.9b###b6 .|<-
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a9 5#.|
+ |.8b 8b.|
+ |.2#71 4#5.|
+ ->|. 3ac#b5 .|<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x0054 'T'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
+Char 0x0056 'V'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 10
Advance: 10
- Offset: 1 x 0
+ Offset: 0 x 0
__________
|..........|
|..........|
|..........|
|..........|
|..........|
- |.########.|
- |. ## .|
- |. ## .|
- |. ## .|
- |. ## .|
- |. ## .|
- |. ## .|
- |. ## .|
- |. ## .|
- ->|. ## .|<-
+ |9a 2#3|
+ |4#1 7c |
+ | c7 c6 |
+ | 7c 4#1 |
+ | 2#3 9a |
+ | a9 1#4 |
+ | 5# 6c |
+ | #6c7 |
+ | 8##2 |
+ ->| 2#a |<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x0055 'U'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 10
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#c.|
- |.6#91 19#6.|
- ->|. 5a###a5 .|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
-
-Char 0x0056 'V'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 10
- Advance: 11
- Offset: 0 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |b#3 3#b|
- |5#8 8#5|
- | ## ## |
- | 8#6 6#8 |
- | 3#b b#3 |
- | b#3 3#b |
- | 6#8 9#6 |
- | 1##2##1 |
- | 9#b#9 |
- ->| 4###4 |<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
-
Char 0x0057 'W'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 15 x 10
- Advance: 15
+ Font: #11 DejaVuSans (14)
+ Bitmap: 14 x 10
+ Advance: 14
Offset: 0 x 0
- _______________
- |...............|
- |...............|
- |...............|
- |...............|
- |...............|
- |1#c 7#8 c#1|
- | c#2 b#b 2#c |
- | 8#5 1###1 5#8 |
- | 5#8 5#a#5 8#5 |
- | 1#b 9#2#9 b#1 |
- | c#1#a a#1#c |
- | 8#7#6 6#7#8 |
- | 5###2 2###5 |
- | 1##c b##2 |
- ->| c#7 7#c |<-
- |...............|
- |...............|
- |...............|
- |...............|
- ---------------
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |5# #b 2#3|
+ |2#3 3c#1 5# |
+ | c6 68a4 9a |
+ | 8a a578 c6 |
+ | 5# #13b 2#3 |
+ | 1#33c #15# |
+ | c778 a49a |
+ | 8aa5 78c6 |
+ | 5##1 4##2 |
+ ->| 1#c ## |<-
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x0058 'X'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
Advance: 10
Offset: 0 x 0
__________
@@ -1662,16 +1938,16 @@ Char 0x0058 'X'
|..........|
|..........|
|..........|
- |9#a 9#9|
- | c#3 3#c |
- | 3#b b#3 |
- | 7#55#7 |
- | bccb |
- | 1cbbc1 |
- | 9#33#9 |
- | 4#a a#4 |
- |1c#2 2#c1|
- ->|9#9 9#9|<-
+ | a9 b8.|
+ | 2#5 8b .|
+ | 5#14#2 .|
+ | aac6 .|
+ | 1#b .|
+ | 5##1 .|
+ | 2#59a .|
+ | b9 1c6 .|
+ | 7c 4#2.|
+ ->|3#3 9b.|<-
|..........|
|..........|
|..........|
@@ -1679,8 +1955,35 @@ Char 0x0058 'X'
----------
Char 0x0059 'Y'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |9a 3#3|
+ |1c6 c7 |
+ | 4#2 8b |
+ | 8b4#2 |
+ | c#6 |
+ | 6# |
+ | 5# |
+ | 5# |
+ | 5# |
+ ->| 5# |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
+
+Char 0x005a 'Z'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
Advance: 10
Offset: 0 x 0
__________
@@ -1689,78 +1992,51 @@ Char 0x0059 'Y'
|..........|
|..........|
|..........|
- |9#9 9#9|
- | c#3 3#c |
- | 3#a a#3 |
- | 8#44#8 |
- | bccb |
- | 2##2 |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
+ |3#######b.|
+ | 4#6.|
+ | 2#8 .|
+ | 1cb .|
+ | ac1 .|
+ | 8#3 .|
+ | 5#5 .|
+ | 3#8 .|
+ |1ca .|
+ ->|5########.|<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x005a 'Z'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 10
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |.#########.|
- |. 6##.|
- |. 5##3.|
- |. 5##3 .|
- |. 5##4 .|
- |. 4##4 .|
- |. 4##4 .|
- |.4##4 .|
- |.##4 .|
- ->|.#########.|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
-
Char 0x005b '['
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 12
- Advance: 6
+ Advance: 5
Offset: 1 x -1
- ______
- |......|
- |......|
- |......|
- |......|
- |.####.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.## .|<-
- |.####.|
- |......|
- |......|
- |......|
- ------
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.b##1|
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ ->|.b6 |<-
+ |.b##1|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x005c '\'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 5 x 12
Advance: 5
Offset: 0 x -2
@@ -1770,51 +2046,51 @@ Char 0x005c '\'
|.....|
|.....|
|.....|
- |b8 |
- |7c |
- |3#3 |
- | #7 |
- | 9b |
- | 5#1 |
- | 1#5 |
- | b9 |
- | 7# |
- ->| 3#3|<-
- | c7|
- | 8b|
+ |b4 |
+ |78 |
+ |3c |
+ | #2 |
+ | 96 |
+ | 5a |
+ | 1#1 |
+ | a5 |
+ | 69 |
+ ->| 2# |<-
+ | c3|
+ | 87|
|.....|
|.....|
-----
Char 0x005d ']'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 12
- Advance: 6
+ Advance: 5
Offset: 1 x -1
- ______
- |......|
- |......|
- |......|
- |......|
- |.####.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- |. ##.|
- ->|. ##.|<-
- |.####.|
- |......|
- |......|
- |......|
- ------
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.8##3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ |. #3|
+ ->|. #3|<-
+ |.8##3|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x005e '^'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 4
Advance: 12
Offset: 1 x 6
@@ -1824,10 +2100,10 @@ Char 0x005e '^'
|............|
|............|
|............|
- |. a#a ..|
- |. 9###9 ..|
- |. 8#8 8#8 ..|
- |.7#5 5#7..|
+ |. 3#c1 ..|
+ |. 3#7ab1 ..|
+ |. 2#6 9b ..|
+ |.1c5 8a..|
|............|
|............|
|............|
@@ -1841,45 +2117,45 @@ Char 0x005e '^'
------------
Char 0x005f '_'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 1
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 1
Advance: 7
- Offset: 0 x -3
- _______
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- ->|.......|<-
- |.......|
- |.......|
- |#######|
- |.......|
- -------
+ Offset: -1 x -3
+ _______
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ->|.........|<-
+ |.........|
+ |.........|
+ |1#######1|
+ |.........|
+ -------
Char 0x0060 '`'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 3
Advance: 7
- Offset: 1 x 9
+ Offset: 1 x 8
_______
|.......|
|.......|
|.......|
- |.7#4 ..|
- |. 9c1..|
- |. a9..|
|.......|
+ |.6b ..|
+ |. a6 ..|
+ |. 1c2..|
|.......|
|.......|
|.......|
@@ -1895,10 +2171,10 @@ Char 0x0060 '`'
-------
Char 0x0061 'a'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 8
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
@@ -1907,14 +2183,14 @@ Char 0x0061 'a'
|.........|
|.........|
|.........|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -1922,35 +2198,8 @@ Char 0x0061 'a'
---------
Char 0x0062 'b'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |.## .|
- |.## .|
- |.## .|
- |.##5b#c5 .|
- |.##a11a#4.|
- |.##2 2#a.|
- |.## ##.|
- |.## ##.|
- |.##2 2#a.|
- |.##a11a#4.|
- ->|.##5b#c5 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x0063 'c'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
Advance: 9
Offset: 1 x 0
_________
@@ -1958,160 +2207,187 @@ Char 0x0063 'c'
|.........|
|.........|
|.........|
- |.........|
- |.........|
- |.........|
- |. 29c#b4.|
- |.2#c3 29.|
- |.a#3 .|
- |.## .|
- |.## .|
- |.a#3 .|
- |.3#c3 28.|
- ->|. 29c#b4.|<-
+ |.a7 .|
+ |.a7 .|
+ |.a7 .|
+ |.a89cc7 .|
+ |.a#6 3c6.|
+ |.ab 6c.|
+ |.a8 3#.|
+ |.a8 3#.|
+ |.ab 6c.|
+ |.a#6 3c6.|
+ ->|.a89c#7 .|<-
|.........|
|.........|
|.........|
|.........|
---------
+Char 0x0063 'c'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 8
+ Advance: 8
+ Offset: 0 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ | 6b#b3.|
+ | 7c4 28.|
+ | #5 .|
+ |2#2 .|
+ |2#2 .|
+ | #5 .|
+ | 7c4 28.|
+ ->| 6c#a3.|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
Char 0x0064 'd'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ##.|
- |. ##.|
- |. ##.|
- |. 5c#b5##.|
- |.4#a11a##.|
- |.a#2 2##.|
- |.## ##.|
- |.## ##.|
- |.a#2 2##.|
- |.4#a11a##.|
- ->|. 5c#b5##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 88.|
+ | 88.|
+ | 88.|
+ | 8#c898.|
+ | 7c217#8.|
+ | #4 c8.|
+ |2#1 98.|
+ |2#1 98.|
+ | #4 c8.|
+ | 7c2 7#8.|
+ ->| 8#c898.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0065 'e'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 8
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0066 'f'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 11
- Advance: 6
- Offset: 1 x 0
- ______
+ Font: #11 DejaVuSans (14)
+ Bitmap: 6 x 11
+ Advance: 5
+ Offset: 0 x 0
+ _____
|......|
|......|
|......|
|......|
- |. 4c##|
- |. c#2 |
- |. ## |
- |.#####|
- |. ## |
- |. ## |
- |. ## |
- |. ## |
- |. ## |
- |. ## |
- ->|. ## |<-
+ | 8##2|
+ | 4#1 |
+ | 6b |
+ |9###c |
+ | 6b |
+ | 6b |
+ | 6b |
+ | 6b |
+ | 6b |
+ | 6b |
+ ->| 6b |<-
|......|
|......|
|......|
|......|
- ------
+ -----
Char 0x0067 'g'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 4c#b5##.|
- |.4#a11a##.|
- |.a#2 3##.|
- |.## ##.|
- |.## ##.|
- |.a#2 3##.|
- |.4#a11a##.|
- ->|. 4c#b5##.|<-
- |. 2#b.|
- |. 92 1a#5.|
- |. 4b##a4 .|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x -3
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 8#c898.|
+ | 8c217#8.|
+ | #4 c8.|
+ |2#1 98.|
+ |2#1 98.|
+ | #4 c8.|
+ | 8b2 7#8.|
+ ->| 8#c8a8.|<-
+ | b6.|
+ | 35117#1.|
+ | 7c#a2 .|
+ |.........|
+ ---------
Char 0x0068 'h'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |.## .|
- |.## .|
- |.## .|
- |.##4a##a2.|
- |.##b2 6#a.|
- |.##2 ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- ->|.## ##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.a7 .|
+ |.a7 .|
+ |.a7 .|
+ |.a88cc7 .|
+ |.a#5 2#5.|
+ |.a9 98.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ ->|.a7 89.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0069 'i'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 11
Advance: 4
Offset: 1 x 0
@@ -2120,17 +2396,17 @@ Char 0x0069 'i'
|....|
|....|
|....|
- |.##.|
- |.##.|
+ |.98.|
+ |.98.|
|. .|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- ->|.##.|<-
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ ->|.98.|<-
|....|
|....|
|....|
@@ -2138,7 +2414,7 @@ Char 0x0069 'i'
----
Char 0x006a 'j'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 14
Advance: 4
Offset: -1 x -3
@@ -2147,52 +2423,52 @@ Char 0x006a 'j'
|.....|
|.....|
|.....|
- | ##.|
- | ##.|
+ | 98.|
+ | 98.|
| .|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- ->| ##.|<-
- | ##.|
- | 4#b.|
- |##b2.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ ->| 98.|<-
+ | 97.|
+ | 1c5.|
+ |3#9 .|
|.....|
----
Char 0x006b 'k'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 11
- Advance: 9
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 8
Offset: 1 x 0
- _________
- |..........|
- |..........|
- |..........|
- |..........|
- |.## |
- |.## |
- |.## |
- |.## 3##6 |
- |.## 3##5 |
- |.##4##4 |
- |.####4 |
- |.##5#b1 |
- |.## 5#c2 |
- |.## 5#c2 |
- ->|.## 5##3|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ---------
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |.a7 |
+ |.a7 |
+ |.a7 |
+ |.a7 4#5|
+ |.a7 5#4 |
+ |.a76#3 |
+ |.ac#2 |
+ |.a9c7 |
+ |.a72c7 |
+ |.a7 2c7 |
+ ->|.a7 2c7|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
Char 0x006c 'l'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 11
Advance: 4
Offset: 1 x 0
@@ -2201,17 +2477,17 @@ Char 0x006c 'l'
|....|
|....|
|....|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- |.##.|
- ->|.##.|<-
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ |.98.|
+ ->|.98.|<-
|....|
|....|
|....|
@@ -2219,7 +2495,7 @@ Char 0x006c 'l'
----
Char 0x006d 'm'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 12 x 8
Advance: 14
Offset: 1 x 0
@@ -2231,14 +2507,14 @@ Char 0x006d 'm'
|..............|
|..............|
|..............|
- |.##5c#b47c#a2.|
- |.##9 4##9 4#b.|
- |.##1 ##1 ##.|
- |.## ## ##.|
- |.## ## ##.|
- |.## ## ##.|
- |.## ## ##.|
- ->|.## ## ##.|<-
+ |.a89c#719#c5 .|
+ |.a#5 4#c4 4#2.|
+ |.a9 b9 c5.|
+ |.a7 a7 b6.|
+ |.a7 a7 b6.|
+ |.a7 a7 b6.|
+ |.a7 a7 b6.|
+ ->|.a7 a7 b6.|<-
|..............|
|..............|
|..............|
@@ -2246,142 +2522,7 @@ Char 0x006d 'm'
--------------
Char 0x006e 'n'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.##4a##a2.|
- |.##b2 6#a.|
- |.##2 ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- ->|.## ##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x006f 'o'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x0070 'p'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.##5b#c5 .|
- |.##a11a#4.|
- |.##2 2#a.|
- |.## ##.|
- |.## ##.|
- |.##2 2#a.|
- |.##a11a#4.|
- ->|.##5b#c5 .|<-
- |.## .|
- |.## .|
- |.## .|
- |..........|
- ----------
-
-Char 0x0071 'q'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 5c#b5##.|
- |.4#a11a##.|
- |.a#2 2##.|
- |.## ##.|
- |.## ##.|
- |.a#2 2##.|
- |.4#a11a##.|
- ->|. 5c#b5##.|<-
- |. ##.|
- |. ##.|
- |. ##.|
- |..........|
- ----------
-
-Char 0x0072 'r'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 8
- Advance: 7
- Offset: 1 x 0
- _______
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.......|
- |.##4a##|
- |.##a2 |
- |.##2 |
- |.## |
- |.## |
- |.## |
- |.## |
- ->|.## |<-
- |.......|
- |.......|
- |.......|
- |.......|
- -------
-
-Char 0x0073 's'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 8
Advance: 9
Offset: 1 x 0
@@ -2393,77 +2534,23 @@ Char 0x0073 's'
|.........|
|.........|
|.........|
- |.19c#c93.|
- |.b#4 14a.|
- |.##3 .|
- |.b###b71.|
- |.18c###b.|
- |. 4##.|
- |.a41 3#a.|
- ->|.39c#c91.|<-
+ |.a88cc7 .|
+ |.a#5 2#5.|
+ |.a9 98.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ ->|.a7 89.|<-
|.........|
|.........|
|.........|
|.........|
---------
-Char 0x0074 't'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 10
- Advance: 6
- Offset: 0 x 0
- ______
- |......|
- |......|
- |......|
- |......|
- |......|
- | ## .|
- | ## .|
- |#####.|
- | ## .|
- | ## .|
- | ## .|
- | ## .|
- | ## .|
- | c#2 .|
- ->| 5c##.|<-
- |......|
- |......|
- |......|
- |......|
- ------
-
-Char 0x0075 'u'
- Font: #11 DejaVuSans-Bold (14)
+Char 0x006f 'o'
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 8
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## 2##.|
- |.b#6 2a##.|
- ->|.2a##b4##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x0076 'v'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 8
Advance: 9
Offset: 0 x 0
_________
@@ -2474,52 +2561,25 @@ Char 0x0076 'v'
|.........|
|.........|
|.........|
- |b#4 4#b|
- |5#9 9#5|
- | ##1 1## |
- | 8#6 6#8 |
- | 3#b b#3 |
- | b#5#b |
- | 6###6 |
- ->| 1###1 |<-
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
|.........|
|.........|
|.........|
|.........|
---------
-Char 0x0077 'w'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 12 x 8
- Advance: 14
- Offset: 1 x 0
- ______________
- |..............|
- |..............|
- |..............|
- |..............|
- |..............|
- |..............|
- |..............|
- |.b#2 cc 2#b.|
- |.7#6 2##2 6#7.|
- |.3#9 6##6 9#3.|
- |. ## a##a ## .|
- |. a#3#99#3#a .|
- |. 6#a#55#a#6 .|
- |. 2###11###2 .|
- ->|. c#b a#c .|<-
- |..............|
- |..............|
- |..............|
- |..............|
- --------------
-
-Char 0x0078 'x'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 8
+Char 0x0070 'p'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
Advance: 9
- Offset: 0 x 0
+ Offset: 1 x -3
_________
|.........|
|.........|
@@ -2528,23 +2588,23 @@ Char 0x0078 'x'
|.........|
|.........|
|.........|
- |8#b b#8|
- | b#5 5#b |
- | 2#c2c#1 |
- | 4#c#4 |
- | 6#c#6 |
- | 2#c1c#2 |
- | b#5 4#b |
- ->|8#a a#8|<-
- |.........|
- |.........|
- |.........|
+ |.a89cc7 .|
+ |.a#6 3c6.|
+ |.ab 6c.|
+ |.a8 3#.|
+ |.a8 3#.|
+ |.ab 6c.|
+ |.a#6 3c6.|
+ ->|.a89c#7 .|<-
+ |.a7 .|
+ |.a7 .|
+ |.a7 .|
|.........|
---------
-Char 0x0079 'y'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 11
+Char 0x0071 'q'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
Offset: 0 x -3
_________
@@ -2555,22 +2615,103 @@ Char 0x0079 'y'
|.........|
|.........|
|.........|
- |b#4 3#b|
- |5#9 8#6|
- | c# c#1|
- | 7#5 2#a |
- | 1#a 7#5 |
- | 9#1b# |
- | 4#8#9 |
- ->| c##4 |<-
- | 6#c |
- | 9#7 |
- | a#c7 |
+ | 8#c898.|
+ | 7c217#8.|
+ | #4 c8.|
+ |2#1 98.|
+ |2#1 98.|
+ | #4 c8.|
+ | 7c2 7#8.|
+ ->| 8#c898.|<-
+ | 88.|
+ | 88.|
+ | 88.|
|.........|
---------
-Char 0x007a 'z'
- Font: #11 DejaVuSans-Bold (14)
+Char 0x0072 'r'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 8
+ Advance: 6
+ Offset: 1 x 0
+ ______
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ |.a89#a|
+ |.a#5 |
+ |.aa |
+ |.a7 |
+ |.a7 |
+ |.a7 |
+ |.a7 |
+ ->|.a7 |<-
+ |......|
+ |......|
+ |......|
+ |......|
+ ------
+
+Char 0x0073 's'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 8
+ Advance: 7
+ Offset: 0 x 0
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ | 3b#b6 |
+ | #5 172|
+ |1#1 |
+ | 9c74 |
+ | 37bc2|
+ | b7|
+ |382 2c5|
+ ->| 5b#c7 |<-
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ -------
+
+Char 0x0074 't'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 6 x 10
+ Advance: 5
+ Offset: 0 x 0
+ _____
+ |......|
+ |......|
+ |......|
+ |......|
+ |......|
+ | 97 |
+ | 97 |
+ |8####2|
+ | 97 |
+ | 97 |
+ | 97 |
+ | 97 |
+ | 97 |
+ | 7a |
+ ->| 1a##2|<-
+ |......|
+ |......|
+ |......|
+ |......|
+ -----
+
+Char 0x0075 'u'
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 8
Advance: 9
Offset: 1 x 0
@@ -2582,104 +2723,239 @@ Char 0x007a 'z'
|.........|
|.........|
|.........|
- |.#######.|
- |. 4##.|
- |. 4##4.|
- |. 4##4 .|
- |. 4##3 .|
- |.4##3 .|
- |.##3 .|
- ->|.#######.|<-
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.a7 b8.|
+ |.7c2 6#8.|
+ ->|. 8#c898.|<-
|.........|
|.........|
|.........|
|.........|
---------
+Char 0x0076 'v'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 8
+ Advance: 8
+ Offset: 0 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |5c 99|
+ | #3 #4|
+ | 98 5# |
+ | 4# a8 |
+ | #41#3 |
+ | 895c |
+ | 3#b7 |
+ ->| c#2 |<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
+Char 0x0077 'w'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 8
+ Advance: 11
+ Offset: 0 x 0
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |3# 2#8 7a|
+ | #3 5cb a6|
+ | a6 96#1 #3|
+ | 7a c2a43# |
+ | 3#2# 787a |
+ | #89 3ba6 |
+ | a#6 ##3 |
+ ->| 7#2 a# |<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
+
+Char 0x0078 'x'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 8
+ Advance: 8
+ Offset: 0 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |1c6 2#4|
+ | 3#3 b8 |
+ | 7c8c |
+ | b#3 |
+ | 2##4 |
+ | b96#1 |
+ | 7c aa |
+ ->|3#3 1c6|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
+Char 0x0079 'y'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 8
+ Offset: 0 x -3
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |5c 99|
+ | #4 #4|
+ | 89 5c |
+ | 2#1 b7 |
+ | b62#2 |
+ | 5b8a |
+ | ##5 |
+ ->| 8# |<-
+ | a8 |
+ | 3#2 |
+ | c#6 |
+ |........|
+ --------
+
+Char 0x007a 'z'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 8
+ Advance: 7
+ Offset: 0 x 0
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |3#####a|
+ | 2#6|
+ | b9 |
+ | 9b |
+ | 7c1 |
+ | 4#3 |
+ |2#5 |
+ ->|5#####a|<-
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ -------
+
Char 0x007b '{'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 13
- Advance: 10
- Offset: 2 x -2
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |.. 4c##..|
- |.. c#4 ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. 5#b ..|
- |..###4 ..|
- |.. 5#b ..|
- |.. ## ..|
- |.. ## ..|
- ->|.. ## ..|<-
- |.. c#4 ..|
- |.. 4c##..|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 13
+ Advance: 9
+ Offset: 1 x -2
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 6c#2.|
+ |. #6 .|
+ |. 1#2 .|
+ |. 1#1 .|
+ |. 2#1 .|
+ |. 7c .|
+ |.3##4 .|
+ |. 7c .|
+ |. 2#1 .|
+ |. 1#1 .|
+ ->|. 1#2 .|<-
+ |. #5 .|
+ |. 6c#2.|
+ |.........|
+ |.........|
+ ---------
Char 0x007c '|'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 14
Advance: 5
- Offset: 2 x -3
+ Offset: 1 x -3
_____
|.....|
|.....|
|.....|
|.....|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- ->|..##.|<-
- |..##.|
- |..##.|
- |..##.|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ ->|.3#..|<-
+ |.3#..|
+ |.3#..|
+ |.3#..|
|.....|
-----
Char 0x007d '}'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 13
- Advance: 10
- Offset: 2 x -2
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..##c4 ..|
- |.. 4#c ..|
- |.. ## ..|
- |.. ## ..|
- |.. ## ..|
- |.. b#5 ..|
- |.. 4###..|
- |.. b#5 ..|
- |.. ## ..|
- |.. ## ..|
- ->|.. ## ..|<-
- |.. 4#c ..|
- |..##c4 ..|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 13
+ Advance: 9
+ Offset: 1 x -2
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.3#c5 .|
+ |. 7c .|
+ |. 3# .|
+ |. 3# .|
+ |. 2# .|
+ |. #6 .|
+ |. 5##2.|
+ |. #6 .|
+ |. 2#1 .|
+ |. 3# .|
+ ->|. 3# .|<-
+ |. 7c .|
+ |.3#c4 .|
+ |.........|
+ |.........|
+ ---------
Char 0x007e '~'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 3
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 2
Advance: 12
Offset: 1 x 3
____________
@@ -2692,9 +2968,9 @@ Char 0x007e '~'
|............|
|............|
|............|
- |.3a#c72 3a..|
- |.#########..|
- |.a2 27c#a3..|
+ |............|
+ |.18c#94 183.|
+ |.65 15a#b6 .|
|............|
|............|
->|............|<-
@@ -2705,7 +2981,7 @@ Char 0x007e '~'
------------
Char 0x007f ''
- Font: #13 gulim (17)
+ Font: #14 gulim (17)
Bitmap: 0 x 0
Advance: 17
Offset: 0 x 0
@@ -2732,118 +3008,118 @@ Char 0x007f ''
-----------------
Char 0x00a0 ' '
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 0 x 0
- Advance: 5
+ Advance: 4
Offset: 0 x 0
- _____
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- ->|.....|<-
- |.....|
- |.....|
- |.....|
- |.....|
- -----
+ ____
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ ->|....|<-
+ |....|
+ |....|
+ |....|
+ |....|
+ ----
Char 0x00a1 '¡'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 10
Advance: 6
- Offset: 2 x 0
+ Offset: 2 x -2
______
|......|
|......|
|......|
|......|
|......|
- |..##..|
- |..##..|
- |.. ..|
- |..aa..|
- |..cc..|
- |..##..|
- |..##..|
- |..##..|
- |..##..|
- ->|..##..|<-
|......|
|......|
+ |..c7..|
+ |..c7..|
+ |.. ..|
+ |.. ..|
+ |..a5..|
+ |..b6..|
+ |..c6..|
+ ->|..c7..|<-
+ |..c7..|
+ |..c7..|
|......|
|......|
------
Char 0x00a2 '¢'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 12
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 12
+ Advance: 9
Offset: 1 x -2
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. # ...|
- |. # ...|
- |. 5c#c5...|
- |.5#b#18...|
- |.b#3# ...|
- |.## # ...|
- |.## # ...|
- |.a#3# ...|
- |.4#b#17...|
- ->|. 4b#c5...|<-
- |. # ...|
- |. # ...|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 54 .|
+ |. 54 .|
+ |. 29#c7 .|
+ |.1#86562.|
+ |.8b 54 .|
+ |.a8 54 .|
+ |.a8 54 .|
+ |.8b 54 .|
+ |.1#86562.|
+ ->|. 29##7 .|<-
+ |. 54 .|
+ |. 54 .|
+ |.........|
+ |.........|
+ ---------
Char 0x00a3 '£'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 10
- Advance: 10
+ Advance: 9
Offset: 0 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- | 18c#b4..|
- | 9#7 18..|
- | ## ..|
- | ## ..|
- | ###### ..|
- | ## ..|
- | ## ..|
- | ## ..|
- | ## ..|
- ->|########..|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 4b#91.|
+ | 1#6 35.|
+ | 5# .|
+ | 6c .|
+ | 7c .|
+ | c####7 .|
+ | 7c .|
+ | 7c .|
+ | 7c .|
+ ->|1######9.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00a4 '¤'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 8
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
@@ -2852,14 +3128,14 @@ Char 0x00a4 '¤'
|.........|
|.........|
|.........|
- |.65 56|
- |.5#b##b#5|
- |. b9119b |
- |. #1 1# |
- |. #1 1# |
- |. b9119b |
- |.5#b##b#5|
- ->|.75 56|<-
+ |1a1 1a1|
+ | 9bb#ab8 |
+ | 1#4 5# |
+ | 5a b4 |
+ | 5a b4 |
+ | 1#4 5# |
+ | 9bb#ab8 |
+ ->|1a1 19 |<-
|.........|
|.........|
|.........|
@@ -2867,98 +3143,98 @@ Char 0x00a4 '¤'
---------
Char 0x00a5 '¥'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.9#9 9#9.|
- |.1##44##1.|
- |. 5#cc#5 .|
- |.########.|
- |. 1##1 .|
- |.########.|
- |. ## .|
- |. ## .|
- |. ## .|
- ->|. ## .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 10
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |2#1 3#1|
+ | 89 a7 |
+ | 1#2 3c |
+ | 79 b5 |
+ |1###7### |
+ | 6#4 |
+ |1####### |
+ | 3#1 |
+ | 3#1 |
+ ->| 3#1 |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00a6 '¦'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 2 x 12
Advance: 5
- Offset: 2 x -2
+ Offset: 1 x -2
_____
|.....|
|.....|
|.....|
|.....|
|.....|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |..##.|
- |.. .|
- |.. .|
- |..##.|
- |..##.|
- ->|..##.|<-
- |..##.|
- |..##.|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |.3#..|
+ |. ..|
+ |. ..|
+ |.3#..|
+ |.3#..|
+ ->|.3#..|<-
+ |.3#..|
+ |.3#..|
|.....|
|.....|
-----
Char 0x00a7 '§'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 11
Advance: 7
- Offset: 1 x -1
+ Offset: 0 x -1
_______
- |........|
- |........|
- |........|
- |........|
- |........|
- |. 3b##b |
- |. c#219 |
- |. ##6 |
- |. 8##b5 |
- |.8#87c#8|
- |.##1 1##|
- |.9#c67#9|
- |. 6c##9 |
- |. 7#c |
- ->|. 921#c |<-
- |. b##b3 |
- |........|
- |........|
- |........|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ | 3b##9 |
+ | b7 |
+ | 8a2 |
+ | 8a#7 |
+ |3b 1ab |
+ |4c c4|
+ | ab3 c2|
+ | 6#c6 |
+ | a9 |
+ ->| 8b |<-
+ | b##b3 |
+ |.......|
+ |.......|
+ |.......|
-------
Char 0x00a8 '¨'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 2
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 1
Advance: 7
- Offset: 1 x 9
+ Offset: 1 x 10
_______
|.......|
|.......|
|.......|
|.......|
- |.## ##.|
- |.## ##.|
+ |.7c c7.|
+ |.......|
|.......|
|.......|
|.......|
@@ -2975,7 +3251,7 @@ Char 0x00a8 '¨'
-------
Char 0x00a9 '©'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
Advance: 14
Offset: 2 x 0
@@ -2986,14 +3262,14 @@ Char 0x00a9 '©'
|..............|
|..............|
|.. 4a##a4 ..|
- |.. 7b4 4b7 ..|
- |..4b18c#c b4..|
- |..a488118 4a..|
- |..# # #..|
- |..# # #..|
- |..a488 4a..|
- |..4b18c#c b4..|
- |.. 7b4 4b7 ..|
+ |.. 7a3 3a7 ..|
+ |..58 8c## 84..|
+ |..a 8a1 a..|
+ |..9 c2 9..|
+ |..9 c2 9..|
+ |..a 8a1 a..|
+ |..58 8c## 85..|
+ |.. 7a3 3a7 ..|
->|.. 4a##a4 ..|<-
|..............|
|..............|
@@ -3002,35 +3278,35 @@ Char 0x00a9 '©'
--------------
Char 0x00aa 'ª'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 6 x 8
- Advance: 8
- Offset: 1 x 2
- ________
- |........|
- |........|
- |........|
- |........|
- |........|
- |.ac##92.|
- |. 4#b.|
- |.3b####.|
- |.c#32##.|
- |.##17##.|
- |.5c#7##.|
- |. .|
- |.#####c.|
- |........|
- ->|........|<-
- |........|
- |........|
- |........|
- |........|
- --------
+ Advance: 7
+ Offset: 0 x 2
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ | b##9 .|
+ | 86.|
+ | 5c##8.|
+ |1c2 58.|
+ |2c11b8.|
+ | 7#b78.|
+ | .|
+ | ####9.|
+ |.......|
+ ->|.......|<-
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ -------
Char 0x00ab '«'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 6
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 6
Advance: 9
Offset: 1 x 1
_________
@@ -3042,12 +3318,12 @@ Char 0x00ab '«'
|.........|
|.........|
|.........|
- |. 8 8..|
- |.1ac1ac..|
- |.ca1ca1..|
- |.ca1ca1..|
- |.1ac1ac..|
- |. 8 8..|
+ |. 43 53.|
+ |. 6b17b1.|
+ |.8a 8a .|
+ |.8a 8a .|
+ |. 6b17b1.|
+ |. 43 53.|
->|.........|<-
|.........|
|.........|
@@ -3056,8 +3332,8 @@ Char 0x00ab '«'
---------
Char 0x00ac '¬'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 4
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 4
Advance: 12
Offset: 1 x 2
____________
@@ -3070,10 +3346,10 @@ Char 0x00ac '¬'
|............|
|............|
|............|
- |.#########..|
- |.#########..|
- |. ##..|
- |. ##..|
+ |.7########3.|
+ |. c3.|
+ |. c3.|
+ |. c3.|
|............|
->|............|<-
|............|
@@ -3083,34 +3359,34 @@ Char 0x00ac '¬'
------------
Char 0x00ad '­'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 4 x 2
- Advance: 6
- Offset: 1 x 3
- ______
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |......|
- |.####.|
- |.####.|
- |......|
- |......|
- ->|......|<-
- |......|
- |......|
- |......|
- |......|
- ------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 1
+ Advance: 5
+ Offset: 0 x 3
+ _____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |4###5|
+ |.....|
+ |.....|
+ ->|.....|<-
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ -----
Char 0x00ae '®'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
Advance: 14
Offset: 2 x 0
@@ -3121,14 +3397,14 @@ Char 0x00ae '®'
|..............|
|..............|
|.. 4a##a4 ..|
- |.. 7b4 4b7 ..|
- |..4b ###7 b4..|
- |..a4 # 4# 4a..|
- |..# ###7 #..|
- |..# #2#7 #..|
- |..a4 # 6b 4a..|
- |..4b # #3b4..|
- |.. 7b4 4b7 ..|
+ |.. 7a3 3a7 ..|
+ |..581###9 84..|
+ |..a 1# 1#2 a..|
+ |..9 1###7 9..|
+ |..9 1# a6 9..|
+ |..a 1# 2# a..|
+ |..581# 9785..|
+ |.. 7a3 3a7 ..|
->|.. 4a##a4 ..|<-
|..............|
|..............|
@@ -3137,17 +3413,17 @@ Char 0x00ae '®'
--------------
Char 0x00af '¯'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 4 x 1
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 1
Advance: 7
- Offset: 2 x 9
+ Offset: 1 x 9
_______
|.......|
|.......|
|.......|
|.......|
|.......|
- |..####.|
+ |.7###7.|
|.......|
|.......|
|.......|
@@ -3164,10 +3440,10 @@ Char 0x00af '¯'
-------
Char 0x00b0 '°'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 5
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 4
Advance: 7
- Offset: 1 x 5
+ Offset: 1 x 6
_______
|.......|
|.......|
@@ -3175,10 +3451,10 @@ Char 0x00b0 '°'
|.......|
|.......|
|.1a#a1.|
- |.a6 6a.|
- |.# #.|
- |.a6 6a.|
- |.2a#a1.|
+ |.76 67.|
+ |.76 67.|
+ |.1a#a1.|
+ |.......|
|.......|
|.......|
|.......|
@@ -3191,8 +3467,8 @@ Char 0x00b0 '°'
-------
Char 0x00b1 '±'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 9
Advance: 12
Offset: 1 x 0
____________
@@ -3202,15 +3478,15 @@ Char 0x00b1 '±'
|............|
|............|
|............|
- |............|
- |. ## .|
- |. ## .|
- |.##########.|
- |.##########.|
- |. ## .|
- |. ## .|
- |.##########.|
- ->|.##########.|<-
+ |. 96 .|
+ |. 96 .|
+ |. 96 .|
+ |.7########3.|
+ |. 96 .|
+ |. 96 .|
+ |. 96 .|
+ |. .|
+ ->|.7########3.|<-
|............|
|............|
|............|
@@ -3218,22 +3494,22 @@ Char 0x00b1 '±'
------------
Char 0x00b2 '²'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 5 x 6
Advance: 6
- Offset: 1 x 4
+ Offset: 0 x 4
______
|......|
|......|
|......|
|......|
|......|
- |.a##c4|
- |.812##|
- |. 2#a|
- |. 2ca |
- |.5#9 |
- |.#####|
+ |4##b2.|
+ | 88.|
+ | 94.|
+ | 86 .|
+ | 95 .|
+ |4###a.|
|......|
|......|
|......|
@@ -3245,22 +3521,22 @@ Char 0x00b2 '²'
------
Char 0x00b3 '³'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 5 x 6
Advance: 6
- Offset: 1 x 4
+ Offset: 0 x 4
______
|......|
|......|
|......|
|......|
|......|
- |.b##c6|
- |. 3#c|
- |. ##c3|
- |. 3#b|
- |.7 3#c|
- |.b##b4|
+ |1##c4.|
+ | 79.|
+ | 3#c2.|
+ | 5a.|
+ | 5b.|
+ |4##b3.|
|......|
|......|
|......|
@@ -3272,18 +3548,18 @@ Char 0x00b3 '³'
------
Char 0x00b4 '´'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 4 x 3
Advance: 7
- Offset: 3 x 9
+ Offset: 2 x 8
_______
|.......|
|.......|
|.......|
- |... 4#7|
- |...1c9 |
- |...9a |
|.......|
+ |.. b6.|
+ |.. 79 .|
+ |..2b .|
|.......|
|.......|
|.......|
@@ -3299,35 +3575,35 @@ Char 0x00b4 '´'
-------
Char 0x00b5 'µ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 11
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |.## ## |
- |.## ## |
- |.## ## |
- |.## ## |
- |.## ## |
- |.## ## |
- |.##7 7##1|
- ->|.##b##b8##|<-
- |.## |
- |.## |
- |.## |
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.b6 98 |
+ |.b6 98 |
+ |.b6 98 |
+ |.b6 98 |
+ |.b6 98 |
+ |.b7 a8 |
+ |.bc2 5#9 |
+ ->|.b8b#95#6|<-
+ |.b6 |
+ |.b6 |
+ |.b6 |
+ |.........|
+ ---------
Char 0x00b6 '¶'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
Advance: 9
Offset: 1 x -1
_________
@@ -3336,51 +3612,51 @@ Char 0x00b6 '¶'
|.........|
|.........|
|.........|
- |. 7c###..|
- |.8### #..|
- |.#### #..|
- |.#### #..|
- |.8### #..|
- |. 7c# #..|
- |. # #..|
- |. # #..|
- |. # #..|
- ->|. # #..|<-
- |. # #..|
+ |. 7c###5.|
+ |.7###185.|
+ |.b###185.|
+ |.b###185.|
+ |.4###185.|
+ |. 16#185.|
+ |. b185.|
+ |. b185.|
+ |. b185.|
+ ->|. b185.|<-
+ |. b185.|
|.........|
|.........|
|.........|
---------
Char 0x00b7 '·'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 2 x 3
- Advance: 5
- Offset: 1 x 3
- _____
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.....|
- |.##..|
- |.##..|
- |.##..|
- |.....|
- |.....|
- ->|.....|<-
- |.....|
- |.....|
- |.....|
- |.....|
- -----
+ Font: #11 DejaVuSans (14)
+ Bitmap: 2 x 2
+ Advance: 4
+ Offset: 1 x 4
+ ____
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |....|
+ |.7#.|
+ |.7#.|
+ |....|
+ |....|
+ |....|
+ ->|....|<-
+ |....|
+ |....|
+ |....|
+ |....|
+ ----
Char 0x00b8 '¸'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 3 x 3
Advance: 7
Offset: 2 x -3
@@ -3400,29 +3676,29 @@ Char 0x00b8 '¸'
|.......|
|.......|
->|.......|<-
- |.. 48..|
- |.. 1#..|
- |..##8..|
+ |.. 65..|
+ |.. 4a..|
+ |..c#6..|
|.......|
-------
Char 0x00b9 '¹'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 6
+ Font: #11 DejaVuSans (14)
+ Bitmap: 4 x 6
Advance: 6
- Offset: 0 x 4
+ Offset: 1 x 4
______
|......|
|......|
|......|
|......|
|......|
- |ca## .|
- | ## .|
- | ## .|
- | ## .|
- | ## .|
- | ####.|
+ |.##6 .|
+ |. 76 .|
+ |. 76 .|
+ |. 76 .|
+ |. 76 .|
+ |.###b.|
|......|
|......|
|......|
@@ -3434,35 +3710,35 @@ Char 0x00b9 '¹'
------
Char 0x00ba 'º'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 6 x 8
- Advance: 8
- Offset: 1 x 2
- ________
- |........|
- |........|
- |........|
- |........|
- |........|
- |. 9##9 .|
- |.9#44#9.|
- |.## ##.|
- |.## ##.|
- |.9#44#9.|
- |.19##9 .|
- |. .|
- |.9####9.|
- |........|
- ->|........|<-
- |........|
- |........|
- |........|
- |........|
- --------
+ Advance: 7
+ Offset: 0 x 2
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ | 3b#9 .|
+ | #4 98.|
+ |3b 2c.|
+ |3a 2c.|
+ | #4 98.|
+ | 3b#91.|
+ | .|
+ | ####9.|
+ |.......|
+ ->|.......|<-
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ -------
Char 0x00bb '»'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 6
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 6
Advance: 9
Offset: 1 x 1
_________
@@ -3474,12 +3750,12 @@ Char 0x00bb '»'
|.........|
|.........|
|.........|
- |.8 8 ..|
- |.ca1ca1..|
- |.1ac1ac..|
- |.1ac1ac..|
- |.ca1ca1..|
- |.8 8 ..|
+ |.61 61 .|
+ |.5c25c2 .|
+ |. 3c34c3.|
+ |. 3c34c3.|
+ |.5c25c2 .|
+ |.61 61 .|
->|.........|<-
|.........|
|.........|
@@ -3488,350 +3764,350 @@ Char 0x00bb '»'
---------
Char 0x00bc '¼'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 14 x 11
- Advance: 15
- Offset: 0 x -1
- _______________
- |...............|
- |...............|
- |...............|
- |...............|
- |...............|
- |ca## 9#a .|
- | ## 3##2 .|
- | ## b#8 .|
- | ## 4## .|
- | ## c#6 32 .|
- | ####6#b 8#8 .|
- | 1##4 5a#8 .|
- | 8#a 2b1#8 .|
- | 2##2 8ca#c5.|
- ->| a#8 244#a2.|<-
- | 53 .|
- |...............|
- |...............|
- |...............|
- ---------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 13 x 11
+ Advance: 14
+ Offset: 1 x -1
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |.##6 b2 |
+ |. 76 77 |
+ |. 76 2c |
+ |. 76 b3 |
+ |. 76 69 |
+ |.###b1c1 3#2 |
+ |. a5 9b2 |
+ |. 5a 72a2 |
+ |. 1c1 36 a2 |
+ ->|. 86 8####1|<-
+ |. a2 |
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x00bd '½'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 14 x 11
- Advance: 15
- Offset: 0 x -1
- _______________
- |...............|
- |...............|
- |...............|
- |...............|
- |...............|
- |ca## 9#a .|
- | ## 3##2 .|
- | ## b#8 .|
- | ## 4## .|
- | ## c#6 .|
- | ####6#b a##c4.|
- | 1##4 812##.|
- | 8#a 2#a.|
- | 2##2 2ca .|
- ->| a#8 5#9 .|<-
- | #####.|
- |...............|
- |...............|
- |...............|
- ---------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 12 x 11
+ Advance: 14
+ Offset: 1 x -1
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |.##6 b2 .|
+ |. 76 77 .|
+ |. 76 2c .|
+ |. 76 b3 .|
+ |. 76 69 .|
+ |.###b1c15##b2.|
+ |. a5 88.|
+ |. 5a 93.|
+ |. 1c1 86 .|
+ ->|. 86 95 .|<-
+ |. 5###9.|
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x00be '¾'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 13 x 11
- Advance: 15
- Offset: 1 x -1
- _______________
- |...............|
- |...............|
- |...............|
- |...............|
- |...............|
- |.b##c6 9#a .|
- |. 3#c 3##2 .|
- |. ##c3 b#8 .|
- |. 3#b4## .|
- |.7 3##c#6 32 .|
- |.b##ba#b 8#8 .|
- |. 1##4 5a#8 .|
- |. 8#a 2b1#8 .|
- |. 2##2 8ca#c5.|
- ->|. a#8 244#a2.|<-
- |. 53 .|
- |...............|
- |...............|
- |...............|
- ---------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 14 x 11
+ Advance: 14
+ Offset: 0 x -1
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |1##c4 b2 |
+ | 79 77 |
+ | 3#c2 2c |
+ | 5a b3 |
+ | 5b 69 |
+ |4##b31c1 3#2 |
+ | a5 9b2 |
+ | 5a 72a2 |
+ | 1c1 36 a2 |
+ ->| 86 8####1|<-
+ | a2 |
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x00bf '¿'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 10
- Advance: 8
- Offset: 1 x 0
- ________
- |........|
- |........|
- |........|
- |........|
- |........|
- |. ## .|
- |. ## .|
- |. .|
- |. ## .|
- |. 8#9 .|
- |. 9#b1 .|
- |.9#a .|
- |.##1 .|
- |.a#4 39.|
- ->|.19##a4.|<-
- |........|
- |........|
- |........|
- |........|
- --------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 6 x 11
+ Advance: 7
+ Offset: 1 x -3
+ _______
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |.......|
+ |. 8a |
+ |. 8a |
+ |. |
+ |. 8a |
+ |. 89 |
+ |. 1#5 |
+ |.1c9 |
+ ->|.9a |<-
+ |.#5 |
+ |.aa1165|
+ |.1a#c7 |
+ |.......|
+ -------
Char 0x00c0 'À'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 14
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 14
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- | 7#1 |
- | 99 |
- | |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ | 7a |
+ | 95 |
+ | |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c1 'Á'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 14
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 14
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- | 1#7 |
- | 99 |
- | |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ | 2c1 |
+ | b3 |
+ | |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c2 'Â'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 14
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 14
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- | b#b |
- | 89 98 |
- | |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ | 3ca |
+ | b276 |
+ | |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c3 'Ã'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 14
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 14
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- | 6#73b |
- | b27#5 |
- | |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ | 1ca2c |
+ | 575c7 |
+ | |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c4 'Ä'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 14
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 13
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- | c#3#c |
- | c#3#c |
- | |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ |..........|
+ | 3#18b |
+ | |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c5 'Å'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 13
- Advance: 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 13
+ Advance: 10
Offset: 0 x 0
- ___________
- |...........|
- |...........|
- | 2b#b2 |
- | c4 4c |
- | c4 4c |
- | 6#8#6 |
- | b# #b |
- | 2#8 8#2 |
- | 8#3 4#8 |
- | c# #c |
- | 4#8 8#4 |
- | 9#######9 |
- |1#c c#1|
- |6#8 8#6|
- ->|b#3 3#b|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+ __________
+ |..........|
+ |..........|
+ | 5#b1 |
+ | c158 |
+ | b157 |
+ | 5## |
+ | 8a#2 |
+ | #398 |
+ | 5c 4# |
+ | a6 c5 |
+ | 2#1 7a |
+ | 7######1 |
+ | c4 a7 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
Char 0x00c6 'Æ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 14 x 10
- Advance: 15
+ Font: #11 DejaVuSans (14)
+ Bitmap: 13 x 10
+ Advance: 14
Offset: 0 x 0
- _______________
- |...............|
- |...............|
- |...............|
- |...............|
- |...............|
- | c#c#######.|
- | 4#b ## .|
- | a#5 ## .|
- | 2#c ## .|
- | 8#6 #######.|
- | 1## ## .|
- | 6####### .|
- | c#3 ## .|
- |4#b ## .|
- ->|a#5 #######.|<-
- |...............|
- |...............|
- |...............|
- |...............|
- ---------------
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ | c#######8.|
+ | 4#1b7 .|
+ | a8 b7 .|
+ | 2#2 b7 .|
+ | 89 b#####5.|
+ | #3 b7 .|
+ | 6#####7 .|
+ | c5 b7 .|
+ |4# b7 .|
+ ->|a8 b#####a.|<-
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x00c7 'Ç'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 13
- Advance: 11
- Offset: 1 x -3
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- |. 39c##c9.|
- |. 7#82 14a.|
- |.5#9 .|
- |.a#2 .|
- |.## .|
- |.## .|
- |.a#2 .|
- |.5#9 .|
- |. 7#82 14a.|
- ->|. 39c##ca.|<-
- |. 48 .|
- |. 1# .|
- |. ##8 .|
- |...........|
- -----------
+ Advance: 10
+ Offset: 0 x -3
+ __________
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ | 17c#c93.|
+ | 1ca3 13a.|
+ | 9c .|
+ | #6 .|
+ |2#4 .|
+ |2#4 .|
+ | #6 .|
+ | 9c .|
+ | 1ca3 13a.|
+ ->| 17c#c93.|<-
+ | 56 .|
+ | 3b .|
+ | c#7 .|
+ |..........|
+ ----------
Char 0x00c8 'È'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 14
Advance: 9
Offset: 1 x 0
_________
|.........|
- |. 7#1 .|
- |. 99 .|
+ |. 97 .|
+ |. b2 .|
|. .|
|. .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
|.........|
|.........|
|.........|
@@ -3839,26 +4115,26 @@ Char 0x00c8 'È'
---------
Char 0x00c9 'É'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 14
Advance: 9
Offset: 1 x 0
_________
|.........|
- |. 1#7 .|
- |. 99 .|
+ |. 5b .|
+ |. 1c1 .|
|. .|
|. .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
|.........|
|.........|
|.........|
@@ -3866,26 +4142,26 @@ Char 0x00c9 'É'
---------
Char 0x00ca 'Ê'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 14
Advance: 9
Offset: 1 x 0
_________
|.........|
- |. b#b .|
- |. 89 98 .|
+ |. 5c8 .|
+ |. 2a 94 .|
|. .|
|. .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
|.........|
|.........|
|.........|
@@ -3893,26 +4169,26 @@ Char 0x00ca 'Ê'
---------
Char 0x00cb 'Ë'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 14
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 13
Advance: 9
Offset: 1 x 0
_________
|.........|
- |. ## ## .|
- |. ## ## .|
+ |.........|
+ |. 6# a8 .|
|. .|
|. .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
|.........|
|.........|
|.........|
@@ -3920,26 +4196,26 @@ Char 0x00cb 'Ë'
---------
Char 0x00cc 'Ì'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 3 x 14
Advance: 4
Offset: 0 x 0
____
|....|
- |7#1.|
- | 99.|
+ |3c1.|
+ | 59.|
| .|
| .|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- | ##.|
- ->| ##.|<-
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ | 8a.|
+ ->| 8a.|<-
|....|
|....|
|....|
@@ -3947,26 +4223,26 @@ Char 0x00cc 'Ì'
----
Char 0x00cd 'Í'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 3 x 14
Advance: 4
Offset: 1 x 0
____
|....|
- |.1#7|
- |.99 |
+ |. b4|
+ |.77 |
|. |
|. |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- ->|.## |<-
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ |.8a |
+ ->|.8a |<-
|....|
|....|
|....|
@@ -3974,61 +4250,61 @@ Char 0x00cd 'Í'
----
Char 0x00ce 'Î'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 14
+ Font: #11 DejaVuSans (14)
+ Bitmap: 4 x 14
Advance: 4
- Offset: -1 x 0
- ____
- |......|
- | 5##5 |
- |2c33c2|
- | |
- | |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
- |......|
- |......|
- |......|
- |......|
- ----
+ Offset: 0 x 0
+ ____
+ |....|
+ | bc1|
+ |853a|
+ | |
+ | |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ ->| 8a |<-
+ |....|
+ |....|
+ |....|
+ |....|
+ ----
Char 0x00cf 'Ï'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 14
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 13
Advance: 4
- Offset: -1 x 0
- ____
- |......|
- |## ##|
- |## ##|
- | |
- | |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
- |......|
- |......|
- |......|
- |......|
- ----
+ Offset: 0 x 0
+ ____
+ |.....|
+ |.....|
+ |#63#1|
+ | |
+ | |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ | 8a |
+ ->| 8a |<-
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ ----
Char 0x00d0 'Ð'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
Advance: 11
Offset: 0 x 0
@@ -4038,16 +4314,16 @@ Char 0x00d0 'Ð'
|...........|
|...........|
|...........|
- | ####c94 .|
- | ## 28#8 .|
- | ## 8#5.|
- | ## 2#a.|
- |##### ##.|
- | ## ##.|
- | ## 2#a.|
- | ## 9#5.|
- | ## 28#8 .|
- ->| ####c94 .|<-
+ | 7###ca6 .|
+ | 7b 14bb .|
+ | 7b 1#7.|
+ | 7b 8b.|
+ |#####1 6#.|
+ | 7b 6#.|
+ | 7b 8b.|
+ | 7b 1#7.|
+ | 7b 14bb .|
+ ->| 7###ca6 .|<-
|...........|
|...........|
|...........|
@@ -4055,431 +4331,431 @@ Char 0x00d0 'Ð'
-----------
Char 0x00d1 'Ñ'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 14
- Advance: 11
+ Advance: 10
Offset: 1 x 0
+ __________
+ |..........|
+ |. 7c565 |
+ |. c2ac1 |
+ |. |
+ |. |
+ |.8#7 3#1|
+ |.8##1 3#1|
+ |.8ab8 3#1|
+ |.8a3#2 3#1|
+ |.8a a9 3#1|
+ |.8a 2#33#1|
+ |.8a 9a3#1|
+ |.8a 1#7#1|
+ |.8a 8##1|
+ ->|.8a 1##1|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
+
+Char 0x00d2 'Ò'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 14
+ Advance: 11
+ Offset: 0 x 0
___________
|...........|
- |. 7#71# .|
- |. #27#7 .|
- |. .|
- |. .|
- |.##8 ##.|
- |.###3 ##.|
- |.###b ##.|
- |.##5#6 ##.|
- |.## a#1 ##.|
- |.## 2#a ##.|
- |.## 7#5##.|
- |.## bc##.|
- |.## 3###.|
- ->|.## 8##.|<-
+ | a6 |
+ | 1b2 |
+ | |
+ | |
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
|...........|
|...........|
|...........|
|...........|
-----------
-Char 0x00d2 'Ò'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |. 7#1 .|
- |. 99 .|
- |. .|
- |. .|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
- |............|
- |............|
- |............|
- |............|
- ------------
-
Char 0x00d3 'Ó'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |. 1#7 .|
- |. 99 .|
- |. .|
- |. .|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
- |............|
- |............|
- |............|
- |............|
- ------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 14
+ Advance: 11
+ Offset: 0 x 0
+ ___________
+ |...........|
+ | 6a |
+ | 2b1 |
+ | |
+ | |
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
Char 0x00d4 'Ô'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |. b#b .|
- |. 89 98 .|
- |. .|
- |. .|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
- |............|
- |............|
- |............|
- |............|
- ------------
-
-Char 0x00d5 'Õ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |. 8c2b .|
- |. b2c8 .|
- |. .|
- |. .|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
- |............|
- |............|
- |............|
- |............|
- ------------
-
-Char 0x00d6 'Ö'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
- Advance: 12
- Offset: 1 x 0
- ____________
- |............|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |. .|
- |. 6b##b6 .|
- |. a#6 6#a .|
- |.6#7 7#6.|
- |.b#2 2#b.|
- |.## ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.6#7 7#6.|
- |. a#5 6#a .|
- ->|. 6b##b6 .|<-
- |............|
- |............|
- |............|
- |............|
- ------------
-
-Char 0x00d7 '×'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
- Advance: 12
- Offset: 2 x 1
- ____________
- |............|
- |............|
- |............|
- |............|
- |............|
- |............|
- |..58 85..|
- |..8#8 8#8..|
- |.. 8#88#8 ..|
- |.. 8##8 ..|
- |.. 8##8 ..|
- |.. 8#88#8 ..|
- |..8#8 8#8..|
- |..58 85..|
- ->|............|<-
- |............|
- |............|
- |............|
- |............|
- ------------
-
-Char 0x00d8 'Ø'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 12 x 12
- Advance: 12
- Offset: 0 x -1
- ____________
- |............|
- |............|
- |............|
- |............|
- | 1 |
- | 4a##a43b1|
- | 8#6 6##3 |
- | 4#7 6##5 |
- | a#2 6#7#a |
- | c# 6#5 ## |
- | ## 6#5 #c |
- | c#8#5 2#a |
- | 6##5 7#4 |
- | 4##6 6#8 |
- ->|2c76b##a4 |<-
- | 1 |
- |............|
- |............|
- |............|
- ------------
-
-Char 0x00d9 'Ù'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 14
Advance: 11
- Offset: 1 x 0
+ Offset: 0 x 0
___________
|...........|
- |. 7#1 .|
- |. 99 .|
- |. .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#c.|
- |.6#91 19#6.|
- ->|. 5a###a5 .|<-
+ | 6c7 |
+ | 3a a3 |
+ | |
+ | |
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
|...........|
|...........|
|...........|
|...........|
-----------
-Char 0x00da 'Ú'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
+Char 0x00d5 'Õ'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 14
Advance: 11
- Offset: 1 x 0
+ Offset: 0 x 0
___________
|...........|
- |. 1#7 .|
- |. 99 .|
- |. .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#c.|
- |.6#91 19#6.|
- ->|. 5a###a5 .|<-
+ | 4#839 |
+ | 937#4 |
+ | |
+ | |
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
|...........|
|...........|
|...........|
|...........|
-----------
-Char 0x00db 'Û'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
+Char 0x00d6 'Ö'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 13
Advance: 11
- Offset: 1 x 0
+ Offset: 0 x 0
___________
|...........|
- |. b#b .|
- |. 89 98 .|
- |. .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#c.|
- |.6#91 19#6.|
- ->|. 5a###a5 .|<-
+ |...........|
+ | 7c b7 |
+ | |
+ | |
+ | 18c#c81 |
+ | 1ca2 29c1 |
+ | 9c c9 |
+ | #6 6# |
+ |2#4 3#2|
+ |2#4 3#2|
+ | #6 6# |
+ | 9c c9 |
+ | 1ca2 29c1 |
+ ->| 18c#c81 |<-
|...........|
|...........|
|...........|
|...........|
-----------
-Char 0x00dc 'Ü'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
+Char 0x00d7 '×'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 8
+ Advance: 12
+ Offset: 2 x 0
+ ____________
+ |............|
+ |............|
+ |............|
+ |............|
+ |............|
+ |............|
+ |............|
+ |..93 66..|
+ |..5#3 6#2..|
+ |.. 6#36#3 ..|
+ |.. 6##3 ..|
+ |.. 6##3 ..|
+ |.. 6#36#3 ..|
+ |..5#3 6#2..|
+ ->|..93 66..|<-
+ |............|
+ |............|
+ |............|
+ |............|
+ ------------
+
+Char 0x00d8 'Ø'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 12
Advance: 11
- Offset: 1 x 0
+ Offset: 0 x -1
___________
|...........|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.c#1 1#c.|
- |.6#91 19#6.|
- ->|. 5a###a5 .|<-
|...........|
|...........|
|...........|
+ | 1 |
+ | 18c#b83c1|
+ | 1ca2 2a#5 |
+ | 9c bc9 |
+ | #6 a66# |
+ |2#4 87 3#2|
+ |2#4 79 4#2|
+ | #65a 6# |
+ | 9cb c9 |
+ | 4#a2 29c1 |
+ ->|1b38c#c81 |<-
+ | 1 |
+ |...........|
+ |...........|
|...........|
-----------
-Char 0x00dd 'Ý'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 14
+Char 0x00d9 'Ù'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 14
Advance: 10
- Offset: 0 x 0
+ Offset: 1 x 0
__________
|..........|
- | 1#7 |
- | 99 |
- | |
- | |
- |9#9 9#9|
- | c#3 3#c |
- | 3#a a#3 |
- | 8#44#8 |
- | bccb |
- | 2##2 |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
+ |. 2c1 .|
+ |. 5a .|
+ |. .|
+ |. .|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a9 5#.|
+ |.8b 8b.|
+ |.2#71 4#5.|
+ ->|. 3ac#b5 .|<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x00de 'Þ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 10
+Char 0x00da 'Ú'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 14
Advance: 10
Offset: 1 x 0
__________
|..........|
+ |. b5 .|
+ |. 78 .|
+ |. .|
+ |. .|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a9 5#.|
+ |.8b 8b.|
+ |.2#71 4#5.|
+ ->|. 3ac#b5 .|<-
+ |..........|
|..........|
|..........|
|..........|
+ ----------
+
+Char 0x00db 'Û'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 14
+ Advance: 10
+ Offset: 1 x 0
+ __________
|..........|
- |.## .|
- |.#####b6 .|
- |.## 19#6.|
- |.## 2#c.|
- |.## ##.|
- |.## 1#c.|
- |.## 19#6.|
- |.#####b6 .|
- |.## .|
- ->|.## .|<-
+ |. bc2 .|
+ |. 852a .|
+ |. .|
+ |. .|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a9 5#.|
+ |.8b 8b.|
+ |.2#71 4#5.|
+ ->|. 3ac#b5 .|<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x00df 'ß'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
+Char 0x00dc 'Ü'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 13
Advance: 10
Offset: 1 x 0
__________
|..........|
|..........|
- |..........|
- |..........|
- |.18c#c81 .|
- |.a#6 5#a .|
- |.## 3## .|
- |.## 5#b6 .|
- |.## c#1 .|
- |.## ##7 .|
- |.## 9##a1.|
- |.## 1a##a.|
- |.## 5##.|
- |.## 3#b.|
- ->|.## c##a2.|<-
+ |. c63#2 .|
+ |. .|
+ |. .|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a8 5#.|
+ |.a9 5#.|
+ |.8b 8b.|
+ |.2#71 4#5.|
+ ->|. 3ac#b5 .|<-
|..........|
|..........|
|..........|
|..........|
----------
-Char 0x00e0 'à'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+Char 0x00dd 'Ý'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 14
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ | 97 |
+ | 4a |
+ | |
+ | |
+ |9a 3#3|
+ |1c6 c7 |
+ | 4#2 8b |
+ | 8b4#2 |
+ | c#6 |
+ | 6# |
+ | 5# |
+ | 5# |
+ | 5# |
+ ->| 5# |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
+
+Char 0x00de 'Þ'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 10
+ Advance: 8
+ Offset: 1 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |.8a |
+ |.8###c7 |
+ |.8a 3#8|
+ |.8a 7c|
+ |.8a 7c|
+ |.8a 3#8|
+ |.8###c7 |
+ |.8a |
+ |.8a |
+ ->|.8a |<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
+Char 0x00df 'ß'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
Offset: 1 x 0
_________
|.........|
|.........|
|.........|
- |. 7#4 .|
- |. 9c1 .|
- |. a9 .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ |.........|
+ |. 6c#a2 |
+ |.5#3 6c |
+ |.98 2#3 |
+ |.a7 6c51 |
+ |.a7 #3 |
+ |.a7 #6 |
+ |.a7 6#7 |
+ |.a7 4ca |
+ |.a7 3#1|
+ |.a7 6# |
+ ->|.a79##b3 |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
+
+Char 0x00e0 'à'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | b5 .|
+ | 2c1 .|
+ | 59 .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4487,26 +4763,26 @@ Char 0x00e0 'à'
---------
Char 0x00e1 'á'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
- |. 4#7.|
- |. 1c9 .|
- |. 9a .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ |.........|
+ | 4c1 .|
+ | c3 .|
+ | 87 .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4514,26 +4790,26 @@ Char 0x00e1 'á'
---------
Char 0x00e2 'â'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
- |. 8#8 .|
- |. 2#7#2 .|
- |. a7 7a .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ |.........|
+ | ab .|
+ | 3a95 .|
+ | b21b .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4541,26 +4817,26 @@ Char 0x00e2 'â'
---------
Char 0x00e3 'ã'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
- |. 7a a .|
- |. b54b .|
- |. a a7 .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ |.........|
+ | 9c293 .|
+ | 1a1bb .|
+ | .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4568,26 +4844,26 @@ Char 0x00e3 'ã'
---------
Char 0x00e4 'ä'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
|.........|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ | #54#1 .|
+ | .|
+ | .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4595,26 +4871,26 @@ Char 0x00e4 'ä'
---------
Char 0x00e5 'å'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 13
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 13
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
- |. 4cc4 .|
- |. c33c .|
- |. c33c .|
- |. 4cc4 .|
- |. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ | 2bc3 .|
+ | 932b .|
+ | 932b .|
+ | 2bc3 .|
+ | .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
@@ -4622,469 +4898,469 @@ Char 0x00e5 'å'
---------
Char 0x00e6 'æ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 14 x 8
- Advance: 16
- Offset: 1 x 0
- ________________
- |................|
- |................|
- |................|
- |................|
- |................|
- |................|
- |................|
- |. 4###b63a##a3 .|
- |. 74 6##a1 8#4.|
- |. ##2 #b.|
- |.18c###########.|
- |.a#7 ## .|
- |.## 4##4 .|
- |.a#6 2c##c2 15a.|
- ->|.19##c827b##c83.|<-
- |................|
- |................|
- |................|
- |................|
- ----------------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 13 x 8
+ Advance: 14
+ Offset: 0 x 0
+ ______________
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ | 8###a35b#b6 .|
+ | 18#c3 2b5.|
+ | #5 4b.|
+ | 29c#########.|
+ | c81 #4 .|
+ |1#1 3#8 .|
+ | #7 2b5#61148.|
+ ->| 3b#b4 2a#c81.|<-
+ |..............|
+ |..............|
+ |..............|
+ |..............|
+ --------------
Char 0x00e7 'ç'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 11
+ Advance: 8
+ Offset: 0 x -3
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ |........|
+ | 6b#b3.|
+ | 7c4 28.|
+ | #5 .|
+ |2#2 .|
+ |2#2 .|
+ | #5 .|
+ | 7c4 28.|
+ ->| 6c#a3.|<-
+ | 65 .|
+ | 4a .|
+ | c#6 .|
+ |........|
+ --------
+
+Char 0x00e8 'è'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x -3
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
|.........|
+ | 7a .|
+ | a5 .|
+ | 1c1 .|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
|.........|
|.........|
|.........|
- |. 29c#b4.|
- |.2#c3 29.|
- |.a#3 .|
- |.## .|
- |.## .|
- |.a#3 .|
- |.3#c3 28.|
- ->|. 29c#b4.|<-
- |. 48 .|
- |. 1# .|
- |. ##8 .|
|.........|
---------
-Char 0x00e8 'è'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 7#4 .|
- |. 9c1 .|
- |. a9 .|
- |. .|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
Char 0x00e9 'é'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 4#7 .|
- |. 1c9 .|
- |. 9a .|
- |. .|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | c5 .|
+ | 79 .|
+ | 2b .|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00ea 'ê'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 8#8 .|
- |. 2#7#2 .|
- |. a7 7a .|
- |. .|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 4#3 .|
+ | b6a .|
+ | 67 84 .|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00eb 'ë'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 8b c6 .|
+ | .|
+ | .|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00ec 'ì'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 4 x 12
+ Font: #11 DejaVuSans (14)
+ Bitmap: 4 x 11
Advance: 4
- Offset: 0 x 0
+ Offset: -1 x 0
+ ____
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |1c3 .|
+ | 3c .|
+ | 77.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ | 98.|
+ ->| 98.|<-
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ ----
+
+Char 0x00ed 'í'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 3 x 11
+ Advance: 4
+ Offset: 1 x 0
____
|....|
|....|
|....|
- |7#4 |
- | 9c1|
- | a9|
- | |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
+ |....|
+ |. 5b|
+ |.1c2|
+ |.95 |
+ |.98 |
+ |.98 |
+ |.98 |
+ |.98 |
+ |.98 |
+ |.98 |
+ |.98 |
+ ->|.98 |<-
|....|
|....|
|....|
|....|
----
-Char 0x00ed 'í'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 5 x 12
+Char 0x00ee 'î'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 4 x 11
Advance: 4
- Offset: 1 x 0
+ Offset: 0 x 0
____
- |......|
- |......|
- |......|
- |. 4#7|
- |. 1c9 |
- |. 9a |
- |. |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- |.## |
- ->|.## |<-
- |......|
- |......|
- |......|
- |......|
+ |....|
+ |....|
+ |....|
+ |....|
+ | ba |
+ |59a4|
+ |b12b|
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ ->| 98 |<-
+ |....|
+ |....|
+ |....|
+ |....|
----
-Char 0x00ee 'î'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 12
- Advance: 4
- Offset: -1 x 0
- ____
- |......|
- |......|
- |......|
- | 1##1 |
- | 9aa9 |
- |3c11c3|
- | |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
- |......|
- |......|
- |......|
- |......|
- ----
-
Char 0x00ef 'ï'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 6 x 11
+ Font: #11 DejaVuSans (14)
+ Bitmap: 5 x 11
Advance: 4
Offset: -1 x 0
____
- |......|
- |......|
- |......|
- |......|
- |## ##|
- |## ##|
- | |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- | ## |
- ->| ## |<-
- |......|
- |......|
- |......|
- |......|
+ |.....|
+ |.....|
+ |.....|
+ |.....|
+ |1#45#|
+ | |
+ | |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ | 98 |
+ ->| 98 |<-
+ |.....|
+ |.....|
+ |.....|
+ |.....|
----
Char 0x00f0 'ð'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. 3##5393.|
- |. 6##c5 .|
- |. ac9#c1 .|
- |. 3 9#9 .|
- |. 6b####4.|
- |.7#91 5#a.|
- |.c#1 ##.|
- |.## ##.|
- |.b#2 2#b.|
- |.4#a11a#4.|
- ->|. 4a##a4 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 5#348 .|
+ | 15c#6 .|
+ | 34 8c1 .|
+ | 7c##a .|
+ | 7c3 3#3.|
+ | #5 a8.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 6c3 7#1.|
+ ->| 7c#a3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f1 'ñ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 5c3 # .|
- |. b3a3b .|
- |. # 3#5 .|
- |. .|
- |.##4a##a2.|
- |.##b2 6#a.|
- |.##2 ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- ->|.## ##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 3#72a .|
+ |. 836#4 .|
+ |. .|
+ |.a88cc7 .|
+ |.a#5 2#5.|
+ |.a9 98.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ |.a7 89.|
+ ->|.a7 89.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f2 'ò'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 7#4 .|
- |. 9c1 .|
- |. a9 .|
- |. .|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 98 .|
+ | c3 .|
+ | 3b .|
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f3 'ó'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 4#7 .|
- |. 1c9 .|
- |. 9a .|
- |. .|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 1#3 .|
+ | a6 .|
+ | 5a .|
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f4 'ô'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 1##1 .|
- |. 8aa9 .|
- |. 2#11c3 .|
- |. .|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 7#1 .|
+ | 1c78 .|
+ | 85 a2 .|
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f5 'õ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 4#8 3# .|
- |. b5765b .|
- |. #2 8#4 .|
- |. .|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 6#456 .|
+ | b19c2 .|
+ | .|
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f6 'ö'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |. 3a##a3 .|
- |.3#a11a#3.|
- |.a#2 2#a.|
- |.## ##.|
- |.## ##.|
- |.a#2 2#a.|
- |.3#a11a#3.|
- ->|. 3a##a3 .|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | a81#4 .|
+ | .|
+ | .|
+ | 7c#b3 .|
+ | 7c3 7#1.|
+ | #5 b7.|
+ |2#2 8a.|
+ |2#2 8a.|
+ | #5 b7.|
+ | 7c2 6#1.|
+ ->| 7c#b3 .|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f7 '÷'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 8
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 7
Advance: 12
- Offset: 2 x 0
+ Offset: 1 x 1
____________
|............|
|............|
@@ -5093,14 +5369,14 @@ Char 0x00f7 '÷'
|............|
|............|
|............|
- |.. ## ..|
- |.. ## ..|
- |.. ..|
- |..########..|
- |..########..|
- |.. ..|
- |.. ## ..|
- ->|.. ## ..|<-
+ |. #9 .|
+ |. #9 .|
+ |. .|
+ |.7########3.|
+ |. .|
+ |. #9 .|
+ |. #9 .|
+ ->|............|<-
|............|
|............|
|............|
@@ -5108,250 +5384,115 @@ Char 0x00f7 '÷'
------------
Char 0x00f8 'ø'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 10
- Advance: 10
- Offset: 1 x -1
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 2.|
- |. 29##c87.|
- |.2#a11##4.|
- |.9#2 8##a.|
- |.## 6#3##.|
- |.##4#5 ##.|
- |.a##7 2#9.|
- |.5#c11a#2.|
- ->|.778##92 .|<-
- |.3 .|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x -1
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 2.|
+ | 7c#a79.|
+ | 7c3 8#3.|
+ | #5 1bb8.|
+ |2#2 b37a.|
+ |2#195 8a.|
+ | #a8 b7.|
+ | 8#3 6#1.|
+ ->|2b7c#b3 .|<-
+ |11 .|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00f9 'ù'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 9
Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 7#4 .|
- |. 9c1 .|
- |. a9 .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## 2##.|
- |.b#6 2a##.|
- ->|.2a##b4##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ |. 89 .|
+ |. b4 .|
+ |. 2c .|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.a7 b8.|
+ |.7c2 6#8.|
+ ->|. 8#c898.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x00fa 'ú'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 4#7.|
- |. 1c9 .|
- |. 9a .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## 2##.|
- |.b#6 2a##.|
- ->|.2a##b4##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x00fb 'û'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 12
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |. 1##1 .|
- |. 9aa9 .|
- |. 3c11c3 .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## 2##.|
- |.b#6 2a##.|
- ->|.2a##b4##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x00fc 'ü'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ## ## .|
- |. ## ## .|
- |. .|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## ##.|
- |.## 2##.|
- |.b#6 2a##.|
- ->|.2a##b4##.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
-
-Char 0x00fd 'ý'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 15
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
Advance: 9
- Offset: 0 x -3
+ Offset: 1 x 0
_________
|.........|
|.........|
|.........|
- | 4#7 |
- | 1c9 |
- | 9a |
- | |
- |b#4 3#b|
- |5#9 8#6|
- | c# c#1|
- | 7#5 2#a |
- | 1#a 7#5 |
- | 9#1b# |
- | 4#8#9 |
- ->| c##4 |<-
- | 6#c |
- | 9#7 |
- | a#c7 |
+ |.........|
+ |. 1c3 .|
+ |. 97 .|
+ |. 4a .|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.a7 b8.|
+ |.7c2 6#8.|
+ ->|. 8#c898.|<-
+ |.........|
+ |.........|
+ |.........|
|.........|
---------
-Char 0x00fe 'þ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 8 x 14
- Advance: 10
- Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |.## .|
- |.## .|
- |.## .|
- |.##5b#c5 .|
- |.##a11a#4.|
- |.##2 2#a.|
- |.## ##.|
- |.## ##.|
- |.##2 2#a.|
- |.##a11a#4.|
- ->|.##5b#c5 .|<-
- |.## .|
- |.## .|
- |.## .|
- |..........|
- ----------
-
-Char 0x00ff 'ÿ'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
+Char 0x00fb 'û'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
Advance: 9
- Offset: 0 x -3
+ Offset: 1 x 0
_________
|.........|
|.........|
|.........|
|.........|
- | ## ## |
- | ## ## |
- | |
- |b#4 3#b|
- |5#9 8#6|
- | c# c#1|
- | 7#5 2#a |
- | 1#a 7#5 |
- | 9#1b# |
- | 4#8#9 |
- ->| c##4 |<-
- | 6#c |
- | 9#7 |
- | a#c7 |
+ |. 6#2 .|
+ |. c69 .|
+ |. 75 a3 .|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.a7 b8.|
+ |.7c2 6#8.|
+ ->|. 8#c898.|<-
+ |.........|
+ |.........|
+ |.........|
|.........|
---------
-Char 0x0102 'Ă'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 13
- Advance: 11
- Offset: 0 x 0
- ___________
- |...........|
- |...........|
- | a5 5a |
- | 3b#b3 |
- | |
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
-
-Char 0x0103 'ă'
- Font: #11 DejaVuSans-Bold (14)
+Char 0x00fc 'ü'
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 11
Advance: 9
Offset: 1 x 0
@@ -5360,53 +5501,53 @@ Char 0x0103 'ă'
|.........|
|.........|
|.........|
- |. c4 4c .|
- |. 4b#b3 .|
+ |. 99 #5 .|
+ |. .|
|. .|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.b6 98.|
+ |.a7 b8.|
+ |.7c2 6#8.|
+ ->|. 8#c898.|<-
|.........|
|.........|
|.........|
|.........|
---------
-Char 0x0104 'Ą'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 11 x 13
- Advance: 11
+Char 0x00fd 'ý'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 14
+ Advance: 8
Offset: 0 x -3
- ___________
- |...........|
- |...........|
- |...........|
- |...........|
- |...........|
- | 1###1 |
- | 6###6 |
- | c#4#b |
- | 3#a a#3 |
- | 9#4 4#9 |
- | 1#c c#1 |
- | 6#######6 |
- | c#1 1#c |
- |3#a a#3|
- ->|9#4 4#9|<-
- | 84 |
- | #1 |
- | 8## |
- |...........|
- -----------
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ | 3#1 |
+ | b4 |
+ | 78 |
+ |5c 99|
+ | #4 #4|
+ | 89 5c |
+ | 2#1 b7 |
+ | b62#2 |
+ | 5b8a |
+ | ##5 |
+ ->| 8# |<-
+ | a8 |
+ | 3#2 |
+ | c#6 |
+ |........|
+ --------
-Char 0x0105 'ą'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 11
+Char 0x00fe 'þ'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 14
Advance: 9
Offset: 1 x -3
_________
@@ -5414,152 +5555,287 @@ Char 0x0105 'ą'
|.........|
|.........|
|.........|
- |.........|
- |.........|
- |.........|
- |. 6##c8 .|
- |. 62 5#8.|
- |. #c.|
- |.29#####.|
- |.b#5 ##.|
- |.## 2##.|
- |.b#4 9##.|
- ->|.2b#c5##.|<-
- |. 84 .|
- |. #1 .|
- |. 8##.|
+ |.a7 .|
+ |.a7 .|
+ |.a7 .|
+ |.a89cc7 .|
+ |.a#6 3c6.|
+ |.ab 6c.|
+ |.a8 3#.|
+ |.a8 3#.|
+ |.ab 6c.|
+ |.a#6 3c6.|
+ ->|.a89c#7 .|<-
+ |.a7 .|
+ |.a7 .|
+ |.a7 .|
|.........|
---------
-Char 0x0106 'Ć'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |. 1#7 .|
- |. 99 .|
- |. .|
- |. .|
- |. 39c##c9.|
- |. 7#82 14a.|
- |.5#9 .|
- |.a#2 .|
- |.## .|
- |.## .|
- |.a#2 .|
- |.5#9 .|
- |. 7#82 14a.|
- ->|. 39c##ca.|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+Char 0x00ff 'ÿ'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 14
+ Advance: 8
+ Offset: 0 x -3
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ | c73#2 |
+ | |
+ | |
+ |5c 99|
+ | #4 #4|
+ | 89 5c |
+ | 2#1 b7 |
+ | b62#2 |
+ | 5b8a |
+ | ##5 |
+ ->| 8# |<-
+ | a8 |
+ | 3#2 |
+ | c#6 |
+ |........|
+ --------
-Char 0x0107 'ć'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+Char 0x0102 'Ă'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 13
+ Advance: 10
+ Offset: 0 x 0
+ __________
+ |..........|
+ |..........|
+ | 1b12c |
+ | 7#c4 |
+ | |
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
+
+Char 0x0103 'ă'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x 0
_________
|.........|
|.........|
|.........|
- |. 4#7.|
- |. 1c9 .|
- |. 9a .|
- |. .|
- |. 29c#b4.|
- |.2#c3 29.|
- |.a#3 .|
- |.## .|
- |.## .|
- |.a#3 .|
- |.3#c3 28.|
- ->|. 29c#b4.|<-
+ |.........|
+ | c11c1 .|
+ | 5c#6 .|
+ | .|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
|.........|
|.........|
|.........|
|.........|
---------
-Char 0x010c 'Č'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 9 x 14
- Advance: 11
- Offset: 1 x 0
- ___________
- |...........|
- |. 89 98 .|
- |. b#b .|
- |. .|
- |. .|
- |. 39c##c9.|
- |. 7#82 14a.|
- |.5#9 .|
- |.a#2 .|
- |.## .|
- |.## .|
- |.a#2 .|
- |.5#9 .|
- |. 7#82 14a.|
- ->|. 39c##ca.|<-
- |...........|
- |...........|
- |...........|
- |...........|
- -----------
+Char 0x0104 'Ą'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 10 x 13
+ Advance: 10
+ Offset: 0 x -3
+ __________
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ | 2#a |
+ | 8b#2 |
+ | #4a7 |
+ | 5c 4c |
+ | a6 c4 |
+ | 1#1 7a |
+ | 7######1 |
+ | c4 a6 |
+ |4# 6c |
+ ->|9a 1#3|<-
+ | 38 |
+ | 85 |
+ | 4#b|
+ |..........|
+ ----------
-Char 0x010d 'č'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 7 x 12
+Char 0x0105 'ą'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 8 x 11
Advance: 9
- Offset: 1 x 0
+ Offset: 0 x -3
_________
|.........|
|.........|
|.........|
- |. a7 7a .|
- |. 2#7#2 .|
- |. 8#8 .|
- |. .|
- |. 29c#b4.|
- |.2#c3 29.|
- |.a#3 .|
- |.## .|
- |.## .|
- |.a#3 .|
- |.3#c3 28.|
- ->|. 29c#b4.|<-
|.........|
|.........|
|.........|
|.........|
+ | 8##c92 .|
+ | 18b .|
+ | #2.|
+ | 29c###4.|
+ | c81 #4.|
+ |1#1 2#4.|
+ | #7 2b#4.|
+ ->| 3b#c6#4.|<-
+ | 38 .|
+ | 85 .|
+ | 4#b.|
+ |.........|
---------
+Char 0x0106 'Ć'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 14
+ Advance: 10
+ Offset: 0 x 0
+ __________
+ |..........|
+ | 5a .|
+ | 1c1 .|
+ | .|
+ | .|
+ | 17c#c93.|
+ | 1ca3 13a.|
+ | 9c .|
+ | #6 .|
+ |2#4 .|
+ |2#4 .|
+ | #6 .|
+ | 9c .|
+ | 1ca3 13a.|
+ ->| 17c#c93.|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
+
+Char 0x0107 'ć'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 8
+ Offset: 0 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ | c5.|
+ | 88 .|
+ | 3b .|
+ | 6b#b3.|
+ | 7c4 28.|
+ | #5 .|
+ |2#2 .|
+ |2#2 .|
+ | #5 .|
+ | 7c4 28.|
+ ->| 6c#a3.|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
+Char 0x010c 'Č'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 9 x 14
+ Advance: 10
+ Offset: 0 x 0
+ __________
+ |..........|
+ | 2a 93 .|
+ | 6c7 .|
+ | .|
+ | .|
+ | 17c#c93.|
+ | 1ca3 13a.|
+ | 9c .|
+ | #6 .|
+ |2#4 .|
+ |2#4 .|
+ | #6 .|
+ | 9c .|
+ | 1ca3 13a.|
+ ->| 17c#c93.|<-
+ |..........|
+ |..........|
+ |..........|
+ |..........|
+ ----------
+
+Char 0x010d 'č'
+ Font: #11 DejaVuSans (14)
+ Bitmap: 7 x 11
+ Advance: 8
+ Offset: 0 x 0
+ ________
+ |........|
+ |........|
+ |........|
+ |........|
+ | 67 94.|
+ | b6a .|
+ | 4#3 .|
+ | 6b#b3.|
+ | 7c4 28.|
+ | #5 .|
+ |2#2 .|
+ |2#2 .|
+ | #5 .|
+ | 7c4 28.|
+ ->| 6c#a3.|<-
+ |........|
+ |........|
+ |........|
+ |........|
+ --------
+
Char 0x010e 'Ď'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 14
Advance: 11
Offset: 1 x 0
___________
|...........|
- |. 89 98 .|
- |. b#b .|
+ |. 853a .|
+ |. bc2 .|
|. .|
|. .|
- |.####c94 .|
- |.## 29#8 .|
- |.## 9#5.|
- |.## 2#a.|
- |.## ##.|
- |.## ##.|
- |.## 2#a.|
- |.## 9#5.|
- |.## 29#8 .|
- ->|.####c94 .|<-
+ |.8###ca5 .|
+ |.8a 14ca .|
+ |.8a 1#6.|
+ |.8a 9a.|
+ |.8a 7c.|
+ |.8a 7c.|
+ |.8a 9a.|
+ |.8a 1#6.|
+ |.8a 14ca .|
+ ->|.8###ca5 .|<-
|...........|
|...........|
|...........|
@@ -5567,115 +5843,115 @@ Char 0x010e 'Ď'
-----------
Char 0x010f 'ď'
- Font: #11 DejaVuSans-Bold (14)
- Bitmap: 10 x 11
- Advance: 10
- Offset: 1 x 0
- __________
+ Font: #11 DejaVuSans (14)
+ Bitmap: 11 x 11
+ Advance: 9
+ Offset: 0 x 0
+ _________
|...........|
|...........|
|...........|
|...........|
- |. ##8b|
- |. ##a7|
- |. ##c3|
- |. 5c#b5## |
- |.4#a11a## |
- |.a#2 2## |
- |.## ## |
- |.## ## |
- |.a#2 2## |
- |.4#a11a## |
- ->|. 5c#b5## |<-
+ | 882#1|
+ | 884b |
+ | 8878 |
+ | 8#c898 |
+ | 7c217#8 |
+ | #4 c8 |
+ |2#1 98 |
+ |2#1 98 |
+ | #4 c8 |
+ | 7c2 7#8 |
+ ->| 8#c898 |<-
|...........|
|...........|
|...........|
|...........|
- ----------
+ ---------
Char 0x0110 'Đ'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 10 x 10
- Advance: 12
+ Advance: 11
Offset: 0 x 0
- ____________
- |............|
- |............|
- |............|
- |............|
- |............|
- | ####c94 ..|
- | ## 28#8 ..|
- | ## 8#5..|
- | ## 2#a..|
- |##### ##..|
- | ## ##..|
- | ## 2#a..|
- | ## 9#5..|
- | ## 28#8 ..|
- ->| ####c94 ..|<-
- |............|
- |............|
- |............|
- |............|
- ------------
+ ___________
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ | 7###ca6 .|
+ | 7b 14bb .|
+ | 7b 1#7.|
+ | 7b 8b.|
+ |#####1 6#.|
+ | 7b 6#.|
+ | 7b 8b.|
+ | 7b 1#7.|
+ | 7b 14bb .|
+ ->| 7###ca6 .|<-
+ |...........|
+ |...........|
+ |...........|
+ |...........|
+ -----------
Char 0x0111 'đ'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 9 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ## |
- |. #####|
- |. ## |
- |. 5c#b5## |
- |.4#a11a## |
- |.a#2 2## |
- |.## ## |
- |.## ## |
- |.a#2 2## |
- |.4#a11a## |
- ->|. 5c#b5## |<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 88 |
+ | c###9|
+ | 88 |
+ | 8#c898 |
+ | 7c217#8 |
+ | #4 c8 |
+ |2#1 98 |
+ |2#1 98 |
+ | #4 c8 |
+ | 7c2 7#8 |
+ ->| 8#c898 |<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0117 'ė'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x 0
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |. ## .|
- |. ## .|
- |. .|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.########.|
- |.## .|
- |.a#4 .|
- |.3#b2 15a.|
- ->|. 29c#c93.|<-
- |..........|
- |..........|
- |..........|
- |..........|
- ----------
+ Advance: 9
+ Offset: 0 x 0
+ _________
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ | 1#1 .|
+ | 1#1 .|
+ | .|
+ | 6c#b5 .|
+ | 6b2 3c4.|
+ | #3 6a.|
+ |2######c.|
+ |2#2 .|
+ | #6 .|
+ | 7#4 156.|
+ ->| 5b#c81.|<-
+ |.........|
+ |.........|
+ |.........|
+ |.........|
+ ---------
Char 0x0118 'Ę'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 7 x 13
Advance: 9
Offset: 1 x -3
@@ -5685,70 +5961,70 @@ Char 0x0118 'Ę'
|.........|
|.........|
|.........|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.#######.|
- |.## .|
- |.## .|
- |.## .|
- |.## .|
- ->|.#######.|<-
- |. 84 .|
- |. #1 .|
- |. 8##.|
+ |.8#####b.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8#####8.|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ |.8a .|
+ ->|.8######.|<-
+ |. 29 .|
+ |. 76 .|
+ |. 3cc.|
|.........|
---------
Char 0x0119 'ę'
- Font: #11 DejaVuSans-Bold (14)
+ Font: #11 DejaVuSans (14)
Bitmap: 8 x 11
- Advance: 10
- Offset: 1 x -3
- __________
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |..........|
- |. 3a##b4 .|
- |.3#a1 8#5.|
- |.a#2 #b.|
- |.#####