=info
生成字符点阵的极简示例代码
编辑: 523066680, Code-By.Org
改自 examples/render-glyph.pl
=cut
use Data::Dump qw/dump/;
use Font::FreeType;
my ($filename, $char, $size) = ("C:/windows/fonts/arial.ttf", 'A', 20);
my $dpi = 100;
my $face = Font::FreeType->new->face($filename);
$face->set_char_size($size, $size, $dpi, $dpi);
$char = ord($char);
my $glyph = $face->glyph_from_char_code($char);
die "No glyph for character '$char'.\n" if (! $glyph);
print dump $glyph->bitmap;
输出:
>(
> [
> pack("H*","0000000000000012f9fff81100000000000000"),
> pack("H*","000000000000006affffff6900000000000000"),
> pack("H*","00000000000000c8ffa2ffc700000000000000"),
> pack("H*","00000000000026ffed0deeff25000000000000"),
> pack("H*","00000000000084ff960098ff83000000000000"),
> pack("H*","000000000001e0ff38003dffe0010000000000"),
> pack("H*","000000000041ffdb000001dfff400000000000"),
> pack("H*","00000000009fff8000000084ff9e0000000000"),
> pack("H*","000000000af2ff2500000027fff20900000000"),
> pack("H*","000000005bffc90000000000cbff5a00000000"),
> pack("H*","00000000baff6d00000000006fffb800000000"),
> pack("H*","0000001afdfb15000000000016fbfc1a000000"),
> pack("H*","00000076ffffffffffffffffffffff75000000"),
> pack("H*","000000d3ffffffffffffffffffffffd3000000"),
> pack("H*","000032ffec070000000000000009efff310000"),
> pack("H*","000091ff8d00000000000000000092ff8f0000"),
> pack("H*","0004e9ff270000000000000000002bffe90400"),
> pack("H*","004dffc00000000000000000000000c5ff4c00"),
> pack("H*","00abff5900000000000000000000005effaa00"),
> pack("H*","10f8ec07000000000000000000000008eef810"),
> ],
> 0,
> 20,
>)
(想不到 Data::Dump::dump 还自带优化输出效果,本来只是用来观察glyph返回的结构)
在 Perl 中学习一个陌生的对象,可以通过 Data::Dump 输出对象结构,也可以通过 Perldoc 查阅相关文档:
`perldoc Font::Freetype::Glyph`