Qt 4.8
Public Types | Public Functions | Static Public Functions | Public Variables | Private Functions | Properties | Friends | List of all members
QFreetypeFace Struct Reference

#include <qfontengine_ft_p.h>

Public Types

enum  { cmapCacheSize = 0x200 }
 

Public Functions

void computeSize (const QFontDef &fontDef, int *xsize, int *ysize, bool *outline_drawing)
 
int fsType () const
 
HB_Error getPointInOutline (HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints)
 
bool getSfntTable (uint tag, uchar *buffer, uint *length) const
 
void lock ()
 
QFontEngine::Properties properties () const
 
void release (const QFontEngine::FaceId &face_id)
 
void unlock ()
 

Static Public Functions

static void addBitmapToPath (FT_GlyphSlot slot, const QFixedPoint &point, QPainterPath *path, bool=false)
 
static void addGlyphToPath (FT_Face face, FT_GlyphSlot g, const QFixedPoint &point, QPainterPath *path, FT_Fixed x_scale, FT_Fixed y_scale)
 
static QFreetypeFacegetFace (const QFontEngine::FaceId &face_id, const QByteArray &fontData=QByteArray())
 

Public Variables

FcCharSet * charset
 
glyph_t cmapCache [cmapCacheSize]
 
FT_Face face
 
HB_Face hbFace
 
FT_Matrix matrix
 
FT_CharMap symbol_map
 
FT_CharMap unicode_map
 
int xsize
 
int ysize
 

Private Functions

 QFreetypeFace ()
 
 ~QFreetypeFace ()
 

Properties

QMutex _lock
 
QByteArray fontData
 
QAtomicInt ref
 

Friends

class QFontEngineFT
 
class QScopedPointerDeleter< QFreetypeFace >
 

Detailed Description

Definition at line 83 of file qfontengine_ft_p.h.

Enumerations

◆ anonymous enum

anonymous enum
Enumerator
cmapCacheSize 

Definition at line 114 of file qfontengine_ft_p.h.

Constructors and Destructors

◆ QFreetypeFace()

QFreetypeFace::QFreetypeFace ( )
inlineprivate

Definition at line 127 of file qfontengine_ft_p.h.

◆ ~QFreetypeFace()

QFreetypeFace::~QFreetypeFace ( )
inlineprivate

Definition at line 128 of file qfontengine_ft_p.h.

128 {}

Functions

◆ addBitmapToPath()

void QFreetypeFace::addBitmapToPath ( FT_GlyphSlot  slot,
const QFixedPoint point,
QPainterPath path,
bool  = false 
)
static

Definition at line 532 of file qfontengine_ft.cpp.

Referenced by QFontEngineFT::getUnscaledGlyph().

533 {
534  if (slot->format != FT_GLYPH_FORMAT_BITMAP
535  || slot->bitmap.pixel_mode != FT_PIXEL_MODE_MONO)
536  return;
537 
538  QPointF cp = point.toPointF();
539  qt_addBitmapToPath(cp.x() + TRUNC(slot->metrics.horiBearingX), cp.y() - TRUNC(slot->metrics.horiBearingY),
540  slot->bitmap.buffer, slot->bitmap.pitch, slot->bitmap.width, slot->bitmap.rows, path);
541 }
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
QPointF toPointF() const
Definition: qfixed_p.h:194
#define TRUNC(x)
void qt_addBitmapToPath(qreal x0, qreal y0, const uchar *image_data, int bpl, int w, int h, QPainterPath *path)
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287

◆ addGlyphToPath()

void QFreetypeFace::addGlyphToPath ( FT_Face  face,
FT_GlyphSlot  g,
const QFixedPoint point,
QPainterPath path,
FT_Fixed  x_scale,
FT_Fixed  y_scale 
)
static

Definition at line 449 of file qfontengine_ft.cpp.

Referenced by QFontEngineFT::addGlyphsToPath(), and QFontEngineFT::getUnscaledGlyph().

450 {
451  const qreal factor = 1/64.;
452  scaleOutline(face, g, x_scale, y_scale);
453 
454  QPointF cp = point.toPointF();
455 
456  // convert the outline to a painter path
457  int i = 0;
458  for (int j = 0; j < g->outline.n_contours; ++j) {
459  int last_point = g->outline.contours[j];
460  QPointF start = cp + QPointF(g->outline.points[i].x*factor, -g->outline.points[i].y*factor);
461  if(!(g->outline.tags[i] & 1)) {
462  start += cp + QPointF(g->outline.points[last_point].x*factor, -g->outline.points[last_point].y*factor);
463  start /= 2;
464  }
465 // qDebug("contour: %d -- %d", i, g->outline.contours[j]);
466 // qDebug("first point at %f %f", start.x(), start.y());
467  path->moveTo(start);
468 
469  QPointF c[4];
470  c[0] = start;
471  int n = 1;
472  while (i < last_point) {
473  ++i;
474  c[n] = cp + QPointF(g->outline.points[i].x*factor, -g->outline.points[i].y*factor);
475 // qDebug() << " i=" << i << " flag=" << (int)g->outline.tags[i] << "point=" << c[n];
476  ++n;
477  switch (g->outline.tags[i] & 3) {
478  case 2:
479  // cubic bezier element
480  if (n < 4)
481  continue;
482  c[3] = (c[3] + c[2])/2;
483  --i;
484  break;
485  case 0:
486  // quadratic bezier element
487  if (n < 3)
488  continue;
489  c[3] = (c[1] + c[2])/2;
490  c[2] = (2*c[1] + c[3])/3;
491  c[1] = (2*c[1] + c[0])/3;
492  --i;
493  break;
494  case 1:
495  case 3:
496  if (n == 2) {
497 // qDebug() << "lineTo" << c[1];
498  path->lineTo(c[1]);
499  c[0] = c[1];
500  n = 1;
501  continue;
502  } else if (n == 3) {
503  c[3] = c[2];
504  c[2] = (2*c[1] + c[3])/3;
505  c[1] = (2*c[1] + c[0])/3;
506  }
507  break;
508  }
509 // qDebug() << "cubicTo" << c[1] << c[2] << c[3];
510  path->cubicTo(c[1], c[2], c[3]);
511  c[0] = c[3];
512  n = 1;
513  }
514  if (n == 1) {
515 // qDebug() << "closeSubpath";
516  path->closeSubpath();
517  } else {
518  c[3] = start;
519  if (n == 2) {
520  c[2] = (2*c[1] + c[3])/3;
521  c[1] = (2*c[1] + c[0])/3;
522  }
523 // qDebug() << "cubicTo" << c[1] << c[2] << c[3];
524  path->cubicTo(c[1], c[2], c[3]);
525  }
526  ++i;
527  }
528 }
double qreal
Definition: qglobal.h:1193
unsigned char c[8]
Definition: qnumeric_p.h:62
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
void closeSubpath()
Closes the current subpath by drawing a line to the beginning of the subpath, automatically starting ...
static void scaleOutline(FT_Face face, FT_GlyphSlot g, FT_Fixed x_scale, FT_Fixed y_scale)
void moveTo(const QPointF &p)
Moves the current point to the given point, implicitly starting a new subpath and closing the previou...
void lineTo(const QPointF &p)
Adds a straight line from the current position to the given endPoint.
QPointF toPointF() const
Definition: qfixed_p.h:194
void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt)
Adds a cubic Bezier curve between the current position and the given endPoint using the control point...

◆ computeSize()

void QFreetypeFace::computeSize ( const QFontDef fontDef,
int *  xsize,
int *  ysize,
bool *  outline_drawing 
)

Definition at line 342 of file qfontengine_ft.cpp.

343 {
344  *ysize = qRound(fontDef.pixelSize * 64);
345  *xsize = *ysize * fontDef.stretch / 100;
346  *outline_drawing = false;
347 
348  /*
349  * Bitmap only faces must match exactly, so find the closest
350  * one (height dominant search)
351  */
352  if (!(face->face_flags & FT_FACE_FLAG_SCALABLE)) {
353  int best = 0;
354  for (int i = 1; i < face->num_fixed_sizes; i++) {
355  if (qAbs(*ysize - Y_SIZE(face,i)) <
356  qAbs (*ysize - Y_SIZE(face, best)) ||
357  (qAbs (*ysize - Y_SIZE(face, i)) ==
358  qAbs (*ysize - Y_SIZE(face, best)) &&
359  qAbs (*xsize - X_SIZE(face, i)) <
360  qAbs (*xsize - X_SIZE(face, best)))) {
361  best = i;
362  }
363  }
364  if (FT_Set_Char_Size (face, X_SIZE(face, best), Y_SIZE(face, best), 0, 0) == 0) {
365  *xsize = X_SIZE(face, best);
366  *ysize = Y_SIZE(face, best);
367  } else {
368  int err = 1;
369  if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) && ysize == 0 && face->num_fixed_sizes >= 1) {
370  // work around FT 2.1.10 problem with BDF without PIXEL_SIZE property
371  err = FT_Set_Pixel_Sizes(face, face->available_sizes[0].width, face->available_sizes[0].height);
372  if (err && face->num_fixed_sizes == 1)
373  err = 0; //even more of a workaround...
374  }
375 
376  if (err)
377  *xsize = *ysize = 0;
378  }
379  } else {
380  *outline_drawing = (*xsize > (QT_MAX_CACHED_GLYPH_SIZE<<6) || *ysize > (QT_MAX_CACHED_GLYPH_SIZE<<6));
381  }
382 }
#define X_SIZE(face, i)
Q_DECL_CONSTEXPR T qAbs(const T &t)
Definition: qglobal.h:1201
#define QT_MAX_CACHED_GLYPH_SIZE
#define Y_SIZE(face, i)
qreal pixelSize
Definition: qfont_p.h:90
uint stretch
Definition: qfont_p.h:98
Q_DECL_CONSTEXPR int qRound(qreal d)
Definition: qglobal.h:1203

◆ fsType()

int QFreetypeFace::fsType ( ) const

Definition at line 170 of file qfontengine_ft.cpp.

Referenced by QFontEngineXLFD::faceId().

171 {
172  int fsType = 0;
173  TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(face, ft_sfnt_os2);
174  if (os2)
175  fsType = os2->fsType;
176  return fsType;
177 }
int fsType() const

◆ getFace()

QFreetypeFace * QFreetypeFace::getFace ( const QFontEngine::FaceId face_id,
const QByteArray fontData = QByteArray() 
)
static

Definition at line 207 of file qfontengine_ft.cpp.

Referenced by checkSymbolFont(), fontFile(), QFontEngineFT::init(), and QFontEngineQPF::QFontEngineQPF().

209 {
210  if (face_id.filename.isEmpty() && fontData.isEmpty())
211  return 0;
212 
213  QtFreetypeData *freetypeData = qt_getFreetypeData();
214  if (!freetypeData->library)
215  FT_Init_FreeType(&freetypeData->library);
216 
217  QFreetypeFace *freetype = freetypeData->faces.value(face_id, 0);
218  if (freetype) {
219  freetype->ref.ref();
220  } else {
222  FT_Face face;
223  if (!face_id.filename.isEmpty()) {
224  QFile file(QString::fromUtf8(face_id.filename));
225  if (face_id.filename.startsWith(":qmemoryfonts/")) {
226  // from qfontdatabase.cpp
228  QByteArray idx = face_id.filename;
229  idx.remove(0, 14); // remove ':qmemoryfonts/'
230  bool ok = false;
231  newFreetype->fontData = qt_fontdata_from_index(idx.toInt(&ok));
232  if (!ok)
233  newFreetype->fontData = QByteArray();
234  } else if (!(file.fileEngine()->fileFlags(QAbstractFileEngine::FlagsMask) & QAbstractFileEngine::LocalDiskFlag)) {
235  if (!file.open(QIODevice::ReadOnly)) {
236  return 0;
237  }
238  newFreetype->fontData = file.readAll();
239  }
240  } else {
241  newFreetype->fontData = fontData;
242  }
243  if (!newFreetype->fontData.isEmpty()) {
244  if (FT_New_Memory_Face(freetypeData->library, (const FT_Byte *)newFreetype->fontData.constData(), newFreetype->fontData.size(), face_id.index, &face)) {
245  return 0;
246  }
247  } else if (FT_New_Face(freetypeData->library, face_id.filename, face_id.index, &face)) {
248  return 0;
249  }
250  newFreetype->face = face;
251 
252  newFreetype->hbFace = qHBNewFace(face, hb_getSFntTable);
253  Q_CHECK_PTR(newFreetype->hbFace);
254  newFreetype->ref = 1;
255  newFreetype->xsize = 0;
256  newFreetype->ysize = 0;
257  newFreetype->matrix.xx = 0x10000;
258  newFreetype->matrix.yy = 0x10000;
259  newFreetype->matrix.xy = 0;
260  newFreetype->matrix.yx = 0;
261  newFreetype->unicode_map = 0;
262  newFreetype->symbol_map = 0;
263 #ifndef QT_NO_FONTCONFIG
264  newFreetype->charset = 0;
265 #endif
266 
267  memset(newFreetype->cmapCache, 0, sizeof(newFreetype->cmapCache));
268 
269  for (int i = 0; i < newFreetype->face->num_charmaps; ++i) {
270  FT_CharMap cm = newFreetype->face->charmaps[i];
271  switch(cm->encoding) {
272  case FT_ENCODING_UNICODE:
273  newFreetype->unicode_map = cm;
274  break;
275  case FT_ENCODING_APPLE_ROMAN:
276  case FT_ENCODING_ADOBE_LATIN_1:
277  if (!newFreetype->unicode_map || newFreetype->unicode_map->encoding != FT_ENCODING_UNICODE)
278  newFreetype->unicode_map = cm;
279  break;
280  case FT_ENCODING_ADOBE_CUSTOM:
281  case FT_ENCODING_MS_SYMBOL:
282  if (!newFreetype->symbol_map)
283  newFreetype->symbol_map = cm;
284  break;
285  default:
286  break;
287  }
288  }
289 
290  if (!FT_IS_SCALABLE(newFreetype->face) && newFreetype->face->num_fixed_sizes == 1)
291  FT_Set_Char_Size (face, X_SIZE(newFreetype->face, 0), Y_SIZE(newFreetype->face, 0), 0, 0);
292 # if 0
293  FcChar8 *name;
294  FcPatternGetString(pattern, FC_FAMILY, 0, &name);
295  qDebug("%s: using maps: default: %x unicode: %x, symbol: %x", name,
296  newFreetype->face->charmap ? newFreetype->face->charmap->encoding : 0,
297  newFreetype->unicode_map ? newFreetype->unicode_map->encoding : 0,
298  newFreetype->symbol_map ? newFreetype->symbol_map->encoding : 0);
299 
300  for (int i = 0; i < 256; i += 8)
301  qDebug(" %x: %d %d %d %d %d %d %d %d", i,
302  FcCharSetHasChar(newFreetype->charset, i), FcCharSetHasChar(newFreetype->charset, i),
303  FcCharSetHasChar(newFreetype->charset, i), FcCharSetHasChar(newFreetype->charset, i),
304  FcCharSetHasChar(newFreetype->charset, i), FcCharSetHasChar(newFreetype->charset, i),
305  FcCharSetHasChar(newFreetype->charset, i), FcCharSetHasChar(newFreetype->charset, i));
306 #endif
307 
308  FT_Set_Charmap(newFreetype->face, newFreetype->unicode_map);
309  QT_TRY {
310  freetypeData->faces.insert(face_id, newFreetype.data());
311  } QT_CATCH(...) {
312  newFreetype.take()->release(face_id);
313  // we could return null in principle instead of throwing
314  QT_RETHROW;
315  }
316  freetype = newFreetype.take();
317  }
318  return freetype;
319 }
#define X_SIZE(face, i)
Q_GUI_EXPORT QByteArray qt_fontdata_from_index(int index)
static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB_UInt *length)
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
bool ref()
Atomically increments the value of this QAtomicInt.
FT_Library library
bool startsWith(const QByteArray &a) const
Returns true if this byte array starts with byte array ba; otherwise returns false.
const T value(const Key &key) const
Returns the value associated with the key.
Definition: qhash.h:606
The QScopedPointer class stores a pointer to a dynamically allocated object, and deletes it upon dest...
iterator insert(const Key &key, const T &value)
Inserts a new item with the key and a value of value.
Definition: qhash.h:753
Q_CORE_EXPORT void qDebug(const char *,...)
#define QT_RETHROW
Definition: qglobal.h:1539
struct FT_FaceRec_ * FT_Face
Definition: qfont.h:50
const char * name
static QString fromUtf8(const char *, int size=-1)
Returns a QString initialized with the first size bytes of the UTF-8 string str.
Definition: qstring.cpp:4302
#define Y_SIZE(face, i)
QtFreetypeData * qt_getFreetypeData()
#define QT_CATCH(A)
Definition: qglobal.h:1537
HB_Face qHBNewFace(void *font, HB_GetFontTableFunc tableFunc)
Definition: qharfbuzz.cpp:123
#define Q_CHECK_PTR(p)
Definition: qglobal.h:1853
The QFile class provides an interface for reading from and writing to files.
Definition: qfile.h:65
int toInt(bool *ok=0, int base=10) const
Returns the byte array converted to an int using base base, which is 10 by default and must be betwee...
QByteArray fontData
bool isEmpty() const
Returns true if the byte array has size 0; otherwise returns false.
Definition: qbytearray.h:421
#define QT_TRY
Definition: qglobal.h:1536
QByteArray & remove(int index, int len)
Removes len bytes from the array, starting at index position pos, and returns a reference to the arra...
QHash< QFontEngine::FaceId, QFreetypeFace * > faces

◆ getPointInOutline()

HB_Error QFreetypeFace::getPointInOutline ( HB_Glyph  glyph,
int  flags,
hb_uint32  point,
HB_Fixed *  xpos,
HB_Fixed *  ypos,
hb_uint32 *  nPoints 
)

Definition at line 179 of file qfontengine_ft.cpp.

Referenced by QFontEngineFT::draw(), QFontEngineQPF::getPointInOutline(), and QFontEngineFT::getPointInOutline().

180 {
181  if (HB_Error error = (HB_Error)FT_Load_Glyph(face, glyph, flags))
182  return error;
183 
184  if (face->glyph->format != FT_GLYPH_FORMAT_OUTLINE)
185  return HB_Err_Invalid_SubTable;
186 
187  *nPoints = face->glyph->outline.n_points;
188  if (!(*nPoints))
189  return HB_Err_Ok;
190 
191  if (point > *nPoints)
192  return HB_Err_Invalid_SubTable;
193 
194  *xpos = face->glyph->outline.points[point].x;
195  *ypos = face->glyph->outline.points[point].y;
196 
197  return HB_Err_Ok;
198 }
#define error(msg)

◆ getSfntTable()

bool QFreetypeFace::getSfntTable ( uint  tag,
uchar buffer,
uint length 
) const

Definition at line 414 of file qfontengine_ft.cpp.

Referenced by QFontEngineQPF::getSfntTableData(), and QFontEngineQPF::QFontEngineQPF().

415 {
416  bool result = false;
417 #if (FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) > 20103
418  if (FT_IS_SFNT(face)) {
419  FT_ULong len = *length;
420  result = FT_Load_Sfnt_Table(face, tag, 0, buffer, &len) == FT_Err_Ok;
421  *length = len;
422  }
423 #endif
424  return result;
425 }

◆ lock()

void QFreetypeFace::lock ( )
inline

Definition at line 94 of file qfontengine_ft_p.h.

Referenced by QFontEngineQPF::lockFace().

95  {
96  _lock.lock();
97  }
void lock()
Locks the mutex.
Definition: qmutex.cpp:151

◆ properties()

QFontEngine::Properties QFreetypeFace::properties ( ) const

Definition at line 384 of file qfontengine_ft.cpp.

385 {
387  p.postscriptName = FT_Get_Postscript_Name(face);
388  PS_FontInfoRec font_info;
389  if (FT_Get_PS_Font_Info(face, &font_info) == 0)
390  p.copyright = font_info.notice;
391  if (FT_IS_SCALABLE(face)) {
392  p.ascent = face->ascender;
393  p.descent = -face->descender;
394  p.leading = face->height - face->ascender + face->descender;
395  p.emSquare = face->units_per_EM;
396  p.boundingBox = QRectF(face->bbox.xMin, -face->bbox.yMax,
397  face->bbox.xMax - face->bbox.xMin,
398  face->bbox.yMax - face->bbox.yMin);
399  } else {
400  p.ascent = QFixed::fromFixed(face->size->metrics.ascender);
401  p.descent = QFixed::fromFixed(-face->size->metrics.descender);
402  p.leading = QFixed::fromFixed(face->size->metrics.height - face->size->metrics.ascender + face->size->metrics.descender);
403  p.emSquare = face->size->metrics.y_ppem;
404 // p.boundingBox = QRectF(-p.ascent.toReal(), 0, (p.ascent + p.descent).toReal(), face->size->metrics.max_advance/64.);
405  p.boundingBox = QRectF(0, -p.ascent.toReal(),
406  face->size->metrics.max_advance/64, (p.ascent + p.descent).toReal() );
407  }
408  p.italicAngle = 0;
409  p.capHeight = p.ascent;
410  p.lineWidth = face->underline_thickness;
411  return p;
412 }
static QFixed fromFixed(int fixed)
Definition: qfixed_p.h:71
The QRectF class defines a rectangle in the plane using floating point precision. ...
Definition: qrect.h:511
qreal toReal() const
Definition: qfixed_p.h:77
static qreal toReal(Register *reg, int type, bool *ok=0)

◆ release()

void QFreetypeFace::release ( const QFontEngine::FaceId face_id)

Definition at line 321 of file qfontengine_ft.cpp.

Referenced by checkSymbolFont(), getFace(), QFontEngineQPF::QFontEngineQPF(), QFontEngineQPF::~QFontEngineQPF(), and QFontEngineXLFD::~QFontEngineXLFD().

322 {
323  QtFreetypeData *freetypeData = qt_getFreetypeData();
324  if (!ref.deref()) {
326  FT_Done_Face(face);
327 #ifndef QT_NO_FONTCONFIG
328  if (charset)
329  FcCharSetDestroy(charset);
330 #endif
331  if(freetypeData->faces.contains(face_id))
332  freetypeData->faces.take(face_id);
333  delete this;
334  }
335  if (freetypeData->faces.isEmpty()) {
336  FT_Done_FreeType(freetypeData->library);
337  freetypeData->library = 0;
338  }
339 }
void qHBFreeFace(HB_Face face)
Definition: qharfbuzz.cpp:128
T take(const Key &key)
Removes the item with the key from the hash and returns the value associated with it...
Definition: qhash.h:807
FT_Library library
bool contains(const Key &key) const
Returns true if the hash contains an item with the key; otherwise returns false.
Definition: qhash.h:872
FcCharSet * charset
bool deref()
Atomically decrements the value of this QAtomicInt.
bool isEmpty() const
Returns true if the hash contains no items; otherwise returns false.
Definition: qhash.h:297
QtFreetypeData * qt_getFreetypeData()
QHash< QFontEngine::FaceId, QFreetypeFace * > faces

◆ unlock()

void QFreetypeFace::unlock ( )
inline

Definition at line 98 of file qfontengine_ft_p.h.

Referenced by QFontEngineQPF::unlockFace().

99  {
100  _lock.unlock();
101  }
void unlock()
Unlocks the mutex.
Definition: qmutex.cpp:296

Friends and Related Functions

◆ QFontEngineFT

friend class QFontEngineFT
friend

Definition at line 125 of file qfontengine_ft_p.h.

Referenced by QFontEngineFT::draw().

◆ QScopedPointerDeleter< QFreetypeFace >

Definition at line 126 of file qfontengine_ft_p.h.

Properties

◆ _lock

QMutex QFreetypeFace::_lock
private

Definition at line 130 of file qfontengine_ft_p.h.

Referenced by lock(), and unlock().

◆ charset

FcCharSet* QFreetypeFace::charset

Definition at line 106 of file qfontengine_ft_p.h.

Referenced by getFace().

◆ cmapCache

glyph_t QFreetypeFace::cmapCache[cmapCacheSize]

Definition at line 115 of file qfontengine_ft_p.h.

Referenced by getFace().

◆ face

FT_Face QFreetypeFace::face

◆ fontData

QByteArray QFreetypeFace::fontData
private

Definition at line 131 of file qfontengine_ft_p.h.

Referenced by QFontEngineFT::draw(), and getFace().

◆ hbFace

HB_Face QFreetypeFace::hbFace

Definition at line 104 of file qfontengine_ft_p.h.

Referenced by getFace().

◆ matrix

FT_Matrix QFreetypeFace::matrix

Definition at line 110 of file qfontengine_ft_p.h.

Referenced by getFace(), QFontEngineQPF::lockFace(), and QFontEngineFT::name().

◆ ref

QAtomicInt QFreetypeFace::ref
private

Definition at line 129 of file qfontengine_ft_p.h.

Referenced by getFace(), and QFontEngineFT::initFromFontEngine().

◆ symbol_map

FT_CharMap QFreetypeFace::symbol_map

Definition at line 112 of file qfontengine_ft_p.h.

Referenced by getFace().

◆ unicode_map

FT_CharMap QFreetypeFace::unicode_map

Definition at line 111 of file qfontengine_ft_p.h.

Referenced by getFace().

◆ xsize

int QFreetypeFace::xsize

Definition at line 108 of file qfontengine_ft_p.h.

Referenced by getFace(), QFontEngineFT::invalid(), and QFontEngineQPF::lockFace().

◆ ysize

int QFreetypeFace::ysize

Definition at line 109 of file qfontengine_ft_p.h.

Referenced by getFace(), QFontEngineFT::invalid(), and QFontEngineQPF::lockFace().


The documentation for this struct was generated from the following files: