成功将TTF字体从18M裁剪到1.8M

本文介绍了如何将思源宋体和思源黑体裁剪以适应串口屏的存储限制。通过尝试多种字体裁剪工具,最终使用FontPruner成功将字体文件从18M压缩至1.8M,适用于嵌入式设备。
摘要由CSDN通过智能技术生成

问题:
串口屏中为了美观,需要多用几种字体,而且需要支持中日韩英四种语言。
由于支持中文的字体一定支持英文,主要是考虑对中日韩文的支持。
查了一下,最完美的字体应该是开源的思源宋体和思源黑体了。

但是思源宋体和思源黑体的字库文件较大,
鉴于串口屏中存储空间有限,
需要将这两种字体裁剪到刚好够串口屏使用,以尽可能节省存储空间。

解决办法:
0、原来电脑中已安装思源宋体和思源黑体,新建一个word文档,测试思源宋体和思源黑体是否能支持中日韩文字;如图所示:
历史统计Historical statistics履歴統計역사 통계

但是发现,在Word中同时选好中日韩英四中文字的时候,看到标题栏中字体那里是空白,
在这里插入图片描述
思源宋体和思源黑体的7种不同规格都试过,都是同样的结果。
难道思源宋体和思源黑体不能支持中日韩同时显示?

1、网上搜了一下,发现思源黑体和思源宋体号称是泛CJK字体(CJK:Chinese,Japan,Korea);
那为什么我已安装思源宋体和思源黑体,
还是不能将中日韩三种文字同时设定为相同的字体呢?
莫非是

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Java 8 中可以使用 Font.createFont() 方法来加载 TrueType Collection (TTC) 字体文件,并通过 Font.deriveFont() 方法裁剪其中的某个字体,然后将裁剪后的字体保存到新的字体文件中。 以下是一个示例代码,演示如何从 ttc 文件中裁剪关键字字体并保存到 ttf 文件中: ```java import java.awt.Font; import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class FontClipper { public static void main(String[] args) { try { // 加载 TTC 字体文件 Font font = Font.createFont(Font.TRUETYPE_FONT, new File("myfont.ttc")); // 裁剪字体 Font clippedFont = font.deriveFont(24f).deriveFont(Font.PLAIN); // 创建 GraphicsEnvironment 对象 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); // 注册裁剪后的字体 ge.registerFont(clippedFont); // 获取字体文件路径 String fontFilePath = clippedFont.getFontName() + ".ttf"; // 保存裁剪后的字体文件 FileOutputStream fos = new FileOutputStream(fontFilePath); clippedFont.deriveFont(Font.PLAIN).createGlyphVector(fos, "Test").getFont().createFont(Font.TRUETYPE_FONT, fos); fos.close(); System.out.println("已保存裁剪后的字体文件:" + fontFilePath); } catch (FontFormatException | IOException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先加载 ttc 字体文件,然后使用 Font.deriveFont() 方法裁剪字体。接着,我们创建 GraphicsEnvironment 对象并注册裁剪后的字体。 然后,我们使用裁剪后的字体创建一个新的字体文件(ttf),并将其保存到磁盘上。最后,我们输出保存的字体文件路径。 需要注意的是,保存新字体文件时,需要使用字体含的字符来创建 GlyphVector。在上面的示例中,我们使用 "Test" 字符串。如果要保存的字体含任何字符,可以使用空字符串作为参数。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值