#!/usr/bin/env perl # # ========================================================================== # # ZoneMinder Big Font Generate Script # Copyright (C) 2015 Robin Därmann # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # ========================================================================== # Basically, this script reads src/zm_font.h and duplicates every bit of every # character found in that file. It then duplicates every generated line, so # that every character effectively gets double sized. # Output goes to STDOUT so it would be useful to redirect it to a file, i.e. to # src/zm_bigfont.c use strict; use warnings; my $in_head = 1; open F, '<', '../src/zm_font.h'; print <) { $in_head-- if $line =~ /^$/ and $in_head; next while $in_head; unless ($line =~ /^\s+(0x..), \/\* (........)/) { #$line =~ s/static unsigned char fontdata/static unsigned int bigfontdata/; print $line; next; } my $code = $1; my $bincode = $2; $bincode = "$1$1$2$2$3$3$4$4$5$5$6$6$7$7$8$8" if $bincode =~ /(.)(.)(.)(.)(.)(.)(.)(.)$/; #$bincode =~ s/ /1/g; #my $intcode = unpack("N", pack("B32", substr("0" x 32 . $bincode, -32))); #my $hexcode = sprintf("%#x", $intcode); #$hexcode =~ s/^0$/0x0/; #$bincode =~ s/1/ /g; print sprintf("\t%10s, /* %s */\n", $hexcode, $bincode); print sprintf("\t%10s, /* %s */\n", $hexcode, $bincode); } close F;