pygame.font
pygame module for loading and rendering fonts
pygame.font.init
— initialize the font module pygame.font.quit
— uninitialize the font module pygame.font.get_init
— true if the font module is initialized pygame.font.get_default_font
— get the filename of the default font pygame.font.get_sdl_ttf_version
— gets SDL_ttf version pygame.font.get_fonts
— get all available fonts pygame.font.match_font
— find a specific font on the system pygame.font.SysFont
— create a Font object from the system fonts pygame.font.Font
— create a new Font object from a file The font module allows for rendering TrueType fonts into Surface objects.This module is built on top of the SDL_ttf library, which comes with allnormal pygame installations.
Most of the work done with fonts are done by using the actual Font objects.The module by itself only has routines to support the creation of Font objectswith pygame.font.Font()create a new Font object from a file.
You can load fonts from the system by using the pygame.font.SysFont()create a Font object from the system fontsfunction. There are a few other functions to help look up the system fonts.
Pygame comes with a builtin default font, freesansbold. This can always beaccessed by passing
None
as the font name.Before pygame 2.0.3, pygame.font accepts any UCS-2 / UTF-16 character('\u0001' to '\uFFFF'). After 2.0.3, pygame.font built with SDL_ttf2.0.15 accepts any valid UCS-4 / UTF-32 character(like emojis, if the font has them) ('\U00000001' to '\U0010FFFF')).More about this in Font.render().
Before pygame 2.0.3, this character space restriction can be avoided byusing the pygame.freetypeEnhanced pygame module for loading and rendering computer fonts based
pygame.ftfont
to emulate the Fontmodule. This can be used by defining the environment variable PYGAME_FREETYPEbefore the first import of pygamethe top level pygame package. Since the problempygame.ftfont
solves no longer exists, it will likely be removed in the future.- pygame.font.init()¶
initialize the font module
init() -> None
This method is called automatically by
pygame.init()
. It initializes thefont module. The module must be initialized before any other functions willwork.It is safe to call this function more than once.
- pygame.font.quit()¶
uninitialize the font module
quit() -> None
Manually uninitialize SDL_ttf's font system. This is called automatically by
pygame.quit()
.It is safe to call this function even if font is currently not initialized.
- pygame.font.get_init()¶
true if the font module is initialized
get_init() -> bool
Test if the font module is initialized or not.
- pygame.font.get_default_font()¶
get the filename of the default font
get_default_font() -> string
Return the filename of the system font. This is not the full path to thefile. This file can usually be found in the same directory as the fontmodule, but it can also be bundled in separate archives.
- pygame.font.get_sdl_ttf_version()¶
gets SDL_ttf version
get_sdl_ttf_version(linked=True) -> (major, minor, patch)
Experimental: feature still in development available for testing and feedback. It may change.Please leave get_sdl_ttf_version feedback with authors
Returns a tuple of integers that identify SDL_ttf's version.SDL_ttf is the underlying font rendering library, written in C,on which pygame's font module depends. If 'linked' is True (the default),the function returns the version of the linked TTF library.Otherwise this function returns the version of TTF pygame was compiled with
New in pygame 2.1.3.
- pygame.font.get_fonts()¶
get all available fonts
get_fonts() -> list of strings
Returns a list of all the fonts available on the system. The names of thefonts will be set to lowercase with all spaces and punctuation removed. Thisworks on most systems, but some will return an empty list if they cannotfind fonts.
Changed in pygame 2.1.3: Checks through user fonts instead of just global fonts for Windows.
- pygame.font.match_font()¶
find a specific font on the system
match_font(name, bold=False, italic=False) -> path
Returns the full path to a font file on the system. If bold or italic areset to true, this will attempt to find the correct family of font.
The font name can also be an iterable of font names, a string ofcomma-separated font names, or a bytes of comma-separated font names, inwhich case the set of names will be searched in order.If none of the given names are found, None is returned.
New in pygame 2.0.1: Accept an iterable of font names.
Changed in pygame 2.1.3: Checks through user fonts instead of just global fonts for Windows.
Example:
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()¶
create a Font object from the system fonts
SysFont(name, size, bold=False, italic=False) -> Font
Return a new Font object that is loaded from the system fonts. The font willmatch the requested bold and italic flags. Pygame uses a small set of commonfont aliases. If the specific font you ask for is not available, a reasonablealternative may be used. If a suitable system font is not found this willfall back on loading the default pygame font.
The font name can also be an iterable of font names, a string ofcomma-separated font names, or a bytes of comma-separated font names, inwhich case the set of names will be searched in order.
New in pygame 2.0.1: Accept an iterable of font names.
Changed in pygame 2.1.3: Checks through user fonts instead of just global fonts for Windows.
- pygame.font.Font¶
create a new Font object from a file
Font(file_path=None, size=12) -> Font
Font(file_path, size) -> Font
Font(pathlib.Path, size) -> Font
Font(object, size) -> Font
pygame.font.Font.bold
— Gets or sets whether the font should be rendered in (faked) bold. pygame.font.Font.italic
— Gets or sets whether the font should be rendered in (faked) italics. pygame.font.Font.underline
— Gets or sets whether the font should be rendered with an underline. pygame.font.Font.strikethrough
— Gets or sets whether the font should be rendered with a strikethrough. pygame.font.Font.render
— draw text on a new Surface pygame.font.Font.size
— determine the amount of space needed to render text pygame.font.Font.set_underline
— control if text is rendered with an underline pygame.font.Font.get_underline
— check if text will be rendered with an underline pygame.font.Font.set_strikethrough
— control if text is rendered with a strikethrough pygame.font.Font.get_strikethrough
— check if text will be rendered with a strikethrough pygame.font.Font.set_bold
— enable fake rendering of bold text pygame.font.Font.get_bold
— check if text will be rendered bold pygame.font.Font.set_italic
— enable fake rendering of italic text pygame.font.Font.metrics
— gets the metrics for each character in the passed string pygame.font.Font.get_italic
— check if the text will be rendered italic pygame.font.Font.get_linesize
— get the line space of the font text pygame.font.Font.get_height
— get the height of the font pygame.font.Font.get_ascent
— get the ascent of the font pygame.font.Font.get_descent
— get the descent of the font pygame.font.Font.set_script
— set the script code for text shaping Load a new font from a given filename or a python file object. The size isthe height of the font in pixels. If the filename is
None
the pygamedefault font will be loaded. If a font cannot be loaded from the argumentsgiven an exception will be raised. Once the font is created the size cannotbe changed. If no arguments are given then the default font will be used anda font size of 12 is used.Font objects are mainly used to render text into new Surface objects. Therender can emulate bold or italic features, but it is better to load from afont with actual italic or bold glyphs.
- bold¶
Gets or sets whether the font should be rendered in (faked) bold.
bold -> bool
Whether the font should be rendered in bold.
When set to True, this enables the bold rendering of text. Thisis a fake stretching of the font that doesn't look good on manyfont types. If possible load the font from a real bold fontfile. While bold, the font will have a different width than whennormal. This can be mixed with the italic, underline andstrikethrough modes.
New in pygame 2.0.0.
- italic¶
Gets or sets whether the font should be rendered in (faked) italics.
italic -> bool
Whether the font should be rendered in italic.
When set to True, this enables fake rendering of italictext. This is a fake skewing of the font that doesn't look goodon many font types. If possible load the font from a real italicfont file. While italic the font will have a different widththan when normal. This can be mixed with the bold, underline andstrikethrough modes.
New in pygame 2.0.0.
- underline¶
Gets or sets whether the font should be rendered with an underline.
underline -> bool
Whether the font should be rendered in underline.
When set to True, all rendered fonts will include anunderline. The underline is always one pixel thick, regardlessof font size. This can be mixed with the bold, italic andstrikethrough modes.
New in pygame 2.0.0.
- strikethrough¶
Gets or sets whether the font should be rendered with a strikethrough.
strikethrough -> bool
Whether the font should be rendered with a strikethrough.
When set to True, all rendered fonts will include anstrikethrough. The strikethrough is always one pixel thick,regardless of font size. This can be mixed with the bold,italic and underline modes.
New in pygame 2.1.3.
- render()¶
draw text on a new Surface
render(text, antialias, color, background=None) -> Surface
This creates a new Surface with the specified text rendered on it.pygame.fontpygame module for loading and rendering fonts provides no way to directly draw text on an existingSurface: instead you must use Font.render() to create an image(Surface) of the text, then blit this image onto another Surface.
The text can only be a single line: newline characters are not rendered.Null characters ('x00') raise a TypeError. Both Unicode and char (byte)strings are accepted. For Unicode strings only UCS-2 characters('\u0001' to '\uFFFF') were previously supported and any greaterunicode codepoint would raise a UnicodeError. Now, characters in theUCS-4 range are supported. For char strings a
LATIN1
encoding isassumed. The antialias argument is a boolean: if True the characterswill have smooth edges. The color argument is the color of the text[e.g.: (0,0,255) for blue]. The optional background argument is a colorto use for the text background. If no background is passed the areaoutside the text will be transparent.The Surface returned will be of the dimensions required to hold the text.(the same as those returned by Font.size()). If an empty string is passedfor the text, a blank surface will be returned that is zero pixel wide andthe height of the font.
Depending on the type of background and antialiasing used, this returnsdifferent types of Surfaces. For performance reasons, it is good to knowwhat type of image will be used. If antialiasing is not used, the returnimage will always be an 8-bit image with a two-color palette. If thebackground is transparent a colorkey will be set. Antialiased images arerendered to 24-bit
RGB
images. If the background is transparent apixel alpha will be included.Optimization: if you know that the final destination for the text (on thescreen) will always have a solid background, and the text is antialiased,you can improve performance by specifying the background color. This willcause the resulting image to maintain transparency information bycolorkey rather than (much less efficient) alpha values.
If you render '\n' an unknown char will be rendered. Usually arectangle. Instead you need to handle newlines yourself.
Font rendering is not thread safe: only a single thread can render textat any time.
Changed in pygame 2.0.3: Rendering UCS4 unicode works and does notraise an exception. Use if hasattr(pygame.font, "UCS4"): to see ifpygame supports rendering UCS4 unicode including more languages andemoji.
- size()¶
determine the amount of space needed to render text
size(text) -> (width, height)
Returns the dimensions needed to render the text. This can be used tohelp determine the positioning needed for text before it is rendered. Itcan also be used for word wrapping and other layout effects.
Be aware that most fonts use kerning which adjusts the widths forspecific letter pairs. For example, the width for "ae" will not alwaysmatch the width for "a" + "e".
- set_underline()¶
control if text is rendered with an underline
set_underline(bool) -> None
When enabled, all rendered fonts will include an underline. The underlineis always one pixel thick, regardless of font size. This can be mixedwith the bold, italic and strikethrough modes.
Note
This is the same as the underline attribute.
- get_underline()¶
check if text will be rendered with an underline
get_underline() -> bool
Return True when the font underline is enabled.
Note
This is the same as the underline attribute.
- set_strikethrough()¶
control if text is rendered with a strikethrough
set_strikethrough(bool) -> None
When enabled, all rendered fonts will include a strikethrough. Thestrikethrough is always one pixel thick, regardless of font size.This can be mixed with the bold, italic and underline modes.
Note
This is the same as the strikethrough attribute.
New in pygame 2.1.3.
- get_strikethrough()¶
check if text will be rendered with a strikethrough
get_strikethrough() -> bool
Return True when the font strikethrough is enabled.
Note
This is the same as the strikethrough attribute.
New in pygame 2.1.3.
- set_bold()¶
enable fake rendering of bold text
set_bold(bool) -> None
Enables the bold rendering of text. This is a fake stretching of the fontthat doesn't look good on many font types. If possible load the font froma real bold font file. While bold, the font will have a different widththan when normal. This can be mixed with the italic, underline andstrikethrough modes.
Note
This is the same as the bold attribute.
- get_bold()¶
check if text will be rendered bold
get_bold() -> bool
Return True when the font bold rendering mode is enabled.
Note
This is the same as the bold attribute.
- set_italic()¶
enable fake rendering of italic text
set_italic(bool) -> None
Enables fake rendering of italic text. This is a fake skewing of the fontthat doesn't look good on many font types. If possible load the font froma real italic font file. While italic the font will have a differentwidth than when normal. This can be mixed with the bold, underline andstrikethrough modes.
Note
This is the same as the italic attribute.
- metrics()¶
gets the metrics for each character in the passed string
metrics(text) -> list
The list contains tuples for each character, which contain the minimum
X
offset, the maximumX
offset, the minimumY
offset, themaximumY
offset and the advance offset (bearing plus width) of thecharacter. [(minx, maxx, miny, maxy, advance), (minx, maxx, miny, maxy,advance), ...]. None is entered in the list for each unrecognizedcharacter.
- get_italic()¶
check if the text will be rendered italic
get_italic() -> bool
Return True when the font italic rendering mode is enabled.
Note
This is the same as the italic attribute.
- get_linesize()¶
get the line space of the font text
get_linesize() -> int
Return the height in pixels for a line of text with the font. Whenrendering multiple lines of text this is the recommended amount of spacebetween lines.
- get_height()¶
get the height of the font
get_height() -> int
Return the height in pixels of the actual rendered text. This is theaverage size for each glyph in the font.
- get_ascent()¶
get the ascent of the font
get_ascent() -> int
Return the height in pixels for the font ascent. The ascent is the numberof pixels from the font baseline to the top of the font.
- get_descent()¶
get the descent of the font
get_descent() -> int
Return the height in pixels for the font descent. The descent is thenumber of pixels from the font baseline to the bottom of the font.
- set_script()¶
set the script code for text shaping
set_script(str) -> None
Experimental: feature still in development available for testing and feedback. It may change.Please leave feedback with authors
Sets the script used by harfbuzz text shaping, taking a 4 characterscript code as input. For example, Hindi is written in the Devanagariscript, for which the script code is "Deva". See the full list ofscript codes in ISO 15924.
This method requires pygame built with SDL_ttf 2.20.0 or above. Otherwise themethod will raise a pygame.error.
New in pygame 2.2.0.
pygame.font — pygame v2.6.0 documentation (2025)
References
- https://www.bedrockexplorer.com/marketplace-offer/ascent/kawaii-top
- https://milanote.com/guide/characters
- https://thenevadaindependent.com/article/in-return-to-nevada-obama-condemns-trumps-character-touts-harris-proposals
- https://www.pygame.org/docs/ref/font.html/
Top Articles
Updated Guide to Providing Liquidity & Farming on QuickSwap
Olympics security means minorities and others flagged as potential terror threats can’t move freely
Nc Arrest Warrants Free
Latest Posts
Introducing QuickSwap: Meet the Next Generation of High-Performance DEX
BEST 7 Stump Grinders: Compact, Small, Large, Cheap, Professional, & Residential
Recommended Articles
- Tips for Removing Stubborn Medical Adhesives with Less Discomfort
- ALDI BECOMES FIRST UK SUPERMARKET TO OFFER FREE PERIOD PRODUCTS IN CUSTOMER AND COLLEAGUE TOILETS
- Professional Nail Drill Bits for Technicians
- We analysed almost 1,000 social media posts about 5 popular medical tests. Most were utterly misleading
- Most Durable Fake Nails: Your Ultimate Guide
- Judge blocks Trump from deporting noncitizens under Alien Enemies Act, orders flights turned around
- Nail Cuticles: How to Remove Them
- Buy Top 10 Vegan Protein Powders Online in Australia | Elite Supps
- Var ska man bo på Sardinien? 8 Bästa semesterområdena + Hotellen 🇮🇹
- Lockdown (Urban Outlaws #3)
- AXOR Showers. All-immersive luxury.
- Turok 2: Seeds of Evil (Xbox One, Switch, PS4) (Crossplay)
- '9-1-1' Star Ryan Guzman Breaks Down That Sad Buddie Farewell
- Today's Connections Hints & Answers For March 22, 2025 (Puzzle #650)
- Make Up Removers | Cosmetic Removers Balsem | Oogmake up Reinigers | LOOKFANTASTIC Nederland
- March 11, 2025—KB5053598 (OS Build 26100.3476)
- 10 Best Natural Hairspray Brands with Non-Toxic Ingredients for Effortless Hold
- Plaknagels verwijderen: uitgebreide stap voor stap uitleg!
- Micellar Water Makeup Remover
- The Machines Are Back: Terminator 7: End of War (2024)
- Siege LABYRINTH Plan-B Compatible Muzzle Device - Compensator
- 5 Best Wall-Mounted Makeup Mirrors - Apr. 2025 - BestReviews
- What Are the Different Types of Hearing Loss? Experts Answer FAQs
- Wenger Hanging Toiletry Kit - Black
- Best Moisturizing Gloves for Silky Smooth Hands - ApplianceMind
- eBook: Das Leben der Formen von Emanuele Coccia | ISBN 978-3-446-28433-3 | Sofort-Download kaufen
- Lymphatic Drainage of the Head and Neck
- BPC 157 Banned: What You Need to Know About the Latest FDA Decision
- Artisland - Draw & Share for Android - Free App Download
- FAQs • Feeney Brothers Utility Services
- POIZON - Authenticated Before Shipping | Sneakers, Shoes, Clothing & Bags
- Home Oxygen Therapy vs. Oxygen Cylinder: Which Is Right for You?
- The Falsies Surreal Extensions Mascara | Maybelline
- The Amazing Benefits of Green Tea - EU IsaFYI
- Mini Lip Gloss | Vegan Lip Gloss | Travel Size Lip Gloss
- Smile Brighter With These Dentist-Approved Toothpastes
- Olavita Botox Serum: Does It Really Work? Honest Reviews
- Amino Acids - Physical Properties, Structure, Classification, Functions - Biology Notes Online
- How to Roast Pumpkin Seeds - HogoNext
- "The Masked Singer" 2024 - Staffel 11: Alle Infos
- Prostate Relief Exercises | Complete Guide For Prostate Exercise | Enlarged Prostate
- Shower Gel & Body Wash - Body Care | Ulta Beauty
- 10 Essential Nail Care Tools for Manicure & Pedicure at Home | Nooora
- This cutting edge hair loss treatment is a repurposed drug from the 1990s
- The 10 Best Ear Thermometers of 2025 (Reviews) - FindThisBest
- Water Based Exterior Polyurethane Clear Coat: Exterior 450 | General Finishes
- Behind the Blades: A Day in the Life of a Hair Shear Craftsman
- Ways To Make Your Home More Accessible
- Text Reordering FAQ - Contact Lenses from Walmart Contacts
- How to Sell Custom Vinyl Decals and Stickers Online
- How to Use Oxygen Spray Facial Machine
- Conviction related to robbery that led to Gda Adrian Donohoe's death overturned
- L-carnitine + L-arginine + Coenzyme Q10 + Vitamin E + Zinc + Folic acid + Glutathione + Selenium | Indications, Pharmacology, Dosage, Side Effects & other Generic info with Available Brand names in Bangladesh
- Boombrush | Bestel The Brush Heads vandaag nog!
- Rawisha | Rotterdam (24458842)
- A Study of Skin-to-Skin Care During Cesarean Birth: A Mother's Experience
- Nail tools steriliser tray, portable multi-function sterilization box disinfection container manicure tools for manicure nail tools equipment cleaner (16x5.5 cm)
- Lokasyonlar – Turkish Airlines Bowling
- PMU Kit Orange Rita Wireless PMU Tattoo Pen with 3 boxes Cartridge Needles
- ✨ BodiPure Miracle Body Polish for Multipurpose - Body Scrub, Exfoliating Body Scrub, Body Wash for Women, Men, Girls, and Boys for all skin type - Natural - Smooth Skin, Balance pH, Clear Pores, 6.5oz — 🛍️ The Retail Market
- 'Wheel of Fortune' co-host Vanna White only works 34 days a year
- I visited the quaint town Disney developed in the 90s. Some homes now sell for 7 figures, but it's still got a small town charm.
- Treating anal fistula with the anal fistula plug: case series report of 12 patients
- Best Nail Polish Remover | Gel Nail Remover in UAE
- Top 5 Best Cuticle Scissors 2025 - Guides by RebateKey
- Subway® launch ‘Series’ menu with 15 new Signature Subs, Submelts®, Wraps & Salads
- Men Are Trimming Their Eyelashes To Be Shorter, And The Reason Is Baffling
- essie Gel Couture Nagellak Fuel Your Life 559
- Watch the official video for Mark Knopfler’s Guitar Heroes' charity remake of Going Home (Theme From Local Hero), featuring David Gilmour, Eric Clapton, Alex Lifeson, Brian May, Brian May, Slash and more
- Amulets and Talismans from the Islamic World - The Metropolitan Museum of Art
- The Future of Adult Diapers: Insights from Top Suppliers in the Industry
- 2 Cell 30Whr Battery: Features, Compatibility, And Replacement Options Explained [Updated On- 2025]
- PLANE [DVD] 2023 New DVD Top-quality Free UK shipping • £6.74
- The 10 Best Self-Adhesive Eyelashes of 2025 (Reviews) - FindThisBest
- Complementos alimenticios ecológicos y naturales
- Threading A Needle: A Simple Guide To Perfect Piercing
- Needle Building and Accessories - Titanium Tattoo Needles - Kingpin Tattoo Supply
- ✨ 20PCS Foot Buffer Block Buffing Block Rough Nail File Emery Boards for Nails Toenail File Nail Files Professional Manicure Pedicure Tools Nail Files Tool Purple King Luster — 🛍️ The Retail Market
- 8 tips voor het aanbrengen van concealer en foundation
- Can I put hydrocortisone cream on cat? - The Environmental Literacy Council
- Wilderness Wanderings: Where is Kadesh?
- St Tropez’s speedy tan took me from deathly at dawn to bronzed by lunch
- 10 Best Post-Sun Creams 2025 in the US | There's One Clear Winner | BestReviews.guide
- The Ultimate Bathroom Remodeling Debate: Shower Vs Bathtub - Pros, Cons, And Costs - Titan Bathworks
- The Best EMS Devices to Lift and Sculpt Your Face at Home
- 41 Best Upcoming PS4 Games of 2023 - Gameranx
- Mit diesen Augenbrauenseren seid ihr nur wenige Wochen von euren Dream-Brows entfernt
- Beste Handcreme – 14 Produkte im Test 2025
- This Ulo Hair Growth Serum is our secret to longer locks — ‘I’m in my Fabio Era’
- 6 Reasons Men Bald – and What Can Be Done About It, According to a Hair Transplant Surgeon
- Hoeveel Rakaat alle gebeden?
- Soy Protein And Estrogen: What's The Connection?
- Skincare Tools That Will Give You Instant Results | TNK
- Heavyweight shocker: Rahman knocks out Lewis
- Salt for Survival: Essential Uses for Health, Storage, and Emergency
- Aqua aerobics proven to aid weight loss in obese adults
- ▷ Professional Nail Bits | Dan's Nails
- 17 Stencil Tattoo Flash Designs: Essential Guide To Outlines
- Army Chief Or A King: GHQ Tightens Grip On Civilian Institutions Under General Asim Munir
- Choose the Right Skin Care Tools for Daily Use | PMD Beauty
Article information
Author: Lakeisha Bayer VM
Last Updated:
Views: 5588
Rating: 4.9 / 5 (69 voted)
Reviews: 92% of readers found this page helpful
Author information
Name: Lakeisha Bayer VM
Birthday: 1997-10-17
Address: Suite 835 34136 Adrian Mountains, Floydton, UT 81036
Phone: +3571527672278
Job: Manufacturing Agent
Hobby: Skimboarding, Photography, Roller skating, Knife making, Paintball, Embroidery, Gunsmithing
Introduction: My name is Lakeisha Bayer VM, I am a brainy, kind, enchanting, healthy, lovely, clean, witty person who loves writing and wants to share my knowledge and understanding with you.