View Issue Details

IDProjectCategoryView StatusLast Update
0017948ScribusUser Interfacepublic2026-09-01 09:08
Reporterqirat Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status newResolutionopen 
PlatformLinuxOSFedora WorkstationOS Version44
Product Version1.7.4.svn 
Summary0017948: [patch] Typography Preferences UI Polish
Description#UI changes
- Replaces loose bold headings/dividers with proper group boxes.
- Uses a compact two-column layout:
  - Left: Subscript, Superscript, Small Caps
  - Right: Underline, Strikeout, Automatic Line Spacing
- Uses FormWidget for compact controls with small centered labels.
- Tightens spacing and removes unnecessary fixed separators/spacers.
- Keeps Optical Margins unchanged.
- Mnemonics added to group titles.
Additional Information#Files touched
- scribus/ui/preferences/prefs_typographybase.ui

Behaviour
- No preference defaults changed.
- No typography calculations or document behavior changed.
- UI-only, very low risk.
Tags#please_test
Attached Files
typography-prefs-ui-current.png (342,278 bytes)   
typography-prefs-ui-current.png (342,278 bytes)   
typography-prefs-ui-proposed.png (316,469 bytes)   
typography-prefs-ui-proposed.png (316,469 bytes)   
typography-preferences-layout-v1.2.patch (30,996 bytes)   
Index: scribus/ui/preferences/prefs_typographybase.ui
===================================================================
--- scribus/ui/preferences/prefs_typographybase.ui	(revision 27785)
+++ scribus/ui/preferences/prefs_typographybase.ui	(working copy)
@@ -52,46 +52,59 @@
       <attribute name="title">
        <string>Typography</string>
       </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout">
+      <layout class="QHBoxLayout" name="typographyLayout">
+       <property name="spacing">
+        <number>12</number>
+       </property>
        <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_4">
-         <item>
-          <layout class="QVBoxLayout" name="verticalLayout_5">
-           <item>
-            <widget class="QLabel" name="label_2">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Subscript</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_3">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_3">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_5">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+      <widget class="QWidget" name="leftTypographyWidget" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="leftTypographyLayout">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <property name="spacing">
+         <number>8</number>
+        </property>
+       <item>
+        <widget class="QGroupBox" name="subscriptGroupBox">
+         <property name="title">
+          <string>&amp;Subscript</string>
+         </property>
+         <layout class="QHBoxLayout" name="subscriptLayout">
+          <item>
+           <widget class="FormWidget" name="subscriptDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="subscriptDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="subscriptDisplacementSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -101,7 +114,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="subscriptScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="subscriptScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="subscriptScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -114,66 +148,50 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_6">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_3">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Superscript</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_2">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_2">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_7">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="subscriptGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="superscriptGroupBox">
+         <property name="title">
+          <string>Su&amp;perscript</string>
+         </property>
+         <layout class="QHBoxLayout" name="superscriptLayout">
+          <item>
+           <widget class="FormWidget" name="superscriptDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="superscriptDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="superscriptDisplacementSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -183,14 +201,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_8">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="superscriptScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="superscriptScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="superscriptScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -204,58 +236,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_2">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_14">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Small Caps</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_5">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_5">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_15">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="superscriptGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="smallCapsGroupBox">
+         <property name="title">
+          <string>Small &amp;Caps</string>
+         </property>
+         <layout class="QHBoxLayout" name="smallCapsLayout">
+          <item>
+           <widget class="FormWidget" name="smallCapsScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="smallCapsScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="smallcapsScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -266,70 +289,90 @@
               </widget>
              </item>
             </layout>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Orientation::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Policy::Fixed</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>9</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QVBoxLayout" name="verticalLayout_3">
-           <item>
-            <widget class="QLabel" name="label_4">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Underline</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_1">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_1">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_9">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_10">
-               <property name="text">
-                <string>Line Width:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
-              <widget class="QDoubleSpinBox" name="underlineLineWidthSpinBox">
+           </widget>
+          </item>
+          <item>
+           <spacer name="smallCapsGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+        <item>
+         <spacer name="leftTypographyVerticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Orientation::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+       </item>
+       <item>
+      <widget class="QWidget" name="rightTypographyWidget" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="rightTypographyLayout">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <property name="spacing">
+         <number>8</number>
+        </property>
+       <item>
+        <widget class="QGroupBox" name="underlineGroupBox">
+         <property name="title">
+          <string>&amp;Underline</string>
+         </property>
+         <layout class="QHBoxLayout" name="underlineLayout">
+          <item>
+           <widget class="FormWidget" name="underlineDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="underlineDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QDoubleSpinBox" name="underlineDisplacementSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
                </property>
@@ -347,8 +390,29 @@
                </property>
               </widget>
              </item>
-             <item row="0" column="1">
-              <widget class="QDoubleSpinBox" name="underlineDisplacementSpinBox">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="underlineLineWidthFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Width</string>
+            </property>
+            <layout class="QHBoxLayout" name="underlineLineWidthLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QDoubleSpinBox" name="underlineLineWidthSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
                </property>
@@ -367,58 +431,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_11">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Strikeout</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_4">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_4">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_12">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="underlineGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="strikeoutGroupBox">
+         <property name="title">
+          <string>Stri&amp;keout</string>
+         </property>
+         <layout class="QHBoxLayout" name="strikeoutLayout">
+          <item>
+           <widget class="FormWidget" name="strikeoutDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="strikeoutDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QDoubleSpinBox" name="strikeoutDisplacementSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
@@ -437,14 +492,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_13">
-               <property name="text">
-                <string>Line Width:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="strikeoutLineWidthFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Width</string>
+            </property>
+            <layout class="QHBoxLayout" name="strikeoutLineWidthLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QDoubleSpinBox" name="strikeoutLineWidthSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
@@ -464,58 +533,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_6">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_17">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Automatic Line Spacing</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_6">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_6">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_19">
-               <property name="text">
-                <string>Line Spacing:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="strikeoutGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="automaticLineSpacingGroupBox">
+         <property name="title">
+          <string>&amp;Automatic Line Spacing</string>
+         </property>
+         <layout class="QHBoxLayout" name="automaticLineSpacingLayout">
+          <item>
+           <widget class="FormWidget" name="automaticLineSpacingFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Spacing</string>
+            </property>
+            <layout class="QHBoxLayout" name="automaticLineSpacingValueLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="automaticLineSpacingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -529,20 +589,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-          </layout>
-         </item>
-        </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="automaticLineSpacingGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+        <item>
+         <spacer name="rightTypographyVerticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Orientation::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
        </item>
        <item>
-        <spacer name="verticalSpacer_3">
+        <spacer name="typographyHorizontalSpacer">
          <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
+          <enum>Qt::Orientation::Horizontal</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
-           <width>20</width>
-           <height>34</height>
+           <width>0</width>
+           <height>20</height>
           </size>
          </property>
         </spacer>
@@ -580,6 +669,12 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>FormWidget</class>
+   <extends>QWidget</extends>
+   <header>ui/widgets/form_widget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
    <class>OpticalMarginEditor</class>
    <extends>QWidget</extends>
    <header>ui/opticalmargineditor.h</header>
PatchYes

Activities

qirat

2026-09-01 09:05

reporter   ~0054389

With things that later come to light when you commented on one such post, here is the revised version v1.8:

- Consolidates Typography and Optical margins into one scrollable preferences page.
- Uses balanced two-column typography groups with Optical margins full-width below.
- Improves Optical margins workflow with clearer Add Rule, code-point feedback and tooltips.
- Adds sentence-case headings, mnemonics, revised TAB order, and accessibility names.
- Preserves existing preference data and behaviour; changes focus on layout, navigation and clarity.
typography-preferences-layout-v1.8.patch (44,784 bytes)   
Index: scribus/ui/preferences/prefs_typographybase.ui
===================================================================
--- scribus/ui/preferences/prefs_typographybase.ui	(revision 27785)
+++ scribus/ui/preferences/prefs_typographybase.ui	(working copy)
@@ -44,54 +44,97 @@
     </widget>
    </item>
    <item>
-    <widget class="QTabWidget" name="tabWidget">
-     <property name="currentIndex">
-      <number>0</number>
+    <widget class="QScrollArea" name="typographyScrollArea">
+     <property name="frameShape">
+      <enum>QFrame::Shape::NoFrame</enum>
      </property>
-     <widget class="QWidget" name="tabTypography">
-      <attribute name="title">
-       <string>Typography</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout">
+     <property name="widgetResizable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="typographyScrollContents">
+      <layout class="QVBoxLayout" name="typographyContentLayout" stretch="0,1">
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>6</number>
+       </property>
+       <property name="rightMargin">
+        <number>6</number>
+       </property>
+       <property name="bottomMargin">
+        <number>6</number>
+       </property>
+       <property name="spacing">
+        <number>12</number>
+       </property>
        <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_4">
-         <item>
-          <layout class="QVBoxLayout" name="verticalLayout_5">
-           <item>
-            <widget class="QLabel" name="label_2">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Subscript</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_3">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_3">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_5">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+        <widget class="QWidget" name="typographyControlsWidget" native="true">
+         <layout class="QHBoxLayout" name="typographyLayout" stretch="1,1">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <property name="spacing">
+           <number>12</number>
+          </property>
+       <item>
+      <widget class="QWidget" name="leftTypographyWidget" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="leftTypographyLayout">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <property name="spacing">
+         <number>8</number>
+        </property>
+       <item>
+        <widget class="QGroupBox" name="subscriptGroupBox">
+         <property name="title">
+          <string>&amp;Subscript</string>
+         </property>
+         <layout class="QHBoxLayout" name="subscriptLayout">
+          <item>
+           <widget class="FormWidget" name="subscriptDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="subscriptDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="subscriptDisplacementSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -101,7 +144,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="subscriptScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="subscriptScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="subscriptScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -114,66 +178,50 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_6">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_3">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Superscript</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_2">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_2">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_7">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="subscriptGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="superscriptGroupBox">
+         <property name="title">
+          <string>Su&amp;perscript</string>
+         </property>
+         <layout class="QHBoxLayout" name="superscriptLayout">
+          <item>
+           <widget class="FormWidget" name="superscriptDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="superscriptDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="superscriptDisplacementSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -183,14 +231,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_8">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="superscriptScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="superscriptScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="superscriptScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -204,58 +266,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_2">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_14">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Small Caps</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_5">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_5">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_15">
-               <property name="text">
-                <string>Scaling:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="superscriptGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="smallCapsGroupBox">
+         <property name="title">
+          <string>Small &amp;caps</string>
+         </property>
+         <layout class="QHBoxLayout" name="smallCapsLayout">
+          <item>
+           <widget class="FormWidget" name="smallCapsScalingFormWidget">
+            <property name="label" stdset="0">
+             <string>Scaling</string>
+            </property>
+            <layout class="QHBoxLayout" name="smallCapsScalingLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="smallcapsScalingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -266,70 +319,77 @@
               </widget>
              </item>
             </layout>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Orientation::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Policy::Fixed</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>9</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QVBoxLayout" name="verticalLayout_3">
-           <item>
-            <widget class="QLabel" name="label_4">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Underline</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_1">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_1">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_9">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_10">
-               <property name="text">
-                <string>Line Width:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
-              <widget class="QDoubleSpinBox" name="underlineLineWidthSpinBox">
+           </widget>
+          </item>
+          <item>
+           <spacer name="smallCapsGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       </layout>
+      </widget>
+       </item>
+       <item>
+      <widget class="QWidget" name="rightTypographyWidget" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="rightTypographyLayout">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <property name="spacing">
+         <number>8</number>
+        </property>
+       <item>
+        <widget class="QGroupBox" name="underlineGroupBox">
+         <property name="title">
+          <string>&amp;Underline</string>
+         </property>
+         <layout class="QHBoxLayout" name="underlineLayout">
+          <item>
+           <widget class="FormWidget" name="underlineDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="underlineDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QDoubleSpinBox" name="underlineDisplacementSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
                </property>
@@ -347,8 +407,29 @@
                </property>
               </widget>
              </item>
-             <item row="0" column="1">
-              <widget class="QDoubleSpinBox" name="underlineDisplacementSpinBox">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="underlineLineWidthFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Width</string>
+            </property>
+            <layout class="QHBoxLayout" name="underlineLineWidthLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QDoubleSpinBox" name="underlineLineWidthSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
                </property>
@@ -367,58 +448,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_11">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Strikeout</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_4">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_4">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_12">
-               <property name="text">
-                <string>Displacement:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="underlineGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="strikeoutGroupBox">
+         <property name="title">
+          <string>Stri&amp;keout</string>
+         </property>
+         <layout class="QHBoxLayout" name="strikeoutLayout">
+          <item>
+           <widget class="FormWidget" name="strikeoutDisplacementFormWidget">
+            <property name="label" stdset="0">
+             <string>Displacement</string>
+            </property>
+            <layout class="QHBoxLayout" name="strikeoutDisplacementLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QDoubleSpinBox" name="strikeoutDisplacementSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
@@ -437,14 +509,28 @@
                </property>
               </widget>
              </item>
-             <item row="1" column="0">
-              <widget class="QLabel" name="label_13">
-               <property name="text">
-                <string>Line Width:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="1" column="1">
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="FormWidget" name="strikeoutLineWidthFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Width</string>
+            </property>
+            <layout class="QHBoxLayout" name="strikeoutLineWidthLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QDoubleSpinBox" name="strikeoutLineWidthSpinBox">
                <property name="wrapping">
                 <bool>true</bool>
@@ -464,58 +550,49 @@
               </widget>
              </item>
             </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer_6">
-             <property name="orientation">
-              <enum>Qt::Orientation::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Policy::Fixed</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_17">
-             <property name="font">
-              <font>
-               <bold>true</bold>
-              </font>
-             </property>
-             <property name="text">
-              <string>Automatic Line Spacing</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="Line" name="line_6">
-             <property name="orientation">
-              <enum>Qt::Orientation::Horizontal</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <layout class="QFormLayout" name="formLayout_6">
-             <property name="fieldGrowthPolicy">
-              <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
-             </property>
-             <property name="formAlignment">
-              <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
-             </property>
-             <item row="0" column="0">
-              <widget class="QLabel" name="label_19">
-               <property name="text">
-                <string>Line Spacing:</string>
-               </property>
-              </widget>
-             </item>
-             <item row="0" column="1">
+           </widget>
+          </item>
+          <item>
+           <spacer name="strikeoutGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="automaticLineSpacingGroupBox">
+         <property name="title">
+          <string>&amp;Automatic line spacing</string>
+         </property>
+         <layout class="QHBoxLayout" name="automaticLineSpacingLayout">
+          <item>
+           <widget class="FormWidget" name="automaticLineSpacingFormWidget">
+            <property name="label" stdset="0">
+             <string>Line Spacing</string>
+            </property>
+            <layout class="QHBoxLayout" name="automaticLineSpacingValueLayout">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
               <widget class="QSpinBox" name="automaticLineSpacingSpinBox">
                <property name="suffix">
                 <string> %</string>
@@ -529,31 +606,36 @@
               </widget>
              </item>
             </layout>
-           </item>
-          </layout>
-         </item>
-        </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="automaticLineSpacingGroupBoxSpacer">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
        </item>
-       <item>
-        <spacer name="verticalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Orientation::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>34</height>
-          </size>
-         </property>
-        </spacer>
+       </layout>
+      </widget>
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="tabOpticalMargins">
-      <attribute name="title">
-       <string>Optical Margins</string>
-      </attribute>
-      <layout class="QGridLayout" name="gridLayout">
+       </item>
+       <item>
+     <widget class="QGroupBox" name="opticalMarginsGroupBox">
+      <property name="title">
+       <string>Optical &amp;margins</string>
+      </property>
+      <layout class="QGridLayout" name="opticalMarginsLayout">
        <property name="leftMargin">
         <number>8</number>
        </property>
@@ -574,12 +656,21 @@
        </item>
       </layout>
      </widget>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
   </layout>
  </widget>
  <customwidgets>
   <customwidget>
+   <class>FormWidget</class>
+   <extends>QWidget</extends>
+   <header>ui/widgets/form_widget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
    <class>OpticalMarginEditor</class>
    <extends>QWidget</extends>
    <header>ui/opticalmargineditor.h</header>
@@ -589,13 +680,13 @@
  <tabstops>
   <tabstop>subscriptDisplacementSpinBox</tabstop>
   <tabstop>subscriptScalingSpinBox</tabstop>
-  <tabstop>superscriptDisplacementSpinBox</tabstop>
-  <tabstop>superscriptScalingSpinBox</tabstop>
-  <tabstop>smallcapsScalingSpinBox</tabstop>
   <tabstop>underlineDisplacementSpinBox</tabstop>
   <tabstop>underlineLineWidthSpinBox</tabstop>
+  <tabstop>superscriptDisplacementSpinBox</tabstop>
+  <tabstop>superscriptScalingSpinBox</tabstop>
   <tabstop>strikeoutDisplacementSpinBox</tabstop>
   <tabstop>strikeoutLineWidthSpinBox</tabstop>
+  <tabstop>smallcapsScalingSpinBox</tabstop>
   <tabstop>automaticLineSpacingSpinBox</tabstop>
  </tabstops>
  <resources/>
Index: scribus/ui/preferences/prefs_typography.cpp
===================================================================
--- scribus/ui/preferences/prefs_typography.cpp	(revision 27785)
+++ scribus/ui/preferences/prefs_typography.cpp	(working copy)
@@ -35,16 +35,16 @@
 	strikeoutDisplacementSpinBox->setSpecialValueText(autoText);
 	strikeoutLineWidthSpinBox->setSpecialValueText(autoText);
 
-	subscriptDisplacementSpinBox->setToolTip( tr( "Displacement below the baseline of the normal font on a line" ) );
-	subscriptScalingSpinBox->setToolTip( tr( "Relative size of the subscript compared to the normal font" ) );
-	superscriptDisplacementSpinBox->setToolTip( tr( "Displacement above the baseline of the font on a line" ) );
-	superscriptScalingSpinBox->setToolTip( tr( "Relative size of the superscript compared to the normal font" ) );
-	underlineDisplacementSpinBox->setToolTip( tr( "Displacement below the baseline of the normal font expressed as a percentage of the fonts descender" ) );
-	underlineLineWidthSpinBox->setToolTip( tr( "Line width expressed as a percentage of the font size" ) );
-	strikeoutDisplacementSpinBox->setToolTip( tr( "Displacement above the baseline of the normal font expressed as a percentage of the fonts ascender" ) );
-	strikeoutLineWidthSpinBox->setToolTip( tr( "Line width expressed as a percentage of the font size" ) );
-	smallcapsScalingSpinBox->setToolTip( tr( "Relative size of the small caps font compared to the normal font" ) );
-	automaticLineSpacingSpinBox->setToolTip( tr( "Percentage increase over the font size for the line spacing" ) );
+	subscriptDisplacementSpinBox->setToolTip( tr( "Position subscript below the baseline" ) );
+	subscriptScalingSpinBox->setToolTip( tr( "Size subscript relative to normal text" ) );
+	superscriptDisplacementSpinBox->setToolTip( tr( "Position superscript above the baseline" ) );
+	superscriptScalingSpinBox->setToolTip( tr( "Size superscript relative to normal text" ) );
+	underlineDisplacementSpinBox->setToolTip( tr( "Position as % of font descender; Auto uses font metrics" ) );
+	underlineLineWidthSpinBox->setToolTip( tr( "Width as % of font size; Auto uses font metrics" ) );
+	strikeoutDisplacementSpinBox->setToolTip( tr( "Position as % of font ascender; Auto uses font metrics" ) );
+	strikeoutLineWidthSpinBox->setToolTip( tr( "Width as % of font size; Auto uses font metrics" ) );
+	smallcapsScalingSpinBox->setToolTip( tr( "Size small caps relative to normal text" ) );
+	automaticLineSpacingSpinBox->setToolTip( tr( "Line spacing as a percentage of font size" ) );
 }
 
 void Prefs_Typography::updateParagraphStyles(QString removedID, QString newID)
Index: scribus/ui/opticalmargineditor.ui
===================================================================
--- scribus/ui/opticalmargineditor.ui	(revision 27785)
+++ scribus/ui/opticalmargineditor.ui	(working copy)
@@ -44,14 +44,17 @@
      <item>
       <widget class="QComboBox" name="comboSets">
        <property name="toolTip">
-        <string>Current selected rule set</string>
+        <string>Select a rule set</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QToolButton" name="buttonResetSet">
+       <property name="accessibleName">
+        <string>Restore selected rule set</string>
+       </property>
        <property name="toolTip">
-        <string>Reset current set to default values.</string>
+        <string>Restore selected rule set to defaults</string>
        </property>
        <property name="text">
         <string/>
@@ -60,8 +63,11 @@
      </item>
      <item>
       <widget class="QToolButton" name="buttonAddNewSet">
+       <property name="accessibleName">
+        <string>Create custom rule set</string>
+       </property>
        <property name="toolTip">
-        <string>Add new rule set</string>
+        <string>Create a custom rule set</string>
        </property>
        <property name="text">
         <string/>
@@ -70,8 +76,11 @@
      </item>
      <item>
       <widget class="QToolButton" name="buttonRemoveSet">
+       <property name="accessibleName">
+        <string>Delete selected rule set</string>
+       </property>
        <property name="toolTip">
-        <string>Remove current selected rule set</string>
+        <string>Delete selected rule set</string>
        </property>
        <property name="text">
         <string/>
@@ -79,19 +88,6 @@
       </widget>
      </item>
      <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Orientation::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>16</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>Sets:</string>
@@ -100,8 +96,11 @@
      </item>
      <item>
       <widget class="QToolButton" name="buttonResetAllSets">
+       <property name="accessibleName">
+        <string>Restore default rule sets</string>
+       </property>
        <property name="toolTip">
-        <string>Load default rule sets. Replaces current rule sets</string>
+        <string>Replace all rule sets with defaults</string>
        </property>
        <property name="text">
         <string/>
@@ -110,47 +109,71 @@
      </item>
      <item>
       <widget class="QToolButton" name="buttonLoadMissingDefaults">
+       <property name="accessibleName">
+        <string>Add missing default rule sets</string>
+       </property>
        <property name="toolTip">
-        <string>Add missing default sets to current sets.</string>
+        <string>Add missing default rule sets</string>
        </property>
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QTableWidget" name="tableWidget"/>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <spacer name="addRuleSpacer">
+       <property name="orientation">
+        <enum>Qt::Orientation::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Policy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>12</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
      <item>
       <widget class="QToolButton" name="buttonAddNewRow">
        <property name="toolTip">
-        <string>Add a new rule</string>
+        <string>Add an empty row for a custom rule</string>
        </property>
        <property name="text">
-        <string/>
+        <string>Add Rule</string>
+       </property>
+       <property name="toolButtonStyle">
+        <enum>Qt::ToolButtonStyle::ToolButtonTextBesideIcon</enum>
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1">
-     <property name="spacing">
-      <number>4</number>
-     </property>
      <item>
-      <widget class="QLabel" name="labelUnicode">
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Orientation::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>16</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelCodePoint">
        <property name="text">
-        <string>Unicode:</string>
+        <string>Select a character to view code point</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QLabel" name="labelUnicodePreview">
+      <widget class="QLabel" name="labelCodePointPreview">
+       <property name="visible">
+        <bool>false</bool>
+       </property>
        <property name="text">
         <string/>
        </property>
@@ -158,15 +181,20 @@
      </item>
     </layout>
    </item>
+   <item>
+    <widget class="QTableWidget" name="tableWidget"/>
+   </item>
   </layout>
  </widget>
  <tabstops>
   <tabstop>comboSets</tabstop>
+  <tabstop>buttonResetSet</tabstop>
   <tabstop>buttonAddNewSet</tabstop>
   <tabstop>buttonRemoveSet</tabstop>
   <tabstop>buttonResetAllSets</tabstop>
-  <tabstop>tableWidget</tabstop>
+  <tabstop>buttonLoadMissingDefaults</tabstop>
   <tabstop>buttonAddNewRow</tabstop>
+  <tabstop>tableWidget</tabstop>
  </tabstops>
  <resources/>
  <connections/>
Index: scribus/ui/opticalmargineditor.cpp
===================================================================
--- scribus/ui/opticalmargineditor.cpp	(revision 27785)
+++ scribus/ui/opticalmargineditor.cpp	(working copy)
@@ -78,6 +78,8 @@
 	spinL->setMinimum(0.0);
 	spinL->setMaximum(100.0);
 	spinL->setNewUnit(unit);
+	spinL->setAccessibleName(tr("Left optical margin"));
+	spinL->setToolTip(tr("Amount to hang characters into the left margin"));
 	if (unit == SC_PERCENT)
 	{
 		spinL->setDecimals(0);
@@ -93,6 +95,8 @@
 	spinR->setMinimum(0.0);
 	spinR->setMaximum(100.0);
 	spinR->setNewUnit(unit);
+	spinR->setAccessibleName(tr("Right optical margin"));
+	spinR->setToolTip(tr("Amount to hang characters into the right margin"));
 	if (unit == SC_PERCENT)
 	{
 		spinR->setDecimals(0);
@@ -110,11 +114,15 @@
 	comboUnit->addItem("mm", scUnit::SC_MM);
 	comboUnit->addItem("in", scUnit::SC_IN);
 	comboUnit->setCurrentIndex(comboUnit->findData(unit));
+	comboUnit->setAccessibleName(tr("Optical margin unit"));
+	comboUnit->setToolTip(tr("Unit for the left and right values"));
 	connect(comboUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUnit()));
 
 	QLineEdit *lineStr = new QLineEdit();
 	lineStr->setText(s);
 	lineStr->setMinimumWidth(50);
+	lineStr->setAccessibleName(tr("Rule characters"));
+	lineStr->setToolTip(tr("Characters affected by this rule"));
 	connect(lineStr, SIGNAL(textChanged(QString)), this, SLOT(updateMarginRules()));
 	connect(lineStr, SIGNAL(selectionChanged()), this, SLOT(updatePreview()));
 
@@ -122,6 +130,8 @@
 	buttonRemove->setText("");
 	buttonRemove->setIconSize(QSize(16, 16));
 	buttonRemove->setIcon(im.loadIcon("delete"));
+	buttonRemove->setAccessibleName(tr("Remove rule"));
+	buttonRemove->setToolTip(tr("Remove this rule"));
 	buttonRemove->adjustSize();
 	connect(buttonRemove, SIGNAL(clicked()), this, SLOT(removeCurrentRow()));
 
@@ -150,6 +160,9 @@
 {
 	tableWidget->clearContents();
 	tableWidget->setRowCount(0);
+	labelCodePoint->setText(tr("Select a character to view code point"));
+	labelCodePointPreview->clear();
+	labelCodePointPreview->setVisible(false);
 
 	if (m_sets.isEmpty())
 		qWarning() << Q_FUNC_INFO << "Empty optical margin sets.";
@@ -387,14 +400,18 @@
 		return;
 
 	QString str = lineEdit->selectedText();
+	const bool hasSelection = !str.isEmpty();
+	labelCodePointPreview->setVisible(hasSelection);
 
-	if (str.length() < 1)
+	if (!hasSelection)
 	{
-		labelUnicodePreview->setText("");
+		labelCodePoint->setText(tr("Select a character to view code point"));
+		labelCodePointPreview->clear();
 		return;
 	}
 
-	labelUnicodePreview->setText(stringToUnicode(str[str.length() - 1]));
+	labelCodePoint->setText(tr("Code point:"));
+	labelCodePointPreview->setText(stringToUnicode(str[str.length() - 1]));
 }
 
 void OpticalMarginEditor::updateUnit()
@@ -446,6 +463,8 @@
 	retranslateUi(this);
 
 	tableWidget->setHorizontalHeaderLabels(QStringList {tr("Left"), tr("Right"), tr("Unit"), tr("Characters"), ""});
+	if (labelCodePointPreview->isVisible())
+		labelCodePoint->setText(tr("Code point:"));
 
 	updateSetSelector();
 }

qirat

2026-09-01 09:07

reporter   ~0054390

qirat

2026-09-01 09:08

reporter   ~0054391

I am hoping two columns for the first part here would be ok since they are wide/empty enough to feel visually less cluttered.

Issue History

Date Modified Username Field Change
2026-08-27 13:18 qirat New Issue
2026-08-27 13:18 qirat File Added: typography-prefs-ui-current.png
2026-08-27 13:18 qirat File Added: typography-prefs-ui-proposed.png
2026-08-27 13:18 qirat File Added: typography-preferences-layout-v1.2.patch
2026-08-27 13:18 qirat Tag Attached: #please_test
2026-09-01 09:05 qirat Note Added: 0054389
2026-09-01 09:05 qirat File Added: typography-preferences-layout-v1.8.patch
2026-09-01 09:07 qirat Note Added: 0054390
2026-09-01 09:07 qirat File Added: typography-prefs-ui-PROPOSED-v1.8.png
2026-09-01 09:08 qirat Note Added: 0054391