nasm/doc/pswidth.ph
H. Peter Anvin ceabd83dcf doc: fix fonts where the scale (unitsPerEm) is not 1000
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>
2017-04-10 15:21:04 -07:00

25 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;