Javascript 在Three.js中使用不同于默认字体的字体

Javascript 在Three.js中使用不同于默认字体的字体,javascript,fonts,three.js,typeface.js,Javascript,Fonts,Three.js,Typeface.js,因此,我在一个项目中使用three.js,并且希望能够使用默认“helvetiker”以外的字体。我做了一些挖掘,发现你需要使用typeface.js转换字体来获得一个字体文件,并且已经这样做了,我只是不知道如何将这个字体“插入”到3JS中。我已经翻遍了mrdoob three.js示例,但找不到任何东西,我也翻遍了three.js源文件,在three.FontUtils中找到了一个loadFace函数,但我不确定如何使用它。这是我第一个使用Three.js的项目,因此非常感谢您的帮助。谢谢 G

因此,我在一个项目中使用three.js,并且希望能够使用默认“helvetiker”以外的字体。我做了一些挖掘,发现你需要使用typeface.js转换字体来获得一个字体文件,并且已经这样做了,我只是不知道如何将这个字体“插入”到3JS中。我已经翻遍了mrdoob three.js示例,但找不到任何东西,我也翻遍了three.js源文件,在three.FontUtils中找到了一个loadFace函数,但我不确定如何使用它。这是我第一个使用Three.js的项目,因此非常感谢您的帮助。谢谢


Greg

我所要做的就是将字体加载到脚本标记中,然后更改TextGeometry中的字体:

var text3d = new THREE.TextGeometry(n.text, {
  size: 10,
  height: 5,
  curveSegments: 2,
  font: "droid sans"  //change this
});

我认为没有其他必要的步骤。

正如蒂姆所说,唯一棘手的事情是正确使用字体名称。似乎是生成的js中的“family name”(
font\u family\u name
)以小写形式保留空格。如果你觉得方便的话,你甚至可以编辑它(在.js中)——我已经这样做了。

我发现这个问题没有得到确切的回答。threejs所需的确切字体名称应该在typeface(js)文件的末尾找到。它是:

“familyName”:“fontname”

threejs需要引号中的名称,但要小写。例如字体: 古英语文本机器翻译

您应该在(js)字体文件的末尾找到…,“familyName”:“旧英文文本MT”,。。。因此,请填写以下内容:

字体:“旧英文文本mt”

(或者在familyName后面加引号,但用小写。如果在(js)字体文件中编辑familyName后面的文本,例如“familyName”:“猫和狗”,则必须使用它。因此,threejs declare应该如下所示:

var text3d=新的三个.TextGeometry(n.text{ 尺码:15, 身高:10, 曲线段:10, 字体:“猫和狗” }))

最后,确保将(js)字体文件放入网站的标题部分,例如:

最后一件有用的事情是(js)字体文件生成器的链接:

如果我将其切换到mrdoob示例中包含的另一种字体,但我无法使其与我创建.js文件的字体一起使用,则可以找到。您可能有错误的字体名称。打开您创建的*.typeface.js文件并查找“full\u font\u name”属性。这是您创建的字体的名称。替换“droid sans”具有该名称。还要确保引用的字体都是小写。这是我的字体js文件“full\u font\u name”中的full\u font\u name部分:“TradeGothicLTStd Bold”、“font\u family\u name”:“Trade Gothic LT Std Bold”,“这是我创建文本几何体var textGeo=new THREE.TextGeometry(txt,{size:70,height:5,curveSegments:2,font:“TradeGothicLTStd Bold”});我也尝试过使用“TradeGothicLTStd Bold”,但仍然没有成功。感谢您在这方面的帮助。非常感谢。如果新政府垮台,TradeGothicLTStd_Bold(下划线)使用此网站进行转换:如果您在node.js中,请用
require替换loadFace调用字体文件中的('three').typeface_js.loadFace