无法在Three.js的字体中显示特殊的德语字符

时间:2019-05-24 15:12:15

标签: fonts three.js utf-16

我下载了Roboto.ttf字体,并使用typeface.js将该字体转换为.json并使用Three.js加载

                        var loader = new THREE.FontLoader();
                    loader.load( 'fonts/Roboto Mono_Regular.json', function ( font ) {
                        var geometry = new THREE.TextGeometry( 'äüö', {
                            font: font,
                            size: 80,
                            height: 2,
                            curveSegments: 12,
                            bevelEnabled: true,
                            bevelThickness: 10,
                            bevelSize: 2,
                            bevelSegments: 5
                        });
                      var material = new THREE.MeshPhongMaterial({ambient: 0x000000, color: 0x000000});
                      label = new THREE.Mesh( geometry, material );
                      label.name = "label"
                      label.scale.set(0.01,0.01,0.01);
                      label.rotation.y = 1.57;
                      label.position.set(0.85,-0.32,1);
                      scene.add(label);
                    });

但是它仅显示:??? -Roboto字体包含这些字符,并且转换后的.json在字形中具有这些字符。所有文件具有相同的编码。我怎样才能解决这个问题?与波兰字符相同;我想我需要utf-16。

已转换字体,仍然存在一些问题。写作时:“öÖääüüÜ” enter image description here

已解决:

问题是我勾选了“反向字体方向”选项。 使用此功能可解决facetype.js上“ d”,“ o”和“ 8”之类的字符中带有孔的问题-无需进行检查即可!

1 个答案:

答案 0 :(得分:1)

这里的问题是您的.json文件未包含所用特殊字符的正确字形。 Three.js建议使用Facetype.js将字体转换为.json格式。

我只是用它来转换Roboto Mono,效果很好。正如您在下面看到的。

enter image description here