QString XtgScanner::getFontName(QString name) { QString fontName = name; SCFontsIterator it(PrefsManager::instance()->appPrefs.fontPrefs.AvailFonts); for ( ; it.hasNext(); it.next()) { if (it.current().family().toLower() == fontName.toLower()) { if (it.currentKey().toLower() == fontName.toLower()) // exact Match { return fontName; } else { QStringList slist = PrefsManager::instance()->appPrefs.fontPrefs.AvailFonts.fontMap[it.current().family()]; slist.sort(); if (slist.count() > 0) { int reInd = slist.indexOf("Regular"); if (reInd < 0) fontName = it.current().family() + " " + slist[0]; else fontName = it.current().family() + " " + slist[reInd]; return fontName; } } } } if (!PrefsManager::instance()->appPrefs.fontPrefs.GFontSub.contains(fontName)) { qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor)); MissingFont *dia = new MissingFont(0, fontName, doc); dia->exec(); QString fontNameR = dia->getReplacementFont(); delete dia; qApp->changeOverrideCursor(QCursor(Qt::WaitCursor)); PrefsManager::instance()->appPrefs.fontPrefs.GFontSub[fontName] = fontNameR; fontName = fontNameR; } else fontName = PrefsManager::instance()->appPrefs.fontPrefs.GFontSub[fontName]; return fontName; }
ScFace gtAction::validateFont(gtFont* font) { // Dirty hack for family Times New Roman if (font->getFamily() == "Times New") { font->setFamily("Times New Roman"); if (font->getWeight() == "Roman") font->setWeight("Regular"); } QString useFont = font->getName(); if ((useFont.isNull()) || (useFont.isEmpty())) useFont = textFrame->itemText.defaultStyle().charStyle().font().scName(); else if (prefsManager->appPrefs.fontPrefs.AvailFonts[font->getName()].isNone()) { bool found = false; // Do not empty otherwise user may be asked to replace an empty font // by font replacement dialog // useFont = ""; QString tmpName = findFontName(font); if (!tmpName.isEmpty()) { useFont = tmpName; found = true; } if (!found) { if (font->getSlant() == gtFont::fontSlants[ITALIC]) { gtFont* tmp = new gtFont(*font); tmp->setSlant(OBLIQUE); tmpName = findFontName(tmp); if (!tmpName.isEmpty()) { useFont = tmpName; found = true; } delete tmp; } else if (font->getSlant() == gtFont::fontSlants[OBLIQUE]) { gtFont* tmp = new gtFont(*font); tmp->setSlant(ITALIC); tmpName = findFontName(tmp); if (!tmpName.isEmpty()) { useFont = tmpName; found = true; } delete tmp; } if (!found) { if (!prefsManager->appPrefs.fontPrefs.GFontSub.contains(font->getName())) { MissingFont *dia = new MissingFont(0, useFont, textFrame->doc()); dia->exec(); useFont = dia->getReplacementFont(); prefsManager->appPrefs.fontPrefs.GFontSub[font->getName()] = useFont; delete dia; } else useFont = prefsManager->appPrefs.fontPrefs.GFontSub[font->getName()]; } } } if(!textFrame->doc()->UsedFonts.contains(useFont)) textFrame->doc()->AddFont(useFont); return prefsManager->appPrefs.fontPrefs.AvailFonts[useFont]; }