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;
119#if QT_CONFIG(directwritecolrv1)
120 bool traverseColr1(IDWritePaintReader *paintReader,
121 IDWriteFontFace7 *face7,
122 const DWRITE_PAINT_ELEMENT *paintElement,
123 QColrPaintGraphRenderer *graphRenderer)
const;
124 bool renderColr1GlyphRun(QImage *image,
125 const DWRITE_GLYPH_RUN *glyphRun,
126 const DWRITE_MATRIX &transform,
130 QRect paintGraphBounds(glyph_t glyph,
const DWRITE_MATRIX &transform)
const;
131 QRect alphaTextureBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
132 QRect colorBitmapBounds(glyph_t glyph,
const DWRITE_MATRIX &transform);
133 bool renderColr0GlyphRun(QImage *image,
134 const DWRITE_COLOR_GLYPH_RUN *colorGlyphRun,
135 const DWRITE_MATRIX &transform,
136 DWRITE_RENDERING_MODE renderMode,
137 DWRITE_MEASURING_MODE measureMode,
138 DWRITE_GRID_FIT_MODE gridFitMode,
140 QRect boundingRect)
const;
141 QImage renderColorGlyph(DWRITE_GLYPH_RUN *glyphRun,
142 const DWRITE_MATRIX &transform,
143 DWRITE_RENDERING_MODE renderMode,
144 DWRITE_MEASURING_MODE measureMode,
145 DWRITE_GRID_FIT_MODE gridFitMode,
147 QRect boundingRect)
const;
148 QImage imageForGlyph(glyph_t t,
149 const QFixedPoint &subPixelPosition,
151 const QTransform &xform,
152 const QColor &color = QColor());
153 void collectMetrics();
154 void renderGlyphRun(QImage *destination,
159 IDWriteGlyphRunAnalysis *glyphAnalysis,
160 const QRect &boundingRect,
161 DWRITE_RENDERING_MODE renderMode)
const;
162 static QString filenameFromFontFile(IDWriteFontFile *fontFile);
163 DWRITE_RENDERING_MODE hintingPreferenceToRenderingMode(
const QFontDef &fontDef)
const;
165 const QSharedPointer<QWindowsFontEngineData> m_fontEngineData;
167 IDWriteFontFace *m_directWriteFontFace;
168 IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget;
170 QFixed m_lineThickness;
171 QFixed m_underlinePosition;
175 QFixed m_maxAdvanceWidth;
177 QString m_uniqueFamilyName;
178 QList<QFontVariableAxis> m_variableAxes;
179 DWRITE_PIXEL_GEOMETRY m_pixelGeometry = DWRITE_PIXEL_GEOMETRY_RGB;