View Issue Details

IDProjectCategoryView StatusLast Update
0008722ScribusFontspublic2025-05-29 06:07
Reporterberberic Assigned Toale  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status assignedResolutionopen 
Platformamd64OSDebian GNU/LinuxOS Versiontesting
Product Version1.3.5 
Summary0008722: handling lots of fonts better.
Descriptionscribus always presents a list of all available fonts (can be a lot), which makes selecting fonts tedious. There should be a way to make it easy to select the few fonts that are used in this document easily. Suggestions:

· font-select-menues only show the fonts, that are used in the document and a “others”-entry, clicking on “others” then gives a full list.

· an easy way to select per-document fontslist. In the document-settings-dialog the fontlist misses a button to deselect all (unused) fonts at the moment.
Tagsfont selection
PatchYes

Relationships

related to 0007901 new add choice to display all or used fonts in SE, preferences and styles 
related to 0008435 assignedsubik improve Font Preview 
has duplicate 0010042 closedjghali Improve Available Fonts Preference 
has duplicate 0010636 closedjghali Fewer fonts in the drop down list 
related to 0009222 new save Available as font-profile 
related to 0009346 new Inconsistent sorting of fonts in dialogs 
child of 0017535 new Metabug: fonts management for Scribus 1.8 

Activities

Mike

2010-01-18 17:40

reporter   ~0023102

Similar bugs are 0008435 and 0007901.

ale

2010-01-20 17:58

manager   ~0023118

+ 1 for the "used fonts" button...

StefanM

2011-06-27 10:13

reporter   ~0026484

Last edited: 2011-06-27 10:14

Deselecting fonts on a per-document basis is possible in the Prefs dialogue. It involves a lot of click-work.

A simple fix to this would be:

a new "Inverse Selection Button" in Prefs/Fonts.

Just deselect the few fonts you want from your hundreds of installed. Then press the new "Inverse Selection" button. Thats it. If you need more fonts later, just click them.

GarryP

2015-04-17 11:27

developer   ~0034939

If the "Document Setup / Fonts" selection was saved with the document - rather than as Scribus-wide (as it is now, on 1.4.5 OSX anyway) - the user could set-up a document with the fonts they want to be available then save it as a template. Then just select the appropriate template with the appropriate fonts when creating a new document. (For example, you could create a template for each client - or purpose - with only "their fonts" initially available.)

However, I agree that a "Used Fonts" button(?) would be great, and an "Invert Selection" button on the "Fonts" tab in "Preferences" and "Document Setup" dialogs would be nice too.

JLuc

2015-04-17 12:44

developer   ~0034940

Last edited: 2015-04-17 12:44

As long as there is a "font setup" in the "Document preferences", this dialog should only display the really used fonts and should not display the fonts that are not related to the document.

(But since changing the settings in that dialog changes a global file, it has impacts on all scribus documents : it changes both the UI and the way the PDFs are created. IMO its dangerous to keep that dialog in the document preferences)

In the "application settings" dialog, some "filtering" buttons would help the work :
- view otf or ttf or type1 fonts only
- view "use fonts" only (not "used" since this is meaningless in a global context)
- view fonts with"AR" (for example) in name only
- view subseted fonts only

GarryP

2015-04-17 13:23

developer   ~0034941

I'm of the opinion that nothing in "Document Setup" should make global changes. Changes in there should only affect the current document. If something in there affects the global environment then it should be removed as it is - at best - confusing. By all means leave it in "Preferences", but not in "Document Setup".

I'd also give my backing to more font selection/filtering techniques as you have mentioned. Text/Fonts are such a major part of Scribus that more control would seem very sensible.

Also - and this is probably stretching this particular issue, but it is related as it's about selecting fonts - a little "font preview" in the drop-down selection menu would be very useful. Something simple like what GIMP does with the little "Aa" graphic would be enough. Each menu item would then be something like "Aa <fontname> <type>". (I'm guessing that - for most users - the preview would be more useful than what the font type is.)

ale

2025-05-28 10:43

manager   ~0052666

Last edited: 2025-05-28 14:18

The attached patch adds an entry to the context menu in the fonts' document settings for setting as active only the fonts in use.

Some notes:

- The action should only be added to the document settings and not to the preferences, but I could not find a way to check if a document is set or if I'm in the document settings.
- The action is of little use, without a few other patch, but it won't harm if committed now
- There are other patches needed referenced in this ticket notes and in the linked tickets: implementing a few of them will help making the patch proposed useful): as an example, it should be possible to activate / deactivate fonts on a per document basis.
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
2010-01-17 22:25 berberic New Issue
2010-01-18 17:40 Mike Note Added: 0023102
2010-01-20 17:58 ale Note Added: 0023118
2010-07-02 03:27 christoph_s Relationship added has duplicate 0009222
2010-07-02 03:27 christoph_s Relationship deleted has duplicate 0009222
2010-07-02 03:27 christoph_s Relationship added related to 0009222
2011-06-12 17:32 jghali Relationship added has duplicate 0010042
2011-06-27 10:13 StefanM Note Added: 0026484
2011-06-27 10:14 StefanM Note Edited: 0026484
2012-03-21 14:43 jghali Relationship added has duplicate 0010636
2015-04-17 11:27 GarryP Note Added: 0034939
2015-04-17 12:44 JLuc Note Added: 0034940
2015-04-17 12:44 JLuc Note Edited: 0034940
2015-04-17 13:23 GarryP Note Added: 0034941
2016-04-04 16:15 Kunda Relationship added related to 0007901
2016-04-04 16:15 Kunda Relationship added related to 0008435
2016-04-04 16:16 Kunda Tag Attached: font selection
2016-04-05 00:24 Kunda Relationship added related to 0009346
2025-05-28 08:35 ale Assigned To => ale
2025-05-28 08:35 ale Status new => assigned
2025-05-28 10:43 ale Note Added: 0052666
2025-05-28 10:43 ale File Added: activate-used-only.diff
2025-05-28 10:43 ale Patch => Yes
2025-05-28 14:18 ale Note Edited: 0052666
2025-05-29 06:07 ale Relationship added child of 0017535