Mac: fix bugs for font selection in QFontDialog
Use localized family name and style name when selecting font with non-English locale Task-number: QTBUG-27415 Change-Id: Ie81507ed011fc096e0f5edad146e97c392e86494 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This commit is contained in:
parent
0ce317826f
commit
3c09f6bc9a
@ -595,7 +595,7 @@ QtFontFamily *QFontDatabasePrivate::family(const QString &f, bool create)
|
||||
if (res < 0)
|
||||
pos++;
|
||||
|
||||
// qDebug("adding family %s at %d total=%d", f.latin1(), pos, count);
|
||||
// qDebug() << "adding family " << f.toLatin1() << " at " << pos << " total=" << count;
|
||||
if (!(count % 8)) {
|
||||
QtFontFamily **newFamilies = (QtFontFamily **)
|
||||
realloc(families,
|
||||
|
@ -92,20 +92,16 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
|
||||
QFont newFont;
|
||||
if (cocoaFont) {
|
||||
int pSize = qRound([cocoaFont pointSize]);
|
||||
QString family(QCFString::toQString([cocoaFont familyName]));
|
||||
QString typeface(QCFString::toQString([cocoaFont fontName]));
|
||||
CTFontDescriptorRef font = CTFontCopyFontDescriptor((CTFontRef)cocoaFont);
|
||||
// QCoreTextFontDatabase::populateFontDatabase() is using localized names
|
||||
QString family = QCFString::toQString((CFStringRef) CTFontDescriptorCopyLocalizedAttribute(font, kCTFontFamilyNameAttribute, NULL));
|
||||
QString style = QCFString::toQString((CFStringRef) CTFontDescriptorCopyLocalizedAttribute(font, kCTFontStyleNameAttribute, NULL));
|
||||
|
||||
int hyphenPos = typeface.indexOf(QLatin1Char('-'));
|
||||
if (hyphenPos != -1) {
|
||||
typeface.remove(0, hyphenPos + 1);
|
||||
} else {
|
||||
typeface = QLatin1String("Normal");
|
||||
}
|
||||
|
||||
newFont = QFontDatabase().font(family, typeface, pSize);
|
||||
newFont = QFontDatabase().font(family, style, pSize);
|
||||
newFont.setUnderline(resolveFont.underline());
|
||||
newFont.setStrikeOut(resolveFont.strikeOut());
|
||||
|
||||
CFRelease(font);
|
||||
}
|
||||
return newFont;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user