mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-12-03 08:41:02 +08:00
ceabd83dcf
AFM metrics always have 1000 font units to a scaled PostScript point, but TTF/OTF doesn't have to. The easiest way (and the one which best avoids unnecessary rounding) is to store the scale in the metrics, and change pswidth.ph to return the width in PostScript points instead of font units. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
26 lines
532 B
Perl
26 lines
532 B
Perl
#!/usr/bin/perl
|
|
#
|
|
# Get the width of a PostScript string in PostScript points (1/72")
|
|
# given a set of font metrics and an encoding vector.
|
|
#
|
|
sub ps_width($$$) {
|
|
my($str, $met, $encoding) = @_;
|
|
my($w) = 0;
|
|
my($i,$c,$p);
|
|
|
|
$l = length($str);
|
|
undef $p;
|
|
for ( $i = 0 ; $i < $l ; $i++ ) {
|
|
$c = substr($str,$i,1);
|
|
$w += $$met{widths}{$encoding->[ord($c)]};
|
|
# The standard PostScript "show" operator doesn't do kerning.
|
|
# $w += $$met{kern}{$p.$c};
|
|
$p = $c;
|
|
}
|
|
|
|
return $w / $met->{scale};
|
|
}
|
|
|
|
# OK
|
|
1;
|