You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:02:10