mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-23 18:32:55 +00:00
require Freetype version 2.1.10+
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
parent
33bf38c255
commit
21b2fd740d
2 changed files with 14 additions and 32 deletions
|
@ -283,7 +283,8 @@ set_package_properties(X11 PROPERTIES
|
|||
TYPE REQUIRED
|
||||
)
|
||||
|
||||
find_package(Freetype)
|
||||
# v2.1.10+ required for FT_GlyphSlot_Embolden()
|
||||
find_package(Freetype 2.1.10)
|
||||
set_package_properties(Freetype PROPERTIES
|
||||
PURPOSE "Required for fonts configuration support"
|
||||
DESCRIPTION "Freely available software library to render fonts"
|
||||
|
|
|
@ -79,26 +79,6 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
/*
|
||||
* Freetype 2.1.7 and earlier used width/height
|
||||
* for matching sizes in the BDF and PCF loaders.
|
||||
* This has been fixed for 2.1.8.
|
||||
*/
|
||||
#if (FREETYPE_MAJOR*10000+FREETYPE_MINOR*100+FREETYPE_PATCH) >= 20105
|
||||
#define X_SIZE(face,i) ((face)->available_sizes[i].x_ppem)
|
||||
#define Y_SIZE(face,i) ((face)->available_sizes[i].y_ppem)
|
||||
#else
|
||||
#define X_SIZE(face,i) ((face)->available_sizes[i].width << 6)
|
||||
#define Y_SIZE(face,i) ((face)->available_sizes[i].height << 6)
|
||||
#endif
|
||||
|
||||
/* FreeType 2.1.10 starts to provide FT_GlyphSlot_Embolden */
|
||||
#if (FREETYPE_MAJOR*10000+FREETYPE_MINOR*100+FREETYPE_PATCH) >= 20110
|
||||
#define Q_FT_GLYPHSLOT_EMBOLDEN(slot) FT_GlyphSlot_Embolden(slot)
|
||||
#else
|
||||
#define Q_FT_GLYPHSLOT_EMBOLDEN(slot)
|
||||
#endif
|
||||
|
||||
#define FLOOR(x) ((x) & -64)
|
||||
#define CEIL(x) (((x)+63) & -64)
|
||||
#define TRUNC(x) ((x) >> 6)
|
||||
|
@ -273,7 +253,8 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
|
|||
}
|
||||
|
||||
if (!FT_IS_SCALABLE(newFreetype->face) && newFreetype->face->num_fixed_sizes == 1)
|
||||
FT_Set_Char_Size (face, X_SIZE(newFreetype->face, 0), Y_SIZE(newFreetype->face, 0), 0, 0);
|
||||
FT_Set_Char_Size (face, newFreetype->face->available_sizes[0].x_ppem,
|
||||
newFreetype->face->available_sizes[0].y_ppem, 0, 0);
|
||||
# if 0
|
||||
FcChar8 *name;
|
||||
FcPatternGetString(pattern, FC_FAMILY, 0, &name);
|
||||
|
@ -337,18 +318,18 @@ void QFreetypeFace::computeSize(const QFontDef &fontDef, int *xsize, int *ysize,
|
|||
if (!(face->face_flags & FT_FACE_FLAG_SCALABLE)) {
|
||||
int best = 0;
|
||||
for (int i = 1; i < face->num_fixed_sizes; i++) {
|
||||
if (qAbs(*ysize - Y_SIZE(face,i)) <
|
||||
qAbs (*ysize - Y_SIZE(face, best)) ||
|
||||
(qAbs (*ysize - Y_SIZE(face, i)) ==
|
||||
qAbs (*ysize - Y_SIZE(face, best)) &&
|
||||
qAbs (*xsize - X_SIZE(face, i)) <
|
||||
qAbs (*xsize - X_SIZE(face, best)))) {
|
||||
if (qAbs(*ysize - face->available_sizes[i].y_ppem) <
|
||||
qAbs (*ysize - face->available_sizes[best].y_ppem) ||
|
||||
(qAbs (*ysize - face->available_sizes[i].y_ppem) ==
|
||||
qAbs (*ysize - face->available_sizes[best].y_ppem) &&
|
||||
qAbs (*xsize - face->available_sizes[i].x_ppem) <
|
||||
qAbs (*xsize - face->available_sizes[best].x_ppem))) {
|
||||
best = i;
|
||||
}
|
||||
}
|
||||
if (FT_Set_Char_Size (face, X_SIZE(face, best), Y_SIZE(face, best), 0, 0) == 0) {
|
||||
*xsize = X_SIZE(face, best);
|
||||
*ysize = Y_SIZE(face, best);
|
||||
if (FT_Set_Char_Size (face, face->available_sizes[best].x_ppem, face->available_sizes[best].y_ppem, 0, 0) == 0) {
|
||||
*xsize = face->available_sizes[best].x_ppem;
|
||||
*ysize = face->available_sizes[best].y_ppem;
|
||||
} else {
|
||||
int err = 1;
|
||||
if (!(face->face_flags & FT_FACE_FLAG_SCALABLE) && ysize == 0 && face->num_fixed_sizes >= 1) {
|
||||
|
@ -840,7 +821,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
|
|||
return 0;
|
||||
|
||||
FT_GlyphSlot slot = face->glyph;
|
||||
if (embolden) Q_FT_GLYPHSLOT_EMBOLDEN(slot);
|
||||
if (embolden) FT_GlyphSlot_Embolden(slot);
|
||||
FT_Library library = qt_getFreetype();
|
||||
|
||||
info.xOff = TRUNC(ROUND(slot->advance.x));
|
||||
|
|
Loading…
Add table
Reference in a new issue