vcl/inc/impfontmetricdata.hxx | 2 - vcl/source/font/fontmetric.cxx | 42 ++++++++++------------------------------- vcl/source/outdev/font.cxx | 2 - vcl/source/outdev/textline.cxx | 2 - 4 files changed, 14 insertions(+), 34 deletions(-)
New commits: commit 8da2560a8ddb530abe4fb72b59ef6e18ce219d80 Author: Khaled Hosny <kha...@aliftype.com> AuthorDate: Fri Sep 30 19:11:14 2022 +0200 Commit: خالد حسني <kha...@aliftype.com> CommitDate: Fri Sep 30 20:55:18 2022 +0200 vcl: Use the same underline sizes for overlines It makes no since to have overline of different sizes than underlines, and in fonts with big ascenders (like Amiri), we end up calculating much thicker overline than underline. Change-Id: I97e9818c94e815b2eb57813ab22329bc833fd34c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140804 Tested-by: Jenkins Reviewed-by: خالد حسني <kha...@aliftype.com> diff --git a/vcl/inc/impfontmetricdata.hxx b/vcl/inc/impfontmetricdata.hxx index 0fb44a840bda..a94e41540755 100644 --- a/vcl/inc/impfontmetricdata.hxx +++ b/vcl/inc/impfontmetricdata.hxx @@ -96,7 +96,7 @@ public: tools::Long GetDoubleStrikeoutOffset2() const { return mnDStrikeoutOffset2; } void ImplInitTextLineSize( const OutputDevice* pDev ); - void ImplInitAboveTextLineSize(); + void ImplInitAboveTextLineSize( const OutputDevice* pDev ); void ImplInitFlags( const OutputDevice* pDev ); void ImplCalcLineSpacing(LogicalFontInstance *pFontInstance); void ImplInitBaselines(LogicalFontInstance *pFontInstance); diff --git a/vcl/source/font/fontmetric.cxx b/vcl/source/font/fontmetric.cxx index 3895caf7b0fb..cdae023f0b50 100644 --- a/vcl/source/font/fontmetric.cxx +++ b/vcl/source/font/fontmetric.cxx @@ -323,8 +323,10 @@ void ImplFontMetricData::ImplInitTextLineSize( const OutputDevice* pDev ) } -void ImplFontMetricData::ImplInitAboveTextLineSize() +void ImplFontMetricData::ImplInitAboveTextLineSize( const OutputDevice* pDev ) { + ImplInitTextLineSize(pDev); + tools::Long nIntLeading = mnIntLeading; // TODO: assess usage of nLeading below (changed in extleading CWS) // if no leading is available, we assume 15% of the ascent @@ -335,41 +337,19 @@ void ImplFontMetricData::ImplInitAboveTextLineSize() nIntLeading = 1; } - tools::Long nLineHeight = ((nIntLeading*25)+50) / 100; - if ( !nLineHeight ) - nLineHeight = 1; - - tools::Long nBLineHeight = ((nIntLeading*50)+50) / 100; - if ( nBLineHeight == nLineHeight ) - nBLineHeight++; - - tools::Long n2LineHeight = ((nIntLeading*16)+50) / 100; - if ( !n2LineHeight ) - n2LineHeight = 1; - tools::Long nCeiling = -mnAscent; - mnAboveUnderlineSize = nLineHeight; - mnAboveUnderlineOffset = nCeiling + (nIntLeading - nLineHeight + 1) / 2; - - mnAboveBUnderlineSize = nBLineHeight; - mnAboveBUnderlineOffset = nCeiling + (nIntLeading - nBLineHeight + 1) / 2; + mnAboveUnderlineSize = mnUnderlineSize; + mnAboveUnderlineOffset = nCeiling + (nIntLeading - mnUnderlineSize + 1) / 2; - mnAboveDUnderlineSize = n2LineHeight; - mnAboveDUnderlineOffset1 = nCeiling + (nIntLeading - 3*n2LineHeight + 1) / 2; - mnAboveDUnderlineOffset2 = nCeiling + (nIntLeading + n2LineHeight + 1) / 2; + mnAboveBUnderlineSize = mnBUnderlineSize; + mnAboveBUnderlineOffset = nCeiling + (nIntLeading - mnBUnderlineSize + 1) / 2; - tools::Long nWCalcSize = nIntLeading; - if ( nWCalcSize < 6 ) - { - if ( (nWCalcSize == 1) || (nWCalcSize == 2) ) - mnAboveWUnderlineSize = nWCalcSize; - else - mnAboveWUnderlineSize = 3; - } - else - mnAboveWUnderlineSize = ((nWCalcSize*50)+50) / 100; + mnAboveDUnderlineSize = mnDUnderlineSize; + mnAboveDUnderlineOffset1 = nCeiling + (nIntLeading - 3*mnDUnderlineSize + 1) / 2; + mnAboveDUnderlineOffset2 = nCeiling + (nIntLeading + mnDUnderlineSize + 1) / 2; + mnAboveWUnderlineSize = mnWUnderlineSize; mnAboveWUnderlineOffset = nCeiling + (nIntLeading + 1) / 2; } diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx index 51a8689e2610..ec24bc9abc6b 100644 --- a/vcl/source/outdev/font.cxx +++ b/vcl/source/outdev/font.cxx @@ -755,7 +755,7 @@ bool OutputDevice::ImplNewFont() const mpGraphics->GetFontMetric( pFontInstance->mxFontMetric, 0 ); pFontInstance->mxFontMetric->ImplInitTextLineSize( this ); - pFontInstance->mxFontMetric->ImplInitAboveTextLineSize(); + pFontInstance->mxFontMetric->ImplInitAboveTextLineSize( this ); pFontInstance->mxFontMetric->ImplInitFlags( this ); pFontInstance->mnLineHeight = pFontInstance->mxFontMetric->GetAscent() + pFontInstance->mxFontMetric->GetDescent(); diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx index b652ce34408c..a4591707b971 100644 --- a/vcl/source/outdev/textline.cxx +++ b/vcl/source/outdev/textline.cxx @@ -108,7 +108,7 @@ void OutputDevice::ImplInitTextLineSize() void OutputDevice::ImplInitAboveTextLineSize() { - mpFontInstance->mxFontMetric->ImplInitAboveTextLineSize(); + mpFontInstance->mxFontMetric->ImplInitAboveTextLineSize( this ); } void OutputDevice::ImplDrawWavePixel( tools::Long nOriginX, tools::Long nOriginY,