Changes

no edit summary
Line 132: Line 132:  
</pre>
 
</pre>
   −
=== How do I set the different font properties for my pango layout? ===
+
=== How do I set the width of the layout on which my pango text will be rendered? ===
[[Image: pango-screenshot.jpg]]
+
As the two images below show, you can set the width of your pango layout so that text is output within a narrow or wide space. To do this, you simply call the set_width method in [http://olympus.het.brown.edu/cgi-bin/dwww?type=file&location=/usr/share/doc/python-gtk2-doc/html/class-pangolayout.html pango.Layout].
 +
 
 +
 
 +
[[Image: pango-screenshot-narrow.jpg]] [[Image: pango-screenshot-wide.jpg]]
 +
 
 +
The sample code below shows how this is done. Note how the width argument itself is in relatively large units (at least for sugar-jhbuild).
 +
 
 +
<pre>
 +
import pango
 +
...
 +
class TextWidget(gtk.DrawingArea):
 +
def __init__(self):
 +
                ...
 +
#create a pango layout. Leave text argument to be empty string since we want to use markup
 +
self.pango_context = self.create_pango_context()
 +
self.pango_layout = self.create_pango_layout('')
 +
 
 +
#Make the width of the pango layout to be relatively narrow
 +
self.pango_layout.set_width(200000)
 +
 
 +
#Make the width of the pango layout to be relatively wide.
 +
self.pango_layout.set_width(800000)
 +
                ...
 +
</pre>
 +
 
 +
=== How do I control the appearance of fonts on a Pango layout? ===
 +
 
 +
There are two ways in which you can customize how fonts are displayed in your activity.
 +
 
 +
# You set th default font properties throughout your layout.
 +
# Using [http://www.pygtk.org/docs/pygtk/pango-markup-language.html Pango markup], you customize specific blocks of text in your Pango layout.
 +
 
 +
To customize the default font throughout your layout, you call the [http://olympus.het.brown.edu/cgi-bin/dwww?type=file&location=/usr/share/doc/python-gtk2-doc/html/class-pangolayout.html#method-pangolayout--set-font-description pango.Layout.set_font_description()] method when you create and initialize your Pango layout.
 +
 
 +
<pre>
 +
import pango
 +
...
 +
#create a pango layout. Leave text argument to be empty string since we want to use markup
 +
self.pango_context = self.create_pango_context()
 +
self.pango_layout = self.create_pango_layout('')
 +
 
 +
#Set the default font style for this pango layout
 +
self.pango_layout.set_font_description(pango.FontDescription('serif Ultra-bold italic 14'))
 +
</pre>
 +
 
 +
Once you have set the default font, you can change around the appearance of specific blocks of text using [http://www.pygtk.org/docs/pygtk/pango-markup-language.html Pango markup]. This is done by calling the [http://olympus.het.brown.edu/cgi-bin/dwww?type=file&location=/usr/share/doc/python-gtk2-doc/html/class-pangolayout.html#method-pangolayout--set-markup pango.Layout.set_markup()] method. The markup below shows how text is customized in Pango. The block of text in the <span> tag specifically overrides some of the default settings made earlier through set_font_description().
 +
 
 +
<pre>
 +
                #Set the markup for our pango layout.
 +
self.pango_layout.set_markup('<span foreground=\"blue\">This is some sample markup</span> <sup>text</sup> that <span style=\"normal\" size=\"small\">is displayed with pango</span>\n\n <u>Current time:</u> ')
 +
</pre>
    
=== In addition to drawing areas, are there other types of widgets in which I can embed pango layouts? ===
 
=== In addition to drawing areas, are there other types of widgets in which I can embed pango layouts? ===
Anonymous user