142 Commits
Author SHA1 Message Date
Khaled Hosny 02c7caae9a svgio: font-variation-settings is an inherited property
It is inherited per CSS Fonts, so the children of a group must inherit
it when set on the group.

Change-Id: I3a7f1c58b249e0d647c3b8a15f9e2043b7d6c891
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209212
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-08-17 22:51:42 +02:00
Karthik 2e4112e55a svg: Correctly import "baseline-shift"
If the `baseline-shift` is a percentage it should be imported relative
to the font-size. Currently it's being imported relative to the parent's
`baseline-shift`

reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/baseline-shift

Change-Id: I5443e4ce748b423d074e0ca03bb4172607bd52ac
Signed-off-by: Karthik <karthik.godha@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3097
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
(cherry picked from commit 0e1af2c9f8e95f14deb0e4643bef90cf98065aa5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205780
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-28 09:28:05 +02:00
Khaled Hosny 1a571fde09 tdf#118792: Add support for font-variation-settings in SVG import
Change-Id: Iaae0426667a3d9357a3c714c6c63f52f79f06706
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203286
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-04-08 10:09:39 +02:00
Xisco Fauli 99d19aebd3 tdf#168372: remove surrounding apostrophes in font-family
Change-Id: I94ef4ae8aa5aa7aa27602e959f80eb17c83679ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197864
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-01-23 11:32:59 +01:00
Caolán McNamara 50b4e6d6b4 drop CJK text from systemLanguage switch example
because we run this test with set_non_application_font_use=abort so we
don't expect any glyph substitution, and the default setup is without
any bundled Japanese font.

Change-Id: I2e7ead7404fbacb768c06502a52cde629c1a1116
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195407
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2025-12-12 10:41:46 +01:00
Xisco Fauli f127f708f6 tdf#168452: support unicode-bidi in svg
Before this change, getBiDiStrong() was never used
to manipulate the text

Change-Id: I9d6a2e8b79d27126902f2be84174c641ec71c28c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191123
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-09-18 16:34:18 +02:00
Xisco Fauli 4d9a323a83 tdf#168378: invert text anchor in RTL
Change-Id: Ia9b7e526ab20cbcdb521f965a5a2dc0726894209
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191018
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-09-16 15:28:30 +02:00
Xisco Fauli 4efae74abc tdf#168421: support RTL text direction in svg
Change-Id: Iba8853d131bf88be3cc94003a73ffe545cf62004
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190978
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-09-15 22:39:35 +02:00
Xisco Fauli 42e566654a tdf#167147: Support transparent fill color
Change-Id: I5a38a52f2720f58bc2762d328fb6a5e4090c6dde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186780
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-06-21 16:17:43 +02:00
Xisco Fauli 1ad1b3e833 tdf#164434: svgio: Add unittest
Change-Id: Id66f344c785f1771debcc8bd2e09c8a04da4c989
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180165
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2025-01-13 12:26:17 +01:00
Xisco Fauli 16684eb4ba tdf#163212: context-fill/context-stroke can also use gradients
Change-Id: Ic6f7f5e0817d8f5fccee64938004aa899bde47dc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174382
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2024-10-02 14:31:47 +02:00
Xisco Fauli 8c5f93ee35 tdf#161985: getOpacity is also called from other places
Partially revert 56039daae4
"tdf#149673: only check opacity from parent..." to make
getOpacity behave as before and move the new behaviour
of getOpacity inside add_postProcess

Change-Id: If475cddbc4967308fa06adacda621cb3790c6f70
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170376
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2024-07-11 17:09:43 +02:00
Xisco Fauli 1a7c927f6f tdf#161213: fill can use context-stroke and vice versa
Change-Id: Id127bd4943ff1b67915d1de3ba4fcf93dab21423
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168774
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-06-13 14:47:33 +02:00
Xisco Fauli 3b0f96a077 tdf#155651: Add support for "context-fill"
Change-Id: I6f96cc7c059ece5f9401fc0ae552cf279e53109c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167230
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2024-05-06 22:02:01 +02:00
Xisco Fauli d75a37a582 tdf#155651: Add support for "context-stroke"
Change-Id: Ib4f4a7b644d0d6c6b36e31b80fd7adc18999110d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167024
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-03 11:50:42 +02:00
Xisco Fauli 98935eef13 tdf#159661, tdf#160773: svgio: Add unittest
Change-Id: I2d0b96f13e02ac81b97ea347889c76770c22a989
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166509
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-23 14:05:04 +02:00
Xisco Fauli 851f60697d tdf#159660: also add normal blend filter
Change-Id: I3edc7495975618357f002536857a11dcc72cc0b9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166460
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 18:43:08 +02:00
Xisco Fauli 1097686ebd tdf#160782: convert to bitmapEx from 0,0 to width,height
This is the way it's done everywhere.
Partially revert 4b6e0f2c88
"tdf#160726, tdf#48062: Simplify how BitmapExs are created"

Change-Id: I15fea0b6855a65da7cb48b24fc00ba303e33dcf8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166456
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 17:38:15 +02:00
Xisco Fauli 41368edc6e tdf#159660: Add support for lighten mode in feBlend
Change-Id: I17471a9c70a38d05de5ad476f817285fb2438e5a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166429
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 15:20:16 +02:00
Xisco Fauli a9f1b70527 tdf#159660: Add support for darken mode in feBlend
Change-Id: I56862163b7bf1177120081c95ab7851a5fc4019b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166428
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 14:55:44 +02:00
Xisco Fauli fdf3027a0e tdf#159660: Add support for multiply mode in feBlend
Change-Id: I03230e122a10dd6ada6af357c674c278b6b99d9e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166427
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 14:55:37 +02:00
Xisco Fauli 357e390be4 tdf#159660: premultiply colors for screen blend
This is needed after 4b6e0f2c88
"tdf#160726, tdf#48062: Simplify how BitmapExs are created"
Otherwise, only the common area is displayed

Change-Id: I40c798380049e62df8729c4acdb5db50d988d8e1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166426
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 13:31:44 +02:00
Xisco Fauli 4b6e0f2c88 tdf#160726, tdf#48062: Simplify how BitmapExs are created
In my initial approach, I tranformed the primitive2DContainers
before converting them to BitmapEx. This caused circles like
https://bugs.documentfoundation.org/attachment.cgi?id=193790
not to be displayed.
Simplify how BitmapExs are created by just using the range both
primitive2DContainers have in common. This way, DrawBitmapInRect
can be dropped now

Change-Id: I2401dc87b98e04b9cf9f5ebade2b5622d884fc3a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166391
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-22 11:53:41 +02:00
Xisco Fauli 01479c742f tdf#160721: nothing is displayed in case of wrong 'in' reference
Change-Id: I746ec8a12dba7832241693dac7f20788a2fa85bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166267
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-04-19 09:08:25 +02:00
Mike Kaganski 86a8a3a43b tdf#160594: Use the recommended fallback of 0.5em for ex in font-size
This fixes the error of identical treatment of em and ex in font-size,
which violated https://drafts.csswg.org/css-values-4/#font-relative-length.
The fix uses the fallback of 0.5em for ex, similar to the code used in
SvgNumber::solveNonPercentage. A follow-up should implement the correct
use of "x-height of the first available font".

Change-Id: Id9d581994e158d629d9752299ad93ac7e9fe4cad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166234
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-18 18:21:15 +02:00
Mike Kaganski e275726861 tdf#160593: make sure to use current element's font size for em unit
According to https://drafts.csswg.org/css-values-4/#font-relative-length
em is "equal to the computed value of the font-size property of the element
on which it is used". This means, that for an element that defines its own
font-size, attributes like 'dy' using em refer to the new font-size, not to
inherited font-size.

Change-Id: Ie5a013df99a68edddf466e4c0ee5311f6219fcb2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166233
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-18 18:21:09 +02:00
Xisco Fauli 0a2535ceb0 tdf#160386: Add support for switch element
For now, only use language tag, meaning if
there is a file like in the unittest with

<text systemLanguage="en-us">Howdy!</text>
<text systemLanguage="en-gb">Wotcha!</text>
<text systemLanguage="en-au">G'day!</text>
<text systemLanguage="en">Hello!</text>

"Hello!" with be displayed in a en_AU system locale

This patch partially reverts 13a41e7a12
"tdf#150124: do nothing when parent is of unkown type"
making 0dfd8288a8
"ofz#60384 Direct-leak" no longer necessary

Change-Id: Ifc73bc69aa997088dc0a2b11d7d30446303fa3b3

Change-Id: I885ef0f2c44b86196881fe55a963db2e5c7eb1be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165394
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-27 23:44:40 +01:00
Xisco Fauli 6b15374d18 tdf#156579: svgio: Add unittest
Change-Id: I77ab0c72209fa02c6e463351e8cda09213d47ac3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165399
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-27 22:03:09 +01:00
Xisco Fauli feb4e0890b tdf#160373: Iterate over all parents to check whether it's a clipPath content
Change-Id: I383ec264e4c88ebcee2ae6a839b762bba8abfc12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165347
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-26 18:38:59 +01:00
Xisco Fauli b240f6198f tdf#48062: Add support for xor, in and out operators in feComposite
atop and arithmetic are still missing

Change-Id: I9b5bfeaa87b48071708ca4cb082916ea5f260adb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164852
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-15 01:06:22 +01:00
Xisco Fauli 626047baba tdf#48062: Add support for feComposite filter
At the moment, only 'over' operator is supported

Change-Id: If21c9ba39b3cd0b772ea27165cda7ae40fb42d60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164765
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-13 19:02:38 +01:00
Xisco Fauli af8a899840 tdf#159660: Add support for feBlend filter
At the moment, only the 'normal' mode is supported

Change-Id: I31d1536e03e938ce0f7304a37eb6c1071ecfcf4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164763
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-13 19:02:31 +01:00
Xisco Fauli 73e5b6667c tdf#159660: Add support for feMerge and feMergeNode
Change-Id: I52e35f6eb5efc7b064145486aa4e6fb2366b143c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164722
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-12 23:03:33 +01:00
Xisco Fauli a661f9a2e0 tdf#159968: Support overflow:visible in marker element
Change-Id: I4ea648cf94a4bb321a78843a9898769a69c5630d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164224
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-03-01 21:46:01 +01:00
Xisco Fauli c73f3491be tdf#159947: Add support for in and result filter attributes
Change-Id: I8bc7e319a64c528893de8454c64545146ad4e9d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164108
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-02-29 17:52:05 +01:00
Xisco Fauli 23293fc6a7 tdf#159594: reuse target for symbols' children
Regression from e7186b49a9
"tdf#158445: support viewBox in symbol elements"

Change-Id: Ie2198c47149def17fa3cb612046b61bf32e873bf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163046
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-02-06 15:12:38 +01:00
Xisco Fauli f0d6b3e727 tdf#159566: match 'central' dominant-baseline to 'middle'
Inkscape also does it the same way

Change-Id: I3e1cea091e7314886bbc9135c55698892239bec7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163006
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-02-05 16:44:05 +01:00
Xisco Fauli e7186b49a9 tdf#158445: support viewBox in symbol elements
Change-Id: Ie45b1e1dd4a4dcfc3cf3ce3d30f8dd9e040e37fb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162605
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-01-26 19:31:03 +01:00
Caolán McNamara 2f2803a77a Related: tdf#157939 put CppunitTest_svgio under non_application_font_use:abort
Change-Id: Ib48e8045ad739b6f6fe98ab00cd609b54d4c3113
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158843
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-02 21:01:26 +01:00
Xisco Fauli ee9b13668c tdf#97710: do not create nonzero conform for polyline
Change-Id: Ib9d4e957b83ad84b79ae4ade5c6be3ab3d9d8028
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157286
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-09-26 21:53:32 +02:00
Xisco Fauli 12f271ac51 tdf#156569: '%' can be in the middle of the string
Change-Id: I5d6ab57c17ab2cbce4d3df629a91a006fad2198d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156564
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-09-05 16:30:23 +02:00
Xisco Fauli b224733640 tdf#129356: handle css combinator when the element name is combined...
... with the ID or the class

While at it, simplify the code a bit

Change-Id: I9e36f334b884d31229568835a346d4427a47c760
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155945
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-22 20:06:24 +02:00
Xisco Fauli 8fa209ce2e tdf#156834: Add basic support for dominant-baseline attribute
Change-Id: I005d6ca6bc340d73cae639ccd09321a0a00bc4b7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155892
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-21 19:59:27 +02:00
Xisco Fauli 56a3603287 tdf#156837: check baseline-shift from parent too
Change-Id: I6e62d794dd4410447db3bee26c1e18fe9dad6a9c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155895
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-21 15:49:15 +02:00
Xisco Fauli 8b96439601 tdf#142424: Revert "related tdf#156579: just break for switch element"
This reverts commit e222f60ac2.

To make the switch element behave like a
group as least, so the transform attribute is parsed
Change-Id: Id8c21ac6da217d8f7bc350ff41022335bf1e0f1f

Change-Id: If1e53f9baad8995f26f9b885cfef6265040736bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155758
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-18 01:09:04 +02:00
Xisco Fauli 20f57e1436 tdf#156777: check for css style in textpath
Change-Id: I63a274dd9fba37852412a194a490cb2b7634f1cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155726
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-15 21:42:31 +02:00
Xisco Fauli a2b6be8af9 tdf#86938: fix calculation of baseline-shift
Change-Id: I8c30c29052f2ea1fe6e49360b972af868851131b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155671
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-15 03:53:18 +02:00
Xisco Fauli 5cfd31e505 tdf#93583: use getTextWidth to calculate line's width
Since every character in the line might use different styles
Change-Id: I2ce079d4308f4acde42a8366838749a7c20331b4

Change-Id: I01f51f157caa667cebc8860ae37d4458fac2d511
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155666
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-15 03:53:06 +02:00
Xisco Fauli dcb3cb0bd4 tdf#156616: check if character's parent has x or y
if so, only concatenate the characters that are in the same line
so the alignment will be calculated based on the
line's width

Change-Id: I704370c0a470f8b4cff97c51ad9863158118ee8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155636
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-12 10:00:29 +02:00
Xisco Fauli 2795a23046 tdf#151103: Use the whole text line to calculate the align position
Change-Id: I7ecd41c422afbf028101924972c47a510834ba5a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155314
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-08-03 18:36:56 +02:00