summaryrefslogtreecommitdiffstats
path: root/src/sp-flowtext.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2016-06-01 12:21:37 +0000
committertavmjong-free <tavmjong@free.fr>2016-06-01 12:21:37 +0000
commit7a77adc9fc73f43544bc23f300d2abd382fda67c (patch)
treeb4bebb9a9c7ddfcd0b7cf6cc5a1ad323010bdaf8 /src/sp-flowtext.cpp
parent[Bug #1508988] Calligraphy tutorial: things that might need an update. (diff)
downloadinkscape-7a77adc9fc73f43544bc23f300d2abd382fda67c.tar.gz
inkscape-7a77adc9fc73f43544bc23f300d2abd382fda67c.zip
Use CSS 'strut' as minimum value of CSS line box height.
(bzr r14935)
Diffstat (limited to 'src/sp-flowtext.cpp')
-rw-r--r--src/sp-flowtext.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp
index b87507e18..51fb3ae89 100644
--- a/src/sp-flowtext.cpp
+++ b/src/sp-flowtext.cpp
@@ -30,6 +30,8 @@
#include "text-editing.h"
#include "sp-text.h"
+#include "libnrtype/font-instance.h"
+
#include "livarot/Shape.h"
#include "display/drawing-text.h"
@@ -339,6 +341,26 @@ void SPFlowtext::_buildLayoutInput(SPObject *root, Shape const *exclusion_shape,
bool with_indent = false;
if (dynamic_cast<SPFlowpara *>(root)) {
+
+ layout.strut.reset();
+ if (style) {
+ font_instance *font = font_factory::Default()->FaceFromStyle( style );
+ if (font) {
+ font->FontMetrics(layout.strut.ascent, layout.strut.descent, layout.strut.xheight);
+ font->Unref();
+ }
+ layout.strut *= style->font_size.computed;
+ if (style->line_height.normal ) {
+ layout.strut.computeEffective( Inkscape::Text::Layout::LINE_HEIGHT_NORMAL );
+ } else if (style->line_height.unit == SP_CSS_UNIT_NONE) {
+ layout.strut.computeEffective( style->line_height.computed );
+ } else {
+ if( style->font_size.computed > 0.0 ) {
+ layout.strut.computeEffective( style->line_height.computed/style->font_size.computed );
+ }
+ }
+ }
+
// emulate par-indent with the first char's kern
SPObject *t = root;
SPFlowtext *ft = NULL;