27#ifndef OUTLINE_FONT_H_
28#define OUTLINE_FONT_H_
35#include <freetype2/ft2build.h>
108 double GetInterline(
double aGlyphHeight = 0.0,
double aLineSpacing = 1.0 )
const override;
111 const wxString& aText,
const VECTOR2I& aSize,
115 void GetLinesAsGlyphs( std::vector<std::unique_ptr<GLYPH>>* aGlyphs,
const wxString& aText,
121 void RenderToOpenGLCanvas( KIGFX::OPENGL_FREETYPE& aTarget,
const wxString& aString,
122 const VECTOR2D& aSize,
const wxPoint& aPosition,
123 const EDA_ANGLE& aAngle,
bool aMirror )
const;
127 FT_Error
loadFace(
const wxString& aFontFileName,
int aFaceIndex );
132 const wxString& aText,
const VECTOR2I& aSize,
138 std::vector<std::unique_ptr<GLYPH>>* aGlyphs,
139 const wxString& aText,
const VECTOR2I& aSize,
141 bool aMirror,
const VECTOR2I& aOrigin,
FONT is an abstract base class for both outline and stroke fonts.
Class OUTLINE_FONT implements outline font drawing.
VECTOR2I getTextAsGlyphsUnlocked(BOX2I *aBoundingBox, std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aSize, const VECTOR2I &aPosition, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, TEXT_STYLE_FLAGS aTextStyle) const
static std::mutex m_freeTypeMutex
Mutex for freetype access, FT_Library and FT_Face are not thread safe.
static FT_Library m_freeType
BOX2I getBoundingBox(const std::vector< std::unique_ptr< GLYPH > > &aGlyphs) const
FT_Error loadFace(const wxString &aFontFileName, int aFaceIndex)
static constexpr double m_superscriptVerticalOffset
static wxString FreeTypeVersion()
VECTOR2I getTextAsGlyphs(BOX2I *aBoundingBox, std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aSize, const VECTOR2I &aPosition, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, TEXT_STYLE_FLAGS aTextStyle) const
std::map< unsigned int, GLYPH_POINTS_LIST > m_contourCache
VECTOR2I GetTextAsGlyphs(BOX2I *aBoundingBox, std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aSize, const VECTOR2I &aPosition, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, TEXT_STYLE_FLAGS aTextStyle) const override
Convert text string to an array of GLYPHs.
const FT_Face & GetFace() const
double GetInterline(double aGlyphHeight=0.0, double aLineSpacing=1.0) const override
Compute the distance (interline) between 2 lines of text (for multiline texts).
int subscriptSize(int aSize) const
static wxString FontConfigVersion()
bool IsItalic() const override
static constexpr int m_charSizeScaler
int faceSize(int aSize) const
void GetLinesAsGlyphs(std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aPosition, const TEXT_ATTRIBUTES &aAttrs) const
bool IsOutline() const override
double ComputeUnderlineVerticalPosition(double aGlyphHeight) const override
Compute the vertical position of an underline.
static constexpr double m_subscriptSuperscriptSize
static constexpr double m_outlineFontSizeCompensation
static constexpr double m_underlineOffsetScaler
double ComputeOverbarVerticalPosition(double aGlyphHeight) const override
Compute the vertical position of an overbar.
int subscriptSize() const
static wxString FontLibraryVersion()
bool IsBold() const override
static wxString HarfBuzzVersion()
static OUTLINE_FONT * LoadFont(const wxString &aFontFileName, bool aBold, bool aItalic)
Load an outline font.
static constexpr double m_subscriptVerticalOffset
unsigned int TEXT_STYLE_FLAGS
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".