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中设置字体并显示中文的主要内容,如果未能解决你的问题,请参考以下文章
自定义字体仅在 Interface Builder 中设置时可用