diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-12-21 14:15:59 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-12-22 10:12:01 +0100 |
commit | 39a57fa8c047227060915534e64c4e90affa4b1a (patch) | |
tree | f022a7168e65674f2930b14787e8cabe964162c4 /sw/source/ui | |
parent | a3bc9dc51104d01ec203b8e2d5767dd055a42b58 (diff) |
tdf#144862 explore alternatives to writer's on-screen glyph positioning
writer does glyph position adjusting to try and split the difference of
the "printing" positions and "screen" positions.
it seems to have been there from the initial import
commit 84a3db80b4fd66c6854b3135b5f69b61fd828e62
Date: Mon Sep 18 23:08:29 2000 +0000
initial import
we seem to sync with the printing positions after each whitespace so
each initial glyph after whitespace is a stable position and is the
'printing' position while each following glyph is in a position which is
somewhere between the 'printing' position and 'screen' position. Which
leads to noticeably unstable positions of text during editing at various
zoom levels and without a clear rationale for the heuristic.
GlyphPositioningMode::Classic, the original mode which remains the
default.
GlyphPositioningMode::PreferLayout, takes the vcl provided print
positions and just uses those unmodified for screen layout like editeng
does.
GlyphPositioningMode::ClassicInspired, which is similar to
GlyphPositioningMode::Classic in using 'printing' positions for the
start of runs, but using 'screen' positions for run content.
GlyphPositioningMode::PreferReadability, replace the 'printing'
positions with the screen-optimized positions for all content.
use tools, options, writer, view, glyph positioning to change
Change-Id: I6677af973268bc586d825c7fbf0b483aaf651ca0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127089
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source/ui')
-rw-r--r-- | sw/source/ui/config/optpage.cxx | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx index 30a3c4cac6e4..6cfe9b99d1c6 100644 --- a/sw/source/ui/config/optpage.cxx +++ b/sw/source/ui/config/optpage.cxx @@ -91,6 +91,7 @@ SwContentOptPage::SwContentOptPage(weld::Container* pPage, weld::DialogControlle , m_xVRulerRightCBox(m_xBuilder->weld_check_button("vrulerright")) , m_xVMetric(m_xBuilder->weld_combo_box("vrulercombobox")) , m_xSmoothCBox(m_xBuilder->weld_check_button("smoothscroll")) + , m_xGlyphPosModeLB(m_xBuilder->weld_combo_box("glyphposmode")) , m_xGrfCB(m_xBuilder->weld_check_button("graphics")) , m_xTableCB(m_xBuilder->weld_check_button("tables")) , m_xDrwCB(m_xBuilder->weld_check_button("drawings")) @@ -219,6 +220,7 @@ void SwContentOptPage::Reset(const SfxItemSet* rSet) m_xShowChangesInMargin->set_active(pElemAttr->m_bShowChangesInMargin); m_xFieldHiddenCB->set_active( pElemAttr->m_bFieldHiddenText ); m_xFieldHiddenParaCB->set_active( pElemAttr->m_bShowHiddenPara ); + m_xGlyphPosModeLB->set_active(static_cast<int>(pElemAttr->m_eGlyphPositioningMode)); } m_xMetricLB->set_active(-1); lcl_SelectMetricLB(*m_xMetricLB, SID_ATTR_METRIC, *rSet); @@ -246,6 +248,7 @@ bool SwContentOptPage::FillItemSet(SfxItemSet* rSet) aElem.m_bShowChangesInMargin = m_xShowChangesInMargin->get_active(); aElem.m_bFieldHiddenText = m_xFieldHiddenCB->get_active(); aElem.m_bShowHiddenPara = m_xFieldHiddenParaCB->get_active(); + aElem.m_eGlyphPositioningMode = static_cast<GlyphPositioningMode>(m_xGlyphPosModeLB->get_active()); bool bRet = !pOldAttr || aElem != *pOldAttr; if(bRet) |