Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qfontengine_coretext_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QFONTENGINE_CORETEXT_P_H
5#define QFONTENGINE_CORETEXT_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <private/qfontengine_p.h>
19#include <private/qcore_mac_p.h>
20#include <QtCore/qloggingcategory.h>
21
22#ifdef Q_OS_MACOS
23#include <ApplicationServices/ApplicationServices.h>
24#else
25#include <CoreText/CoreText.h>
26#include <CoreGraphics/CoreGraphics.h>
27#endif
28
30
31class Q_GUI_EXPORT QCoreTextFontEngine : public QFontEngine
32{
34
35public:
36 QCoreTextFontEngine(CTFontRef font, const QFontDef &def);
37 QCoreTextFontEngine(CGFontRef font, const QFontDef &def);
39
40 glyph_t glyphIndex(uint ucs4) const override;
41 int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
42 void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
43
44 glyph_metrics_t boundingBox(glyph_t glyph) override;
45
46 QFixed capHeight() const override;
47 QFixed xHeight() const override;
48 qreal maxCharWidth() const override;
49 QFixed averageCharWidth() const override;
50
51 void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int numGlyphs,
52 QPainterPath *path, QTextItem::RenderFlags) override;
53
54 bool canRender(const QChar *string, int len) const override;
55
56 int synthesized() const override { return synthesisFlags; }
57 bool supportsHorizontalSubPixelPositions() const override { return true; }
58 bool supportsVerticalSubPixelPositions() const override { return false; }
59
60 QFixed lineThickness() const override;
61 QFixed underlinePosition() const override;
62
63 void draw(CGContextRef ctx, qreal x, qreal y, const QTextItemInt &ti, int paintDeviceHeight);
64
65 FaceId faceId() const override;
66 bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const override;
67 void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics) override;
68 QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition) override;
69 QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition, const QTransform &t) override;
70 QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
71 glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &, const QTransform &matrix, GlyphFormat) override;
72 QImage bitmapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t, const QColor &color) override;
73 QFixed emSquareSize() const override;
74 void doKerning(QGlyphLayout *g, ShaperFlags flags) const override;
75
76 bool supportsTransformation(const QTransform &transform) const override;
77 bool expectsGammaCorrectedBlending() const override;
78
79 QFontEngine *cloneWithSize(qreal pixelSize) const override;
80 Qt::HANDLE handle() const override;
82
83 QFontEngine::Properties properties() const override;
84
85 enum FontSmoothing { Disabled, Subpixel, Grayscale };
87
88 static FontSmoothing fontSmoothing();
90
91 static bool ct_getSfntTable(void *user_data, uint tag, uchar *buffer, uint *length);
92 static QFont::Weight qtWeightFromCFWeight(float value);
93
94 static QCoreTextFontEngine *create(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference, const QMap<QFont::Tag, float> &variableAxisValue);
95
96protected:
97 QCoreTextFontEngine(const QFontDef &def);
98 void init();
99 QImage imageForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition, const QTransform &m, const QColor &color = QColor());
100 void loadAdvancesForGlyphs(QVarLengthArray<CGGlyph> &cgGlyphs, QGlyphLayout *glyphs) const;
101 bool hasColorGlyphs() const;
102 bool shouldAntialias() const;
103 bool shouldSmoothFont() const;
104 void initializeHeightMetrics() const override;
105
106 QCFType<CTFontRef> ctfont;
107 QCFType<CGFontRef> cgFont;
109 CGAffineTransform transform;
114 mutable bool kerningPairsLoaded;
115};
116
117CGAffineTransform Q_GUI_EXPORT qt_transform_from_fontdef(const QFontDef &fontDef);
118
120
121#endif // QFONTENGINE_CORETEXT_P_H
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
QCFType< CTFontRef > ctfont
Q_ENUM(FontSmoothing)
QFontEngine::FaceId face_id
QCFType< CGFontRef > cgFont
bool supportsVerticalSubPixelPositions() const override
int synthesized() const override
int glyphMargin(QFontEngine::GlyphFormat format) override
bool supportsHorizontalSubPixelPositions() const override
HintingPreference
Definition qfont.h:55
Weight
Qt uses a weighting scale from 1 to 1000 compatible with OpenType.
Definition qfont.h:63
\inmodule QtGui
Definition qimage.h:37
\inmodule QtGui
Internal QTextItem.
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
EGLContext ctx
QString str
[2]
Combined button and popup list for selecting options.
void * HANDLE
AudioChannelLayoutTag tag
static const QCssKnownValue positions[NumKnownPositionModes - 1]
static const QCssKnownValue properties[NumProperties - 1]
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void * user_data
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
CGAffineTransform Q_GUI_EXPORT qt_transform_from_fontdef(const QFontDef &fontDef)
static Q_CONSTINIT qreal fontSmoothingGamma
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
const GLfloat * m
GLenum GLuint GLenum GLsizei length
GLenum const void GLbitfield GLsizei numGlyphs
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLenum GLuint buffer
GLuint color
[2]
GLbitfield flags
GLboolean GLboolean g
GLint GLsizei GLsizei GLenum format
GLenum GLsizeiptr const void * fontData
GLint y
GLuint GLenum GLenum transform
GLuint GLenum matrix
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const GLchar *const * path
GLenum GLsizei len
struct CGContext * CGContextRef
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
unsigned int glyph_t
#define Q_GADGET
#define Q_UNUSED(x)
unsigned char uchar
Definition qtypes.h:32
unsigned int uint
Definition qtypes.h:34
double qreal
Definition qtypes.h:187
myFilter draw(painter, QPoint(0, 0), originalPixmap)
view create()