mirror of
https://github.com/RGBCube/serenity
synced 2025-05-25 22:35:07 +00:00
LibHTML: Add a simple font cache
The FontCache caches the result of font lookups. The cache key is a simple object called FontSelector which consists of the font family and font weight (both strings.) This drastically reduces time spent in font lookup.
This commit is contained in:
parent
76e2c08fbf
commit
60be51f908
4 changed files with 63 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
|||
#include <LibCore/CDirIterator.h>
|
||||
#include <LibHTML/CSS/StyleProperties.h>
|
||||
#include <LibHTML/FontCache.h>
|
||||
#include <ctype.h>
|
||||
|
||||
void StyleProperties::set_property(CSS::PropertyID id, NonnullRefPtr<StyleValue> value)
|
||||
|
@ -44,6 +45,11 @@ void StyleProperties::load_font() const
|
|||
auto font_family = string_or_fallback(CSS::PropertyID::FontFamily, "Katica");
|
||||
auto font_weight = string_or_fallback(CSS::PropertyID::FontWeight, "normal");
|
||||
|
||||
if (auto cached_font = FontCache::the().get({ font_family, font_weight })) {
|
||||
m_font = cached_font;
|
||||
return;
|
||||
}
|
||||
|
||||
String weight;
|
||||
if (font_weight == "lighter")
|
||||
weight = "Thin";
|
||||
|
@ -92,6 +98,7 @@ void StyleProperties::load_font() const
|
|||
#endif
|
||||
|
||||
m_font = Font::load_from_file(String::format("/res/fonts/%s", file_name.characters()));
|
||||
FontCache::the().set({ font_family, font_weight }, *m_font);
|
||||
}
|
||||
|
||||
int StyleProperties::line_height() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue