QtBase  v6.3.1
qfontengine_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2021 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #ifndef QFONTENGINE_P_H
41 #define QFONTENGINE_P_H
42 
43 //
44 // W A R N I N G
45 // -------------
46 //
47 // This file is not part of the Qt API. It exists purely as an
48 // implementation detail. This header file may change from version to
49 // version without notice, or even be removed.
50 //
51 // We mean it.
52 //
53 
54 #include <QtGui/private/qtguiglobal_p.h>
55 #include "QtCore/qatomic.h"
56 #include <QtCore/qvarlengtharray.h>
57 #include <QtCore/qhashfunctions.h>
58 #include "private/qtextengine_p.h"
59 #include "private/qfont_p.h"
60 
62 
63 class QPainterPath;
65 
66 struct QGlyphLayout;
67 
68 #define MAKE_TAG(ch1, ch2, ch3, ch4) (\
69  (((quint32)(ch1)) << 24) | \
70  (((quint32)(ch2)) << 16) | \
71  (((quint32)(ch3)) << 8) | \
72  ((quint32)(ch4)) \
73  )
74 
75 // ### this only used in getPointInOutline(), refactor it and then remove these magic numbers
77  Err_Ok = 0x0000,
78  Err_Not_Covered = 0xFFFF,
81  Err_Invalid_SubTable = 0x1570
82 };
83 
84 typedef void (*qt_destroy_func_t) (void *user_data);
86 
87 class Q_GUI_EXPORT QFontEngine
88 {
89 public:
90  enum Type {
91  Box,
93 
94  // MS Windows types
95  Win,
96 
97  // Apple Mac OS types
98  Mac,
99 
100  // QWS types
105 
107 
108  TestFontEngine = 0x1000
109  };
110 
111  enum GlyphFormat {
113  Format_Render = Format_None,
117  Format_ARGB
118  };
119 
120  enum ShaperFlag {
121  DesignMetrics = 0x0002,
122  GlyphIndicesOnly = 0x0004
123  };
124  Q_DECLARE_FLAGS(ShaperFlags, ShaperFlag)
125 
126  /* Used with the Freetype font engine. */
127  struct Glyph {
128  Glyph() = default;
129  ~Glyph() { delete [] data; }
130  short linearAdvance = 0;
131  unsigned short width = 0;
132  unsigned short height = 0;
133  short x = 0;
134  short y = 0;
135  short advance = 0;
136  signed char format = 0;
137  uchar *data = nullptr;
138  private:
140  };
141 
142  virtual ~QFontEngine();
143 
144  inline Type type() const { return m_type; }
145 
146  // all of these are in unscaled metrics if the engine supports uncsaled metrics,
147  // otherwise in design metrics
148  struct Properties {
159  };
160  virtual Properties properties() const;
161  virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
162  QByteArray getSfntTable(uint tag) const;
163  virtual bool getSfntTableData(uint tag, uchar *buffer, uint *length) const;
164 
165  struct FaceId {
166  FaceId() : index(0), encoding(0) {}
169  int index;
170  int encoding;
171  };
172  virtual FaceId faceId() const { return FaceId(); }
174  SynthesizedItalic = 0x1,
175  SynthesizedBold = 0x2,
176  SynthesizedStretch = 0x4
177  };
178  virtual int synthesized() const { return 0; }
179  inline bool supportsSubPixelPositions() const
180  {
181  return supportsHorizontalSubPixelPositions() || supportsVerticalSubPixelPositions();
182  }
183  virtual bool supportsHorizontalSubPixelPositions() const { return false; }
184  virtual bool supportsVerticalSubPixelPositions() const { return false; }
185  virtual QFixedPoint subPixelPositionFor(const QFixedPoint &position) const;
187  {
188  return subPixelPositionFor(QFixedPoint(x, 0)).x;
189  }
190 
191  virtual QFixed emSquareSize() const { return ascent(); }
192 
193  /* returns 0 as glyph index for non existent glyphs */
194  virtual glyph_t glyphIndex(uint ucs4) const = 0;
195  virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const = 0;
196  virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const {}
197  virtual void doKerning(QGlyphLayout *, ShaperFlags) const;
198 
199  virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
200  QPainterPath *path, QTextItem::RenderFlags flags);
201 
202  void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
204 
205  virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
206  void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags);
211  // ### Refactor this into a smaller and more flexible API.
212  virtual QImage alphaMapForGlyph(glyph_t);
213  virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition);
214  virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
215  virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
216  virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
217  virtual QImage bitmapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t, const QColor &color = QColor());
218  virtual Glyph *glyphData(glyph_t glyph, const QFixedPoint &subPixelPosition, GlyphFormat neededFormat, const QTransform &t);
219  virtual bool hasInternalCaching() const { return false; }
220 
221  virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &/*subPixelPosition*/, const QTransform &matrix, GlyphFormat /*format*/)
222  {
223  return boundingBox(glyph, matrix);
224  }
225 
226  virtual void removeGlyphFromCache(glyph_t);
227 
228  virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) = 0;
229  virtual glyph_metrics_t boundingBox(glyph_t glyph) = 0;
230  virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix);
231  glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs);
232 
233  virtual QFixed ascent() const;
234  virtual QFixed capHeight() const = 0;
235  virtual QFixed descent() const;
236  virtual QFixed leading() const;
237  virtual QFixed xHeight() const;
238  virtual QFixed averageCharWidth() const;
239 
240  virtual QFixed lineThickness() const;
241  virtual QFixed underlinePosition() const;
242 
243  virtual qreal maxCharWidth() const = 0;
244  virtual qreal minLeftBearing() const;
245  virtual qreal minRightBearing() const;
246 
247  virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr);
248 
249  inline bool canRender(uint ucs4) const { return glyphIndex(ucs4) != 0; }
250  virtual bool canRender(const QChar *str, int len) const;
251 
252  virtual bool supportsTransformation(const QTransform &transform) const;
253 
254  virtual int glyphCount() const;
255  virtual int glyphMargin(GlyphFormat format) { return format == Format_A32 ? 2 : 0; }
256 
257  virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return nullptr; }
258 
259  virtual Qt::HANDLE handle() const;
260 
261  void *harfbuzzFont() const;
262  void *harfbuzzFace() const;
263  bool supportsScript(QChar::Script script) const;
264 
266  {
269  }
270 
271  virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints);
272 
273  void clearGlyphCache(const void *key);
274  void setGlyphCache(const void *key, QFontEngineGlyphCache *data);
275  QFontEngineGlyphCache *glyphCache(const void *key, GlyphFormat format, const QTransform &transform, const QColor &color = QColor()) const;
276 
277  static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize);
278  static quint32 getTrueTypeGlyphIndex(const uchar *cmap, int cmapSize, uint unicode);
279 
280  static QByteArray convertToPostscriptFontFamilyName(const QByteArray &fontFamily);
281 
282  virtual bool hasUnreliableGlyphOutline() const;
283  virtual bool expectsGammaCorrectedBlending() const;
284 
285  enum HintStyle {
289  HintFull
290  };
291  virtual void setDefaultHintStyle(HintStyle) { }
292 
298  Subpixel_VBGR
299  };
300 
301 private:
302  const Type m_type;
303 
304 public:
307 
308  class Holder { // replace by std::unique_ptr once available
309  void *ptr;
310  qt_destroy_func_t destroy_func;
311  public:
312  Holder() : ptr(nullptr), destroy_func(nullptr) {}
313  explicit Holder(void *p, qt_destroy_func_t d) : ptr(p), destroy_func(d) {}
314  ~Holder() { if (ptr && destroy_func) destroy_func(ptr); }
315  Holder(Holder &&other) noexcept
316  : ptr(qExchange(other.ptr, nullptr)),
317  destroy_func(qExchange(other.destroy_func, nullptr))
318  {
319  }
321 
322  void swap(Holder &other) noexcept
323  {
324  qSwap(ptr, other.ptr);
325  qSwap(destroy_func, other.destroy_func);
326  }
327 
328  void *get() const noexcept { return ptr; }
329  void *release() noexcept {
330  void *result = ptr;
331  ptr = nullptr;
332  destroy_func = nullptr;
333  return result;
334  }
335  void reset() noexcept { Holder().swap(*this); }
336  qt_destroy_func_t get_deleter() const noexcept { return destroy_func; }
337 
338  bool operator!() const noexcept { return !ptr; }
339  };
340 
341  mutable Holder font_; // \ NOTE: Declared before m_glyphCaches, so font_, face_
342  mutable Holder face_; // / are destroyed _after_ m_glyphCaches is destroyed.
343 
344  struct FaceData {
345  void *user_data;
347  } faceData;
348 
349  uint cache_cost; // amount of mem used in bytes by the font
350  uint fsType : 16;
351  bool symbol;
353  struct KernPair {
356 
357  inline bool operator<(const KernPair &other) const
358  {
359  return left_right < other.left_right;
360  }
361  };
363  void loadKerningPairs(QFixed scalingFactor);
364 
366  int m_subPixelPositionCount; // Number of positions within a single pixel for this cache
367 
368 protected:
369  explicit QFontEngine(Type type);
370 
371  QFixed lastRightBearing(const QGlyphLayout &glyphs);
372 
373  QFixed calculatedCapHeight() const;
374 
375  mutable QFixed m_ascent;
376  mutable QFixed m_descent;
377  mutable QFixed m_leading;
379 
380  virtual void initializeHeightMetrics() const;
381  bool processHheaTable() const;
382  bool processOS2Table() const;
383 
384 private:
385  struct GlyphCacheEntry {
386  GlyphCacheEntry();
387  GlyphCacheEntry(const GlyphCacheEntry &);
388  ~GlyphCacheEntry();
389 
390  GlyphCacheEntry &operator=(const GlyphCacheEntry &);
391 
393  bool operator==(const GlyphCacheEntry &other) const { return cache == other.cache; }
394  };
395  typedef std::list<GlyphCacheEntry> GlyphCaches;
396  mutable QHash<const void *, GlyphCaches> m_glyphCaches;
397 
398 private:
399  mutable qreal m_minLeftBearing;
400  mutable qreal m_minRightBearing;
401 };
403 
404 Q_DECLARE_OPERATORS_FOR_FLAGS(QFontEngine::ShaperFlags)
405 
406 inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
407 {
408  return f1.index == f2.index && f1.encoding == f2.encoding && f1.filename == f2.filename && f1.uuid == f2.uuid;
409 }
410 
411 inline size_t qHash(const QFontEngine::FaceId &f, size_t seed = 0)
412  noexcept(noexcept(qHash(f.filename)))
413 {
414  return qHashMulti(seed, f.filename, f.uuid, f.index, f.encoding);
415 }
416 
417 
418 class QGlyph;
419 
420 
421 
423 {
424 public:
425  QFontEngineBox(int size);
426  ~QFontEngineBox();
427 
428  virtual glyph_t glyphIndex(uint ucs4) const override;
429  virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
430  virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
431 
432  void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
433  virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) override;
434 
435  virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
436  virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
437  virtual QFontEngine *cloneWithSize(qreal pixelSize) const override;
438 
439  virtual QFixed ascent() const override;
440  virtual QFixed capHeight() const override;
441  virtual QFixed descent() const override;
442  virtual QFixed leading() const override;
443  virtual qreal maxCharWidth() const override;
444  virtual qreal minLeftBearing() const override { return 0; }
445  virtual qreal minRightBearing() const override { return 0; }
446  virtual QImage alphaMapForGlyph(glyph_t) override;
447 
448  virtual bool canRender(const QChar *string, int len) const override;
449 
450  inline int size() const { return _size; }
451 
452 protected:
453  explicit QFontEngineBox(Type type, int size);
454 
455 private:
456  friend class QFontPrivate;
457  int _size;
458 };
459 
460 class Q_GUI_EXPORT QFontEngineMulti : public QFontEngine
461 {
462 public:
463  explicit QFontEngineMulti(QFontEngine *engine, int script, const QStringList &fallbackFamilies = QStringList());
464  ~QFontEngineMulti();
465 
466  virtual glyph_t glyphIndex(uint ucs4) const override;
467  virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
468 
469  virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
470  virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
471 
472  virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
473  virtual void doKerning(QGlyphLayout *, ShaperFlags) const override;
474  virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags) override;
475  virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr) override;
476 
477  virtual QFixed ascent() const override;
478  virtual QFixed capHeight() const override;
479  virtual QFixed descent() const override;
480  virtual QFixed leading() const override;
481  virtual QFixed xHeight() const override;
482  virtual QFixed averageCharWidth() const override;
483  virtual QImage alphaMapForGlyph(glyph_t) override;
484  virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition) override;
485  virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t) override;
486  virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
487  virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
488 
489  virtual QFixed lineThickness() const override;
490  virtual QFixed underlinePosition() const override;
491  virtual qreal maxCharWidth() const override;
492  virtual qreal minLeftBearing() const override;
493  virtual qreal minRightBearing() const override;
494 
495  virtual bool canRender(const QChar *string, int len) const override;
496 
497  inline int fallbackFamilyCount() const { return m_fallbackFamilies.size(); }
498  inline QString fallbackFamilyAt(int at) const { return m_fallbackFamilies.at(at); }
499 
500  void setFallbackFamiliesList(const QStringList &fallbackFamilies);
501 
502  static uchar highByte(glyph_t glyph); // Used for determining engine
503 
504  inline QFontEngine *engine(int at) const
505  { Q_ASSERT(at < m_engines.size()); return m_engines.at(at); }
506 
507  void ensureEngineAt(int at);
508 
509  static QFontEngine *createMultiFontEngine(QFontEngine *fe, int script);
510 
511 protected:
512  virtual void ensureFallbackFamiliesQueried();
513  virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const;
514  virtual QFontEngine *loadEngine(int at);
515 
516 private:
517  QList<QFontEngine *> m_engines;
518  QStringList m_fallbackFamilies;
519  const int m_script;
520  bool m_fallbackFamiliesQueried;
521 };
522 
524 {
525 public:
526  QTestFontEngine(int size);
527 };
528 
530 
531 
532 
533 #endif // QFONTENGINE_P_H
xD9 x84 xD8 xAD xD9 x80 xF0 x90 xAC x9A xE0 xA7 xA6 xE0 xA7 xAA xF0 x91 x84 xA4 xF0 x91 x84 x89 xF0 x91 x84 x9B xF0 x90 x8A xAB xF0 x90 x8B x89 xE2 xB2 x9E xE2 xB2 x9F xD0 xBE xD0 x9E xF0 x90 x90 x84 xF0 x90 x90 xAC xE1 x83 x98 xE1 x83 x94 xE1 x83 x90 xE1 xB2 xBF xE2 xB0 x95 xE2 xB1 x85 xCE xBF xCE x9F xE0 xA8 xA0 xE0 xA8 xB0 xE0 xA9 xA6 Kayah xEA xA4 x8D xEA xA4 x80 Khmer xE1 xA7 xA1 xE1 xA7 xAA xE0 xBB x90 Latin Subscript xE2 x82 x92 xE2 x82 x80 xEA x93 xB3 xF0 x96 xB9 xA1 xF0 x96 xB9 x9B xF0 x96 xB9 xAF xE1 x80 x9D xE1 x80 x84 xE1 x80 x82 no script
Definition: afscript.h:271
The QAtomicInt class provides platform-independent atomic operations on int.
Definition: qatomic.h:158
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:85
The QChar class provides a 16-bit Unicode character.
Definition: qchar.h:84
Script
Definition: qchar.h:180
@ Script_Khmer
Definition: qchar.h:214
@ Script_Nko
Definition: qchar.h:254
@ Script_Syriac
Definition: qchar.h:191
@ Script_Sinhala
Definition: qchar.h:202
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition: qcolor.h:67
template< typename Enum > size_t qHash(QFlags< Enum > flags, size_t seed=0) noexcept
qt_destroy_func_t get_deleter() const noexcept
void reset() noexcept
void * get() const noexcept
Holder(void *p, qt_destroy_func_t d)
void swap(Holder &other) noexcept
bool operator!() const noexcept
void * release() noexcept
Holder(Holder &&other) noexcept
void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si)
virtual QImage alphaMapForGlyph(glyph_t) override
virtual qreal maxCharWidth() const override
virtual QFontEngine * cloneWithSize(qreal pixelSize) const override
int size() const
virtual qreal minLeftBearing() const override
virtual QFixed leading() const override
virtual bool canRender(const QChar *string, int len) const override
virtual glyph_t glyphIndex(uint ucs4) const override
virtual QFixed descent() const override
virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override
virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override
virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override
virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) override
virtual QFixed ascent() const override
virtual QFixed capHeight() const override
virtual qreal minRightBearing() const override
QFontEngineBox(int size)
QFixed subPixelPositionForX(const QFixed &x) const
virtual bool supportsHorizontalSubPixelPositions() const
virtual QFixed capHeight() const =0
virtual glyph_metrics_t boundingBox(glyph_t glyph)=0
virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs)=0
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &, const QTransform &matrix, GlyphFormat)
int m_subPixelPositionCount
bool m_heightMetricsQueried
virtual FaceId faceId() const
QFixed m_ascent
virtual qreal maxCharWidth() const =0
QFontDef fontDef
virtual int glyphMargin(GlyphFormat format)
bool canRender(uint ucs4) const
virtual void setDefaultHintStyle(HintStyle)
virtual bool supportsVerticalSubPixelPositions() const
static bool scriptRequiresOpenType(QChar::Script script)
Type type() const
QFixed m_leading
virtual glyph_t glyphIndex(uint ucs4) const =0
virtual QFontEngine * cloneWithSize(qreal) const
bool isSmoothlyScalable
bool supportsSubPixelPositions() const
QAtomicInt ref
GlyphFormat glyphFormat
virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const
QList< KernPair > kerning_pairs
virtual int synthesized() const
virtual bool hasInternalCaching() const
virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const =0
virtual QFixed emSquareSize() const
QFixed m_descent
QString fallbackFamilyAt(int at) const
QFontEngine * engine(int at) const
int fallbackFamilyCount() const
template< typename... T > size_t qHashMulti(size_t seed, const T &...args)
The QImage class provides a hardware-independent image representation that allows direct access to th...
Definition: qimage.h:73
Definition: qlist.h:108
The QPaintEngine class provides an abstract definition of how QPainter draws to a given device on a g...
Definition: qpaintengine.h:87
The QPainterPath class provides a container for painting operations, enabling graphical shapes to be ...
Definition: qpainterpath.h:65
The QRectF class defines a finite rectangle in the plane using floating point precision.
Definition: qrect.h:511
The QString class provides a Unicode character string.
Definition: qstring.h:388
const QChar at(qsizetype i) const
Definition: qstring.h:1212
The QStringList class provides a list of strings.
QTestFontEngine(int size)
Internal QTextItem.
The QTransform class specifies 2D transformations of a coordinate system.
Definition: qtransform.h:56
QString str
[2]
qSwap(pi, e)
QCache< int, Employee > cache
[0]
auto it unsigned count const
Definition: hb-iter.hh:848
#define inline
Definition: md4c.c:45
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
void * HANDLE
Definition: qnamespace.h:1561
void
Definition: png.h:1080
QList< QString > QStringList
Definition: qcontainerfwd.h:64
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition: qflags.h:210
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition: qflags.h:227
bool(* qt_get_font_table_func_t)(void *user_data, uint tag, uchar *buffer, uint *length)
Definition: qfontengine_p.h:85
bool operator==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
void(* qt_destroy_func_t)(void *user_data)
Definition: qfontengine_p.h:84
Q_DECLARE_TYPEINFO(QFontEngine::KernPair, Q_PRIMITIVE_TYPE)
HB_Compat_Error
Definition: qfontengine_p.h:76
@ Err_Invalid_SubTable_Format
Definition: qfontengine_p.h:80
@ Err_Invalid_SubTable
Definition: qfontengine_p.h:81
@ Err_Invalid_Argument
Definition: qfontengine_p.h:79
@ Err_Ok
Definition: qfontengine_p.h:77
@ Err_Not_Covered
Definition: qfontengine_p.h:78
unsigned int quint32
Definition: qglobal.h:288
QT_BEGIN_INCLUDE_NAMESPACE typedef unsigned char uchar
Definition: qglobal.h:332
QT_END_INCLUDE_NAMESPACE typedef double qreal
Definition: qglobal.h:341
unsigned int uint
Definition: qglobal.h:334
#define Q_DISABLE_COPY(Class)
Definition: qglobal.h:515
#define QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(Class)
Definition: qglobal.h:563
GLenum GLuint GLenum GLsizei length
Definition: qopengl.h:270
GLenum type
Definition: qopengl.h:270
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLuint64 key
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLfloat GLfloat f
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLenum GLuint buffer
GLint GLsizei width
GLuint color
[2]
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei GLsizei GLenum format
GLint y
GLuint GLenum GLenum transform
Definition: qopenglext.h:11564
GLenum GLsizei len
Definition: qopenglext.h:3292
GLuint GLenum matrix
Definition: qopenglext.h:11564
GLdouble GLdouble t
[9]
Definition: qopenglext.h:243
GLsizei const GLchar *const * path
Definition: qopenglext.h:4283
GLuint64EXT * result
[6]
Definition: qopenglext.h:10932
GLfloat GLfloat p
[1]
Definition: qopenglext.h:12698
GLenum GLenum GLsizei void * table
Definition: qopenglext.h:2745
#define Q_ASSERT(cond)
Definition: qrandom.cpp:84
unsigned int glyph_t
@ Q_PRIMITIVE_TYPE
Definition: qtypeinfo.h:155
HB_EXTERN hb_font_get_glyph_func_t void * user_data
QObject::connect nullptr
QSharedPointer< T > other(t)
[5]
this swap(other)
QAction * at
qt_get_font_table_func_t get_font_table
bool operator<(const KernPair &other) const
Definition: moc.h:48
XmlOutput::xml_output tag(const QString &name)
Definition: xmloutput.h:154