View Issue Details

IDProjectCategoryView StatusLast Update
0017546ScribusFontspublic2025-05-30 22:42
Reporterale Assigned Toale  
PrioritynormalSeverityfeatureReproducibilityN/A
Status assignedResolutionopen 
Product Version1.7.1.svn 
Summary0017546: [SUSPENDED] Document setup: deactivate unused fonts
DescriptionThe attached patch deactivates the fonts that are not used in the document.

While it does do its work, it's currently useless, since Scribus does not manage the fonts on a document basis.

I'm attaching the patch as a reference for future work, when Scribus eventually will be able to show different fonts for each document.
TagsNo tags attached.
PatchNo

Activities

ale

2025-05-30 15:22

manager   ~0052688

activate-used-only.diff (2,988 bytes)   
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
activate-used-only.diff (2,988 bytes)   

Issue History

Date Modified Username Field Change
2025-05-30 15:13 ale New Issue
2025-05-30 15:15 ale Assigned To => ale
2025-05-30 15:15 ale Status new => assigned
2025-05-30 15:15 ale Summary Document setup: deactivate unused fonts => [SUSPENDED] Document setup: deactivate unused fonts
2025-05-30 15:22 ale Note Added: 0052688
2025-05-30 15:22 ale File Added: activate-used-only.diff