如何在Pygame中访问真实字体字重?非模拟粗体斜体方案
在Pygame中使用Montserrat字体的真实字重
可以实现,你当前使用的Montserrat-VariableFont_wght.ttf是带字重轴(wght)的可变字体,完全支持切换light、medium、bold、extrabold等真实字重,不需要依赖Pygame的模拟粗体功能。
实现方法
Pygame的pygame.font.Font类提供了set_weight()方法,可直接设置可变字体的字重数值,对应Montserrat的标准字重等级:
- Light: 300
- Regular: 400(默认)
- Medium: 500
- Bold: 700
- ExtraBold: 800
示例代码
import pygame pygame.init() screen = pygame.display.set_mode((800, 600)) # 初始化可变字体对象 base_font = pygame.font.Font("Montserrat-VariableFont_wght.ttf", 40) # 切换不同真实字重并渲染文本 base_font.set_weight(300) text_light = base_font.render("Montserrat Light", True, (255, 255, 255)) base_font.set_weight(500) text_medium = base_font.render("Montserrat Medium", True, (255, 255, 255)) base_font.set_weight(700) text_bold = base_font.render("Montserrat Bold", True, (255, 255, 255)) base_font.set_weight(800) text_extrabold = base_font.render("Montserrat ExtraBold", True, (255, 255, 255)) # 将文本绘制到屏幕 screen.fill((0, 0, 0)) screen.blit(text_light, (50, 100)) screen.blit(text_medium, (50, 200)) screen.blit(text_bold, (50, 300)) screen.blit(text_extrabold, (50, 400)) pygame.display.flip() # 事件循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.quit()
补充说明
如果你手里的Montserrat是拆分的单字重独立文件(比如Montserrat-Light.ttf、Montserrat-Medium.ttf),也可以直接加载对应文件来使用真实字重,示例:
font_light = pygame.font.Font("Montserrat-Light.ttf", 40) text_light = font_light.render("Montserrat Light", True, (255,255,255))
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

