Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: font measurement

by preahkumpii (Novice)
on Jan 31, 2012 at 03:12 UTC ( [id://950866]=note: print w/replies, xml ) Need Help??


in reply to Re: font measurement
in thread font measurement

Thank you for your help. Pardon the ignorance, but I have 3 questions:
  1. I don't understand this comment. Why is it there? #$mw->fontNames
  2. What is the use of the %d variable?
  3. Why was the command $font->measure( $text ) placed after the print command?
UPDATE: I must be missing something. I thought I would put the name of the font of my choice from my system in place of the 'system' in your code. No matter what font I put there, even a very wide one like Trajan Pro, I get the same pixel width.

Replies are listed 'Best First'.
Re^3: font measurement
by BrowserUk (Patriarch) on Jan 31, 2012 at 05:46 UTC

    Sorry. That's what I assumed also. If it doesn't work, then you'll need to look for more or better documentation than this.

    1. The comment was left there to show my failed attempt to find a list of available fonts.
    2. %d isn't a variable, See the documentation for printf.
    3. See the documentation for printf

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?

      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.

        Thanks for all the help.

        YW. Thanks for coming back and filling in some of my blanks.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://950866]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (7)
As of 2024-03-28 16:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found