diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f4f2f0b5..ae06ebb0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,9 @@ FetchContent_Declare(OpenXR-SDK FetchContent_Declare(SPIRV-Cross GIT_REPOSITORY https://github.com/BabylonJS/SPIRV-Cross.git GIT_TAG 578a291759db6fe7c3f4735d3512c0526ad18efc) +FetchContent_Declare(FreeType + GIT_REPOSITORY https://github.com/freetype/freetype.git + GIT_TAG 2d1abd3bbb4d2396ed63b3e5accd66724cf62307) # -------------------------------------------------- FetchContent_MakeAvailable(CMakeExtensions) diff --git a/Polyfills/Canvas/CMakeLists.txt b/Polyfills/Canvas/CMakeLists.txt index 8171ac010..2e6abf820 100644 --- a/Polyfills/Canvas/CMakeLists.txt +++ b/Polyfills/Canvas/CMakeLists.txt @@ -123,6 +123,8 @@ set(SOURCES file(GLOB SHADERS "Source/Shaders/*.sc" "Source/Shaders/*.sh") +option(BABYLON_NATIVE_CANVAS_FREETYPE "Use Freetype2 instead of stb_ttf" OFF) + add_library(Canvas ${SOURCES} ${SHADERS}) target_include_directories(Canvas @@ -130,6 +132,12 @@ target_include_directories(Canvas PRIVATE "Source" PRIVATE "${BGFX_DIR}/3rdparty") +if(BABYLON_NATIVE_CANVAS_FREETYPE) + target_compile_definitions(Canvas PRIVATE FONS_USE_FREETYPE) + set(EXTERNAL_FONT_LIBRARY freetype) + FetchContent_MakeAvailable_With_Message(FreeType) +endif() + target_link_libraries(Canvas PUBLIC napi PRIVATE bgfx @@ -138,7 +146,8 @@ target_link_libraries(Canvas PRIVATE JsRuntimeInternal PRIVATE GraphicsDeviceContext PRIVATE UrlLib - PRIVATE base-n) + PRIVATE base-n + PRIVATE ${EXTERNAL_FONT_LIBRARY}) if(BGFX_BUILD_TOOLS AND BGFX_BUILD_TOOLS_SHADER) if(NOT IOS AND NOT VISIONOS AND NOT ANDROID) diff --git a/Polyfills/Canvas/Source/Context.cpp b/Polyfills/Canvas/Source/Context.cpp index d59939022..a2088dc23 100644 --- a/Polyfills/Canvas/Source/Context.cpp +++ b/Polyfills/Canvas/Source/Context.cpp @@ -16,9 +16,11 @@ #pragma GCC diagnostic pop #endif +#ifndef FONS_USE_FREETYPE #define STB_TRUETYPE_IMPLEMENTATION #include "stb/stb_truetype.h" #undef STB_TRUETYPE_IMPLEMENTATION +#endif #include "Canvas.h" #include "Context.h"