From 5136c5ae1aed77ccddab128e9ffd88335a9bfcc4 Mon Sep 17 00:00:00 2001 From: Simon Wanner Date: Sat, 9 Apr 2022 10:14:58 +0200 Subject: LibGfx: Move ScaledFont and new base class VectorFont out of TTF --- Userland/Libraries/LibGfx/Font/VectorFont.h | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Userland/Libraries/LibGfx/Font/VectorFont.h (limited to 'Userland/Libraries/LibGfx/Font/VectorFont.h') diff --git a/Userland/Libraries/LibGfx/Font/VectorFont.h b/Userland/Libraries/LibGfx/Font/VectorFont.h new file mode 100644 index 0000000000..4932818f4d --- /dev/null +++ b/Userland/Libraries/LibGfx/Font/VectorFont.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022, the SerenityOS developers. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +namespace Gfx { + +struct ScaledFontMetrics { + float ascender { 0 }; + float descender { 0 }; + float line_gap { 0 }; + + int height() const + { + return ascender - descender; + } +}; + +struct ScaledGlyphMetrics { + int ascender; + int descender; + int advance_width; + int left_side_bearing; +}; + +class VectorFont : public RefCounted { +public: + virtual ~VectorFont() { } + virtual ScaledFontMetrics metrics(float x_scale, float y_scale) const = 0; + virtual ScaledGlyphMetrics glyph_metrics(u32 glyph_id, float x_scale, float y_scale) const = 0; + virtual float glyphs_horizontal_kerning(u32 left_glyph_id, u32 right_glyph_id, float x_scale) const = 0; + virtual RefPtr rasterize_glyph(u32 glyph_id, float x_scale, float y_scale) const = 0; + virtual u32 glyph_count() const = 0; + virtual u16 units_per_em() const = 0; + virtual u32 glyph_id_for_code_point(u32 code_point) const = 0; + virtual String family() const = 0; + virtual String variant() const = 0; + virtual u16 weight() const = 0; + virtual u8 slope() const = 0; + virtual bool is_fixed_width() const = 0; +}; + +} -- cgit v1.2.3