⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bdftogd

📁 下载来的一个看图软件的源代码
💻
字号:
#!/usr/bin/perl -w## Simple convertor from bdf to gd font format.## Author: Jan Pazdziora, adelton@fi.muni.cz, http://www.fi.muni.cz/~adelton/# at Faculty of Informatics, Masaryk University in Brno, Czech Republic.## Example of use:# fstobdf -s fontserverhost:7100 -fn 8x16 | ./bdftogd FontLarge gdfontl#use strict;my $VERSION = '0.60';my $now = localtime;if (@ARGV != 2)	{ die "usage: bdftogd fontname filename, eg. bdftogd FontLarge gdfontl\n"; }my $gdname = shift;$gdname = 'gd' . $gdname unless $gdname =~ /^gd/i;my $filename = shift;$filename = 'gd' . $filename unless $filename =~ /^gd/i;if (-f "$filename.c") { die "File $filename.c already exists, won't overwrite\n"; }if (-f "$filename.h") { die "File $filename.h already exists, won't overwrite\n"; }my ($width, $height);my (@data, @left, @bottom);my ($globalleft, $globaltop);my ($minchar, $maxchar);my ($copyright, $fontdef);my $currentchar;my $gobitmap = 0;while (<>)	{	chomp;	s/\r$//;	my ($tag, $value) = split / /, $_, 2;	die "Font is not fixed width\n"			if $tag eq 'SPACING' and not $value =~ /[CM]/i;		$currentchar = $value if $tag eq 'ENCODING';	$minchar = $currentchar if not defined $minchar		or $currentchar < $minchar;	$maxchar = $currentchar if not defined $maxchar		or $currentchar > $maxchar;		if ($tag eq 'ENDCHAR')		{		$gobitmap = 0;		my $bottom = $globaltop - $bottom[$currentchar];				if ($bottom > 0)			{ $data[$currentchar] = substr $data[$currentchar], 0, length($data[$currentchar]) - $bottom * $width; }		else			{ $data[$currentchar] .= '0' x (-$bottom * $width); }		}	if ($tag eq 'FONTBOUNDINGBOX')		{		my ($tag, $wid, $hei, $left, $top) = split / /;		if (defined $top)			{			$globalleft = $left;			$globaltop = $top;			$height = $hei;			$width = $wid;			}		}	if ($tag eq 'FONT' and not defined $fontdef)		{ $fontdef = $value; }	if ($tag eq 'COPYRIGHT' and not defined $copyright)		{ $copyright = $value; }		if ($tag eq 'BBX')		{		my ($tag, $wid, $hei, $left, $bottom) = split / /;		if (defined $bottom)			{			$left[$currentchar] = $left;			$bottom[$currentchar] = $bottom;			}		}	if ($gobitmap)		{		my $value = pack 'H*', $_;		my $bits = unpack 'B*', $value;		$bits = ('0' x $left[$currentchar]) . $bits;		$bits .= '0' x ($width - length $bits);		$bits = substr $bits, 0, $width;		$data[$currentchar] .= $bits;		}		if ($tag eq 'BITMAP')		{		$gobitmap = 1;		$data[$currentchar] = '';		}	}my $info = <<"EOF";/*	This is a header file for gd font, generated using	bdftogd version $VERSION by Jan Pazdziora, adelton\@fi.muni.cz	from bdf font	$fontdef	at $now.EOFif (defined $copyright)	{	$info .= <<"EOF";	The original bdf was holding following copyright:	$copyright */EOF	}else	{	$info .= <<"EOF";	No copyright info was found in the original bdf. */EOF	}open FILEC, "> $filename.c" or die "Error writing $filename.c: $!\n";open FILEH, "> $filename.h" or die "Error writing $filename.h: $!\n";print FILEC <<"EOF";$info#include "$filename.h"char ${gdname}Data[] = {EOF$minchar = 0 unless defined $minchar;$maxchar = 255 unless defined $maxchar;for (my $i = $minchar; $i <= $maxchar; $i++)	{	$data[$i] = '' unless defined $data[$i];	$data[$i] = '0' x ($width * $height - length $data[$i]) . $data[$i];		print FILEC "/* Char $i */\n";	for my $line (0 .. $height - 1)		{ print FILEC join ',', split(//, substr($data[$i], $line * $width, $width)), "\n"; }	print FILEC "\n";	next;		for my $line (0 .. $height - 1)		{ print substr($data[$i], $line * $width, $width), "\n"; }	}my $capdef = "\U_${filename}_H_";print FILEC <<"EOF";};gdFont ${gdname}Rep = {	@{[ $maxchar - $minchar + 1]},	$minchar,	$width,	$height,	${gdname}Data};gdFontPtr ${gdname} = &${gdname}Rep;/* This file has not been truncated. */EOFclose FILEC;print FILEH <<"EOF";#ifndef $capdef#define $capdef 1$info#include "gd.h"extern gdFontPtr $gdname;#endifEOF1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -