Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

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 ( #697212=note: print w/ replies, xml ) Need Help??


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

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


Comment on Re: Changing the Font of a specific character in a Text in a Canvas
Download Code
Re^2: Changing the Font of a specific character in a Text in a Canvas
by renegadex (Beadle) on Jul 14, 2008 at 01:12 UTC
    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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (8)
As of 2014-12-20 12:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (95 votes), past polls