Remove QFontEngineFT::loadGlyphMetrics
It is no longer used and was accidentally merged back in. Reviewed-by: Eskil (cherry picked from commit 782535ac548c582542bd1c17207e288e816870a8)
This commit is contained in:
parent
2a8d50ed6a
commit
edf55f7d50
@ -803,106 +803,6 @@ int QFontEngineFT::loadFlags(QGlyphSet *set, GlyphFormat format, int flags,
|
|||||||
return load_flags;
|
return load_flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph, GlyphFormat format) const
|
|
||||||
{
|
|
||||||
Glyph *g = set->getGlyph(glyph);
|
|
||||||
if (g && g->format == format)
|
|
||||||
return g;
|
|
||||||
|
|
||||||
bool hsubpixel = false;
|
|
||||||
int vfactor = 1;
|
|
||||||
int load_flags = loadFlags(set, format, 0, hsubpixel, vfactor);
|
|
||||||
|
|
||||||
// apply our matrix to this, but note that the metrics will not be affected by this.
|
|
||||||
FT_Face face = lockFace();
|
|
||||||
FT_Matrix matrix = this->matrix;
|
|
||||||
FT_Matrix_Multiply(&set->transformationMatrix, &matrix);
|
|
||||||
FT_Set_Transform(face, &matrix, 0);
|
|
||||||
freetype->matrix = matrix;
|
|
||||||
|
|
||||||
bool transform = matrix.xx != 0x10000 || matrix.yy != 0x10000 || matrix.xy != 0 || matrix.yx != 0;
|
|
||||||
if (transform)
|
|
||||||
load_flags |= FT_LOAD_NO_BITMAP;
|
|
||||||
|
|
||||||
FT_Error err = FT_Load_Glyph(face, glyph, load_flags);
|
|
||||||
if (err && (load_flags & FT_LOAD_NO_BITMAP)) {
|
|
||||||
load_flags &= ~FT_LOAD_NO_BITMAP;
|
|
||||||
err = FT_Load_Glyph(face, glyph, load_flags);
|
|
||||||
}
|
|
||||||
if (err == FT_Err_Too_Few_Arguments) {
|
|
||||||
// this is an error in the bytecode interpreter, just try to run without it
|
|
||||||
load_flags |= FT_LOAD_FORCE_AUTOHINT;
|
|
||||||
err = FT_Load_Glyph(face, glyph, load_flags);
|
|
||||||
}
|
|
||||||
if (err != FT_Err_Ok)
|
|
||||||
qWarning("load glyph failed err=%x face=%p, glyph=%d", err, face, glyph);
|
|
||||||
|
|
||||||
unlockFace();
|
|
||||||
if (set->outline_drawing)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!g) {
|
|
||||||
g = new Glyph;
|
|
||||||
g->uploadedToServer = false;
|
|
||||||
g->data = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
FT_GlyphSlot slot = face->glyph;
|
|
||||||
if (embolden) Q_FT_GLYPHSLOT_EMBOLDEN(slot);
|
|
||||||
int left = slot->metrics.horiBearingX;
|
|
||||||
int right = slot->metrics.horiBearingX + slot->metrics.width;
|
|
||||||
int top = slot->metrics.horiBearingY;
|
|
||||||
int bottom = slot->metrics.horiBearingY - slot->metrics.height;
|
|
||||||
if (transform && slot->format != FT_GLYPH_FORMAT_BITMAP) { // freetype doesn't apply the transformation on the metrics
|
|
||||||
int l, r, t, b;
|
|
||||||
FT_Vector vector;
|
|
||||||
vector.x = left;
|
|
||||||
vector.y = top;
|
|
||||||
FT_Vector_Transform(&vector, &matrix);
|
|
||||||
l = r = vector.x;
|
|
||||||
t = b = vector.y;
|
|
||||||
vector.x = right;
|
|
||||||
vector.y = top;
|
|
||||||
FT_Vector_Transform(&vector, &matrix);
|
|
||||||
if (l > vector.x) l = vector.x;
|
|
||||||
if (r < vector.x) r = vector.x;
|
|
||||||
if (t < vector.y) t = vector.y;
|
|
||||||
if (b > vector.y) b = vector.y;
|
|
||||||
vector.x = right;
|
|
||||||
vector.y = bottom;
|
|
||||||
FT_Vector_Transform(&vector, &matrix);
|
|
||||||
if (l > vector.x) l = vector.x;
|
|
||||||
if (r < vector.x) r = vector.x;
|
|
||||||
if (t < vector.y) t = vector.y;
|
|
||||||
if (b > vector.y) b = vector.y;
|
|
||||||
vector.x = left;
|
|
||||||
vector.y = bottom;
|
|
||||||
FT_Vector_Transform(&vector, &matrix);
|
|
||||||
if (l > vector.x) l = vector.x;
|
|
||||||
if (r < vector.x) r = vector.x;
|
|
||||||
if (t < vector.y) t = vector.y;
|
|
||||||
if (b > vector.y) b = vector.y;
|
|
||||||
left = l;
|
|
||||||
right = r;
|
|
||||||
top = t;
|
|
||||||
bottom = b;
|
|
||||||
}
|
|
||||||
left = FLOOR(left);
|
|
||||||
right = CEIL(right);
|
|
||||||
bottom = FLOOR(bottom);
|
|
||||||
top = CEIL(top);
|
|
||||||
|
|
||||||
g->linearAdvance = face->glyph->linearHoriAdvance >> 10;
|
|
||||||
g->width = TRUNC(right-left);
|
|
||||||
g->height = TRUNC(top-bottom);
|
|
||||||
g->x = TRUNC(left);
|
|
||||||
g->y = TRUNC(top);
|
|
||||||
g->advance = TRUNC(ROUND(face->glyph->advance.x));
|
|
||||||
g->format = Format_None;
|
|
||||||
|
|
||||||
return g;
|
|
||||||
}
|
|
||||||
|
|
||||||
QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
|
QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
|
||||||
QFixed subPixelPosition,
|
QFixed subPixelPosition,
|
||||||
GlyphFormat format,
|
GlyphFormat format,
|
||||||
|
@ -343,7 +343,6 @@ protected:
|
|||||||
private:
|
private:
|
||||||
friend class QFontEngineFTRawFont;
|
friend class QFontEngineFTRawFont;
|
||||||
|
|
||||||
QFontEngineFT::Glyph *loadGlyphMetrics(QGlyphSet *set, uint glyph, GlyphFormat format) const;
|
|
||||||
int loadFlags(QGlyphSet *set, GlyphFormat format, int flags, bool &hsubpixel, int &vfactor) const;
|
int loadFlags(QGlyphSet *set, GlyphFormat format, int flags, bool &hsubpixel, int &vfactor) const;
|
||||||
|
|
||||||
GlyphFormat defaultFormat;
|
GlyphFormat defaultFormat;
|
||||||
|
Loading…
Reference in New Issue
Block a user