使用Three.js TextGeometry时文本空格变为问号的解决方法咨询
解决Three.js TextGeometry空格显示为问号的问题
空格显示为问号的核心原因是你加载的字体文件(FontJSON)未包含空格字符的字形定义,Three.js会用问号替代所有字体中不存在的字符。以下是具体解决方法:
确保使用的字体包含空格字符
如果你是自行转换字体为JSON格式(比如用FontPrep、Facetype.js等工具),转换时需确认工具未过滤空格字符,选择导出完整的ASCII字符集;也可以直接使用Three.js官方示例目录examples/fonts下的字体文件,这些字体都包含完整基础字符集,包括空格。替换字体加载方式示例
改用异步加载官方字体文件的方式(替代直接解析自定义FontJSON):const loader = new THREE.FontLoader(); // 加载官方字体文件,路径根据你的项目结构调整 loader.load('fonts/helvetiker_regular.typeface.json', function (font) { const textGeometry = new THREE.TextGeometry("abc de f", { font: font, size: 50, height: 10, curveSegments: 12, bevelEnabled: true, bevelThickness: 3, bevelSize: 1, bevelOffset: 0, bevelSegments: 12, }); const textMaterial = new THREE.MeshNormalMaterial(); textMesh = new THREE.Mesh(textGeometry, textMaterial); textMesh.position.set(0, 0, -240); textMesh.geometry.center(); scene.add(textMesh); // 需将网格添加到场景中 });检查自定义FontJSON的字符集
若坚持使用自定义FontJSON,可打开该JSON文件,查看glyphs对象中是否存在" "(空格)对应的条目。如果没有,需重新转换字体,确保包含空格字符的字形数据。
内容的提问来源于stack exchange,提问作者LSS
相关产品推荐
相关产品推荐

