http://qs321.pair.com?node_id=950987


in reply to Re^3: font measurement
in thread font measurement

Got it figured out. Here is the code:
#!/user/bin/perl use warnings; use strict; use Tk; use Tk::Font; my $mw = MainWindow->new(); # window instance $mw->fontCreate('josh', -family=>'Arial', -size=>20); # give the fon +t instance an arbitrary name 'josh'; specify font family and size her +e my $sentence = "This is my sample sentence to measure."; my $length = $mw->fontMeasure('josh', $sentence); # use the arbitr +ary font name here with the text to measure print "Your sample sentence is $length pixels long in the specified fo +nt and size.\n";

Basically, there are several keys. First, you assign the window instance to a variable. Then, you use that variable to create the instance of the font. You give the font an arbitrary name. The way you pick your font face is by giving a value to the 'family' option. This is better than specifying a ttf file or likewise (which you can't do anyhow) b/c you can also specify the font weight, etc., within that family (Arial bold, italic, etc.). You set the size and the font is ready to go. So to use the fontMeasure procedure, you simply refer to the font instance as you named it and give it a string. It returns the measurement in pixels.

Thanks for all the help.