- dropped wide character and string support
- dropped network interfaces management support
- dropped no-op touch devices support
+ - dropped bitmap fonts support
- some additions have been made:
- JSON document handler
const QFont font = qvariant_cast<QFont>(vm->variantProperty(property)->value());
antialiasing->setAttribute(QLatin1String("enumNames"), m_aliasingEnumNames);
- antialiasing->setValue(antialiasingToIndex(font.styleStrategy()));
+ antialiasing->setValue(antialiasingToIndex(font.hintingPreference()));
property->addSubProperty(antialiasing);
m_propertyToAntialiasing[property] = antialiasing;
return true;
}
- int FontPropertyManager::antialiasingToIndex(QFont::StyleStrategy antialias)
+ int FontPropertyManager::antialiasingToIndex(QFont::HintingPreference antialias)
{
switch (antialias) {
- case QFont::PreferDefault: return 0;
- case QFont::NoAntialias: return 1;
- case QFont::PreferAntialias: return 2;
+ case QFont::PreferDefaultHinting: return 0;
+ case QFont::PreferNoHinting: return 1;
+ case QFont::PreferVerticalHinting: return 2;
+ case QFont::PreferFullHinting: return 3;
default: break;
}
return 0;
}
- QFont::StyleStrategy FontPropertyManager::indexToAntialiasing(int idx)
+ QFont::HintingPreference FontPropertyManager::indexToAntialiasing(int idx)
{
switch (idx) {
- case 0: return QFont::PreferDefault;
- case 1: return QFont::NoAntialias;
- case 2: return QFont::PreferAntialias;
+ case 0: return QFont::PreferDefaultHinting;
+ case 1: return QFont::PreferNoHinting;
+ case 2: return QFont::PreferVerticalHinting;
+ case 3: return QFont::PreferFullHinting;
}
- return QFont::PreferDefault;
+ return QFont::PreferDefaultHinting;
}
unsigned FontPropertyManager::fontFlag(int idx)
}
QtVariantProperty *fontProperty = vm->variantProperty(antialiasingProperty);
- const QFont::StyleStrategy newValue = indexToAntialiasing(value.toInt());
+ const QFont::HintingPreference newValue = indexToAntialiasing(value.toInt());
QFont font = qvariant_cast<QFont>(fontProperty->value());
- const QFont::StyleStrategy oldValue = font.styleStrategy();
+ const QFont::HintingPreference oldValue = font.hintingPreference();
if (newValue == oldValue)
return Unchanged;
- font.setStyleStrategy(newValue);
+ font.setHintingPreference(newValue);
fontProperty->setValue(QVariant::fromValue(font));
return Changed;
}
QtVariantProperty *antialiasing = vm->variantProperty(antialiasingProperty);
if (antialiasing) {
QFont font = qvariant_cast<QFont>(value);
- antialiasing->setValue(antialiasingToIndex(font.styleStrategy()));
+ antialiasing->setValue(antialiasingToIndex(font.hintingPreference()));
}
}
}
void removeAntialiasingProperty(QtProperty *);
void updateModifiedState(QtProperty *property, const QVariant &value);
- static int antialiasingToIndex(QFont::StyleStrategy antialias);
- static QFont::StyleStrategy indexToAntialiasing(int idx);
+ static int antialiasingToIndex(QFont::HintingPreference antialias);
+ static QFont::HintingPreference indexToAntialiasing(int idx);
static unsigned fontFlag(int idx);
PropertyToPropertyMap m_propertyToAntialiasing;
painter()->save();
painter()->setRenderHint(QPainter::Antialiasing,
bool((painter()->renderHints() & QPainter::TextAntialiasing)
- && !(painter()->font().styleStrategy() & QFont::NoAntialias)));
+ && !(painter()->font().hintingPreference() & QFont::PreferNoHinting)));
painter()->fillPath(path, state->pen().brush());
painter()->restore();
}
\value TextAntialiasing Indicates that the engine should antialias
text if possible. To forcibly disable antialiasing for text, do not
- use this hint. Instead, set QFont::NoAntialias on your font's style
- strategy.
+ use this hint. Instead, set QFont::PreferNoHinting on your font's
+ hint preferences.
\value SmoothPixmapTransform Indicates that the engine should use
a smooth pixmap transformation algorithm (such as bilinear) rather
The following strategies are available:
- \value PreferDefault the default style strategy. It does not prefer
- any type of font.
- \value PreferBitmap prefers bitmap fonts (as opposed to outline
- fonts).
- \value PreferOutline prefers outline fonts (as opposed to bitmap fonts).
- \value NoAntialias don't antialias the fonts.
- \value PreferAntialias antialias if possible.
+ \value PreferDefault the default style strategy with no preferences.
Any of these may be OR-ed with one of these flags:
public:
enum StyleStrategy {
PreferDefault = 0x0001,
- PreferBitmap = 0x0002,
- PreferOutline = 0x0004,
- PreferAntialias = 0x0008,
- NoAntialias = 0x0010,
- ForceIntegerMetrics = 0x0020
+ ForceIntegerMetrics = 0x0002
};
enum HintingPreference {
void setHintingPreference(HintingPreference hintingPreference);
HintingPreference hintingPreference() const;
- // dupicated from QFontInfo
+ // duplicated from QFontInfo
bool exactMatch() const;
QFont &operator=(const QFont &);
QString foundry;
QString style;
bool fixedpitch;
- bool scalable;
bool italic;
bool bold;
int weight;
int weight_value = FC_WEIGHT_MEDIUM;
int spacing_value = FC_PROPORTIONAL;
FcChar8 *style_value = nullptr;
- FcBool scalable = FcTrue;
+ FcBool scalable = FcFalse;
double pixel_size = 0;
int slant_value = FC_SLANT_ROMAN;
if (FcPatternGetString(fonts->fonts[i], FC_FAMILY, 0, &family_value) != FcResultMatch)
continue;
+ if (FcPatternGetBool(fonts->fonts[i], FC_SCALABLE, 0, &scalable) != FcResultMatch || scalable != FcTrue)
+ continue;
if (FcPatternGetString(fonts->fonts[i], FC_FOUNDRY, 0, &foundry_value) != FcResultMatch)
foundry_value = nullptr;
weight_value = FC_WEIGHT_MEDIUM;
if (FcPatternGetInteger (fonts->fonts[i], FC_SPACING, 0, &spacing_value) != FcResultMatch)
spacing_value = FC_PROPORTIONAL;
- if (FcPatternGetBool(fonts->fonts[i], FC_SCALABLE, 0, &scalable) != FcResultMatch)
- scalable = FcTrue;
if (FcPatternGetString(fonts->fonts[i], FC_STYLE, 0, &style_value) != FcResultMatch)
style_value = nullptr;
FcPatternGetDouble(fonts->fonts[i], FC_PIXEL_SIZE, 0, &pixel_size);
fontfamily.foundry = QString::fromUtf8((const char *)foundry_value);
fontfamily.style = fontstyle;
fontfamily.fixedpitch = (spacing_value >= FC_MONO);
- fontfamily.scalable = scalable;
fontfamily.italic = (slant_value >= FC_SLANT_ITALIC);
fontfamily.bold = (weight_value >= FC_WEIGHT_BOLD); // or FC_WEIGHT_DEMIBOLD?
fontfamily.weight = weight_value;
|| (!style.isEmpty() && !isStyleMatch(fontfamily.style, style))) {
continue;
}
- result = fontfamily.scalable;
+ result = true;
break;
}
return result;
|| !isStyleMatch(fontfamily.style, style)) {
continue;
}
- if (fontfamily.pointsize != pointSize && !fontfamily.scalable) {
- continue;
- }
result = QFont(fontfamily.family, pointSize, fontfamily.weight, fontfamily.italic);
result.setStyleName(fontfamily.style);
|| !isStyleMatch(fontfamily.style, style)) {
continue;
}
- if (fontfamily.scalable) {
- result = standardSizes();
- } else {
- result.append(fontfamily.pointsize);
- }
+ result = standardSizes();
break;
}
qSort(result);
: QFont::StyleNormal);
- FcBool scalable;
- if (FcPatternGetBool(pattern, FC_SCALABLE, 0, &scalable) != FcResultMatch)
- scalable = false;
- if (scalable) {
- fontDef.stretch = request.stretch;
- fontDef.style = request.style;
- } else {
- int width;
- if (FcPatternGetInteger(pattern, FC_WIDTH, 0, &width) == FcResultMatch)
- fontDef.stretch = width;
- else
- fontDef.stretch = 100;
- }
+ fontDef.stretch = request.stretch;
+ fontDef.style = request.style;
int spacing;
if (FcPatternGetInteger(pattern, FC_SPACING, 0, &spacing) == FcResultMatch) {
FcPatternDel(pattern, FC_PIXEL_SIZE);
FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
- if (qt_x11Data->display && QX11Info::appDepth(screen) <= 8) {
- FcPatternDel(pattern, FC_ANTIALIAS);
- // can't do antialiasing on 8bpp
- FcPatternAddBool(pattern, FC_ANTIALIAS, false);
- } else if (request.styleStrategy & (QFont::PreferAntialias|QFont::NoAntialias)) {
- FcPatternDel(pattern, FC_ANTIALIAS);
- FcPatternAddBool(pattern, FC_ANTIALIAS,
- !(request.styleStrategy & QFont::NoAntialias));
- }
-
if (script != QUnicodeTables::Common && specialLanguagesTbl[script]) {
Q_ASSERT(script < QUnicodeTables::ScriptCount);
FcLangSet *ls = FcLangSetCreate();
pitch_value = FC_MONO;
FcPatternAddInteger(pattern, FC_SPACING, pitch_value);
}
- FcPatternAddBool(pattern, FC_OUTLINE, !(request.styleStrategy & QFont::PreferBitmap));
- if (request.styleStrategy & (QFont::PreferOutline|QFont::PreferAntialias)) {
- FcPatternAddBool(pattern, FC_SCALABLE, true);
- }
+ FcPatternAddBool(pattern, FC_OUTLINE, true);
+ FcPatternAddBool(pattern, FC_SCALABLE, true);
qt_addPatternProps(pattern, fp->screen, script, request);
<< (f->elementKerning() ? "true" : "false") << ");\n";
}
if (f->hasElementAntialiasing()) {
- m_output << m_indent << fontName << ".setStyleStrategy("
- << (f->elementAntialiasing() ? "QFont::PreferDefault" : "QFont::NoAntialias") << ");\n";
+ m_output << m_indent << fontName << ".setHintingPreference("
+ << (f->elementAntialiasing() ? "QFont::PreferDefaultHinting" : "QFont::PreferNoHinting") << ");\n";
}
if (f->hasElementStyleStrategy()) {
m_output << m_indent << fontName << ".setStyleStrategy(QFont::"
if (font->hasElementKerning())
f.setKerning(font->elementKerning());
if (font->hasElementAntialiasing())
- f.setStyleStrategy(font->elementAntialiasing() ? QFont::PreferDefault : QFont::NoAntialias);
+ f.setHintingPreference(font->elementAntialiasing() ? QFont::PreferDefaultHinting : QFont::PreferNoHinting);
if (font->hasElementStyleStrategy()) {
f.setStyleStrategy(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QFont::StyleStrategy>("styleStrategy", font->elementStyleStrategy().toLatin1()));
}
// void QFont::setStyleStrategy(StyleStrategy)
obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferDefault));
QCOMPARE(QFont::StyleStrategy(QFont::PreferDefault), obj1.styleStrategy());
- obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferBitmap));
- QCOMPARE(QFont::StyleStrategy(QFont::PreferBitmap), obj1.styleStrategy());
- obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferOutline));
- QCOMPARE(QFont::StyleStrategy(QFont::PreferOutline), obj1.styleStrategy());
- obj1.setStyleStrategy(QFont::StyleStrategy(QFont::PreferAntialias));
- QCOMPARE(QFont::StyleStrategy(QFont::PreferAntialias), obj1.styleStrategy());
- obj1.setStyleStrategy(QFont::StyleStrategy(QFont::NoAntialias));
- QCOMPARE(QFont::StyleStrategy(QFont::NoAntialias), obj1.styleStrategy());
+ obj1.setStyleStrategy(QFont::StyleStrategy(QFont::ForceIntegerMetrics));
+ QCOMPARE(QFont::StyleStrategy(QFont::ForceIntegerMetrics), obj1.styleStrategy());
}
tst_QFont::tst_QFont()
// test the setters
QCOMPARE(format.font().styleStrategy(), QFont::PreferDefault);
- format.setFontStyleStrategy(QFont::PreferOutline);
- QCOMPARE(format.font().styleStrategy(), QFont::PreferOutline);
+ format.setFontStyleStrategy(QFont::ForceIntegerMetrics);
+ QCOMPARE(format.font().styleStrategy(), QFont::ForceIntegerMetrics);
// test setting properties through setFont()
QFont font;
- font.setStyleStrategy(QFont::PreferAntialias);
+ font.setHintingPreference(QFont::PreferVerticalHinting);
format.setFont(font);
- QCOMPARE(format.font().styleStrategy(), QFont::PreferAntialias);
+ QCOMPARE(format.font().hintingPreference(), QFont::PreferVerticalHinting);
// test kerning
format.setFontKerning(false);
// Draw text
if (option->levelOfDetail >= 2) {
QFont font("Times", 10);
- font.setStyleStrategy(QFont::PreferOutline);
+ font.setHintingPreference(QFont::PreferFullHinting);
painter->setFont(font);
painter->save();
painter->scale(0.1, 0.1);