【发布时间】:2021-05-28 04:32:23
【问题描述】:
在尝试从字体系列中获取正确的 .ttf 文件时遇到了困难。
目前正在尝试使用 pygame 处理一些图形,它有自己的内部搜索功能,可以从 Font Family 中查找字体文件,但它不正确。
还尝试使用 matplotlib.font_manager。这也是不正确的。
import matplotlib.font_manager as font_manager
import pygame
pygame.font.init()
print(font_manager.findfont('Segoe UI'))
> C:\WINDOWS\Fonts\seguisb.ttf
print(pygame.font.match_font('Segoe UI'))
> C:\WINDOWS\Fonts\segoeuil.ttf
print(font_manager.findfont('Arial'))
> C:\WINDOWS\Fonts\arial.ttf
print(pygame.font.match_font('Arial'))
> C:\WINDOWS\Fonts\ARIALN.TTF
我希望我错过了一些东西,并且有一种方法可以在搜索中获得完全匹配,而不是部分匹配(我猜使用的两种方法都是读取字节数组并返回最接近的匹配字体家庭。即,“Segoe UI”为“Segoe UI Bold”,因此它作为匹配项返回)。
【问题讨论】:
-
除非你有一个确切字体名称的比较列表,否则它不会像你期望的那样工作,我猜它在数据库中作为类似查询工作,一种方法是,你可以通过删除过滤检索到的字体名称诸如“粗体”、“常规”、“轻”、“细”等通常出现在字体名称中的词。然后删除所有重复的名称。这可能会给你一个体面的字体名称列表。
-
嗯,.findfont() 和 .match_font() 不会返回与其匹配的字体列表,而只会返回最接近的字体。我想我最终将不得不阅读 ttf 文件并找到 == 提供的字体名称的文件。 Windows 正确显示字体文件夹中的字体名称,而不是字体文件名。当您将鼠标悬停在 font.ttf 文件上时,它会在工具提示中显示字体名称。所以我确信有一种方法可以读取字体文件。
标签: python matplotlib fonts pygame