8367695cff
* genkernsyms.sh: Updated copyright information. * genmk.rb: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh: Likewise. * boot/i386/pc/boot.S: Likewise. * boot/i386/pc/diskboot.S: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/i386/pc/partition.c: Likewise. * font/manager.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * include/pupa/boot.h: Likewise. * include/pupa/device.h: Likewise. * include/pupa/disk.h: Likewise. * include/pupa/dl.h: Likewise. * include/pupa/elf.h: Likewise. * include/pupa/err.h: Likewise. * include/pupa/file.h: Likewise. * include/pupa/font.h: Likewise. * include/pupa/fs.h: Likewise. * include/pupa/kernel.h: Likewise. * include/pupa/loader.h: Likewise. * include/pupa/misc.h: Likewise. * include/pupa/mm.h: Likewise. * include/pupa/net.h: Likewise. * include/pupa/normal.h: Likewise. * include/pupa/rescue.h: Likewise. * include/pupa/setjmp.h: Likewise. * include/pupa/symbol.h: Likewise. * include/pupa/term.h: Likewise. * include/pupa/types.h: Likewise. * include/pupa/i386/setjmp.h: Likewise. * include/pupa/i386/types.h: Likewise. * include/pupa/i386/pc/biosdisk.h: Likewise. * include/pupa/i386/pc/boot.h: Likewise. * include/pupa/i386/pc/console.h: Likewise. * include/pupa/i386/pc/init.h: Likewise. * include/pupa/i386/pc/kernel.h: Likewise. * include/pupa/i386/pc/linux.h: Likewise. * include/pupa/i386/pc/loader.h: Likewise. * include/pupa/i386/pc/memory.h: Likewise. * include/pupa/i386/pc/multiboot.h: Likewise. * include/pupa/i386/pc/partition.h: Likewise. * include/pupa/i386/pc/time.h: Likewise. * include/pupa/i386/pc/vga.h: Likewise. * include/pupa/i386/pc/util/biosdisk.h: Likewise. * include/pupa/util/getroot.h: Likewise. * include/pupa/util/misc.h: Likewise. * include/pupa/util/resolve.h: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/i386/setjmp.S: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/vga.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/misc.c: Likewise. * util/pupa-emu.c: Likewise. * util/resolve.c: Likewise. * util/unifont2pff.rb: Likewise. * util/i386/pc/biosdisk.c: Likewise. * util/i386/pc/getroot.c: Likewise. * util/i386/pc/pupa-mkimage.c: Likewise. * util/i386/pc/pupa-setup.c: Likewise.
79 lines
1.7 KiB
Ruby
79 lines
1.7 KiB
Ruby
#! /usr/bin/ruby -w
|
|
#
|
|
# Copyright (C) 2003 Free Software Foundation, Inc.
|
|
#
|
|
# This unifont2pff.rb is free software; the author
|
|
# gives unlimited permission to copy and/or distribute it,
|
|
# with or without modifications, as long as this notice is preserved.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
# PARTICULAR PURPOSE.
|
|
|
|
# The magic number of the font file.
|
|
MAGIC = "PPF\x7f"
|
|
|
|
def usage(status = 0)
|
|
puts "Usage: ruby unifont2pff.rb [RANGE...] FILE"
|
|
exit(status)
|
|
end
|
|
|
|
file = ARGV.pop
|
|
|
|
ranges = []
|
|
ARGV.each do |range|
|
|
if /\A([0-9a-fA-F]+):([0-9a-fA-F]+)\z/ =~ range
|
|
ranges << [$1.hex, $2.hex]
|
|
elsif /\A([0-9a-fA-F]+)\z/ =~ range
|
|
ranges << [$1.hex, $1.hex]
|
|
else
|
|
usage(1)
|
|
end
|
|
end
|
|
|
|
def ranges.contain?(code)
|
|
if self.empty?
|
|
true
|
|
else
|
|
self.each do |r|
|
|
return true if r[0] <= code and r[1] >= code
|
|
end
|
|
false
|
|
end
|
|
end
|
|
|
|
fonts = []
|
|
IO.foreach(file) do |line|
|
|
if /^([0-9A-F]+):([0-9A-F]+)$/ =~ line
|
|
code = $1.hex
|
|
next unless ranges.contain?(code)
|
|
|
|
bitmap = $2
|
|
if bitmap.size != 32 and bitmap.size != 64
|
|
raise "invalid bitmap size: #{bitmap}"
|
|
end
|
|
|
|
fonts << [code, bitmap]
|
|
else
|
|
raise "invalid line format: #{line}"
|
|
end
|
|
end
|
|
|
|
fonts.sort! {|a,b| a[0] <=> b[0]}
|
|
|
|
# Output the result.
|
|
print MAGIC
|
|
print [fonts.size].pack('V')
|
|
|
|
offset = 8 + fonts.size * 8
|
|
fonts.each do |f|
|
|
print [f[0]].pack('V')
|
|
print [offset].pack('V')
|
|
offset += 4 + 16 * f[1].size / 32
|
|
end
|
|
|
|
fonts.each do |f|
|
|
print [f[1].size / 32].pack('V')
|
|
print f[1].scan(/../).collect {|a| a.hex}.pack('C*')
|
|
end
|