Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Changing the Font of a specific character in a Text in a Canvas

by renegadex (Beadle)
on Jul 12, 2008 at 06:19 UTC ( [id://697169]=perlquestion: print w/replies, xml ) Need Help??

renegadex has asked for the wisdom of the Perl Monks concerning the following question:

I would like to know how to change the font of some of the characters in a text (not the whole text). its like changing some parts of the text but not all of it. thanks masters! im using PERL/TK/CANVAS and i would like to know how this can be achived in the createText of Tk Canvas..
  • Comment on Changing the Font of a specific character in a Text in a Canvas

Replies are listed 'Best First'.
Re: Changing the Font of a specific character in a Text in a Canvas
by zentara (Archbishop) on Jul 12, 2008 at 13:27 UTC
    You can do that with Gtk2 (Gnome2::Canvas and Goo::Canvas) with it's pango markup; but with Tk you would have to string together a few createText, use the bbox on the text to properly position everthing. You must also consider the anchor. Here is an example, but I hard coded 9 into the position, you probably can figure out a way to compute it( maybe not :-) )
    #!/usr/bin/perl use Tk; use strict; my $mw=tkinit; $mw->fontCreate('big', -family=>'arial', -weight=>'bold', -size=>int(-24*24/14)); my $c = $mw->Canvas(-bg => 'white')->pack; my $x = 0; my $y = 50; my $t1 = $c->createText($x+50,$y, -anchor=>'w', -fill => 'red', -font => 'big', -text => '4', ); my ($bx,$by,$bx1,$by1)= $c->bbox($t1); print "$bx $by $bx1 $by1\n"; my $t2 = $c->createText ($bx1,$y+9, #computing 9 is difficult -anchor=>'w', # -font => 'big', -fill => 'black', -text=> '2'); ($bx,$by,$bx1,$by1)= $c->bbox($t2); print "$bx $by $bx1 $by1\n"; MainLoop;

    I'm not really a human, but I play one on earth CandyGram for Mongo
      wow! thanks man, thats a really nice way of doing it :) tnx again!maybe i could ask some math guru on techniques for solving the "9" position hehehe.
        The problem with computing the 9, I believe, is that the actual character sits in an invisible box. If you could get all fonts to sit on the bottom of the box, they would line up and you could do an easy calculation to align them. BUT... the characters seem to sit in the middle of the box, and the box changes with font size. There are the anchor, and justify options, but I didn't play around with them long enough to see if they can line them up.

        I'm not really a human, but I play one on earth CandyGram for Mongo
Re: Changing the Font of a specific character in a Text in a Canvas
by Anonymous Monk on Jul 12, 2008 at 06:41 UTC
    Can't be done, you'll have to find another strategy.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2024-04-23 11:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found