pygame.font

font模块允许允许在新创建的Surface上画TrueType字体。这个模块是可选的,并依赖于SDL_ttf。你应该测试pygame.font是否可用,并在尝试使用前初始化它。

字体的大部分工作使用Font对象来实现。这个模块它自己仅有初始化函数和pygame.font.Font函数用来创建Font对象。

你可以使用pygame.font.SysFont从系统载入字体。有一些其它的函数用来帮助查找系统字体。

pygame自带一个默认的字体。这个字体总是可以用None作为字体名字被使用。

pygame.font.init

初始化font模块

pygame.font.init(): return None

这个方法会在pygame.init时自动调用。它初始化font模块。在使用这个模块的其他函数之前必须先初始化。

多次调用这个函数也不会有副作用。

pygame.font.quit

uninitialize font模块

pygame.font.quit(): return None

手动uninitialize SDL_ttf的字体系统。这个函数会被pygame.quit自动调用。

如果font模块没有被初始化,调用这个函数也不会有问题。

pygame.font.get_init

返回True如果font模块被初始化了

pygame.font.get_init(): return bool

测试font模块是否被初始化了。

pygame.font.get_default_font

得到默认字体的文件名

pygame.font.get_default_font(): return string

返回系统字体的文件名。这个不是文件的完整路径。这个文件通常可以在和font模块相同的目录中找到,但是它也可能在其它文档中。

pygame.font.get_fonts

获得所有可用的字体

pygame.font.get_fonts(): return list of strings

返回一个系统所有可用字体的列表。字体的名字会用小写,所有的空格和其它字符都被去掉了。这在大部分系统都可以用,但是某些系统找不到字体会返回一个空的列表。

pygame.font.match_font

在系统中查找一个特定的字体

pygame.font.match_font(name, bold=False, italic=False): return path

返回一个系统中字体文件的完整路径。如果bold或者italic参数是True,函数会尝试去查找正确的字体族。

字体的名字可以是逗号隔开的字体的列表。如果没有一个给定字体找到,函数返回None。

比如:

print pygame.font.match_font('bitstreamverasans')
# output is: /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf
# (but only if you have Vera on your system)

pygame.font.SysFont

从系统字体创建一个Font对象

pygame.font.SysFont(name, size, bold=False, italic=False): return Font

返回一个新建的从系统字体装载的Font对象。字体会对应请求的bold和italic标志。如果不能找到合适的系统字体,这个函数会载入缺省的pygame字体。字体名字可以是逗号隔开的字体名字的列表。

pygame.font.Font

从文件创建一个Font对象

pygame.font.Font(filename, size): return Font

pygame.font.Font(object, size): return Font

从给定的文件名或者python文件对象载入新的字体。size是字体的高度。如果文件名是None,pygame的默认字体会被载入。如果参数指定的字体不能载入,会引发一个异常。一旦字体创建后,字体的大小不能被改变。

Font对象主要用来把文字画成新的Surface对象。画的过程可以模拟黑体和斜体的效果,但是最好使用真正的斜体和黑体字体。被画文字可以使普通字符串,也可以是unicode串。

Font.render

在新的Surface上画出文字。

Font.render(text, antialias, color, background=None): return Surface

这个函数创建一个新Surface对象,它上面包含了画出来的文字。pygame没有提供直接在存在的Surface上画文字的方法,而必须采用Font.render来创建一个新的Surface,然后把它blit到其他Surface上。

文字只能包含一行,换行符不会被画出来。antialias抗锯齿参数如果是真的,字符会有光滑的边缘。color参数指定了文字的颜色(比如(0,0,255)为蓝色)。可选的background参数用来指定文字背景的颜色。如果没有指定background,背景是透明的。

返回的Surface的大小是包含文字的必须的大小。(和Font.size()一样。)如果text是空字符串,会返回一个空白的Surface,只有一个像素宽和一个字符的高度。

返回的Surface的类型依赖于background和antialias的类型。因为性能的原因,最好要知道图像是哪种类型的。如果没有使用antialias,返回的图像是带两个调色板的8位的图像。如果background是透明的,会设置一个透明色colorkey。抗锯齿的图像会使用24位RGB图像。如果背景是透明的,会使用像素alpha。

优化:如果你知道最后文字的背景是单一的颜色,并且文字是抗锯齿的,那么你可以通过指定背景色来改进性能。这使得图像通过透明色colorkey而不是alpha(这个要慢得多)来指定透明信息。

如果你画'\n'字符,一个未知的字符会被画出来,通常是一个矩形。你应该自己去处理多行字符串。

画字体不是线程安全的:一个时刻只能有一个线程在画文字。

Font.size

确定画文字需要的大小

Font.size(text): return (width, height)

返回画文字需要的大小。这个函数可以帮助确定文字的位置,也可以用来确定文字换行和其他布局效果。

注意,大部分字体都会对特定的字符使用字据调整。比如说字符串“ae”的宽度不总是和"a"+"e"的宽度一致。

Font.set_underline

控制文字是否有下划线

Font.set_underline(bool): return None

当开启这个选项, 所有的文字都会有下划线。不管字体多大,下划线总是只有一个像素的宽度。这个选项可以和粗体、斜体混合使用。

Font.get_underline

检查画出来的文字是否有下划线。

Font.get_underline(): return bool

当字体设置有下划线,这个函数返回真。

Font.set_bold

开启文字的伪粗体

Font.set_bold(bool): return None

开启伪粗体。这是对字体进行伸展而得到的伪粗体,用在很多字体上不好看。如果可能的话,应该载入一个真正的粗体。当这个选项开启后,字符会有不同的宽度。这个选项可以和斜体和下划线混合使用。

Font.get_bold

检查字体设置是否用粗体。

Font.get_bold(): return bool

如果字体设置了粗体,返回真。

Font.set_italic

设置字体的伪斜体

Font.set_bold(bool): return None

开启字体的伪斜体。这是对字体进行倾斜而得到的伪斜体,用在很多字体上不好看。如果可能的话,应该载入真正的斜体。当开启了斜体后,字符的宽度可能会不同。这个选项可以和粗体、下划线混合使用。

Font.get_italic

检查字体设置是否为斜体

Font.get_italic(): return bool

如果字体设置了斜体,则返回真。

Font.get_linesize

获得行的高度。

Font.get_linesize(): return int

返回一行文字的像素高度。当画很多行字符的时候,这个高度是两行间的间隔的推荐值。

Font.get_height

获取字体的高度。

返回文字的实际像素高度。这是这种这种字体里的字符的平均高度。

Font.get_ascent

获得字体的ascent高度。

Font.get_ascent(): return int

返回字体的ascent像素高度。ascent是从字体的基线到字体顶部的像素高度。

Font.get_descent

获得字体的descent高度

Font.get_descent(): return int

返回字体的descent高度。descent是指从字体基线到字体底部的像素高度。

The end

pygame.font (last edited 2008-02-23 15:36:38 by localhost)

ch3n2k.com | Copyright (c) 2008 czk. 浙ICP备06000584号