From 136f04119341b13226acc6566dab2a8223836d7e Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 02:01:12 +0000 Subject: [PATCH 01/16] Updates TEXT_BOLD to TEXT_WEIGHT in SettingNames.cs --- Pinta.Tools/SettingNames.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pinta.Tools/SettingNames.cs b/Pinta.Tools/SettingNames.cs index 04d9065161..ebf9246beb 100644 --- a/Pinta.Tools/SettingNames.cs +++ b/Pinta.Tools/SettingNames.cs @@ -11,7 +11,7 @@ internal static class SettingNames internal const string PAINT_BRUSH_BRUSH = "paint-brush-brush"; internal const string TEXT_FONT = "text-font"; - internal const string TEXT_BOLD = "text-bold"; + internal const string TEXT_WEIGHT = "text-weight"; internal const string TEXT_ITALIC = "text-italic"; internal const string TEXT_UNDERLINE = "text-underline"; internal const string TEXT_ALIGNMENT = "text-alignment"; From 05b3e18d52a4e0cc0dda3cce9c8602e1b35c363b Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 02:16:13 +0000 Subject: [PATCH 02/16] Allow granular selection of font weight Currently, it's only possible to select 'bold' or 'normal' for font-weight, even if the font-family has multiple available weights. This commit implements font-weight for [all supported weights in Pango](https://docs.gtk.org/Pango/enum.Weight.html). TODO: 1. Handle 'CTRL + B' shortcut. 1. Only show [font-weights supported by the font-family](https://docs.gtk.org/Pango/method.FontFamily.list_faces.html). --- Pinta.Tools/Tools/TextTool.cs | 90 +++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 14 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 29bfdc28aa..8ae4b50d78 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -125,7 +125,7 @@ public TextTool (IServiceProvider services) : base (services) private Gtk.Label font_label = null!; private Gtk.FontDialogButton font_button = null!; private Gtk.SpinButton font_size = null!; - private Gtk.ToggleButton bold_btn = null!; + private ToolBarDropDownButton weight_btn = null!; private Gtk.ToggleButton italic_btn = null!; private Gtk.ToggleButton underscore_btn = null!; private Gtk.ToggleButton left_alignment_btn = null!; @@ -192,17 +192,75 @@ protected override void OnBuildToolBar (Gtk.Box tb) tb.Append (GtkExtensions.CreateToolBarSeparator ()); - if (bold_btn == null) { - bold_btn = new Gtk.ToggleButton { - IconName = Pinta.Resources.StandardIcons.FormatTextBold, - TooltipText = Translations.GetString ("Bold"), - CanFocus = false, - Active = Settings.GetSetting (SettingNames.TEXT_BOLD, false), - }; - bold_btn.OnToggled += HandleBoldButtonToggled; + if (weight_btn == null) { + weight_btn = new ToolBarDropDownButton (); + + weight_btn.AddItem ( + Translations.GetString ("Thin" + " 100"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Thin + ); + weight_btn.AddItem ( + Translations.GetString ("Ultralight" + " 200"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Ultralight + ); + weight_btn.AddItem ( + Translations.GetString ("Light" + " 300"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Light + ); + weight_btn.AddItem ( + Translations.GetString ("Semilight" + " 350"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Semilight + ); + weight_btn.AddItem ( + Translations.GetString ("Book" + " 380"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Book + ); + weight_btn.AddItem ( + Translations.GetString ("Normal" + " 400"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Normal + ); + weight_btn.AddItem ( + Translations.GetString ("Medium" + " 500"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Medium + ); + weight_btn.AddItem ( + Translations.GetString ("Semibold" + " 600"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Semibold + ); + weight_btn.AddItem ( + Translations.GetString ("Bold" + " 700"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Bold + ); + weight_btn.AddItem ( + Translations.GetString ("Ultrabold" + " 800"), + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Ultrabold + ); + weight_btn.AddItem ( + Translations.GetString ("Heavy") + " 900", + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Heavy + ); + weight_btn.AddItem ( + Translations.GetString ("Ultraheavy") + " 1000", + Pinta.Resources.StandardIcons.FormatTextBold, + Pango.Weight.Ultraheavy + ); + + weight_btn.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_WEIGHT, 400); + weight_btn.SelectedItemChanged += HandleWeightButtonToggled; } - tb.Append (bold_btn); + tb.Append (weight_btn); if (italic_btn == null) { italic_btn = new Gtk.ToggleButton { @@ -336,8 +394,8 @@ protected override void OnSaveSettings (ISettingsService settings) if (font_button is not null) settings.PutSetting (SettingNames.TEXT_FONT, font_button.FontDesc!.ToString ()!); - if (bold_btn is not null) - settings.PutSetting (SettingNames.TEXT_BOLD, bold_btn.Active); + if (weight_btn is not null) + settings.PutSetting (SettingNames.TEXT_WEIGHT, weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Bold)); if (italic_btn is not null) settings.PutSetting (SettingNames.TEXT_ITALIC, italic_btn.Active); @@ -431,6 +489,11 @@ private void HandleItalicButtonToggled (object? sender, EventArgs e) UpdateFont (); } + private void HandleWeightButtonToggled (object? sender, EventArgs e) + { + UpdateFont (); + } + private void HandleBoldButtonToggled (object? sender, EventArgs e) { outline_width.Visible = outline_width_label.Visible = outline_sep.Visible = StrokeText; @@ -453,7 +516,7 @@ private void UpdateFont () if (workspace.HasOpenDocuments) { var font = font_button.FontDesc!.Copy ()!; // NRT: Only nullable when nullptr is passed. - font.SetWeight (bold_btn.Active ? Pango.Weight.Bold : Pango.Weight.Normal); + font.SetWeight ((Pango.Weight) weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Normal)); font.SetStyle (italic_btn.Active ? Pango.Style.Italic : Pango.Style.Normal); CurrentTextEngine.SetFont (font, Alignment, underscore_btn.Active); @@ -796,7 +859,6 @@ protected override bool OnKeyDown (Document document, ToolKeyEventArgs e) italic_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_b) { - bold_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_u) { underscore_btn.Toggle (); From 97b9996fe6e2d05f0fb72d0eda926012bf310d3e Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 02:37:33 +0000 Subject: [PATCH 03/16] TextTool - Fix default font-weight --- Pinta.Tools/Tools/TextTool.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 8ae4b50d78..4ae4fb203d 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -256,7 +256,7 @@ protected override void OnBuildToolBar (Gtk.Box tb) Pango.Weight.Ultraheavy ); - weight_btn.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_WEIGHT, 400); + weight_btn.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_WEIGHT, Pango.Weight.Normal); weight_btn.SelectedItemChanged += HandleWeightButtonToggled; } @@ -395,7 +395,7 @@ protected override void OnSaveSettings (ISettingsService settings) settings.PutSetting (SettingNames.TEXT_FONT, font_button.FontDesc!.ToString ()!); if (weight_btn is not null) - settings.PutSetting (SettingNames.TEXT_WEIGHT, weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Bold)); + settings.PutSetting (SettingNames.TEXT_WEIGHT, weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Normal)); if (italic_btn is not null) settings.PutSetting (SettingNames.TEXT_ITALIC, italic_btn.Active); From 29d78f59a60613c844393ffe180011b6c1452355 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 02:57:18 +0000 Subject: [PATCH 04/16] TextTool - Fix font-weight settings --- Pinta.Tools/Tools/TextTool.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 4ae4fb203d..732fd8447b 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -256,7 +256,7 @@ protected override void OnBuildToolBar (Gtk.Box tb) Pango.Weight.Ultraheavy ); - weight_btn.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_WEIGHT, Pango.Weight.Normal); + weight_btn.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_WEIGHT, 5); weight_btn.SelectedItemChanged += HandleWeightButtonToggled; } @@ -395,7 +395,7 @@ protected override void OnSaveSettings (ISettingsService settings) settings.PutSetting (SettingNames.TEXT_FONT, font_button.FontDesc!.ToString ()!); if (weight_btn is not null) - settings.PutSetting (SettingNames.TEXT_WEIGHT, weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Normal)); + settings.PutSetting (SettingNames.TEXT_WEIGHT, weight_btn.SelectedIndex); if (italic_btn is not null) settings.PutSetting (SettingNames.TEXT_ITALIC, italic_btn.Active); From 2c92a8aee4e98c03a7cdbffbcc1435428d49a1f4 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:44:22 +0000 Subject: [PATCH 05/16] [Text Tool] Restore 'Ctrl+B' text weight shortcut --- Pinta.Tools/Tools/TextTool.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 732fd8447b..fc497fef38 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -859,6 +859,8 @@ protected override bool OnKeyDown (Document document, ToolKeyEventArgs e) italic_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_b) { + // If current font-weight is Bold (8) or bolder, set to Normal (4). Otherwise, set to Bold (8). + weight_btn.SelectedIndex = weight_btn.SelectedIndex > 7 ? 4 : 8; UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_u) { underscore_btn.Toggle (); From 38f5ea07c4a4652a67c4cbd64ebdfcb1f13b365b Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:49:33 +0000 Subject: [PATCH 06/16] [Text tool] Github being weird --- Pinta.Tools/Tools/TextTool.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index fc497fef38..732fd8447b 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -859,8 +859,6 @@ protected override bool OnKeyDown (Document document, ToolKeyEventArgs e) italic_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_b) { - // If current font-weight is Bold (8) or bolder, set to Normal (4). Otherwise, set to Bold (8). - weight_btn.SelectedIndex = weight_btn.SelectedIndex > 7 ? 4 : 8; UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_u) { underscore_btn.Toggle (); From 32189b320d8af232901f6657a43721b1a8778909 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:50:23 +0000 Subject: [PATCH 07/16] Text Tool - Restore Ctrl B text weight shortcut --- Pinta.Tools/Tools/TextTool.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 732fd8447b..fc497fef38 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -859,6 +859,8 @@ protected override bool OnKeyDown (Document document, ToolKeyEventArgs e) italic_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_b) { + // If current font-weight is Bold (8) or bolder, set to Normal (4). Otherwise, set to Bold (8). + weight_btn.SelectedIndex = weight_btn.SelectedIndex > 7 ? 4 : 8; UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_u) { underscore_btn.Toggle (); From e88b93b3f4444b0d09e8dfcaa017bd55e1d05a93 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:45:12 +0000 Subject: [PATCH 08/16] Fix whitespace --- Pinta.Tools/Tools/TextTool.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index fc497fef38..7d34cb928a 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -516,7 +516,7 @@ private void UpdateFont () if (workspace.HasOpenDocuments) { var font = font_button.FontDesc!.Copy ()!; // NRT: Only nullable when nullptr is passed. - font.SetWeight ((Pango.Weight) weight_btn.SelectedItem.GetTagOrDefault(Pango.Weight.Normal)); + font.SetWeight ((Pango.Weight) weight_btn.SelectedItem.GetTagOrDefault (Pango.Weight.Normal)); font.SetStyle (italic_btn.Active ? Pango.Style.Italic : Pango.Style.Normal); CurrentTextEngine.SetFont (font, Alignment, underscore_btn.Active); From 5d007a29f00ace8ef679cb850f76b59a2a539114 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 17:29:35 +0000 Subject: [PATCH 09/16] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2504df82fa..e0db5b0bc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Thanks to the following contributors who worked on this release: - @spaghetti22 - @Matthieu-LAURENT39 - @jordanbrotherton +- @pedropaulosuzuki ### Added - The splatter brush now allows the minimum and maximum splatter size to be configured separately from the brush width @@ -18,6 +19,7 @@ Thanks to the following contributors who worked on this release: - Effect dialogs now hide options that are not currently relevant (#1960) - Fixed several minor UX issues in the color dialog (#1795) - The text tool now provides a separate adjustment for the font size, which doesn't require opening the font dialog (#1947, #1961) +- The text tool now allows choosing any font-weight supported by Cairo, not just Normal and Bold (#1965, #1967) ### Fixed - Fixed a bug where duplicate submenus could be produced by add-ins with effect categories that were not translated (#1933, #1935) From caeaa713c491a282d73c744064a15ec6c9275d04 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Tue, 3 Feb 2026 17:47:32 +0000 Subject: [PATCH 10/16] Text Tool - Fix translations --- Pinta.Tools/Tools/TextTool.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 7d34cb928a..dcfeff6ce8 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -196,52 +196,52 @@ protected override void OnBuildToolBar (Gtk.Box tb) weight_btn = new ToolBarDropDownButton (); weight_btn.AddItem ( - Translations.GetString ("Thin" + " 100"), + Translations.GetString ("Thin") + " 100", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Thin ); weight_btn.AddItem ( - Translations.GetString ("Ultralight" + " 200"), + Translations.GetString ("Ultralight") + " 200", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Ultralight ); weight_btn.AddItem ( - Translations.GetString ("Light" + " 300"), + Translations.GetString ("Light") + " 300", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Light ); weight_btn.AddItem ( - Translations.GetString ("Semilight" + " 350"), + Translations.GetString ("Semilight") + " 350", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Semilight ); weight_btn.AddItem ( - Translations.GetString ("Book" + " 380"), + Translations.GetString ("Book") + " 380", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Book ); weight_btn.AddItem ( - Translations.GetString ("Normal" + " 400"), + Translations.GetString ("Normal") + " 400", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Normal ); weight_btn.AddItem ( - Translations.GetString ("Medium" + " 500"), + Translations.GetString ("Medium") + " 500", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Medium ); weight_btn.AddItem ( - Translations.GetString ("Semibold" + " 600"), + Translations.GetString ("Semibold") + " 600", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Semibold ); weight_btn.AddItem ( - Translations.GetString ("Bold" + " 700"), + Translations.GetString ("Bold") + " 700", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Bold ); weight_btn.AddItem ( - Translations.GetString ("Ultrabold" + " 800"), + Translations.GetString ("Ultrabold") + " 800", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Ultrabold ); From 8cfd2981d400ca8fe52663ae95bf5fc8442edbea Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Thu, 5 Feb 2026 13:56:01 +0000 Subject: [PATCH 11/16] Text tool - Make font-weight strings more clear for translators --- Pinta.Tools/Tools/TextTool.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index dcfeff6ce8..5887230d50 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -195,61 +195,73 @@ protected override void OnBuildToolBar (Gtk.Box tb) if (weight_btn == null) { weight_btn = new ToolBarDropDownButton (); + // Translators: 'Thin' (100) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Thin") + " 100", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Thin ); + // Translators: 'Ultralight' (200) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultralight") + " 200", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Ultralight ); + // Translators: 'Light' (300) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Light") + " 300", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Light ); + // Translators: 'Semilight' (350) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Semilight") + " 350", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Semilight ); + // Translators: 'Book' (380) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Book") + " 380", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Book ); + // Translators: 'Normal' (400) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Normal") + " 400", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Normal ); + // Translators: 'Medium' (500) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Medium") + " 500", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Medium ); + // Translators: 'Semibold' (600) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Semibold") + " 600", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Semibold ); + // Translators: 'Bold' (700) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Bold") + " 700", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Bold ); + // Translators: 'Ultrabold' (800) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultrabold") + " 800", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Ultrabold ); + // Translators: 'Heavy' (900) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Heavy") + " 900", Pinta.Resources.StandardIcons.FormatTextBold, Pango.Weight.Heavy ); + // Translators: 'Ultraheavy' (1000) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultraheavy") + " 1000", Pinta.Resources.StandardIcons.FormatTextBold, @@ -346,7 +358,7 @@ protected override void OnBuildToolBar (Gtk.Box tb) fill_button.AddItem (Translations.GetString ("Fill Background"), Pinta.Resources.Icons.FillStyleBackground, 3); fill_button.SelectedIndex = Settings.GetSetting (SettingNames.TEXT_STYLE, 0); - fill_button.SelectedItemChanged += HandleBoldButtonToggled; + fill_button.SelectedItemChanged += HandleFillButtonToggled; } tb.Append (fill_button); @@ -494,7 +506,7 @@ private void HandleWeightButtonToggled (object? sender, EventArgs e) UpdateFont (); } - private void HandleBoldButtonToggled (object? sender, EventArgs e) + private void HandleFillButtonToggled (object? sender, EventArgs e) { outline_width.Visible = outline_width_label.Visible = outline_sep.Visible = StrokeText; From 9974226d9b5e90390402ca85706aaf4649b1e391 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Mon, 9 Feb 2026 14:54:14 +0000 Subject: [PATCH 12/16] [Text tool] Fix Ctrl+B shortcut changing to 'book' instead of 'normal' Index 4 (book) was used in `weight_btn.SelectedIndex > 7 ? 5 : 8`, instead of correct index 5 (normal). --- Pinta.Tools/Tools/TextTool.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 5887230d50..5c69bee9c1 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -871,8 +871,8 @@ protected override bool OnKeyDown (Document document, ToolKeyEventArgs e) italic_btn.Toggle (); UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_b) { - // If current font-weight is Bold (8) or bolder, set to Normal (4). Otherwise, set to Bold (8). - weight_btn.SelectedIndex = weight_btn.SelectedIndex > 7 ? 4 : 8; + // If current font-weight is Bold (8) or bolder, set to Normal (5). Otherwise, set to Bold (8). + weight_btn.SelectedIndex = weight_btn.SelectedIndex > 7 ? 5 : 8; UpdateFont (); } else if (e.Key.Value == Gdk.Constants.KEY_u) { underscore_btn.Toggle (); From 7020632ccda55ba5f24e37b00e75236ef5d25975 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Wed, 11 Feb 2026 02:13:40 +0000 Subject: [PATCH 13/16] Update icon resources to include new custom font-weight icons --- Pinta.Resources/Icons.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Pinta.Resources/Icons.cs b/Pinta.Resources/Icons.cs index 163fd9a733..d5c50e1bc2 100644 --- a/Pinta.Resources/Icons.cs +++ b/Pinta.Resources/Icons.cs @@ -42,7 +42,6 @@ public static class StandardIcons public const string FormatJustifyLeft = "format-justify-left-symbolic"; public const string FormatJustifyCenter = "format-justify-center-symbolic"; public const string FormatJustifyRight = "format-justify-right-symbolic"; - public const string FormatTextBold = "format-text-bold-symbolic"; public const string FormatTextItalic = "format-text-italic-symbolic"; public const string FormatTextUnderline = "format-text-underline-symbolic"; @@ -215,6 +214,12 @@ public static class Icons public const string Sampling7 = "tool-colorpicker-sampling-7x7-symbolic"; public const string Sampling9 = "tool-colorpicker-sampling-9x9-symbolic"; + public const string TextExtraLight = "text-extra-light-symbolic"; + public const string TextLight = "text-light-symbolic"; + public const string TextNormal = "text-normal-symbolic"; + public const string TextBold = "text-bold-symbolic"; + public const string TextExtraBold = "text-extra-bold-symbolic"; + public const string ToolCloneStamp = "tool-clonestamp-symbolic"; public const string ToolColorPicker = "tool-colorpicker-symbolic"; public const string ToolColorPickerPreviousTool = "go-previous-symbolic"; From 8d609b53cba78e597d639ba7b2313b6739945ad2 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Wed, 11 Feb 2026 02:13:42 +0000 Subject: [PATCH 14/16] Set custom font-weight ToolBarDropDownButton icons --- Pinta.Tools/Tools/TextTool.cs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Pinta.Tools/Tools/TextTool.cs b/Pinta.Tools/Tools/TextTool.cs index 5c69bee9c1..6bcafaa068 100644 --- a/Pinta.Tools/Tools/TextTool.cs +++ b/Pinta.Tools/Tools/TextTool.cs @@ -198,73 +198,73 @@ protected override void OnBuildToolBar (Gtk.Box tb) // Translators: 'Thin' (100) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Thin") + " 100", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextExtraLight, Pango.Weight.Thin ); // Translators: 'Ultralight' (200) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultralight") + " 200", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextExtraLight, Pango.Weight.Ultralight ); // Translators: 'Light' (300) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Light") + " 300", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextLight, Pango.Weight.Light ); // Translators: 'Semilight' (350) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Semilight") + " 350", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextLight, Pango.Weight.Semilight ); // Translators: 'Book' (380) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Book") + " 380", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextNormal, Pango.Weight.Book ); // Translators: 'Normal' (400) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Normal") + " 400", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextNormal, Pango.Weight.Normal ); // Translators: 'Medium' (500) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Medium") + " 500", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextNormal, Pango.Weight.Medium ); // Translators: 'Semibold' (600) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Semibold") + " 600", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextBold, Pango.Weight.Semibold ); // Translators: 'Bold' (700) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Bold") + " 700", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextBold, Pango.Weight.Bold ); // Translators: 'Ultrabold' (800) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultrabold") + " 800", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextExtraBold, Pango.Weight.Ultrabold ); // Translators: 'Heavy' (900) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Heavy") + " 900", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextExtraBold, Pango.Weight.Heavy ); // Translators: 'Ultraheavy' (1000) refers to the font-weight text property weight_btn.AddItem ( Translations.GetString ("Ultraheavy") + " 1000", - Pinta.Resources.StandardIcons.FormatTextBold, + Pinta.Resources.Icons.TextExtraBold, Pango.Weight.Ultraheavy ); From a70a8aa64f947d59ff6774a7cd4a0dddc9b173e6 Mon Sep 17 00:00:00 2001 From: Pedro Paulo <32345702+pedropaulosuzuki@users.noreply.github.com> Date: Wed, 11 Feb 2026 02:15:49 +0000 Subject: [PATCH 15/16] Add credits to @yioannides in the README.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71baf5d3bd..6e1f145bc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Thanks to the following contributors who worked on this release: - @Matthieu-LAURENT39 - @jordanbrotherton - @pedropaulosuzuki +- @yioannides ### Added - The splatter brush now allows the minimum and maximum splatter size to be configured separately from the brush width From 018a12596178e5377fd235c85357c171be957fc0 Mon Sep 17 00:00:00 2001 From: Cameron White Date: Mon, 23 Feb 2026 22:16:29 -0500 Subject: [PATCH 16/16] Add font weight icons to the list of contributed icons --- Pinta.Resources/icons/pinta-icons.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Pinta.Resources/icons/pinta-icons.md b/Pinta.Resources/icons/pinta-icons.md index 5abb028a2f..601d8556c5 100644 --- a/Pinta.Resources/icons/pinta-icons.md +++ b/Pinta.Resources/icons/pinta-icons.md @@ -5,3 +5,8 @@ - hicolor/16x16/actions/effects-render-voronoidiagram.png - hicolor/scalable/actions/tool-select-lasso-freeform-symbolic.png - hicolor/scalable/actions/tool-select-lasso-polygon-symbolic.svg +- hicolor/scalable/actions/text-bold-symbolic.svg +- hicolor/scalable/actions/text-extra-bold-symbolic.svg +- hicolor/scalable/actions/text-extra-light-symbolic.svg +- hicolor/scalable/actions/text-light-symbolic.svg +- hicolor/scalable/actions/text-normal-symbolic.svg