Pixi.js 中的自定义字体

Posted

技术标签:

【中文标题】Pixi.js 中的自定义字体【英文标题】:Custom font in Pixi.js 【发布时间】:2013-09-30 22:09:03 【问题描述】:

我尝试将自定义字体加载到 Pixi.js(2D WebGL 框架)中。

他们有一个使用 .woff google 字体的例子:

https://github.com/GoodBoyDigital/pixi.js/tree/master/examples/example%2010%20-%20Text

我将我的 .ttf 转换为 .woff 并添加到 css 中:

@font-face

    font-family: "HU_Adrien";
    src: local('HU_Adrien'), url('HU_A0046.woff') format('woff');;


div.font
    font-family: "HU_Adrien";
    color: white;

它显示在我的 div 中,但不在我的 Pixi 阶段。

...
    // create a text object with a nice stroke
    var spinningText = new PIXI.Text("I'm fun!", font: "160px HU_Adrien", fill: "#cc00ff", align: "center", stroke: "#FFFFFF", strokeThickness: 6);
    // setting the anchor point to 0.5 will center align the text... great for spinning!
    spinningText.anchor.x = spinningText.anchor.y = 0.5;
    spinningText.position.x = 620 / 2;
    spinningText.position.y = 400 / 2;
...

【问题讨论】:

会不会是你的行中没有列出来源?喜欢.woff? 在 GoodBoy 示例中,他们正在预加载字体,不确定您是否遇到 css 种族问题。尝试设置font: "160px HU_Adrien, arial" ...,看看你是否至少得到了文字。 【参考方案1】:

您需要将HU_A0046.woff 和this tool 转换为HU_A0046.XML 并将文件名添加到预加载列表中。那你应该打电话给PIXI.Bitmaptext

例子:

...
var loader = new PIXI.AssetLoader(/*more media...*/, ["HU_A0046.xml"]); 
var spinningText = new PIXI.BitmapText("I'm fun!",  font: "35px FontName"); //You can see the font name within the XML
spinningText.position.x = 620 / 2;
spinningText.position.y = 400 / 2;
...

【讨论】:

【参考方案2】:

要在 PIXI 中使用自定义网络字体,您需要使用 google web font api 有了它,您可以使用来自 Google 和其他 cdn 的网络字体以及您自己的本地网络字体 你可以在https://github.com/typekit/webfontloader阅读更多内容

<script>
  WebFontConfig = 
    typekit:  id: 'xxxxxx' ,
    google: 
        families: ['Droid Sans', 'Droid Serif']
    ,
    custom: 
        families: ['My Font', 'My Other Font:n4,i4,n7'],
        urls: ['/fonts.css']
    ,

    active: function() 
      // do something
      init();
    
  ,

  active: function() 
    // do something
    init();
  
  ;

  (function() 
    var wf = document.createElement('script');
    wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
              '://ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js';
    wf.type = 'text/javascript';
    wf.async = 'true';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(wf, s);
  )();
</script>

在本例中,fonts.css 文件可能如下所示:

@font-face 
  font-family: 'My Font';
  src: ...;

@font-face 
  font-family: 'My Other Font';
  font-style: normal;
  font-weight: normal; /* or 400 */
  src: ...;

@font-face 
  font-family: 'My Other Font';
  font-style: italic;
  font-weight: normal; /* or 400 */
  src: ...;

@font-face 
  font-family: 'My Other Font';
  font-style: normal;
  font-weight: bold; /* or 700 */
  src: ...;

*在字体渲染后开始使用字体很重要

*使用以下工具转换字体:http://www.font2web.com/

*它将为您提供所需的网络字体文件以及自定义字体的 css 代码

【讨论】:

【参考方案3】:

安装 .woff 文件(无需转换或位图文本)并添加后,它可以在我的 pixi 4 应用程序中运行

font: "24px Open Sans Regular"

我的 pixi 风格定义。

字体.css

@font-face 
    font-family: 'Open Sans Regular';
    src: url('/font/OpenSans-Regular.woff');
     /* format("woff"); // it never worked with a format */

app.js

var WebFont = require("webfontloader");
let WebFontConfig = 
    custom: 
        families: ['Open Sans:300,400italic,500italic,600italic,700italic,400,500,600,700'],
        urls: ['/css/fonts.css']
      
  ;
  WebFont.load(WebFontConfig);

webpack.config.js

module.exports = 
    entry: 
        main: "./src/app.ts",
        // vendor: [
        //     "webfontloader"
        // ]
    ,
    output: 
        filename: "./bundle.js",
    ,

    // Enable sourcemaps for debugging webpack's output.
    devtool: "source-map",

    resolve: 
        alias: 
            "webfontloader": path.resolve(__dirname, "./node_modules/webfontloader/webfontloader.js")
        ,
        // Add '.ts' as resolvable extensions.
        extensions: [".ts", ".js"]
    , …

确保安装

npm install webfontloader --save
npm i -D @types/webpack-env

【讨论】:

以上是关于Pixi.js 中的自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Playground 中的自定义字体

Interface Builder 中的自定义字体

Next.js + Tailwind 中的自定义字体:没有错误,但字体错误

iPhone中的自定义字体

iOS 7 中的自定义字体

Google Colaboratory matplotlib 图表中的自定义字体