tdf#153368: Support optical size for variable fonts, part 3

Add loext:font-optical-sizing attribute with two values, "auto" and
"none", modeled after CSS font-optical-sizing:
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/font-optical-sizing

Change-Id: I05396f084dc81d0a797be0e7c0cd57991a6876e3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200502
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
This commit is contained in:
Khaled Hosny
2026-03-02 21:45:18 +01:00
committed by Khaled Hosny
parent d128bdf1fe
commit 331e2c3b89
8 changed files with 24 additions and 0 deletions
+1
View File
@@ -877,6 +877,7 @@ namespace xmloff::token {
XML_FONT_NAME,
XML_FONT_NAME_ASIAN,
XML_FONT_NAME_COMPLEX,
XML_FONT_OPTICAL_SIZING,
XML_FONT_PITCH,
XML_FONT_PITCH_ASIAN,
XML_FONT_PITCH_COMPLEX,
+2
View File
@@ -303,6 +303,8 @@
#define XML_TYPE_TEXT_SCRIPT_TYPE (XML_TEXT_TYPES_START + 134)
#define XML_TYPE_TEXT_FONT_OPTICAL_SIZING (XML_TEXT_TYPES_START + 135)
#endif // INCLUDED_XMLOFF_XMLTYPES_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
@@ -4009,6 +4009,18 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.
</rng:optional>
</rng:define>
<!-- TODO no proposal -->
<rng:define name="style-text-properties-attlist" combine="interleave">
<rng:optional>
<rng:attribute name="loext:font-optical-sizing">
<rng:choice>
<rng:value>auto</rng:value>
<rng:value>none</rng:value>
</rng:choice>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- TODO no proposal -->
<rng:define name="style-graphic-properties-elements" combine="interleave">
<rng:optional>
+1
View File
@@ -98,6 +98,7 @@ inline constexpr OUString PROP_CharLocale = u"CharLocale"_ustr;
inline constexpr OUString PROP_CharLocaleAsian = u"CharLocaleAsian"_ustr;
inline constexpr OUString PROP_CharLocaleComplex = u"CharLocaleComplex"_ustr;
inline constexpr OUString PROP_CharNoHyphenation = u"CharNoHyphenation"_ustr;
inline constexpr OUString PROP_CharOpticalSizing = u"CharOpticalSizing"_ustr;
inline constexpr OUString PROP_CharOverline = u"CharOverline"_ustr;
inline constexpr OUString PROP_CharOverlineColor = u"CharOverlineColor"_ustr;
inline constexpr OUString PROP_CharOverlineHasColor = u"CharOverlineHasColor"_ustr;
+1
View File
@@ -889,6 +889,7 @@ namespace xmloff::token {
TOKEN( "font-name", XML_FONT_NAME ),
TOKEN( "font-name-asian", XML_FONT_NAME_ASIAN ),
TOKEN( "font-name-complex", XML_FONT_NAME_COMPLEX ),
TOKEN( "font-optical-sizing", XML_FONT_OPTICAL_SIZING ),
TOKEN( "font-pitch", XML_FONT_PITCH ),
TOKEN( "font-pitch-asian", XML_FONT_PITCH_ASIAN ),
TOKEN( "font-pitch-complex", XML_FONT_PITCH_COMPLEX ),
+4
View File
@@ -1393,6 +1393,10 @@ static const XMLPropertyHandler *GetPropertyHandler
case XML_TYPE_TEXT_FONT_RELIEF:
pHdl = new XMLConstantsPropertyHandler( pXML_FontRelief_Enum, XML_TOKEN_INVALID );
break;
case XML_TYPE_TEXT_FONT_OPTICAL_SIZING:
pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_AUTO ),
GetXMLToken( XML_NONE ) );
break;
case XML_TYPE_TEXT_ROTATION_ANGLE:
pHdl = new XMLTextRotationAnglePropHdl_Impl;
break;
+2
View File
@@ -253,6 +253,7 @@ XMLPropertyMapEntry constexpr aXMLParaPropMap[] =
MT_E( PROP_CharScaleWidth, XML_NAMESPACE_STYLE, XML_TEXT_SCALE, XML_TYPE_PERCENT16, 0 ),
//RES_CHRATR_RELIEF
MT_E( PROP_CharRelief, XML_NAMESPACE_STYLE, XML_FONT_RELIEF, XML_TYPE_TEXT_FONT_RELIEF, 0 ),
MAP_EXT( PROP_CharOpticalSizing, XML_NAMESPACE_LO_EXT, XML_FONT_OPTICAL_SIZING, XML_TYPE_TEXT_FONT_OPTICAL_SIZING | XML_TYPE_PROP_TEXT, 0 ),
// RES_CHRATR_HIDDEN
MT_E( PROP_CharHidden, XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TYPE_TEXT_HIDDEN_AS_DISPLAY|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_TEXT_DISPLAY ),
// RES_CHRATR_OVERLINE
@@ -639,6 +640,7 @@ XMLPropertyMapEntry constexpr aXMLTextPropMap[] =
MT_E( PROP_, XML_NAMESPACE_STYLE, XML_TEXT_COMBINE, XML_TYPE_TEXT_COMBINE_CHARACTERS|MID_FLAG_NO_PROPERTY, CTF_COMBINED_CHARACTERS_FIELD ),
//RES_CHRATR_RELIEF
MT_E( PROP_CharRelief, XML_NAMESPACE_STYLE, XML_FONT_RELIEF, XML_TYPE_TEXT_FONT_RELIEF, 0 ),
MAP_EXT( PROP_CharOpticalSizing, XML_NAMESPACE_LO_EXT, XML_FONT_OPTICAL_SIZING, XML_TYPE_TEXT_FONT_OPTICAL_SIZING | XML_TYPE_PROP_TEXT, 0 ),
// RES_CHRATR_HIDDEN
MT_E( PROP_CharHidden, XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TYPE_TEXT_HIDDEN_AS_DISPLAY|MID_FLAG_SPECIAL_ITEM_IMPORT, CTF_TEXT_DISPLAY ),
// RES_CHRATR_OVERLINE
+1
View File
@@ -794,6 +794,7 @@ font-kerning
font-name
font-name-asian
font-name-complex
font-optical-sizing
font-pitch
font-pitch-asian
font-pitch-complex