From 4c4bebcf4f80c8ec467c3affd46b58ed2260c4a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Wed, 4 Aug 2021 23:35:54 +0200 Subject: [PATCH] Canvas: fix using non-default fonts --- Sources/armory/trait/internal/CanvasScript.hx | 19 +++++++++++++------ Sources/armory/ui/Canvas.hx | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Sources/armory/trait/internal/CanvasScript.hx b/Sources/armory/trait/internal/CanvasScript.hx index 21dab963..607f4cfa 100644 --- a/Sources/armory/trait/internal/CanvasScript.hx +++ b/Sources/armory/trait/internal/CanvasScript.hx @@ -40,20 +40,27 @@ class CanvasScript extends Trait { Canvas.themes.push(armory.ui.Themes.light); } - iron.data.Data.getFont(font, function(f: kha.Font) { + iron.data.Data.getFont(font, function(defaultFont: kha.Font) { var c: TCanvas = haxe.Json.parse(blob.toString()); if (c.theme == null) c.theme = Canvas.themes[0].NAME; - cui = new Zui({font: f, theme: Canvas.getTheme(c.theme)}); + cui = new Zui({font: defaultFont, theme: Canvas.getTheme(c.theme)}); if (c.assets == null || c.assets.length == 0) canvas = c; else { // Load canvas assets var loaded = 0; for (asset in c.assets) { var file = asset.name; - iron.data.Data.getImage(file, function(image: kha.Image) { - Canvas.assetMap.set(asset.id, image); - if (++loaded >= c.assets.length) canvas = c; - }); + if (Canvas.isFontAsset(file)) { + iron.data.Data.getFont(file, function(f: kha.Font) { + Canvas.assetMap.set(asset.id, f); + if (++loaded >= c.assets.length) canvas = c; + }); + } else { + iron.data.Data.getImage(file, function(image: kha.Image) { + Canvas.assetMap.set(asset.id, image); + if (++loaded >= c.assets.length) canvas = c; + }); + } } } }); diff --git a/Sources/armory/ui/Canvas.hx b/Sources/armory/ui/Canvas.hx index dc798adc..a676e5f9 100644 --- a/Sources/armory/ui/Canvas.hx +++ b/Sources/armory/ui/Canvas.hx @@ -258,7 +258,7 @@ class Canvas { return Std.int(f * _ui.SCALE()); } - static inline function isFontAsset(assetName: Null): Bool { + public static inline function isFontAsset(assetName: Null): Bool { return assetName != null && StringTools.endsWith(assetName.toLowerCase(), ".ttf"); }