http://www.perlmonks.org?node_id=697212


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

Replies are listed 'Best First'.
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