diff --git a/scribus/ui/fontlistview.cpp b/scribus/ui/fontlistview.cpp
index b07ca9046..2fd35e512 100644
--- a/scribus/ui/fontlistview.cpp
+++ b/scribus/ui/fontlistview.cpp
@@ -7,6 +7,8 @@ for which a new license (GPL+exception) is in place.
 #include "fontlistview.h"
 #include "fontlistmodel.h"
 
+#include "commonstrings.h"
+
 #include <QMenu>
 #include <QModelIndex>
 #include <QPoint>
@@ -17,7 +19,8 @@ FontListView::FontListView(QWidget * parent)
 	activateAction(new QAction(tr("&Activate"), this)),
 	deactivateAction(new QAction(tr("&Deactivate"), this)),
 	subsetAction(new QAction(tr("&Subset"), this)),
-	notSubsetAction(new QAction(tr("Do &not subset"), this))
+	notSubsetAction(new QAction(tr("Do &not subset"), this)),
+	activateUsedOnlyAction(new QAction(tr("Only activate &used fonts"), this))
 {
 	setSelectionMode(QAbstractItemView::ExtendedSelection);
 	setSelectionBehavior(QAbstractItemView::SelectRows);
@@ -32,11 +35,14 @@ FontListView::FontListView(QWidget * parent)
 	contextMenu->addAction(deactivateAction);
 	contextMenu->addAction(subsetAction);
 	contextMenu->addAction(notSubsetAction);
+	contextMenu->addSeparator();
+	contextMenu->addAction(activateUsedOnlyAction);
 
 	connect(activateAction, &QAction::triggered, this, &FontListView::activateSelection);
 	connect(deactivateAction, &QAction::triggered, this, &FontListView::deactivateSelection);
 	connect(subsetAction, &QAction::triggered, this, &FontListView::subsetSelection);
 	connect(notSubsetAction, &QAction::triggered, this, &FontListView::notSubsetSelection);
+	connect(activateUsedOnlyAction, &QAction::triggered, this, &FontListView::activateUsedOnly);
 
 	connect(this, &QTableView::customContextMenuRequested, this, &FontListView::customContextMenuRequested);
 }
@@ -119,3 +125,19 @@ void FontListView::notSubsetSelection()
 		fontModel->setData(fontModel->index(selectedRow.row(), FontListModel::FontSubset), Qt::Unchecked, Qt::CheckStateRole);
 	}
 }
+
+void FontListView::activateUsedOnly()
+{
+	FontListModel* fontModel = qobject_cast<FontListModel*>(model());
+	for (int i = 0; i < fontModel->rowCount(); i++)
+	{
+		if (fontModel->data(fontModel->index(i, FontListModel::FontInDoc)).toString() == CommonStrings::trYes)
+		{
+			fontModel->setData(fontModel->index(i, FontListModel::FontUsable), Qt::Checked, Qt::CheckStateRole);
+		}
+		else
+		{
+			fontModel->setData(fontModel->index(i, FontListModel::FontUsable), Qt::Unchecked, Qt::CheckStateRole);
+		}
+	}
+}
diff --git a/scribus/ui/fontlistview.h b/scribus/ui/fontlistview.h
index bbf0dc744..78224717d 100644
--- a/scribus/ui/fontlistview.h
+++ b/scribus/ui/fontlistview.h
@@ -38,10 +38,12 @@ class SCRIBUS_API FontListView : public QTableView
 		QAction* deactivateAction;
 		QAction* subsetAction;
 		QAction* notSubsetAction;
+		QAction* activateUsedOnlyAction;
 		void activateSelection();
 		void deactivateSelection();
 		void subsetSelection();
 		void notSubsetSelection();
+		void activateUsedOnly();
 };
 
 #endif
