全网首发:JDK/Java对于TTC字体文件的支持研究

简介: 全网首发:JDK/Java对于TTC字体文件的支持研究

同事报怨,泰山OFFICE可用字体太少。吾当时就奇怪了:就那么几个字体,让吾给汝变出来?同事说,别的软件字体多啊。吾视之……吾错了。


 于是了解了一下,原来字体文件(TrueType)有两种:一种是单一的字体(TTF),还有一种是多种字体(TTC)。Java允许从文件中产生字体:


Font.createFont(Font.TRUETYPE_FONT, new File("D:\\simsun.ttc"));

 使用FontForge可知其中有两个字体,参数中无法指定。这怎么办?于是搜索了一番,得到这样的信息:


Java支持TTC字体格式,但使用Font.createFont()只能获取TTC文件中定义的第一种字体。目前,无法指定字体索引。

sun.font.SunFontManager.createFont2D(),调用时new TrueTypeFont()(大约是2486),fontIndex始终为零。即:font2D = new TrueTypeFont(fontFilePath, null, 0, true);

 那么,是不是改了就对了呢?咱有泰山JDK8,想改还不容易?随口一句:有自己的基础软件,真的好方便啊。先改成1试试。


产生字体代码

testFonts[0] = new Font("宋体", 0, 16);
testFonts[1] = Font.createFont(Font.TRUETYPE_FONT, new File(FONT_DIR+"\\"+FONT_FILES[0]));
// 指定大小
testFonts[1] = testFonts[1].deriveFont(Font.PLAIN, 16);

绘制结果


image.png

从绘制效果来看,完全一样。这个结果是不是对的呢?目前无法确认。


字体名的变化

System.out.println(f.getFamily()+", "+f.getName()+", "+f.getFontName());

得到的结果都是:新宋体。这说明JDK确实是能处理TTC。


 

目录
相关文章
|
19天前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
24 4
|
1月前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
3月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
356 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
3月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
126 34
|
2月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
53 0
|
10月前
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
1152 2
Java JDK的安装
首先我们先去下载jdk。
|
7月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
89 1
|
6月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
83 0
|
7月前
|
IDE Java 测试技术
Java零基础(4) - JDK、IntelliJ IDEA的安装和环境变量配置
【8月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
197 0
Java零基础(4) - JDK、IntelliJ IDEA的安装和环境变量配置