只是想问问。如何从png加载字体?我尝试过使用.woff、.ttf和扩展字体,但它们都给出了相同的错误:错误:字体未找到:未定义。
在这里,我的尝试:
kaboom({
width: 900,
height: 500,
font: "kenney-blocks",
background: [117, 193, 255]
})
// load sprite's images and fonts
loadSprite("frog", "sprites/froggy.png");
loadSprite("arrow", "sprites/arrow.png");
loadSprite("waterlily", "sprites/waterlily.png")
loadFont("kenney-blocks", "fonts/Kenney-Blocks.woff", 6, 3)我尝试了.ttf,上传到字体文件夹相同的文件,但.tff和更改加载字体线到该文件。
在这里我的控制台:
kaboom!
(tip: Cmd + S in editor refresh webview)
ERROR: Font not found: undefined
-> node_modules/kaboom/src/kaboom.ts:2098:8
-> node_modules/kaboom/src/kaboom.ts:4097:16
-> node_modules/kaboom/src/kaboom.ts:4130:3
-> node_modules/kaboom/src/kaboom.ts:2951:34
signal: interrupt发布于 2022-06-27 12:10:37
因此,正如loadFont中所指出的(重点是我的):
将位图字体加载到资产管理器.
因此,您将无法使用该方法加载例如.woff,因为它只能加载位图字体,例如.png。
话虽如此,虽然在文档中似乎没有更多关于这一点的内容,但是有一个几个月前的公关被合并到kaboom中。它似乎允许引擎使用浏览器的HTML5画布API将字体字形呈现到屏幕外画布上,然后将它们拼接在一起,从正常的浏览器字体中动态创建PNG字体。
我快速浏览了源代码,它似乎是一条很有前途的道路:https://github.com/replit/kaboom/blob/master/src/kaboom.ts#L2419
那么,如何使用非位图字体呢?
据我所知,您只需将字体样式设置为
loadFont加载的位图字体的名称;或因此,如果我们想使用任何系统字体,我们可以使用例如font: "sans-serif"、font: "arial"等等,如果您想使用自定义字体,可以使用CSS将它加载到页面上,然后将font:设置为您在@font-face规则中指定的名称。
这个答案涵盖了为HTML5画布加载CSS字体,但我也将在这里展示一个简短的示例:
在CSS文件中,让我们称它为fonts.css。
@font-face {
font-family: 'kenney-blocks';
src: url('fonts/Kenney-Blocks.woff');
}在您的主HTML文件中,在<head>部分:
<link rel="stylesheet" href="fonts.css" />在您的Kaboom设置中:
kaboom({
font: "kenney-blocks",
// ...或者,你可以更新卡布姆
进一步研究发现,虽然他们还没有更新他们的文档,但是最新版本的Kaboom实际上有两个loadFont方法,旧版本从docs重命名为loadBitmapFont。
如果您更新到库的最新版本,您将能够使用以下内容(注意,您不需要传递位图大小参数,因为它不再试图加载位图字体)
loadFont("kenny-blocks", "Kenney-Blocks.woff");(见https://github.com/replit/kaboom/blob/master/src/kaboom.ts#L987)
然而,由于他们已经明确地重新命名了一些东西,这可能是一个突破性的改变,如果你已经写了相当多的游戏,这可能是值得记住的。
https://stackoverflow.com/questions/72771509
复制相似问题