diff --git a/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp b/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp index 7c9f6599e2..184590851d 100644 --- a/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp +++ b/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp @@ -506,7 +506,8 @@ ErrorOr CBDT::from_slice(ReadonlyBytes slice) { if (slice.size() < sizeof(CbdtHeader)) return Error::from_string_literal("CBDT table too small"); - return CBDT { slice }; + auto const& header = *bit_cast(slice.data()); + return CBDT { slice, header }; } ErrorOr GPOS::from_slice(ReadonlyBytes slice) diff --git a/Userland/Libraries/LibGfx/Font/OpenType/Tables.h b/Userland/Libraries/LibGfx/Font/OpenType/Tables.h index f7a83a339f..0f5f619f66 100644 --- a/Userland/Libraries/LibGfx/Font/OpenType/Tables.h +++ b/Userland/Libraries/LibGfx/Font/OpenType/Tables.h @@ -586,15 +586,17 @@ public: static ErrorOr from_slice(ReadonlyBytes); ReadonlyBytes bytes() const { return m_slice; } - CbdtHeader const& header() const { return *bit_cast(m_slice.data()); } + CbdtHeader const& header() const { return m_header; } private: - explicit CBDT(ReadonlyBytes slice) + explicit CBDT(ReadonlyBytes slice, CbdtHeader const& header) : m_slice(slice) + , m_header(header) { } ReadonlyBytes m_slice; + CbdtHeader const& m_header; }; // https://learn.microsoft.com/en-us/typography/opentype/spec/chapter2#feature-list-table