标 题: 脚本查找匹配的中英文字体
发信站: 水木社区 (Sun Nov 4 23:51:42 2007), 转信
写了个脚本查找匹配的中英文字体,对于 bitstream vera sans mono 14 和它
匹配的是 simsun 17(simsun 18 也匹配的,大小一样)。
使用办法:
perl font.pl "Bitstream Vera Sans Mono" 14
查看这个字体输出的字母 "ll" 宽度,第二个参数默认是 14.
perl font.pl "Bitstream Vera Sans Mono" 14 SimSun
查找与 Bitstream Vera Sans Mono 14 最匹配的 SimSun 字体大小,范围是英文
字体大小加减 5.
字体名可以是 ttf 字体文件所在路径名,或者 fc-list 列出的字体名,详情
见 perldoc GD,脚本如下,Debian 系下需要安装 libgd-gd2-perl。
#!/usr/bin/perl -w
use strict;
use warnings;
#use File::Slurp;
use GD;
my $im = new GD::Image(100, 100);
my $white = $im->colorAllocate(255,255,255);
my $black = $im->colorAllocate(0,0,0);
$im->transparent($white);
my $hasfontconfig = $im->useFontConfig(1);
print STDERR $hasfontconfig ? "support font-config\n" : "don't support font-config\n";
my $enfont = shift;
my $ensize = shift;
my $zhfont = shift;
$ensize ||= 14;
$ensize = 6 if $ensize < 6;
die "Usage: perl font.pl <en_font> [en_fontsize] [zh_font]\n"if !$enfont;
my @bounds = $im->stringFT($black, $enfont, $ensize, 0, 10, 50, 'll');
die "Can't draw with this font: $enfont, $ensize: $@\n" if @bounds == 0;
my $enwidth = $bounds[2] - $bounds[6];
print "$enfont, size=$ensize, width('ll')=$enwidth\n";
exit 0 if !$zhfont;
my ($zhsize, $zhwidth, $size, $width, $bias);
$bias = 100;
for $size ($ensize - 5 .. $ensize + 5) {
@bounds = $im->stringFT($black, $zhfont, $size, 0, 10, 50, 'll');
die "Can't draw with this font: $zhfont, $size: $@\n" if @bounds == 0;
$width = $bounds[2] - $bounds[6];
if ($bias > abs($width - $enwidth)) {
$bias = abs($width - $enwidth);
$zhsize = $size;
$zhwidth = $width;
}
}
print "$zhfont, size=$zhsize, width('ll')=$zhwidth\n";
#$im->rectangle($bounds[6], $bounds[7], $bounds[2], $bounds[3], $black);
#write_file("testfont.png", {binmode => ':raw'}, $im->png);
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 标 题: Re: emacs我设置的字体中文不是英文2倍
: 发信站: 水木社区 (Sun Nov 4 22:02:41 2007), 转信
:
:
: 【 在 brep (哪个虫儿敢做声) 的大作中提到: 】
: : 标 题: Re: emacs我设置的字体中文不是英文2倍
: : 发信站: 水木社区 (Wed Jul 4 21:24:27 2007), 转信
: :
: : 我知道的几个 1:2 组合:
: : 9x15/simsun-16
: : sony/simsun-16
: : bitstream vera sans mono-14/simsun-16
: 偶像啊,gnus 里的摘要缓冲区终于对齐了!
:
: : courier-13/simsun-16(windows xp)
: :
: : 【 在 phynju (phynju) 的大作中提到: 】
: : : 排版不整齐啊
: : : 怎么设置啊
: : : 英文字体:Bitstream Vera Sans Mono-12
: : : ...................
: :
: : --
: : 今美夷有余力而制其弊,追亡逐北,伏尸百万,流血漂橹,因利乘便,宰割天下,
: : 分裂山河,强国请服,弱国入朝。匹夫伊拉克怀璧其罪,致美夷引兵三十万劫掠
: : 中东,旋陷伊都城,巴格达城中最多节义之人,兵才及城,人争缢死,屋无虚梁,
: : 木无空枝,至有一家全节,五六岁儿亦有缢死者。
: :
: :
※ 修改:・PKubuntu 于 Nov 5 11:00:51 修改本文・[FROM: 211.99.222.*]
: : ※ 来源:・水木社区 newsmth.net・[FROM: 211.99.222.*]
:
:
: --
: On Sat, 22 Sep 2007, Dmitry Kakurin wrote:
: > We've had this theoretical (and IMHO pointless) discussion C vs. C++ *in > general*.
:
: I think "pointless" is more to the point. We don't want C++. Why is that so hard to accept?
: Re: C++ *for Git* Johannes Schindelin
: http://thread.gmane.org/gmane.comp.version-control.git/58929/focus=58933
:
:
: ※ 来源:・水木社区 newsmth.net・[FROM: 61.49.141.*]
--
但是政治斗争的问题在于,最终受到伤害的总是广大的人民群众,而不是发起这些斗争的政客。事实上,在最近两年受到热烈追捧的AJAX技术,是一种粗俗而低劣的技术,与JAVA所具
有的功能相比,它简直是相形见绌。如果JAVA当初能够成为网络浏览器的一部分,它完全能够以JavaScript同样的方式来处理HTML/DOM。但是,如果我们使用的是JAVA的话,我们不但能获得一个第一流的编程语言,还能获得一系列成熟的标准,健壮而丰富的应用程序库以及
各种各样的开发工具。但遗憾的是,历史已经不可更改。
《政治斗争的代价!Java 命运回忆录》
[AJAX, AIR, SilverLight, JavaFX, Google Gears, Prism | Applet, Java Web Start]
http://publish.itpub.net/j/2007-10-31/200710311118203.shtml
※ 来源:・水木社区 newsmth.net・[FROM: 61.49.141.*]