50 Q_DISABLE_COPY_MOVE(QWindowsFontEngineDirectWrite)
52 explicit QWindowsFontEngineDirectWrite(IDWriteFontFace *directWriteFontFace,
54 const QSharedPointer<QWindowsFontEngineData> &d);
55 ~QWindowsFontEngineDirectWrite() override;
57 void initFontInfo(
const QFontDef &request,
int dpi);
59 QFixed lineThickness()
const override;
60 QFixed underlinePosition()
const override;
61 bool getSfntTableData(uint tag, uchar *buffer, uint *length)
const override;
62 QFixed emSquareSize()
const override;
64 glyph_t glyphIndex(uint ucs4)
const override;
65 int stringToCMap(
const QChar *str,
int len, QGlyphLayout *glyphs,
int *nglyphs,
66 ShaperFlags flags)
const override;
67 void recalcAdvances(QGlyphLayout *glyphs, ShaperFlags)
const override;
69 void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions,
int nglyphs,
70 QPainterPath *path, QTextItem::RenderFlags flags) override;
72 glyph_metrics_t boundingBox(
const QGlyphLayout &glyphs) override;
73 glyph_metrics_t boundingBox(glyph_t g) override;
74 glyph_metrics_t alphaMapBoundingBox(glyph_t glyph,
const QFixedPoint&,
75 const QTransform &matrix, GlyphFormat) override;
77 QFixed capHeight()
const override;
78 QFixed xHeight()
const override;
79 qreal maxCharWidth()
const override;
80 FaceId faceId()
const override;
82 bool supportsHorizontalSubPixelPositions()
const override;
84 HFONT createHFONT()
const;
86 QImage alphaMapForGlyph(glyph_t glyph,
const QFixedPoint &subPixelPosition) override;
87 QImage alphaMapForGlyph(glyph_t glyph,
88 const QFixedPoint &subPixelPosition,
89 const QTransform &t) override;
90 QImage alphaRGBMapForGlyph(glyph_t t,
91 const QFixedPoint &subPixelPosition,
92 const QTransform &xform) override;
93 QImage bitmapForGlyph(glyph_t,
94 const QFixedPoint &subPixelPosition,
96 const QColor &color) override;
98 QFontEngine *cloneWithSize(qreal pixelSize)
const override;
99 Qt::HANDLE handle()
const override;
101 const QSharedPointer<QWindowsFontEngineData> &fontEngineData()
const {
return m_fontEngineData; }
103 static QString fontNameSubstitute(
const QString &familyName);
105 IDWriteFontFace *directWriteFontFace()
const {
return m_directWriteFontFace; }
107 void setUniqueFamilyName(
const QString &newName) { m_uniqueFamilyName = newName; }
109 void initializeHeightMetrics()
const override;
111 Properties properties()
const override;
113 QPainterPath unscaledGlyph(glyph_t glyph)
const;
114 void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics) override;
116 QList<QFontVariableAxis> variableAxes()
const override;
118 bool expectsGammaCorrectedBlending(QFontEngine::GlyphFormat format)
const override;
121#if QT_CONFIG(directwritecolrv1)
122 bool traverseColr1(IDWritePaintReader *paintReader,
123 IDWriteFontFace7 *face7,
124 const DWRITE_PAINT_ELEMENT *paintElement,
125 QColrPaintGraphRenderer *graphRenderer)
const;
126 bool renderColr1GlyphRun(QImage *image,
127 const DWRITE_GLYPH_RUN *glyphRun,
128 const DWRITE_MATRIX &transform,
132 QRect paintGraphBounds(glyph_t glyph,
const DWRITE_MATRIX &transform)
const;
133 QRect alphaTextureBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
134 QRect colorBitmapBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
135 bool renderColr0GlyphRun(QImage *image,
136 const DWRITE_COLOR_GLYPH_RUN *colorGlyphRun,
137 const DWRITE_MATRIX &transform,
138 DWRITE_RENDERING_MODE renderMode,
139 DWRITE_MEASURING_MODE measureMode,
140 DWRITE_GRID_FIT_MODE gridFitMode,
142 QRect boundingRect)
const;
143 QImage renderColorGlyph(DWRITE_GLYPH_RUN *glyphRun,
144 const DWRITE_MATRIX &transform,
145 DWRITE_RENDERING_MODE renderMode,
146 DWRITE_MEASURING_MODE measureMode,
147 DWRITE_GRID_FIT_MODE gridFitMode,
149 QRect boundingRect)
const;
150 QImage imageForGlyph(glyph_t t,
151 const QFixedPoint &subPixelPosition,
153 const QTransform &xform,
154 const QColor &color = QColor());
155 void collectMetrics();
156 void renderGlyphRun(QImage *destination,
161 IDWriteGlyphRunAnalysis *glyphAnalysis,
162 const QRect &boundingRect,
163 DWRITE_RENDERING_MODE renderMode)
const;
164 static QString filenameFromFontFile(IDWriteFontFile *fontFile);
165 DWRITE_RENDERING_MODE hintingPreferenceToRenderingMode(
const QFontDef &fontDef)
const;
167 const QSharedPointer<QWindowsFontEngineData> m_fontEngineData;
169 IDWriteFontFace *m_directWriteFontFace;
170 IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget;
172 bool useSymmetricAntialiasing()
const;
174 QFixed m_lineThickness;
175 QFixed m_underlinePosition;
179 QFixed m_maxAdvanceWidth;
181 QString m_uniqueFamilyName;
182 QList<QFontVariableAxis> m_variableAxes;
183 DWRITE_PIXEL_GEOMETRY m_pixelGeometry = DWRITE_PIXEL_GEOMETRY_RGB;
185 mutable int m_useSymmetricAntialiasing = -1;