From 3ab50be36adb0604b92e7c2f1510b55e2bd6d279 Mon Sep 17 00:00:00 2001 From: blukai <20866892+blukai@users.noreply.github.com> Date: Thu, 22 May 2025 17:27:15 +0200 Subject: [PATCH] LibGfx: Improve logical separation of font_directories' ifdefs in addition to what was proposed in https://github.com/LadybirdBrowser/ladybird/pull/4830#discussion_r2101301978 --- Libraries/LibGfx/Font/FontDatabase.cpp | 29 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/Libraries/LibGfx/Font/FontDatabase.cpp b/Libraries/LibGfx/Font/FontDatabase.cpp index b8bfc71e8c3..fa302cd1ffd 100644 --- a/Libraries/LibGfx/Font/FontDatabase.cpp +++ b/Libraries/LibGfx/Font/FontDatabase.cpp @@ -64,6 +64,7 @@ ErrorOr> FontDatabase::font_directories() paths.append(TRY(String::from_utf8(StringView { dir_cstring, strlen(dir_cstring) }))); } return paths; + #elif defined(AK_OS_HAIKU) Vector paths_vector; char** paths; @@ -76,34 +77,48 @@ ErrorOr> FontDatabase::font_directories() } } return paths_vector; + #else - auto paths = Vector { { # if defined(AK_OS_SERENITY) + return Vector { { "/res/fonts"_string, + } }; + # elif defined(AK_OS_MACOS) + return Vector { { "/System/Library/Fonts"_string, "/Library/Fonts"_string, TRY(String::formatted("{}/Library/Fonts"sv, Core::StandardPaths::home_directory())), + } }; + # elif defined(AK_OS_ANDROID) + return Vector { { // FIXME: We should be using the ASystemFontIterator NDK API here. // There is no guarantee that this will continue to exist on future versions of Android. "/system/fonts"_string, + } }; + # elif defined(AK_OS_WINDOWS) + return Vector { { TRY(String::formatted(R"({}\Fonts)"sv, getenv("WINDIR"))), TRY(String::formatted(R"({}\Microsoft\Windows\Fonts)"sv, getenv("LOCALAPPDATA"))), -# else - TRY(String::formatted("{}/fonts", Core::StandardPaths::user_data_directory())), - TRY(String::formatted("{}/X11/fonts", Core::StandardPaths::user_data_directory())), -# endif } }; -# if !(defined(AK_OS_SERENITY) || defined(AK_OS_MACOS) || defined(AK_OS_WINDOWS)) + +# else + Vector paths; + + auto user_data_directory = Core::StandardPaths::user_data_directory(); + paths.append(TRY(String::formatted("{}/fonts", user_data_directory))); + paths.append(TRY(String::formatted("{}/X11/fonts", user_data_directory))); + auto data_directories = Core::StandardPaths::system_data_directories(); for (auto& data_directory : data_directories) { paths.append(TRY(String::formatted("{}/fonts", data_directory))); paths.append(TRY(String::formatted("{}/X11/fonts", data_directory))); } -# endif + return paths; +# endif #endif }