泰山JDK8获取(宋体,12)中文问号?宽度为0的问题

简介: 泰山JDK8获取(宋体,12)中文问号?宽度为0的问题

调用堆栈

FileFontStrike.getGlyphAdvance(int, boolean) line: 705  
FileFontStrike.getGlyphAdvance(int) line: 693 
FileFontStrike.getCodePointAdvance(int) line: 812 
FontDesignMetrics.handleCharWidth(int) line: 417  
FontDesignMetrics.charWidthFloat(char) line: 447  
FontDesignMetrics.charWidth(char) line: 439

代码分析

getCodePointAdvance()处,mapper.charToGlyph(cp)得到?的图元索引(66267)。
getGlyphAdvance():
if (glyphCode >= INVISIBLE_GLYPHS) {
    return 0f;
}
INVISIBLE_GLYPHS=65534


这么一判断,自然为0了。


这是因为

目录
相关文章
|
机器学习/深度学习 算法
【动态规划专栏】专题四:子数组问题--------最大子数组和&&环形子数组的最大和
【动态规划专栏】专题四:子数组问题--------最大子数组和&&环形子数组的最大和
174 1
|
C语言 存储
C语言—部分库函数的模拟实现
C语言—部分库函数的模拟实现
139 0
|
机器学习/深度学习 人工智能 自然语言处理
探索AI在文本生成中的应用与挑战
【9月更文挑战第11天】本文将深入探讨人工智能在文本生成领域的应用及其面临的挑战。我们将通过实际案例分析,了解当前技术如何影响内容创作,并讨论未来可能的发展方向。文章旨在为读者提供一个关于AI文本生成技术的全面视角,包括其优势、局限及潜在影响。
|
安全 编译器 Shell
探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第28天】在计算机的世界中,操作系统扮演着至关重要的角色,它如同一个繁忙的交通枢纽,协调着硬件和软件之间的复杂交互。本文将深入探讨操作系统的核心组成部分——内核,以及它是如何与用户空间进行通信的。我们将通过一个简单的命令行工具示例,来揭示这一过程的内在机制,让你对计算机工作原理的理解更上一层楼。准备好了吗?让我们开始这段奇妙的旅程吧!
111 3
|
存储 JavaScript Serverless
函数计算产品使用问题之如何获取请求ID并响应给调用者
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
205 3
|
监控 数据可视化 Java
高效流程引擎:深入探索 Activiti 工作流引擎
在现代的企业环境中,业务流程的自动化和优化变得越来越重要。Activiti,作为一款轻量级、可嵌入的工作流引擎,为企业提供了一种高效的方式来管理和执行各种业务流程。本文将为您详细介绍 Activiti 的核心概念、特性以及在业务流程管理中的应用。
1165 0
|
存储 Prometheus 运维
Prometheus 监控系统|学习笔记(三)
快速学习 Prometheus 监控系统
552 0
Prometheus 监控系统|学习笔记(三)
jira学习案例12-ts知识梳理,总结和提高2
jira学习案例12-ts知识梳理,总结和提高2
176 0
jira学习案例12-ts知识梳理,总结和提高2
|
存储 JSON 分布式计算
【数据库架构】Apache Couchdb 最终一致性
【数据库架构】Apache Couchdb 最终一致性
|
存储
Leetcode-每日一题1210. 穿过迷宫的最少移动次数(BFS)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_46618592/article/details/128890280?spm=1001.2014.3001.5501
352 0
Leetcode-每日一题1210. 穿过迷宫的最少移动次数(BFS)