From 27d200803702433adf7c74b9cdf554c8480f08ba Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Wed, 30 Nov 2022 09:04:58 +0800 Subject: [PATCH] ENH: use wxFont::AddPrivateFont to load fonts for linux Change-Id: Iefe1753a08fd188a274b4d555c5fcda8fca6d719 --- deps/wxWidgets/wxWidgets.cmake | 4 ++++ src/CMakeLists.txt | 2 +- src/slic3r/GUI/Widgets/Label.cpp | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index bdc6b6dfc2..2bdffba590 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -7,6 +7,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(_gtk_ver 3) endif () set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}") + set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") +else () + set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=0") endif() if (MSVC) @@ -30,6 +33,7 @@ bambustudio_add_cmake_project(wxWidgets -DwxUSE_MEDIACTRL=ON -DwxUSE_DETECT_SM=OFF -DwxUSE_UNICODE=ON + ${_wx_private_font} -DwxUSE_OPENGL=ON -DwxUSE_WEBVIEW=ON ${_wx_edge} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 31cc711c3f..b4d1e72caf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -134,7 +134,7 @@ elseif (MSVC) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") else () # Boost on Raspberry-Pi does not link to pthreads explicitely. - target_link_libraries(BambuStudio ${CMAKE_DL_LIBS} -lstdc++ Threads::Threads) + target_link_libraries(BambuStudio ${CMAKE_DL_LIBS} -lstdc++ Threads::Threads pangoft2-1.0) endif () # Add the Slic3r GUI library, libcurl, OpenGL and GLU libraries. diff --git a/src/slic3r/GUI/Widgets/Label.cpp b/src/slic3r/GUI/Widgets/Label.cpp index ca508d0902..90531aa22a 100644 --- a/src/slic3r/GUI/Widgets/Label.cpp +++ b/src/slic3r/GUI/Widgets/Label.cpp @@ -1,3 +1,4 @@ +#include "libslic3r/Utils.hpp" #include "Label.hpp" #include "StaticBox.hpp" @@ -41,6 +42,18 @@ wxFont Label::Body_9; void Label::initSysFont() { +#ifdef __linux__ + const std::string& resource_path = Slic3r::resources_dir(); + wxString font_path = wxString::FromUTF8(resource_path+"/fonts/HarmonyOS_Sans_SC_Bold.ttf"); + bool result = wxFont::AddPrivateFont(font_path); + //BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Bold returns %1%")%result; + printf("add font of HarmonyOS_Sans_SC_Bold returns %d\n", result); + font_path = wxString::FromUTF8(resource_path+"/fonts/HarmonyOS_Sans_SC_Regular.ttf"); + result = wxFont::AddPrivateFont(font_path); + //BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Regular returns %1%")%result; + printf("add font of HarmonyOS_Sans_SC_Regular returns %d\n", result); +#endif + Head_24 = Label::sysFont(24, true); Head_20 = Label::sysFont(20, true); Head_18 = Label::sysFont(18, true); @@ -215,7 +228,7 @@ Label::Label(wxWindow *parent, wxFont const &font, wxString const &text, long st SetBackgroundColour(StaticBox::GetParentBackgroundColor(parent)); if (style & LB_PROPAGATE_MOUSE_EVENT) { for (auto evt : { - wxEVT_LEFT_UP, wxEVT_LEFT_DOWN}) + wxEVT_LEFT_UP, wxEVT_LEFT_DOWN}) Bind(evt, [this] (auto & e) { GetParent()->GetEventHandler()->ProcessEventLocally(e); }); }; }