mirror of
				https://github.com/netwide-assembler/nasm.git
				synced 2025-10-10 00:25:06 -04:00 
			
		
		
		
	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;
 |