roaku 836 Posted January 28, 2021 Posted January 28, 2021 I'm curious if it's possible to load this file from the context of a Plugin: '[emby-server-path]/system/dashboard-ui/modules/fonts/material-icons/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmJ_1.woff' I'm currently providing it to my plugin by copying it to my project directory and doing the whole assembly thing to bundle it into the dll. But it would be cooler and cleaner if I could do something similar to 'Assembly.GetExecutingAssembly().GetManifestResourceStream([FILEPATH])', but for a file from Emby proper.
roaku 836 Posted January 28, 2021 Author Posted January 28, 2021 (edited) So, on the backend of my plugin, I'm loading the font file into SkiaSharp manually, since the system fonts aren't always available to SkiaSharp across all Emby builds (Synology for sure, but possibly others) and this approach has provided consistent icon rendering across platforms. On the frontend, I'm loading the modules font over http using its relative web path into openjs and parsing out the glyph names and codepoints to dynamically provide an icon selector: I've tried the inverse approach, which is to have openjs parse my plugin's version of the font over http, but something gets mangled (wrong content-type header?) when I get Emby to provide the font as a plugin resource (e.g. "/web/configurationpage?name=IconsFont&v=4.5.4.0"), and openjs can't parse it. So, I'd *like* to be able to have the front end and back end load the same Emby provided file and have my plugin get out of the font *providing* business. Alternatively, I'd be like to at least have my front end and back end loading the identical file, instead of each loading a different copy. Edited January 28, 2021 by roaku
Luke 40063 Posted January 28, 2021 Posted January 28, 2021 Ok, there's no cross-platform way right now as the web assets are handled differently on some platforms. You may just want to embed a copy of it into the plugin.
roaku 836 Posted January 29, 2021 Author Posted January 29, 2021 The catch with that approach is that openjs can't parse the font when it comes through as a 'ConfigurationPage' from my plugin. If I could figure out how to tell Plugin.cs to provide the font in the same way as the server provides: "localhost:8096/web/modules/fonts/material-icons/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmJ_1.woff?v=4.5.4.0" (attachment, content-type 'font/woff', etc.) I'd be in business. From what I'm seeing, 'configurationpage=' can figure out that a javascript file is 'application/x-javascript' but not that a given font file is 'font/woff'. Is there any way to get the Emby server to provide my plugin's font as a font over http? Before I figured out the font parsing, I just had the glyph names and codepoint manually mapped to a js object, so worst case, I could go back to that.
roaku 836 Posted January 29, 2021 Author Posted January 29, 2021 1 hour ago, Luke said: Ok, there's no cross-platform way right now as the web assets are handled differently on some platforms. Sorry to keep pestering you, but could I get come clarification on this quote? Is this url available across all Emby platforms for 4.5.4.0? Quote [host]:8096/web/modules/fonts/material-icons/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmJ_1.woff?v=4.5.4.0
Luke 40063 Posted January 29, 2021 Posted January 29, 2021 Yea if you want to get it via an http request that will be fine.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now