kylinpoet 发表于 2022-5-19 20:05:21

为行空板换个字体

本帖最后由 kylinpoet 于 2022-5-20 08:43 编辑

## 一、 项目起源
#### 电子创客的"Hello World" 一般是点灯。但行空板有一块方便的触摸彩屏,那当然是 *字体秀* 了!

## 二、问题分析
#### 通过阅读unihiker库的GUI类模块,我们发现,程序已经自带了安装字体的功能,这样我们就不需要手动在系统下安装了。安装字体函数如下(大概在 96 行):
```python
    def load_font(self, path):
      import os
      from contextlib import redirect_stderr
      from fontTools import ttLib


      def font_name(font_path):
            font = ttLib.TTFont(font_path, ignoreDecompileErrors=True)
            ...
            def install_font(src_path):
                # copy the font to the Windows Fonts folder
                dst_path = os.path.join(
                                                                ...
```

当找不到字体时,代码会自动安装字体。

## 三、功能实现
那么我们只要将想要安装的字体复制到代码根目录,然后写入字体名即可,文件目录如下:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202205/19/200905ux11vj201vh1u5pj.png)

主要代码如下,
```python
font_name = gui.load_font('fzxz.ttf')
gui.draw_text(x=20, y=88, color="#fc8c23", text="创客智造", font_size=36, font_family=font_name)

gui.draw_text(x=15, y=150, color='#5DAC81', text="Hello,UNIHIKER!", font_size=20)
```
## 四、效果展示
以下是效果图:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202205/19/200417vfik54z6229349hc.png)
## 五、一些说明
1. 因为第一次已经安装了字体,下次使用的时候,这句代码就可以去掉了。
```python
# font_name = gui.load_font('fzxz.ttf')
```然后代码可以改为:
```python
gui = GUI()
gui.draw_text(x=20, y=88, color="#fc8c23", text="创客智造", font=('方正小篆体',36))
gui.draw_text(x=15, y=150, color='#5DAC81', text="Hello,UNIHIKER!", font_size=20)

```
2. 因为我们使用root账号登录系统的,所以字体是安装在 `/root/.fonts/` 目录。



Forgotten 发表于 2022-5-21 14:39:33

古风满满,楼主可以分享一下字体文件是怎么搞到的{:5_194:}
页: [1]
查看完整版本: 为行空板换个字体