82 lines
2.0 KiB
Python
82 lines
2.0 KiB
Python
|
#!/usr/bin/env python
|
||
|
""" pygame.examples.fonty
|
||
|
|
||
|
Here we load a .TTF True Type font file, and display it in
|
||
|
a basic pygame window.
|
||
|
|
||
|
Demonstrating several Font object attributes.
|
||
|
|
||
|
- basic window, event, and font management.
|
||
|
"""
|
||
|
import pygame as pg
|
||
|
|
||
|
|
||
|
def main():
|
||
|
# initialize
|
||
|
pg.init()
|
||
|
resolution = 400, 200
|
||
|
screen = pg.display.set_mode(resolution)
|
||
|
|
||
|
## pg.mouse.set_cursor(*pg.cursors.diamond)
|
||
|
|
||
|
fg = 250, 240, 230
|
||
|
bg = 5, 5, 5
|
||
|
wincolor = 40, 40, 90
|
||
|
|
||
|
# fill background
|
||
|
screen.fill(wincolor)
|
||
|
|
||
|
# load font, prepare values
|
||
|
font = pg.font.Font(None, 80)
|
||
|
text = "Fonty"
|
||
|
size = font.size(text)
|
||
|
|
||
|
# no AA, no transparency, normal
|
||
|
ren = font.render(text, 0, fg, bg)
|
||
|
screen.blit(ren, (10, 10))
|
||
|
|
||
|
# no AA, transparency, underline
|
||
|
font.set_underline(1)
|
||
|
ren = font.render(text, 0, fg)
|
||
|
screen.blit(ren, (10, 40 + size[1]))
|
||
|
font.set_underline(0)
|
||
|
|
||
|
a_sys_font = pg.font.SysFont("Arial", 60)
|
||
|
|
||
|
# AA, no transparency, bold
|
||
|
a_sys_font.set_bold(1)
|
||
|
ren = a_sys_font.render(text, 1, fg, bg)
|
||
|
screen.blit(ren, (30 + size[0], 10))
|
||
|
a_sys_font.set_bold(0)
|
||
|
|
||
|
# AA, transparency, italic
|
||
|
a_sys_font.set_italic(1)
|
||
|
ren = a_sys_font.render(text, 1, fg)
|
||
|
screen.blit(ren, (30 + size[0], 40 + size[1]))
|
||
|
a_sys_font.set_italic(0)
|
||
|
|
||
|
# Get some metrics.
|
||
|
print(f"Font metrics for 'Fonty': {a_sys_font.metrics(text)}")
|
||
|
ch = "\u3060"
|
||
|
msg = f"Font metrics for '{ch}': {a_sys_font.metrics(ch)}"
|
||
|
print(msg)
|
||
|
|
||
|
## #some_japanese_unicode = u"\u304b\u3070\u306b"
|
||
|
##some_japanese_unicode = unicode_('%c%c%c') % (0x304b, 0x3070, 0x306b)
|
||
|
|
||
|
# AA, transparency, italic
|
||
|
##ren = a_sys_font.render(some_japanese_unicode, 1, fg)
|
||
|
##screen.blit(ren, (30 + size[0], 40 + size[1]))
|
||
|
|
||
|
# show the surface and await user quit
|
||
|
pg.display.flip()
|
||
|
while True:
|
||
|
# use event.wait to keep from polling 100% cpu
|
||
|
if pg.event.wait().type in (pg.QUIT, pg.KEYDOWN, pg.MOUSEBUTTONDOWN):
|
||
|
break
|
||
|
pg.quit()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|