python怎样在pygame中设置字体并显示中文

Posted huadong_xiaolin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎样在pygame中设置字体并显示中文相关的知识,希望对你有一定的参考价值。

目录

一、查看可用字体

import pygame
print(pygame.font.get_fonts())

二、设置字体

1.使用系统字体

self.font=pygame.font.SysFont(None,48)#None系统默认字体
self.font = pygame.font.SysFont("arial", 16)

2.使用字体文件

字体文件可以外下载

self.font = pygame.font.Font("my_font.ttf", 16) #字体,字号

3.设置中文()见前2

#系统自带
self.font = pygame.font.SysFont("SimHei", 32)  # 显示中文

在网上下载一个中文字体文件,将这个文件与我们的程序放在同一个文件夹,如果是中文的文件名,将它改成英文文件名。例如,下载了迷你简毡笔黑.TTF,将文件名改成了mnjzbh.ttf,并将程序的第一句改成:

self.font=pygame.font.Font('mnjzbh.ttf',32) # 显示中文

三、附录:常见系统字体对照表

一般的中文字体名,使用拼音即可,如 仿宋fangsong, 楷体kaiti

新细明体:PMingLiU
细明体:MingLiU
标楷体:DFKai-SB
黑体:SimHei
宋体:SimSun
新宋体:NSimSun
仿宋:FangSong
楷体:KaiTi
仿宋_GB2312:FangSong_GB2312
楷体_GB2312:KaiTi_GB2312
微软正黑体:Microsoft JhengHei
微软雅黑体:Microsoft YaHei

一个应用小例子

import pygame.font


class BUtton:
    def __init__(self, ai_game, msg):
        """初始化按钮属性"""
        # msg是要在按钮上显示的文本
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()

        # 设置按钮的尺寸和其他属性
        self.width, self.height = 200, 50
        self.buttom_color=(0,255,0)
        self.text_color=(255,255,255)
        self.font=pygame.font.SysFont(None,48)

        #创建按钮的rect对象,并使其居中
        self.rect=pygame.Rect(0,0,self.width,self.height)
        self.rect.center=self.screen_rect.center

        #按钮的标签只创建一次
        self._pre_msg(msg)

    def _pre_msg(self,msg):
        """将msg渲染为图像,并使其在按钮上居中"""
        self.msg_image=self.font.render(msg,True,self.text_color
                                        ,self.buttom_color)
        #布尔实参指定开启还是关闭反锯齿功能,反锯齿让文本的边缘更平滑
        self.msg_image_rect=self.msg_image.get_rect()
        #让图像文本在按钮上居中
        self.msg_image_rect.center=self.rect.center

    def draw_button(self):
        """绘制一个用颜色填充的按钮,再绘制文本"""
        self.screen.fill(self.buttom_color,self.rect)
        self.screen.blit(self.msg_image,self.msg_image_rect)

iPhone-在 PickerView 中设置字体列表

【中文标题】iPhone-在 PickerView 中设置字体列表【英文标题】:iPhone- Set Font list in PickerView 【发布时间】:2014-03-04 14:47:58 【问题描述】:

我必须在 Pickerview 中显示字体列表。当我在选取器视图委托方法中设置字体数组时,名为“Bodoni Ornaments”的字体之一在选取器视图标签中变形,其余所有字体都可以正常显示。

请看图:

我通过这段代码获取字体列表:

#pragma mark- Font Array return methods 

-(NSArray*)fontFamilyArrayReturnMethod

    NSLog (@"Font families: %@", [UIFont familyNames]);
    return [UIFont familyNames];

Picker View Delegate 方法代码:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, pickerView.frame.size.width-7, 44)];
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.font = [UIFont fontWithName:[arrayContainFontFamily objectAtIndex:row] size:18];
    label.text = [NSString stringWithFormat:@"%@", [arrayContainFontFamily objectAtIndex:row]];
    return label;    

为什么这个字体没有作为文本出现在选取器视图标签中。我需要字体名称文本而不是设计字符。 任何帮助表示赞赏。

【问题讨论】:

什么是arrayContainFontFamily 【参考方案1】:

在 Google 上快速搜索“Bodoni Ornaments”后,字体实际上是这样的,所以行为实际上是正确的。

--编辑-- 现在,您有以下行:

label.font = [UIFont fontWithName:[arrayContainFontFamily objectAtIndex:row] size:18];

这使得字体名称是使用字体本身编写的。如果您希望“Bodoni Ornaments”显示为文本,则必须删除此行。但是,您将无法再预览每种字体。

【讨论】:

我的问题是它应该说文本字体名称而不是pickerview中的设计字符。感谢您的快速响应。 @Nico,确实如此,但该字体是符号。如果你需要它可读,那么你需要使用不同的字体...... 感谢 Kamaros,但我无法使用 Preview。 @Nico 您可以尝试使用 NSAttributedString 来显示字体名称以及示例(即,以 Helvetica 等通用字体显示字体名称,然后在字体本身中显示“ABC”或类似字体),或者只是专门检查 Bodoni Ornaments 并为其使用不同的字体(hacky 并且没有该字体的预览)。 @Kamaros:感谢 NSAttributedString 选项似乎不错,第二个我已经想到但我不能欺骗用户。 :)

以上是关于python怎样在pygame中设置字体并显示中文的主要内容,如果未能解决你的问题,请参考以下文章

怎样在jtextfield中设置字体的大小,位置和颜色

自定义字体仅在 Interface Builder 中设置时可用

iPhone-在 PickerView 中设置字体列表

如何在python的reportlab Canvas中设置任何字体?

在pycharm的python控制台或终端中设置字体大小

在kivy中设置全局字体大小