Showing posts with label 文字列. Show all posts
Showing posts with label 文字列. Show all posts

Monday, November 16, 2009

ImageMagickで文字間隔を指定する

ImageMagickで文字間隔を指定するには、以下のバッチファイルを実行します。


rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.5.7-Q16

rem 文字間のスペースを指定
%im%\convert.exe -fill #5577ee -font Tahoma-Bold -pointsize 25
-background none -kerning 15 "label:IMAGE MAGICK" sample1432a.png


出力画像(sample1432a.png)
ImageMagickで文字間隔を<br />指定して描画した文字列

動作環境
ImageMagick 6.5.7

Sunday, November 15, 2009

ImageMagickで単語間隔、行間隔を指定する

ImageMagickで単語間隔、行間隔を指定するには、以下のバッチファイルを実行します。


rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.5.7-Q16

rem 単語間のスペースを指定
%im%\convert.exe -fill #5577ee -font Tahoma -pointsize 25
-background none -interword-spacing 50
"label:Image Magick" sample1431a.png

rem 行間のスペースを指定
%im%\convert.exe -fill #5577ee -font
C:\\Windows\\Fonts\\MSGOTHIC.TTC -pointsize 25
-background none -interline-spacing 30
"label:@message.txt" sample1431b.png


message.txtにはUTF-8で以下の日本語テキストを保存します。
日本語の
文字列


出力画像1(sample1431a.png)
ImageMagickで単語間隔を指定した画像

出力画像2(sample1431b.png)
ImageMagickで行間隔を指定した画像

動作環境
ImageMagick6.5.7

Wednesday, July 29, 2009

ImageMagickとPHPで看板を描画する

Imagickで看板を描画するには、以下のコードを実行します。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja"
xml:lang="ja" dir="ltr">
<head>
<title>sample1150(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* メッセージ(UTF-8でファイルを保存する) */
$msg = "ImageMagick";
/* 上下余白 */
$padtop = 10;
$padbottom = 40;
/* 看板余白 */
$padx = 5;
$pady = 10;
/* 棒の幅 */
$polew = 10;
/* 塗りつぶし色 */
$fc = "#7799ff";
/* 文字色 */
$tc = "white";

$im = new Imagick();
$idraw = new ImagickDraw();
/* フォント設定 */
//$idraw->setFont('C:\\Windows\\Fonts\\MSGOTHIC.TTC');
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* 文字列のサイズ取得 */
$metrics = $im->queryFontMetrics($idraw, $msg);
$tw = $metrics["textWidth"];
$th = $metrics["textHeight"];
$td = $metrics["descender"];

$im->newPseudoImage(
$tw+$padx*2,
$th+$pady*2+$padtop+$padbottom, "xc:none");
/* 看板 */
$idraw->setFillColor($fc);
$idraw->rectangle(0,$padtop,
$tw+$padx*2-1,
$padtop+$th+$pady*2-1);
$idraw->setStrokeColor($fc);
$idraw->setStrokeWidth($polew);
$idraw->rectangle(($tw+$padx*2)/2,0,
($tw+$padx*2)/2,
$padtop+$th+$pady*2+$padbottom);
$idraw->setFillColor($tc);
$idraw->setStrokeColor($tc);
$idraw->setStrokeWidth(0);
$idraw->annotation($padx, $padtop+$pady+$th+$td, $msg);
$im->drawImage($idraw);


$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im->setImageMatte(true);
$args2 = array($im->getImageWidth()/2,
$im->getImageHeight(),1,rand(-3,3));
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $args2, false);
// ScaleRotateTranslateDistortion in distort.h
$im->distortImage(3, $args2, true);

$im->writeImage('sample1150a.png');

$idraw->destroy();
$im->destroy();
?>
<img src="sample1150a.png" /><br />

</body>
</html>


出力画像(sample1150a.png)
Imagickで描画した看板

Friday, July 24, 2009

groovyでドット文字列を描画する

groovyでドット文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample1144a.png", 240, 80){
antialias("on")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 64))
text( x:0, y:0,
text: "Groovy",
fill: color("#4466ff"),
borderColor: no,
){
filters {
mosaic(blockSize: 4)
}
}
}


出力画像(sample1144a.png)
groovyで描画したドット文字列

Tuesday, July 14, 2009

groovyで引っかいたような文字列を描画する

groovyで引っかいたような文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

sw = 220
sh = 70
gr = new GraphicsRenderer()
img = gr.render(sw, sh){
background(color: color("#ffffff"))
rect(x:0, y:0, width: sw, height: sh){
filters {
scratch(angle:10, angleVariation:0.8,
color: color("#000000"), density:0.7,
length:0.5, width:0.5, seed:2009)
}
}
}
gr.renderToFile("sample1130a.png", sw, sh){
antialias("on")
background(color: color("#000000"))
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 60))
text( x:0, y:0, text: "Groovy", borderColor:no){
texturePaint(x: 0, y: 0, image: img )
}
}


出力画像(sample1130a.png)
GraphicsRendererで描画した引っかいたような文字列

Saturday, June 27, 2009

SWFRendererで文字列を描画する

SWFRendererで文字列を描画するには、以下のコードを実行します。


import java.awt.*
import groovy.swing.j2d.swf.*

def gr = new SWFRenderer()
gr.renderToFile("sample1044a.swf", 200, 200){
font(new java.awt.Font('MS ゴシック', java.awt.Font.BOLD, 60))
text( x:0, y:70,
text: "日本語",
fill: new Color(0xbb, 0xdd, 0xff, 0xff),
borderColor: new Color(0x11, 0x33, 0x77, 0xff) )
}
// SWFRenderer unsupported operation: fontとメッセージがでるが、
// font指定は効いているようみたい。。。



出力SWF(sample1044a.swf)
SWFRendererで描画した文字列

動作環境
groovy 1.6.0, JDK6 update12

関連項目
groovyで日本語を描画する

Saturday, June 20, 2009

im4javaで英文字列を描画する

im4javaで英文字列を描画するには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.98.0-bin.tar.bz2を解凍してim4java-0.98.0.jarはclasspathに通す
public class Im4java26
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.size(200, 200);
op.addImage("xc:white");
op.font("Tahoma");
op.pointsize(50);
op.gravity("center");
op.fill("#7799ff");
op.draw("text 0,0 'im4java'");
op.addImage("sample1120a.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.98
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}
}


出力画像(sample1120a.png)
im4javaで描画した英文字列

関連情報
im4javaのまとめ

Wednesday, June 17, 2009

ImageMagickで手書きで塗りつぶしたような文字列を描画する

ImageMagickで手書きで塗りつぶしたような文字列を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.5.0-Q16

%im%\convert.exe -size 200x200 xc:gray25 -alpha activate -sketch 0x10+135 ( -size 200x200 xc:none -font "Tahoma" -pointsize 120 -gravity center -annotate 0 IM ) -compose dst_in -composite sample1131a.png

出力画像(sample1131a.png)



関連項目
ImageMagickで光沢のある文字列のプレートを描画する
ImageMagickで透明な文字列を描画する - その2
ImageMagickで手書き風の文字列を描画する

Tuesday, June 16, 2009

RMagickで文字列画像に半透明の濃淡をつける

RMagickで文字列画像に半透明の濃淡をつけるには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new
images.new_image(200, 40){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "#aaccf8"
# フォント
dr.font = "Tahoma"
# ポイントサイズ
dr.pointsize = 30
dr.gravity = CenterGravity
dr.text(0, 0, "ImageMagick")
dr.draw(images)
images[0] = images.blur_channel(0,1,AllChannels)

images2 = ImageList.new()
images2.read("plasma:fractal"){
self.size = "200x40"
}
images2.alpha = ActivateAlphaChannel
images2.colorspace = GRAYColorspace
images2[0] = images2.modulate(0.8, 1, 1).
blur_channel(0,3,AllChannels)
images2[0] = images2.fx("r", AlphaChannel)
images.composite(images2, CenterGravity, 0, 0,
DstOutCompositeOp).write("sample1146a.png")


出力画像(sample1146a.png)


動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで文字画像に半透明の濃淡をつける (convertコマンドでの同様の処理)

Monday, June 08, 2009

SVGRendererで円状に文字列を描画する

SVGRendererで円状に文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample983a.svg", 200, 200){
xpath(borderColor:color("red")){
textStroke(text:"Groovy Groovy Groovy Groovy Groovy Groovy Groovy !!!",
font: new java.awt.Font('Tahoma', java.awt.Font.PLAIN, 20)
);
xmoveTo(x:180, y:100)
xarcTo(angle:180, largeArc: true, sweep:true, rx:80, ry:80, x:20, y:100)
xarcTo(angle:180, largeArc: true, sweep:true, rx:80, ry:80, x:180, y:100)
}
circle( cx: 100, cy: 100, radius:60, borderColor:color("orange")){
textStroke(text:"Groovy Groovy Groovy Groovy Groovy !!!",
font: new java.awt.Font('Tahoma', java.awt.Font.PLAIN, 20)
);
}
}


出力SVG(sample983a.svg)をPNGにレンダリングした画像
SVGRendererで円状に描画した文字列

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで円状に文字列を描画する (GraphicsRendererによる同様の処理)

Sunday, June 07, 2009

SVGRendererで半透明の文字列を描画する

SVGRendererで画像の上に半透明の文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample982a.svg", 200, 200){
image(file: "sf.jpg")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 26))
text( x:10, y:100,
text: "San Francisco",
fill: color("#ffffff").derive(alpha: 0x80),
borderColor: color("#ffffff").derive(alpha: 0xf0),
borderWidth: 1
)
}


元画像(sf.jpg)


出力SVG(sample982a.svg)をPNGにレンダリングした画像
SVGRendererで描画した半透明の文字列

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像の上に半透明の文字列を描画する (GraphicsRendererでの同様の処理)

Monday, June 01, 2009

ImageMagickとPHPで文字列の大きさに合わせた半透明角丸四角のプレートを描画する

Imagickで文字列の大きさに合わせた半透明角丸四角のプレートを描画するには、以下のコードを実行します。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja"
xml:lang="ja" dir="ltr">
<head>
<title>sample1106(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* メッセージ(UTF-8でファイルを保存する) */
$msg = "サンプル";
/* 余白 */
$padx = 20;
$pady = 5;
/* 枠の色 */
$bc = "#d0d0d0ff";
/* 塗りつぶし色 */
$fc = "#00000080";
/* 文字色 */
$tc = "white";

$im = new Imagick();
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('C:\\Windows\\Fonts\\MSGOTHIC.TTC');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
/* 文字列のサイズ取得 */
$metrics = $im->queryFontMetrics($idraw, $msg);
$im->newPseudoImage($metrics["textWidth"]+$padx*2,
$metrics["textHeight"]+$pady*2, "xc:none");
/* 角丸四角 */
$idraw->setFillColor($fc);
$idraw->setStrokeColor($bc);
$idraw->roundrectangle(0,0,
$metrics["textWidth"]+$padx*2-1,
$metrics["textHeight"]+$pady*2-1,
10,10);
/* 文字色 */
$idraw->setFillColor($tc);
$idraw->setStrokeColor($tc);
$idraw->annotation(0, 0, $msg);

$im->drawImage($idraw);

$im->writeImage('sample1106a.png');

$im2 = new Imagick("sf.jpg");

$im2->compositeImage($im,
Imagick::COMPOSITE_OVER, 20, 100, Imagick::CHANNEL_ALL);
$im2->writeImage('sample1106b.png');

$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1106a.png" /><br />
<img src="sample1106b.png" /><br />

</body>
</html>


出力画像1(sample1106a.png)
Imagickで描画した文字列の大きさにフィットする角丸四角

出力画像2(sample1106b.png):重ねあわせ例


関連項目
ImageMagickとPHPで手書き風の円に囲まれた文字を描画する
ImageMagickとPHPでバンド状グラデーションの文字列を描画する
ImageMagickとPHPで、円形のドットの文字列を描画する

Thursday, May 28, 2009

ImageMagickとPHPで手書き風の円に囲まれた文字を描画する

Imagickで手書き風の円に囲まれた文字を描画するには、以下のコードを実行します。


<title>sample1100(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 表示文字列 */
$message_string = "ImageMagick";
/* 文字色 */
$fc = "#103070";
/* 円の色 */
$cc = "#bbddff";
/* ブロック幅・高さ */
$bw = 40;
$bh = 40;
/* 円半径サイズ */
$crx = 18;
$cry = 18;
/* 文字サイズ */
$ps = 25;

$images = new Imagick();
for($sl=0;$sl<strlen($message_string);$sl++){
$im = new Imagick();
$im->newPseudoImage($bw, $bh, "xc:none");
$idraw = new ImagickDraw();

/* 円描画 */
$idraw->setFillColor($cc);
$idraw->ellipse($bw/2, $bh/2, $crx,
$cry, 0, 360);

/* 文字色設定 */
$idraw->setFillColor($fc);
$im->drawImage($idraw);
/* フォント設定 */
$idraw->setFont('Tahoma-Bold');
/* フォントサイズ設定 */
$idraw->setFontSize($ps);
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw, 0, 0, 0,
substr($message_string,$sl,1));

$images->addImage($im);
$idraw->destroy();
$im->destroy();
}
$images->setImageIndex(0);
$im2 = $images->appendImages(false);
$im2->spreadImage(1);
$im2->medianFilterImage(1);

$im2->writeImage('sample1100a.png');

$images->destroy();
$im2->destroy();
?>
<img src="sample1100a.png" /><br />

</body>
</html>


出力画像(sample1100a.png)


関連項目
ImageMagickとPHPで手書き風の文字列をアニメーションGIFにする
ImageMagickとPHPで手塗り風の四角を描画する

Thursday, May 21, 2009

ImageMagickとPHPでバンド状グラデーションの文字列を描画する

Imagickでバンド状グラデーションの文字列を描画するには、以下のコードを実行します。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample1095(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick();
$im->newImage(300, 50, 'none');
$im->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff');
/* フォント設定 */
$idraw->setFont('Arial');
/* フォントサイズ設定 */
$idraw->setFontSize(43);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_NORTH);
/* antialiasをoff*/
$idraw->setStrokeAntialias(false);
/* 文字列描画 */
$idraw->annotation(0, 0, "ImageMagick");
$im->drawImage($idraw);

$im2 = new Imagick();
$im2->newPseudoImage(1, 6, 'gradient:#3070A0FF-#FFFF10FF');
$im2->resizeImage(300,50,Imagick::FILTER_POINT,1);
$im->compositeImage($im2, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);

$im->writeImage('sample1095a.png');
$im2->destroy();
$idraw->destroy();
$im->destroy();
?>
<img src="sample1095a.png" />
</body>
</html>


出力画像(sample1095a.png)
Imagickでバンド状グラデーションで描画した文字列

関連項目
ImageMagickとPHPで、円形のドットの文字列を描画する
ImageMagickとPHPで、文字列の影に横線を入れる
ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにする
ImageMagickとPHPで青白く輝く文字列を描画する
ImageMagickとPHPでドット文字列を描画する

Sunday, May 17, 2009

SVGRendererで日本語を描画する

SVGRendererで日本語を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample961a.svg", 200, 200){
font(new java.awt.Font('MS 明朝', java.awt.Font.BOLD, 60))
text( x:0, y:70,
text: "日本語",
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 1
)
}


出力SVG(sample961a.svg)をPNGにレンダリングした画像
SVGRendererで描画した日本語

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで日本語を描画する (GraphicsRendererによる日本語描画)
SVGRendererで円を描画する
SVGRendererで四角を描画する

Tuesday, May 05, 2009

im4javaで文字列をクレヨン風に描画する

im4javaで文字列をクレヨン風に描画するには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java13
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.size(120, 40);
op.addImage("xc:white");
op.stroke("#fad759");
op.fill("#f6b739");
op.font("Tahoma");
op.draw("font-size 30 text 2,30 'Sample'");
op.spread(1);
op.addImage("sample1075a.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}

}


出力画像(sample1075a.png)
im4javaでクレヨン風に描画した文字列

関連情報
im4javaのまとめ

im4javaのホームページ
im4java

Sunday, May 03, 2009

ScriptomとImageMagickで日本語を描画する

ScriptomとImageMagickで日本語の文字列を描画するには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("-size", "200x200", "xc:none", "-stroke", "#113377",
"-fill", "#bbddff", "-font", "c:\\windows\\fonts\\msmincho.ttc",
"-pointsize", "60", "-gravity", "center",
"-draw", "text 0,0 '日本語'",
"sample1073a.png")
}

出力画像(sample1073a.png)


動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
groovyで日本語を描画する

Thursday, April 30, 2009

groovyで透明な文字列を描画する

groovyで透明な文字列を描画するには、以下のコードを実行します。


import javax.imageio.*;
import groovy.swing.j2d.*

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample950a.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'white'){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}
gr.renderToFile("sample950b.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'black', opacity:0.5){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}


元画像(sf.jpg)


出力画像1(sample950a.png)


出力画像2(sample950b.png)
groovyで透明な文字列を描画した画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで文字列をガラスのように描画する
groovyで日本語を描画する
SVGRendererで透明な文字列を描画する (SVGRendererでの同様の処理)

Friday, April 17, 2009

pycairoでイタリックの文字列を描画する

pycairoでイタリックの文字列を描画するには、以下のコードを実行します。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.select_font_face("MS 明朝", cairo.FONT_SLANT_ITALIC, cairo.FONT_WEIGHT_NORMAL)
ctx.set_font_size(30);
ctx.move_to(10,100)
ctx.show_text("日本語テスト")
surface.write_to_png('sample1023a.png')

出力画像(sample1023a.png)
pycairoで描画したイタリックの文字列

動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Thursday, April 16, 2009

pycairoで文字列を描画する

pycairoで文字列を描画するには、以下のコードを実行します。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.select_font_face("MS 明朝", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
ctx.set_font_size(30);
ctx.move_to(10,100)
ctx.show_text("日本語テスト")
surface.write_to_png('sample1022a.png')

出力画像(sample1022a.png)
pycairoで描画した文字列

動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール