3#ifndef QFONTENGINE_FT_P_H
4#define QFONTENGINE_FT_P_H
16#include "private/qfontengine_p.h"
34class QFontEngineFTRawFont;
44 void computeSize(
const QFontDef &fontDef,
int *xsize,
int *ysize,
bool *outline_drawing,
QFixed *scalableBitmapScaleFactor);
52 static int getFaceIndexByStyleName(
const QString &faceFileName,
const QString &styleName);
71 enum { cmapCacheSize = 0x200 };
78 bool isScalableBitmap()
const;
115 return glyph ==
other.glyph && subPixelPosition ==
other.subPixelPosition;
132 return (
index < 256 && subPixelPosition.
x == 0 && subPixelPosition.
y == 0);
144 mutable Glyph *fast_glyph_data[256];
145 mutable int fast_glyph_count;
150 QFixed emSquareSize()
const override;
153 return default_hint_style == HintLight ||
154 default_hint_style == HintNone;
159 return supportsHorizontalSubPixelPositions();
163 int synthesized()
const override;
165 void initializeHeightMetrics()
const override;
166 QFixed capHeight()
const override;
167 QFixed xHeight()
const override;
168 QFixed averageCharWidth()
const override;
170 qreal maxCharWidth()
const override;
171 QFixed lineThickness()
const override;
172 QFixed underlinePosition()
const override;
175 void doKerning(
QGlyphLayout *, ShaperFlags)
const override;
202 Glyph *glyphData(
glyph_t glyph,
204 GlyphFormat neededFormat,
207 bool expectsGammaCorrectedBlending()
const override;
209 void removeGlyphFromCache(
glyph_t glyph)
override;
212 int glyphCount()
const override;
219 void unlockFace()
const;
221 FT_Face non_locked_face()
const;
224 inline bool invalid()
const {
return xsize == 0 && ysize == 0; }
225 inline bool isBitmapFont()
const {
return defaultFormat == Format_Mono; }
231 bool fetchMetricsOnly =
false,
232 bool disableOutlineDrawing =
false)
const
233 {
return loadGlyph(cacheEnabled ? &defaultGlyphSet :
nullptr, glyph, subPixelPosition,
format, fetchMetricsOnly, disableOutlineDrawing); }
234 Glyph *loadGlyph(QGlyphSet *
set,
237 GlyphFormat = Format_None,
238 bool fetchMetricsOnly =
false,
239 bool disableOutlineDrawing =
false)
const;
244 bool fetchBoundingBox =
false,
245 bool disableOutlineDrawing =
false);
252 bool init(FaceId faceId,
bool antiaalias, GlyphFormat defaultFormat = Format_None,
254 bool init(FaceId faceId,
bool antialias, GlyphFormat
format,
260 void setDefaultHintStyle(HintStyle style)
override;
288 friend class QFontEngineFTRawFont;
294 bool shouldUseDesignMetrics(ShaperFlags
flags)
const;
301 struct TransformedGlyphSets {
303 QGlyphSet *sets[nSets];
306 TransformedGlyphSets() { std::fill(&sets[0], &sets[nSets],
nullptr); }
307 ~TransformedGlyphSets() {
qDeleteAll(&sets[0], &sets[nSets]); }
309 void moveToFront(
int i);
310 Q_DISABLE_COPY(TransformedGlyphSets);
312 TransformedGlyphSets transformedGlyphSets;
313 mutable QGlyphSet defaultGlyphSet;
321 QFixed underline_position;
324 mutable bool kerning_pairs_loaded;
325 QFixed scalableBitmapScaleFactor;
333 g.subPixelPosition.x.value(),
334 g.subPixelPosition.y.value());
341 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]
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