全网首发: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。


 

目录
相关文章
|
6月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
269 1
|
8月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
592 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
9月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
407 14
|
9月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
902 1
|
9月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
1149 0
|
9月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
262 0
|
9月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
648 0
|
存储 Java Windows
Java21 JDK下载安装及Windows环境变量配置
JDK是Java的开发工具包,要进行Java学习或开发之前,需先下载安装,下载地址如下:提示:这网址里面有三个扩展名的文件,分别是“.zip”、“.exe”和“.msi”,鄙人选择的是.exe的文件,下方的安装和环境的配置也是安装该文件的安装程序进行的。
3359 2
Java JDK的安装
首先我们先去下载jdk。