124 if (font_registry.fonts.empty()) {
127 font_registry.fonts = {
128 FontConfig{KARLA_REGULAR, FONT_SIZE_DEFAULT, {}, {}},
129 FontConfig{ROBOTO_MEDIUM, FONT_SIZE_DEFAULT, {}, {}},
130 FontConfig{COUSINE_REGULAR, FONT_SIZE_DEFAULT, {}, {}},
131 FontConfig{IBM_PLEX_JP, FONT_SIZE_DEFAULT, {}, {}},
132 FontConfig{DROID_SANS, FONT_SIZE_DROID_SANS, {}, {}},
137 for (
const auto& font_config : font_registry.fonts) {
142 return absl::OkStatus();
159 const std::string& data,
float size_pixels) {
160 ImGuiIO& imgui_io = ImGui::GetIO();
163 void* font_data = ImGui::MemAlloc(data.size());
165 return absl::InternalError(
"Failed to allocate memory for font data");
167 std::memcpy(font_data, data.data(), data.size());
170 std::strncpy(config.Name, name.c_str(),
sizeof(config.Name) - 1);
171 config.Name[
sizeof(config.Name) - 1] = 0;
173 if (!imgui_io.Fonts->AddFontFromMemoryTTF(
174 font_data,
static_cast<int>(data.size()), size_pixels, &config)) {
175 ImGui::MemFree(font_data);
176 return absl::InternalError(
"Failed to load font from memory");
190 return absl::OkStatus();