6#include "roo_backport.h"
7#include "roo_backport/string_view.h"
11#include "roo_logging.h"
18[[deprecated(
"Use `FontLayout::kHorizontal` instead.")]]
20[[
deprecated(
"Use `FontLayout::kVertical` instead.")]]
32 bbox_(xMin, yMin, xMax, yMax),
62 int minRsb()
const {
return -max_right_overhang_; }
90 [[
deprecated(
"Use `FontProperties::Charset::kAscii` instead.")]]
92 [[
deprecated(
"Use `FontProperties::Charset::kUnicodeBmp` instead.")]]
95 [[
deprecated(
"Use `FontProperties::Spacing::kProportional` instead.")]]
97 [[
deprecated(
"Use `FontProperties::Spacing::kMonospace` instead.")]]
100 [[
deprecated(
"Use `FontProperties::Smoothing::kNone` instead.")]]
102 [[
deprecated(
"Use `FontProperties::Smoothing::kGrayscale` instead.")]]
105 [[
deprecated(
"Use `FontProperties::Kerning::kNone` instead.")]]
107 [[
deprecated(
"Use `FontProperties::Kerning::kPairs` instead.")]]
Axis-aligned integer rectangle.
int16_t width() const
Width in pixels (inclusive coordinates).
int16_t xMin() const
Minimum x (inclusive).
int16_t xMax() const
Maximum x (inclusive).
int16_t height() const
Height in pixels (inclusive coordinates).
int16_t yMax() const
Maximum y (inclusive).
int16_t yMin() const
Minimum y (inclusive).
ARGB8888 color stored as a 32-bit unsigned integer.
Basic font metrics (ascent, descent, bounding box, and line spacing).
int16_t linespace() const
Line advance in pixels.
FontMetrics(int ascent, int descent, int linegap, int16_t xMin, int16_t yMin, int16_t xMax, int16_t yMax, int max_right_overhang)
Construct font metrics.
FontMetrics & operator=(FontMetrics &&)=default
int16_t linegap() const
Additional gap between lines.
int16_t glyphXMax() const
int16_t descent() const
Font descent (usually negative).
int minRsb() const
Minimum right side bearing across glyphs.
int16_t glyphYMin() const
int16_t glyphXMin() const
Return maximum glyph extents in FreeType coordinates (Y up).
int minLsb() const
Minimum left side bearing across glyphs.
int maxWidth() const
Maximum glyph width.
FontMetrics(FontMetrics &&)=default
int16_t glyphYMax() const
int maxHeight() const
Maximum glyph height.
int16_t ascent() const
Font ascent (positive).
Metadata describing a font's encoding and spacing behavior.
static constexpr Spacing SPACING_PROPORTIONAL
FontProperties(FontProperties &&)=default
FontProperties & operator=(FontProperties &&)=default
Smoothing
Smoothing/anti-aliasing mode.
Spacing
Spacing behavior for glyph advances.
Charset charset() const
Character set supported.
Charset
Character set supported by the font.
static constexpr Kerning KERNING_PAIRS
static constexpr Kerning KERNING_NONE
Spacing spacing() const
Spacing behavior.
Smoothing smoothing() const
Smoothing/anti-aliasing mode.
static constexpr Smoothing SMOOTHING_NONE
static constexpr Charset CHARSET_ASCII
static constexpr Smoothing SMOOTHING_GRAYSCALE
Kerning
Kerning information availability.
FontProperties(Charset charset, Spacing spacing, Smoothing smoothing, Kerning kerning)
Construct font properties.
Kerning kerning() const
Kerning mode.
static constexpr Spacing SPACING_MONOSPACE
static constexpr Charset CHARSET_UNICODE_BMP
void drawHorizontalString(const Surface &s, roo::string_view text, Color color) const
Draw a UTF-8 string horizontally using a string view.
void init(FontMetrics metrics, FontProperties properties)
virtual void drawHorizontalString(const Surface &s, const char *utf8_data, uint32_t size, Color color) const =0
Draw a UTF-8 string horizontally.
const FontProperties & properties() const
Return font properties.
virtual int16_t getKerning(char32_t left, char32_t right) const
Return kerning adjustment for a pair of code points.
virtual bool getGlyphMetrics(char32_t code, FontLayout layout, GlyphMetrics *result) const =0
Retrieve glyph metrics for a code point and layout.
virtual uint32_t getHorizontalStringGlyphMetrics(const char *utf8_data, uint32_t size, GlyphMetrics *result, uint32_t offset, uint32_t max_count) const =0
Return metrics for consecutive glyphs in the UTF-8 string.
virtual void drawGlyph(const Surface &s, char32_t code, FontLayout layout, Color color) const
Draw a single glyph.
virtual GlyphMetrics getHorizontalStringMetrics(const char *utf8_data, uint32_t size) const =0
Return metrics of the specified UTF-8 string as if it were a single glyph.
const FontMetrics & metrics() const
Return font metrics.
uint32_t getHorizontalStringGlyphMetrics(roo::string_view text, GlyphMetrics *result, uint32_t offset, uint32_t max_count) const
Return metrics for consecutive glyphs in the UTF-8 string.
GlyphMetrics getHorizontalStringMetrics(roo::string_view text) const
Return metrics of the specified UTF-8 string as if it were a single glyph.
Per-glyph metrics (bounding box and advance).
int glyphXMin() const
Bounding box in FreeType coordinates (Y up).
int bearingY() const
Top side bearing.
int bearingX() const
Left side bearing.
GlyphMetrics & operator=(GlyphMetrics &&)=default
int lsb() const
Left side bearing (alias).
int advance() const
Advance in pixels.
const Box & screen_extents() const
Bounding box in screen coordinates (Y down).
GlyphMetrics & operator=(const GlyphMetrics &)=default
int width() const
Glyph width.
GlyphMetrics(GlyphMetrics &&)=default
int rsb() const
Right side bearing.
GlyphMetrics(int16_t glyphXMin, int16_t glyphYMin, int16_t glyphXMax, int16_t glyphYMax, int advance)
Construct metrics from FreeType coordinates (Y up).
int height() const
Glyph height.
GlyphMetrics(const GlyphMetrics &)=default
Low-level handle used to draw to an underlying device.
Defines 140 opaque HTML named colors.
constexpr FontLayout FONT_LAYOUT_VERTICAL
FontLayout
Glyph layout direction.
roo_logging::Stream & operator<<(roo_logging::Stream &os, BlendingMode mode)
constexpr FontLayout FONT_LAYOUT_HORIZONTAL