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,
127 bool renderColr1GlyphRun(QImage *image,
128 const DWRITE_GLYPH_RUN *glyphRun,
129 const DWRITE_MATRIX &transform,
133 QRect paintGraphBounds(glyph_t glyph,
const DWRITE_MATRIX &transform)
const;
134 QRect alphaTextureBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
135 QRect colorBitmapBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
136 bool renderColr0GlyphRun(QImage *image,
137 const DWRITE_COLOR_GLYPH_RUN *colorGlyphRun,
138 const DWRITE_MATRIX &transform,
139 DWRITE_RENDERING_MODE renderMode,
140 DWRITE_MEASURING_MODE measureMode,
141 DWRITE_GRID_FIT_MODE gridFitMode,
143 QRect boundingRect)
const;
144 QImage renderColorGlyph(DWRITE_GLYPH_RUN *glyphRun,
145 const DWRITE_MATRIX &transform,
146 DWRITE_RENDERING_MODE renderMode,
147 DWRITE_MEASURING_MODE measureMode,
148 DWRITE_GRID_FIT_MODE gridFitMode,
150 QRect boundingRect)
const;
151 QImage imageForGlyph(glyph_t t,
152 const QFixedPoint &subPixelPosition,
154 const QTransform &xform,
155 const QColor &color = QColor());
156 void collectMetrics();
157 void renderGlyphRun(QImage *destination,
162 IDWriteGlyphRunAnalysis *glyphAnalysis,
163 const QRect &boundingRect,
164 DWRITE_RENDERING_MODE renderMode)
const;
165 static QString filenameFromFontFile(IDWriteFontFile *fontFile);
166 DWRITE_RENDERING_MODE hintingPreferenceToRenderingMode(
const QFontDef &fontDef)
const;
168 const QSharedPointer<QWindowsFontEngineData> m_fontEngineData;
170 IDWriteFontFace *m_directWriteFontFace;
171 IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget;
173 bool useSymmetricAntialiasing()
const;
175 QFixed m_lineThickness;
176 QFixed m_underlinePosition;
180 QFixed m_maxAdvanceWidth;
182 QString m_uniqueFamilyName;
183 QList<QFontVariableAxis> m_variableAxes;
184 DWRITE_PIXEL_GEOMETRY m_pixelGeometry = DWRITE_PIXEL_GEOMETRY_RGB;
186 mutable int m_useSymmetricAntialiasing = -1;