It apparently broke clean builds, as the dependencies aren't in the project asset list or something anymore. I tried to fix this, but it seems impossible to do without relying on .NET SDK internals, as there's no point in the NuGet graph walk process that seems cleanly extensible.
Instead let's just do the much dumber thing: a bunch of .props files for content to import. Hooray!
This also means that I have to go through and *explicitly* disable transitive dependencies everywhere in RT. This thankfully isn't too hard.
Bans content from directly referencing Robust projects, instead it must go through new MSBuild items <UseRobustApi>. This way we can move types between RT projects without fear of causing breaking changes.
This is a gigantic kerfuffle because Chromium expects a very specific directory & app bundle layout. Have to change a bunch of resource loading code to account for content development being launched from an app bundle, and also had to make automatic MSBuild tooling & a python script to generate such an app bundle
* System font API
This is a new API that allows operating system fonts to be loaded by the engine and used by content.
Fonts are provided in a flat list exposing all the relevant metadata. They are loaded from disk with a Load call.
Initial implementation is only for Windows DirectWrite.
* Load system fonts as memory mapped files if possible.
This allows sharing the font file memory with other processes which is always good.
* Use ArrayPool to reduce char array allocations
* Disable verbose logging
* Implement system font support on Linux via Fontconfig
* Implement macOS support
* Add "FREEDESKTOP" define constant
This is basically LINUX || FREEBSD. Though FreeBSD currently gets detected as LINUX too. Oh well.
* Compile out Fontconfig and CoreText system font backends when not on those platforms
* Don't add Fontconfig package dep on Mac/Windows
* Allow disabling system font support via CVar
Cuz why not.