diff --git a/README.md b/README.md index ebd5fb8..cfc2840 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,11 @@ Currently the following features are known NOT to work: If you want to try this out early, checkout the [GitHub actions tab](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml). There is absolutely no warranty, use at your own risk and all that... +### Community chat + +Currently we are all on #cardinal IRC room in irc.libera.chat server. +Come join us in your favorite IRC client or through a Matrix bridge. + ## License Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details. diff --git a/doc/LICENSES.md b/doc/LICENSES.md index f839170..e9aa9ef 100644 --- a/doc/LICENSES.md +++ b/doc/LICENSES.md @@ -77,7 +77,7 @@ Below is a list of artwork licenses from plugins | AriaModules/lcd/piano/* | WTFPL | | | AriaModules/signature/* | Custom | Removal required if modifying other files without author's permission | | AS/* | Custom | Derivative works may not use the AS logo or panel graphics including custom component graphics (knobs, switches, screws, caps,etc.) | -| Atelier/* | Custom | Copyright © Emilie Gillet, used and distributed with permission | +| Atelier/* | Custom | copyright © Pyer 2020, used and distributed with permission | | AudibleInstruments/* | Custom | Copyright © Emilie Gillet, used and distributed with permission | | BaconPlugs/* | GPL-3.0-or-later | No artwork specific license provided | | BaconPlugs/midi/* | CC-BY-SA-3.0-DE | | diff --git a/plugins/Atelier b/plugins/Atelier index b7bc059..f2d2a16 160000 --- a/plugins/Atelier +++ b/plugins/Atelier @@ -1 +1 @@ -Subproject commit b7bc0599c72681f834610c65fde773b65cb3169d +Subproject commit f2d2a164d811c1d9700b26908db099f2f4cfe82b diff --git a/src/Rack b/src/Rack index 888fd66..00808b5 160000 --- a/src/Rack +++ b/src/Rack @@ -1 +1 @@ -Subproject commit 888fd661eedff610798db016934949ed7e4c558b +Subproject commit 00808b52bbcd446364414b1b01f3853afc8ed97a diff --git a/src/override/Window.cpp b/src/override/Window.cpp index 265026c..85f8fc1 100644 --- a/src/override/Window.cpp +++ b/src/override/Window.cpp @@ -60,9 +60,16 @@ static const math::Vec minWindowSize = math::Vec(640, 480); void Font::loadFile(const std::string& filename, NVGcontext* vg) { this->vg = vg; - handle = nvgCreateFont(vg, filename.c_str(), filename.c_str()); - if (handle < 0) + std::string name = system::getStem(filename); + size_t size; + // Transfer ownership of font data to font object + uint8_t* data = system::readFile(filename, &size); + // Don't use nvgCreateFont because it doesn't properly handle UTF-8 filenames on Windows. + handle = nvgCreateFontMem(vg, name.c_str(), data, size, 0); + if (handle < 0) { + std::free(data); throw Exception("Failed to load font %s", filename.c_str()); + } INFO("Loaded font %s", filename.c_str()); } @@ -79,7 +86,9 @@ std::shared_ptr Font::load(const std::string& filename) { void Image::loadFile(const std::string& filename, NVGcontext* vg) { this->vg = vg; - handle = nvgCreateImage(vg, filename.c_str(), NVG_IMAGE_REPEATX | NVG_IMAGE_REPEATY); + std::vector data = system::readFile(filename); + // Don't use nvgCreateImage because it doesn't properly handle UTF-8 filenames on Windows. + handle = nvgCreateImageMem(vg, NVG_IMAGE_REPEATX | NVG_IMAGE_REPEATY, data.data(), data.size()); if (handle <= 0) throw Exception("Failed to load image %s", filename.c_str()); INFO("Loaded image %s", filename.c_str());