【问题标题】:using css fontface versus typeface js in threejs app 2d text在三个 js app 2d 文本中使用 css 字体与字体 js
【发布时间】:2015-02-28 20:25:56
【问题描述】:

我最近在和threejs 一起工作时很开心。要在 threejs 应用程序中创建 2d 文本,我必须创建一个画布,用文本填充画布并将画布添加为纹理。就像在这个例子中所做的那样。 http://stemkoski.github.io/Three.js/Texture-From-Canvas.html

对于我使用自定义字体的文本,我有两个选项可以将字体嵌入到应用程序中。使用 css3 @font-face 或在此站点中转换后将字体包含为字体 javascript。 http://typeface.neocracy.org/

我想知道除了我在此处列出的缺点之外,一个与另一个相比还有哪些其他缺点。

使用@font-face

使用typeface

  • 当字体转换为字体文件时,它们的大小会增长两倍以上。

提前致谢。

【问题讨论】:

    标签: three.js font-face


    【解决方案1】:

    如果您使用字体在画布中绘制,就像您说的那样,并且可能在页面的其余部分使用相同的字体,我会使用@font-face,因为它确实是标准方式并且不需要 JavaScript字体的编码。

    但如果您还希望能够使用 TextGeometry 将 3D 文本写入场景,那么您必须使用 typeface.js

    [此处示例:http://blog.andrewray.me/creating-a-3d-font-in-three-js/]

    所以,在我看来,这真的取决于你对该字体的其他用途..

    • 只有“平面”,作为纹理图像,在 Three.js + 可能在 HTML/App 的其余部分的其他地方

      使用@font-face

    • Three.js 场景中的平面纹理图像 + TextGeometry 3D 文本

      使用 typeface.js

    【讨论】:

      【解决方案2】:

      为了在 Three.JS 中使用任意字体,首先您必须将字体转换为可用的形式,例如通过将 .ttf 文件处理为 http://typeface.neocracy.org/ 的字体 javascript 文件。

      其次,检查生成的文件(首先通过将其复制粘贴到 http://www.jspretty.com/ 之类的地方来美化它可能更容易)并且您正在寻找文件末尾的 3 个参数:“familyName”(这将成为“font”参数,“cssFontStyle”(将成为“style”参数,以及“cssFontWeight”(将成为“weight”参数)。

      然后你在你的页面中包含生成的Javascript文件,调用的时候会被THREE.js自动拾取

      new TextGeometry('我的文字在这里', { 字体:familyName_from_file, 样式:cssFontStyle_from_file, 重量:cssFontWeight_from_file } );

      然后可以将其封装在 Mesh 对象中并在场景中渲染。

      【讨论】:

      • 您好,克雷格·摩尔,感谢您的回复。我很感激。但如果你仔细注意到,我的问题是关于在threejs应用程序中使用font-face和typeface js文件的比较。
      • 对不起 besabestin,我一定完全误读了你的问题。字体的字体版本作为 JS 文件被转换为 THREE.js 可以使用的形式,据我所知,它与 CSS 无关,您仍然需要将其包含在 CSS 中使用。
      • 不,我已经做了两种方式......你可以包含字体js文件或通过@font-face css3属性包含。在 css 情况下,您唯一需要确保的是在页面加载之前加载字体。因此,您可以包含 javascript 字体或 css 字体。我的问题是哪个更好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多