99 if (font_registry.fonts.empty()) {
102 font_registry.fonts = {
103 FontConfig{KARLA_REGULAR, FONT_SIZE_DEFAULT, {}, {}},
104 FontConfig{ROBOTO_MEDIUM, FONT_SIZE_DEFAULT, {}, {}},
105 FontConfig{COUSINE_REGULAR, FONT_SIZE_DEFAULT, {}, {}},
106 FontConfig{IBM_PLEX_JP, FONT_SIZE_DEFAULT, {}, {}},
107 FontConfig{DROID_SANS, FONT_SIZE_DROID_SANS, {}, {}},
112 for (
const auto& font_config : font_registry.fonts) {
117 return absl::OkStatus();
134 const std::string& data,
float size_pixels) {
135 ImGuiIO& imgui_io = ImGui::GetIO();
138 void* font_data = ImGui::MemAlloc(data.size());
140 return absl::InternalError(
"Failed to allocate memory for font data");
142 std::memcpy(font_data, data.data(), data.size());
145 std::strncpy(config.Name, name.c_str(),
sizeof(config.Name) - 1);
146 config.Name[
sizeof(config.Name) - 1] = 0;
148 if (!imgui_io.Fonts->AddFontFromMemoryTTF(font_data,
149 static_cast<int>(data.size()),
150 size_pixels, &config)) {
151 ImGui::MemFree(font_data);
152 return absl::InternalError(
"Failed to load font from memory");
166 return absl::OkStatus();