unifont-6.3.20131215.tar.gz
[unifont.git] / src / hexdraw
index 90b20127a4b93feea05b5d2ddd6d39f2702ad1f0..03b019b48b04150bc619e8182df13bd5f998d09a 100755 (executable)
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
+use Getopt::Long;
+
 sub unpack { 
        local ($_) = @_;
        $_ = unpack ("B*", pack ("H*", $_));
-       $width=length($_)/16;
+       $width=length($_)/$charheight;
        s/(.{$width})/\t$1\n/g;
        y/01/-#/;
        $_;
@@ -35,6 +37,22 @@ sub pack {
        $_;
 }
 
-s/([0-9A-F]{64})/&unpack($1)/ie || 
+$result = GetOptions (
+       "height|h=i" => \$charheight
+);
+
+if (not $charheight) {
+       $charheight = 16;
+} elsif (!($charheight == 16 || $charheight == 24 || $charheight == 32)) {
+       die ("Invalid height\n");
+}
+
+s/([0-9A-F]{256})/&unpack($1)/ie ||
+s/([0-9A-F]{192})/&unpack($1)/ie ||
+s/([0-9A-F]{144})/&unpack($1)/ie ||
+s/([0-9A-F]{128})/&unpack($1)/ie ||
+s/([0-9A-F]{96})/&unpack($1)/ie ||
+s/([0-9A-F]{64})/&unpack($1)/ie ||
+s/([0-9A-F]{48})/&unpack($1)/ie ||
 s/([0-9A-F]{32})/&unpack($1)/ie ||
 s/\t([-#]+)\n/&pack($1)/e;