3#ifndef QFONTENGINE_FT_P_H
4#define QFONTENGINE_FT_P_H
16#include "private/qfontengine_p.h"
22#include FT_MULTIPLE_MASTERS_H
35class QFontEngineFTRawFont;
45 void computeSize(
const QFontDef &fontDef,
int *xsize,
int *ysize,
bool *outline_drawing,
QFixed *scalableBitmapScaleFactor);
53 static int getFaceIndexByStyleName(
const QString &faceFileName,
const QString &styleName);
73 enum { cmapCacheSize = 0x200 };
80 bool isScalable()
const;
81 bool isScalableBitmap()
const;
118 return glyph ==
other.glyph && subPixelPosition ==
other.subPixelPosition;
135 return (
index < 256 && subPixelPosition.
x == 0 && subPixelPosition.
y == 0);
145 mutable QHash<GlyphAndSubPixelPosition, Glyph *> glyph_data;
146 mutable QSet<glyph_t> missing_glyphs;
147 mutable Glyph *fast_glyph_data[256];
148 mutable int fast_glyph_count;
153 QFixed emSquareSize()
const override;
156 return default_hint_style == HintLight ||
157 default_hint_style == HintNone;
162 return supportsHorizontalSubPixelPositions();
166 int synthesized()
const override;
168 void initializeHeightMetrics()
const override;
169 QFixed capHeight()
const override;
170 QFixed xHeight()
const override;
171 QFixed averageCharWidth()
const override;
173 qreal maxCharWidth()
const override;
174 QFixed lineThickness()
const override;
175 QFixed underlinePosition()
const override;
178 void doKerning(
QGlyphLayout *, ShaperFlags)
const override;
205 Glyph *glyphData(
glyph_t glyph,
207 GlyphFormat neededFormat,
210 bool expectsGammaCorrectedBlending()
const override;
212 void removeGlyphFromCache(
glyph_t glyph)
override;
215 int glyphCount()
const override;
222 void unlockFace()
const;
224 FT_Face non_locked_face()
const;
227 inline bool invalid()
const {
return xsize == 0 && ysize == 0; }
228 inline bool isBitmapFont()
const {
return defaultFormat == Format_Mono; }
234 bool fetchMetricsOnly =
false,
235 bool disableOutlineDrawing =
false)
const
236 {
return loadGlyph(cacheEnabled ? &defaultGlyphSet :
nullptr, glyph, subPixelPosition,
format, fetchMetricsOnly, disableOutlineDrawing); }
237 Glyph *loadGlyph(QGlyphSet *
set,
240 GlyphFormat = Format_None,
241 bool fetchMetricsOnly =
false,
242 bool disableOutlineDrawing =
false)
const;
247 bool fetchBoundingBox =
false,
248 bool disableOutlineDrawing =
false);
255 bool init(FaceId faceId,
bool antiaalias, GlyphFormat defaultFormat = Format_None,
257 bool init(FaceId faceId,
bool antialias, GlyphFormat
format,
263 void setDefaultHintStyle(HintStyle style)
override;
291 friend class QFontEngineFTRawFont;
297 bool shouldUseDesignMetrics(ShaperFlags
flags)
const;
304 struct TransformedGlyphSets {
306 QGlyphSet *sets[nSets];
309 TransformedGlyphSets() { std::fill(&sets[0], &sets[nSets],
nullptr); }
310 ~TransformedGlyphSets() {
qDeleteAll(&sets[0], &sets[nSets]); }
312 void moveToFront(
int i);
313 Q_DISABLE_COPY(TransformedGlyphSets);
315 TransformedGlyphSets transformedGlyphSets;
316 mutable QGlyphSet defaultGlyphSet;
324 QFixed underline_position;
327 mutable bool kerning_pairs_loaded;
328 QFixed scalableBitmapScaleFactor;
336 g.subPixelPosition.x.value(),
337 g.subPixelPosition.y.value());
344 return fast_glyph_data[
index];
The QColor class provides colors based on RGB, HSV or CMYK values.
int glyphMargin(QFontEngine::GlyphFormat) override
HintStyle defaultHintStyle() const
bool drawAntialiased() const
HintStyle default_hint_style
bool supportsVerticalSubPixelPositions() const override
QImage alphaMapForGlyph(glyph_t g) override
bool isScalableBitmap() const
Glyph * loadGlyph(uint glyph, const QFixedPoint &subPixelPosition, GlyphFormat format=Format_None, bool fetchMetricsOnly=false, bool disableOutlineDrawing=false) const
bool supportsHorizontalSubPixelPositions() const override
bool isBitmapFont() const
bool hasInternalCaching() const override
SubpixelAntialiasingType subpixelType
\macro QT_RESTRICTED_CAST_FROM_ASCII
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
AudioChannelLayoutTag tag
static const QCssKnownValue positions[NumKnownPositionModes - 1]
static const QCssKnownValue properties[NumProperties - 1]
typedef QByteArray(EGLAPIENTRYP PFNQGSGETDISPLAYSPROC)()
Q_GUI_EXPORT FT_Library qt_getFreetype()
size_t qHash(const QFontEngineFT::GlyphAndSubPixelPosition &g, size_t seed=0)
constexpr QtPrivate::QHashMultiReturnType< T... > qHashMulti(size_t seed, const T &... args) noexcept(std::conjunction_v< QtPrivate::QNothrowHashable< T >... >)
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLenum GLuint GLenum GLsizei length
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLint GLsizei GLsizei GLenum format
GLenum GLsizeiptr const void * fontData
GLuint GLenum GLenum transform
GLsizei const GLchar *const * path
GLenum GLenum GLenum GLenum GLenum scale
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc, QPainterPath *path, bool ttf, glyph_metrics_t *metric=nullptr, qreal scale=1.0, qreal stretch=1.0)
QFuture< QSet< QChar > > set
[10]
QFixedPoint subPixelPosition
bool operator==(const GlyphAndSubPixelPosition &other) const
GlyphAndSubPixelPosition(glyph_t g, const QFixedPoint spp)
bool isGlyphMissing(glyph_t index) const
bool useFastGlyphData(glyph_t index, const QFixedPoint &subPixelPosition) const
FT_Matrix transformationMatrix
Glyph * getGlyph(glyph_t index, const QFixedPoint &subPixelPositionX=QFixedPoint()) const
void setGlyphMissing(glyph_t index) const