office-gobmx/svgio/inc/svgtspannode.hxx
Hossein 4e2e57b530 tdf#97663 SVGIO: Fix line spacing for <tspan>
tdf#97663 is a regression caused by the commit
701324a1e1. The previous patch caused
LO to forget the size of the font which was needed to calculate line
height based on em units.

em, px, pt, cm, in...
https://www.w3.org/Style/Examples/007/units.en.html

Accompanied with this fix is a unit test provided to avoid this
issue in the future.

The fix can be tested with:

    make CPPUNIT_TEST_NAME="testTdf97663" -sr \
        CppunitTest_svgio

The em_units.svg is opened with Firefox, Chrome and Inkscape and the
rendering in LibreOffice is compatible with the rendering in these
applications.

Change-Id: Idaecd9fb18101f7925fe2a917f7fc3fe7257ebc5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127130
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-12-24 02:00:18 +01:00

53 lines
1.9 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#pragma once
#include "svgcharacternode.hxx"
#include "svgstyleattributes.hxx"
namespace svgio::svgreader
{
class SvgTspanNode final : public SvgNode
{
private:
/// use styles
SvgStyleAttributes maSvgStyleAttributes;
/// variable scan values, dependent of given XAttributeList
SvgTextPositions maSvgTextPositions;
public:
SvgTspanNode(
SvgDocument& rDocument,
SvgNode* pParent);
virtual ~SvgTspanNode() override;
virtual const SvgStyleAttributes* getSvgStyleAttributes() const override;
virtual void parseAttribute(const OUString& rTokenName, SVGToken aSVGToken, const OUString& aContent) override;
double getCurrentFontSize() const;
/// access to SvgTextPositions
const SvgTextPositions& getSvgTextPositions() const { return maSvgTextPositions; }
};
} // end of namespace svgio::svgreader
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */