我可以用pygame.font.Font使用哪些字体?

时间:2016-06-23 21:08:12

标签: pygame

我认为pygame.font.Font是加载.ttf字体,并且你不能在没有.ttf文件的情况下加载字体在同一目录中,但是我看到有人加载了一个视频字体没有.ttf字体在同一目录中。我想知道我可以在pygame.font.Font中使用哪些字体而不在同一目录中使用.ttf文件

4 个答案:

答案 0 :(得分:12)

通常有两种方法可以在pygame中使用字体:pygame.font.Font()pygame.font.SysFont()pygame.font.Font()期望字体文件的路径作为其第一个参数,而pygame.font.SysFont()期望字符串具有字体名称。

您可以使用pygame.font.Font()加载任何TrueType字体文件(* .ttf)。要在项目目录中加载字体文件myfont.ttf,只需调用pygame.font.Font("myfont.ttf", size)即可。如果您将其放在不同的位置,请将路径替换为您的文件中的第一个参数。您可以使用相对或绝对文件路径。

或者,您可以通过调用pygame.font.SysFont("fontname", size)来使用系统字体。您可以调用哪些系统字体取决于您运行它的系统。如果找不到您尝试提供的字体,它将回退到默认系统字体。您可以将逗号分隔的字体名称列表传递给它,然后按顺序搜索,并返回第一个可用的字体。 pygame.font.get_fonts()将返回一个列表,其中列出了您可以在系统中找到的所有字体名称,然后您可以使用它们。

最后,要加载不是TrueType字体的字体文件,可以使用支持TTF,Type1,CFF,OpenType,SFNT,PCF,FNT,BDF,PFR和Type42字体的pygame.freetype模块。您可以通过调用pygame.freetype.Font()来调用pygame.freetype.SysFont()或系统字体来使用字体文件,类似于字体模块。

因此,如果您想使用字体“Arial”并将其安装在您的系统上,则可以使用pygame.font.SysFont('arial', size)进行调用。如果您没有在系统上安装它或不确定,您可以直接提供字体文件的路径,例如pygame.font.Font("C:\Windows\Fonts\Arial.ttf",size)

答案 1 :(得分:2)

可用字体将取决于系统。但是,您可以通过调用以下命令获取所有可用字体的列表:res = data.frame( lapply(setNames(,names(template)), function(x) if (x %in% names(df)) as(df[[x]], class(template[[x]])) else template[[x]][NA_integer_] ), stringsAsFactors = FALSE)

答案 2 :(得分:1)

从操作系统细节角度来看的一些发现:

  • 在Windows上pygame.font.get_fonts()返回大量系统字体,但是在以WSL安装的Ubuntu上,我们仅获得3种字体:['dejavuserif', 'dejavusansmono', 'dejavusans']
  • 似乎没有与操作系统无关的字体​​名称,包括Aerial
  • 如果要使用与操作系统无关的字体​​,请使用pygame.font.Font(pygame.font.get_default_font(), font_size)

答案 3 :(得分:0)

您应该首先import pygame,然后在IDE中键入print(pygame.font.get_fonts()),以查看所有当前可用的字体。 :)