tdf#171624: Make font variation settings per script

We had only one shared setting for the three script groups, which means
the same variation settings are applied to the three groups, which makes
no sense as they often use entirely different fonts.

Change-Id: I6f2a8b4d1c9e0357a6b2d8f4e1c7093b5a2d6e84
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209222
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
This commit is contained in:
Khaled Hosny
2026-08-18 00:28:11 +02:00
committed by Khaled Hosny
parent 4c68c8af2e
commit 7eef6029ec
31 changed files with 239 additions and 28 deletions
+23
View File
@@ -14,6 +14,7 @@
#include <cppunit/extensions/HelperMacros.h>
#include <editdoc.hxx>
#include <com/sun/star/i18n/ScriptType.hpp>
#include <EditSelection.hxx>
#include <ParagraphPortionList.hxx>
@@ -141,6 +142,7 @@ public:
void testTdf162803StaleKashidaArray();
void testTdf157037PasteTextAutoDirection();
void testFontVariationsItem();
void testFontVariationsScript();
void testEscapementNotPreservedOnParaBreak();
void testAutoDirNotPreservedOnParaBreak();
void testFontTypographicConversion();
@@ -180,6 +182,7 @@ public:
CPPUNIT_TEST(testTdf162803StaleKashidaArray);
CPPUNIT_TEST(testTdf157037PasteTextAutoDirection);
CPPUNIT_TEST(testFontVariationsItem);
CPPUNIT_TEST(testFontVariationsScript);
CPPUNIT_TEST(testEscapementNotPreservedOnParaBreak);
CPPUNIT_TEST(testAutoDirNotPreservedOnParaBreak);
CPPUNIT_TEST(testFontTypographicConversion);
@@ -2470,6 +2473,26 @@ void Test::testTdf157037PasteTextAutoDirection()
CPPUNIT_ASSERT(!aEditEngine.IsRightToLeft(4));
}
void Test::testFontVariationsScript()
{
CPPUNIT_ASSERT(IsScriptItemValid(EE_CHAR_FONTVARIATIONS, i18n::ScriptType::LATIN));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS, i18n::ScriptType::ASIAN));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS, i18n::ScriptType::COMPLEX));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CJK, i18n::ScriptType::LATIN));
CPPUNIT_ASSERT(IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CJK, i18n::ScriptType::ASIAN));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CJK, i18n::ScriptType::COMPLEX));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CTL, i18n::ScriptType::LATIN));
CPPUNIT_ASSERT(!IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CTL, i18n::ScriptType::ASIAN));
CPPUNIT_ASSERT(IsScriptItemValid(EE_CHAR_FONTVARIATIONS_CTL, i18n::ScriptType::COMPLEX));
CPPUNIT_ASSERT_EQUAL(sal_uInt16(EE_CHAR_FONTVARIATIONS_CJK),
GetScriptItemId(EE_CHAR_FONTVARIATIONS, SvtScriptType::ASIAN));
CPPUNIT_ASSERT_EQUAL(sal_uInt16(EE_CHAR_FONTVARIATIONS_CTL),
GetScriptItemId(EE_CHAR_FONTVARIATIONS, SvtScriptType::COMPLEX));
}
void Test::testFontVariationsItem()
{
// Test default construction (empty variations)
+2 -1
View File
@@ -484,7 +484,8 @@ void EditCharAttribOpticalSizing::SetFont( SvxFont& rFont, OutputDevice* )
EditCharAttribFontVariations::EditCharAttribFontVariations(SfxItemPool& rPool, const SfxPoolItem& rItem, sal_Int32 _nStart, sal_Int32 _nEnd)
: EditCharAttrib(rPool, rItem, _nStart, _nEnd)
{
assert(rItem.Which() == EE_CHAR_FONTVARIATIONS);
assert(rItem.Which() == EE_CHAR_FONTVARIATIONS || rItem.Which() == EE_CHAR_FONTVARIATIONS_CJK
|| rItem.Which() == EE_CHAR_FONTVARIATIONS_CTL);
}
void EditCharAttribFontVariations::SetFont( SvxFont& rFont, OutputDevice* )
+37 -3
View File
@@ -111,6 +111,9 @@ sal_uInt16 GetScriptItemId( sal_uInt16 nItemId, SvtScriptType nScriptType )
case EE_CHAR_ITALIC:
nId = ( nScriptType == SvtScriptType::ASIAN ) ? EE_CHAR_ITALIC_CJK : EE_CHAR_ITALIC_CTL;
break;
case EE_CHAR_FONTVARIATIONS:
nId = ( nScriptType == SvtScriptType::ASIAN ) ? EE_CHAR_FONTVARIATIONS_CJK : EE_CHAR_FONTVARIATIONS_CTL;
break;
}
}
@@ -168,6 +171,15 @@ bool IsScriptItemValid( sal_uInt16 nItemId, short nScriptType )
case EE_CHAR_ITALIC_CTL:
bValid = nScriptType == i18n::ScriptType::COMPLEX;
break;
case EE_CHAR_FONTVARIATIONS:
bValid = nScriptType == i18n::ScriptType::LATIN;
break;
case EE_CHAR_FONTVARIATIONS_CJK:
bValid = nScriptType == i18n::ScriptType::ASIAN;
break;
case EE_CHAR_FONTVARIATIONS_CTL:
bValid = nScriptType == i18n::ScriptType::COMPLEX;
break;
}
return bValid;
@@ -329,6 +341,8 @@ EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, sa
}
break;
case EE_CHAR_FONTVARIATIONS:
case EE_CHAR_FONTVARIATIONS_CJK:
case EE_CHAR_FONTVARIATIONS_CTL:
{
return new EditCharAttribFontVariations(rPool, rAttr, nS, nE );
}
@@ -1244,11 +1258,16 @@ void YrsInsertAttribImplImpl(YrsWrite const& yw, SfxPoolItem const& rItm,
break;
}
case EE_CHAR_FONTVARIATIONS:
case EE_CHAR_FONTVARIATIONS_CJK:
case EE_CHAR_FONTVARIATIONS_CTL:
{
SvxFontVariationsItem const& rItem{static_cast<SvxFontVariationsItem const&>(rItm)};
OUString aStr = vcl::font::VariationsToString(rItem.GetVariations());
attr = yinput_str(OUStringToOString(aStr, RTL_TEXTENCODING_UTF8));
attrName = "EE_CHAR_FONTVARIATIONS";
attrName = rItm.Which() == EE_CHAR_FONTVARIATIONS
? "EE_CHAR_FONTVARIATIONS"
: rItm.Which() == EE_CHAR_FONTVARIATIONS_CJK ? "EE_CHAR_FONTVARIATIONS_CJK"
: "EE_CHAR_FONTVARIATIONS_CTL";
break;
}
default:
@@ -1611,6 +1630,10 @@ char const* YrsWhichToAttrName(sal_Int16 const nWhich)
return "EE_CHAR_OPTICALSIZING";
case EE_CHAR_FONTVARIATIONS:
return "EE_CHAR_FONTVARIATIONS";
case EE_CHAR_FONTVARIATIONS_CJK:
return "EE_CHAR_FONTVARIATIONS_CJK";
case EE_CHAR_FONTVARIATIONS_CTL:
return "EE_CHAR_FONTVARIATIONS_CTL";
default:
assert(false);
abort();
@@ -1861,6 +1884,14 @@ void YrsImplInsertAttr(SfxItemSet & rSet, ::std::vector<sal_uInt16> *const pRemo
{
nWhich = EE_CHAR_FONTVARIATIONS;
}
else if (strcmp(pKey, "EE_CHAR_FONTVARIATIONS_CJK") == 0)
{
nWhich = EE_CHAR_FONTVARIATIONS_CJK;
}
else if (strcmp(pKey, "EE_CHAR_FONTVARIATIONS_CTL") == 0)
{
nWhich = EE_CHAR_FONTVARIATIONS_CTL;
}
else if (pKey[0] == 'E' && pKey[1] == 'E' && pKey[2] == '_')
{
abort();
@@ -2500,6 +2531,8 @@ void YrsImplInsertAttr(SfxItemSet & rSet, ::std::vector<sal_uInt16> *const pRemo
break;
}
case EE_CHAR_FONTVARIATIONS:
case EE_CHAR_FONTVARIATIONS_CJK:
case EE_CHAR_FONTVARIATIONS_CTL:
{
yvalidate(rValue.tag == Y_JSON_STRING);
OUString aStr = OStringToOUString(
@@ -3278,6 +3311,7 @@ void CreateFont( SvxFont& rFont, const SfxItemSet& rSet, bool bSearchInParent, S
sal_uInt16 nWhich_FontHeight = GetScriptItemId( EE_CHAR_FONTHEIGHT, nScriptType );
sal_uInt16 nWhich_Weight = GetScriptItemId( EE_CHAR_WEIGHT, nScriptType );
sal_uInt16 nWhich_Italic = GetScriptItemId( EE_CHAR_ITALIC, nScriptType );
sal_uInt16 nWhich_FontVariations = GetScriptItemId( EE_CHAR_FONTVARIATIONS, nScriptType );
if ( bSearchInParent || ( rSet.GetItemState( nWhich_FontInfo ) == SfxItemState::SET ) )
{
@@ -3338,8 +3372,8 @@ void CreateFont( SvxFont& rFont, const SfxItemSet& rSet, bool bSearchInParent, S
rFont.SetRelief( rSet.Get( EE_CHAR_RELIEF ).GetValue() );
if ( bSearchInParent || ( rSet.GetItemState( EE_CHAR_OPTICALSIZING ) == SfxItemState::SET ) )
rFont.SetOpticalSizing( rSet.Get( EE_CHAR_OPTICALSIZING ).GetValue() );
if ( bSearchInParent || ( rSet.GetItemState( EE_CHAR_FONTVARIATIONS ) == SfxItemState::SET ) )
rFont.SetVariations( rSet.Get( EE_CHAR_FONTVARIATIONS ).GetVariations() );
if ( bSearchInParent || ( rSet.GetItemState( nWhich_FontVariations ) == SfxItemState::SET ) )
rFont.SetVariations( static_cast<const SvxFontVariationsItem&>(rSet.Get( nWhich_FontVariations )).GetVariations() );
// Operator == compares the individual members of the font if the impl pointer is
// not equal. If all members are the same, this assignment makes
+2
View File
@@ -164,6 +164,8 @@ ItemInfoPackage& getItemInfoPackageEditEngine()
{ EE_CHAR_SCRIPT_HINT, new SvxScriptHintItem( EE_CHAR_SCRIPT_HINT ), SID_ATTR_CHAR_SCRIPT_HINT, SFX_ITEMINFOFLAG_NONE },
{ EE_CHAR_OPTICALSIZING, new SvxOpticalSizingItem( false, EE_CHAR_OPTICALSIZING ), SID_ATTR_CHAR_OPTICAL_SIZING, SFX_ITEMINFOFLAG_NONE },
{ EE_CHAR_FONTVARIATIONS, new SvxFontVariationsItem( EE_CHAR_FONTVARIATIONS ), SID_ATTR_CHAR_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ EE_CHAR_FONTVARIATIONS_CJK, new SvxFontVariationsItem( EE_CHAR_FONTVARIATIONS_CJK ), SID_ATTR_CHAR_CJK_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ EE_CHAR_FONTVARIATIONS_CTL, new SvxFontVariationsItem( EE_CHAR_FONTVARIATIONS_CTL ), SID_ATTR_CHAR_CTL_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ EE_FEATURE_TAB, new SfxVoidItem( EE_FEATURE_TAB ), 0, SFX_ITEMINFOFLAG_NONE },
{ EE_FEATURE_LINEBR, new SfxVoidItem( EE_FEATURE_LINEBR ), 0, SFX_ITEMINFOFLAG_NONE },
{ EE_FEATURE_NOTCONV, new SvxColorItem( COL_RED, EE_FEATURE_NOTCONV ), SID_ATTR_CHAR_CHARSETCOLOR, SFX_ITEMINFOFLAG_NONE },
+2
View File
@@ -192,6 +192,8 @@ class SvxOpticalSizingItem;
#define SID_ATTR_PARA_ADJUST_END ( SID_EDIT_START + 80 )
#define SID_ATTR_CHAR_OPTICAL_SIZING TypedWhichId<SvxOpticalSizingItem>( SID_EDIT_START + 81 )
#define SID_ATTR_CHAR_FONT_VARIATIONS TypedWhichId<SvxFontVariationsItem>( SID_EDIT_START + 82 )
#define SID_ATTR_CHAR_CJK_FONT_VARIATIONS TypedWhichId<SvxFontVariationsItem>( SID_EDIT_START + 83 )
#define SID_ATTR_CHAR_CTL_FONT_VARIATIONS TypedWhichId<SvxFontVariationsItem>( SID_EDIT_START + 84 )
#if 95 > (SID_EDIT_END-SID_EDIT_START)
+3 -1
View File
@@ -137,8 +137,10 @@ inline constexpr TypedWhichId<SvxRubyItem> EE_CHAR_RUBY (EE
inline constexpr TypedWhichId<SvxScriptHintItem> EE_CHAR_SCRIPT_HINT (EE_CHAR_START+33);
inline constexpr TypedWhichId<SvxOpticalSizingItem> EE_CHAR_OPTICALSIZING (EE_CHAR_START+34);
inline constexpr TypedWhichId<SvxFontVariationsItem> EE_CHAR_FONTVARIATIONS (EE_CHAR_START+35);
inline constexpr TypedWhichId<SvxFontVariationsItem> EE_CHAR_FONTVARIATIONS_CJK (EE_CHAR_START+36);
inline constexpr TypedWhichId<SvxFontVariationsItem> EE_CHAR_FONTVARIATIONS_CTL (EE_CHAR_START+37);
inline constexpr sal_uInt16 EE_CHAR_END (EE_CHAR_START + 35);
inline constexpr sal_uInt16 EE_CHAR_END (EE_CHAR_START + 37);
inline constexpr sal_uInt16 EE_FEATURE_START (EE_CHAR_END + 1);
inline constexpr sal_uInt16 EE_FEATURE_TAB (EE_FEATURE_START + 0);
+2
View File
@@ -320,6 +320,8 @@ inline constexpr OUString UNO_NAME_EDIT_CHAR_FONTPITCH = u"CharFontPitch"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_POSTURE = u"CharPosture"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_WEIGHT = u"CharWeight"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_FONTVARIATIONS = u"CharFontVariations"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_FONTVARIATIONS_ASIAN = u"CharFontVariationsAsian"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_FONTVARIATIONS_COMPLEX = u"CharFontVariationsComplex"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_OPTICALSIZING = u"CharOpticalSizing"_ustr;
inline constexpr OUString UNO_NAME_EDIT_CHAR_LOCALE = u"CharLocale"_ustr;
+3 -1
View File
@@ -139,7 +139,9 @@ struct SfxItemPropertyMapEntry;
{ UNO_NAME_EDIT_CHAR_RUBY_POSITION, EE_CHAR_RUBY, ::cppu::UnoType<sal_Int16>::get(), 0, MID_RUBY_POSITION }, \
{ UNO_NAME_EDIT_CHAR_SCRIPT_HINT, EE_CHAR_SCRIPT_HINT, ::cppu::UnoType<sal_Int16>::get(), 0, MID_SCRIPTHINT }, \
{ UNO_NAME_EDIT_CHAR_OPTICALSIZING, EE_CHAR_OPTICALSIZING, ::cppu::UnoType<bool>::get(), 0, 0 }, \
{ UNO_NAME_EDIT_CHAR_FONTVARIATIONS, EE_CHAR_FONTVARIATIONS, ::cppu::UnoType<OUString>::get(), 0, 0 }
{ UNO_NAME_EDIT_CHAR_FONTVARIATIONS, EE_CHAR_FONTVARIATIONS, ::cppu::UnoType<OUString>::get(), 0, 0 }, \
{ UNO_NAME_EDIT_CHAR_FONTVARIATIONS_ASIAN, EE_CHAR_FONTVARIATIONS_CJK, ::cppu::UnoType<OUString>::get(), 0, 0 }, \
{ UNO_NAME_EDIT_CHAR_FONTVARIATIONS_COMPLEX, EE_CHAR_FONTVARIATIONS_CTL, ::cppu::UnoType<OUString>::get(), 0, 0 }
#define SVX_UNOEDIT_FONT_PROPERTIES \
+2
View File
@@ -901,6 +901,8 @@ namespace xmloff::token {
XML_FONT_STYLE_NAME_ASIAN,
XML_FONT_STYLE_NAME_COMPLEX,
XML_FONT_VARIATION_SETTINGS,
XML_FONT_VARIATION_SETTINGS_ASIAN,
XML_FONT_VARIATION_SETTINGS_COMPLEX,
XML_FONT_VARIANT,
XML_FONT_WEIGHT,
XML_FONT_WEIGHT_ASIAN,
@@ -4209,6 +4209,16 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.
<rng:ref name="string"/>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="loext:font-variation-settings-asian">
<rng:ref name="string"/>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="loext:font-variation-settings-complex">
<rng:ref name="string"/>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- TODO no proposal -->
+5 -1
View File
@@ -251,7 +251,11 @@ inline constexpr TypedWhichId<SvxOpticalSizingItem> RES_CHRATR_OPTICAL_SIZING(RE
+ 46);
inline constexpr TypedWhichId<SvxFontVariationsItem> RES_CHRATR_FONT_VARIATIONS(RES_CHRATR_BEGIN
+ 47);
inline constexpr sal_uInt16 RES_CHRATR_END(RES_CHRATR_BEGIN + 48);
inline constexpr TypedWhichId<SvxFontVariationsItem> RES_CHRATR_CJK_FONT_VARIATIONS(RES_CHRATR_BEGIN
+ 48);
inline constexpr TypedWhichId<SvxFontVariationsItem> RES_CHRATR_CTL_FONT_VARIATIONS(RES_CHRATR_BEGIN
+ 49);
inline constexpr sal_uInt16 RES_CHRATR_END(RES_CHRATR_BEGIN + 50);
// this Attribute used only in a TextNodes SwpAttr-Array
inline constexpr sal_uInt16 RES_TXTATR_BEGIN(RES_CHRATR_END);
+2
View File
@@ -154,6 +154,8 @@ inline constexpr OUString UNO_NAME_CHAR_ESCAPEMENT_HEIGHT = u"CharEscapementHeig
inline constexpr OUString UNO_NAME_CHAR_TRANSPARENCE = u"CharTransparence"_ustr;
inline constexpr OUString UNO_NAME_CHAR_OPTICAL_SIZING = u"CharOpticalSizing"_ustr;
inline constexpr OUString UNO_NAME_CHAR_FONT_VARIATIONS = u"CharFontVariations"_ustr;
inline constexpr OUString UNO_NAME_CHAR_CJK_FONT_VARIATIONS = u"CharFontVariationsAsian"_ustr;
inline constexpr OUString UNO_NAME_CHAR_CTL_FONT_VARIATIONS = u"CharFontVariationsComplex"_ustr;
inline constexpr OUString UNO_NAME_HIDE_TAB_LEADER_AND_PAGE_NUMBERS
= u"HideTabLeaderAndPageNumber"_ustr;
inline constexpr OUString UNO_NAME_TAB_IN_TOC = u"TabInTOC"_ustr;
+56
View File
@@ -1639,6 +1639,62 @@ CPPUNIT_TEST_FIXTURE(Test, testFontVariationSettings)
getProperty<OUString>(xRun, u"CharFontVariations"_ustr));
}
CPPUNIT_TEST_FIXTURE(Test, testFontVariationSettingsPerScript)
{
createSwDoc();
uno::Reference<beans::XPropertySet> xCursor(getRun(getParagraph(1), 1), uno::UNO_QUERY);
xCursor->setPropertyValue(u"CharFontVariations"_ustr, uno::Any(u"\"wght\" 700"_ustr));
xCursor->setPropertyValue(u"CharFontVariationsAsian"_ustr, uno::Any(u"\"wght\" 500"_ustr));
xCursor->setPropertyValue(u"CharFontVariationsComplex"_ustr, uno::Any(u"\"wght\" 300"_ustr));
save(TestFilter::ODT);
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
assertXPath(pXmlDoc,
"//style:style/style:text-properties[@loext:font-variation-settings='\"wght\" 700']",
1);
assertXPath(pXmlDoc,
"//style:style/style:text-properties"
"[@loext:font-variation-settings-asian='\"wght\" 500']",
1);
assertXPath(pXmlDoc,
"//style:style/style:text-properties"
"[@loext:font-variation-settings-complex='\"wght\" 300']",
1);
saveAndReload(TestFilter::ODT);
uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(1), 1), uno::UNO_QUERY);
CPPUNIT_ASSERT_EQUAL(u"\"wght\" 700"_ustr,
getProperty<OUString>(xRun, u"CharFontVariations"_ustr));
CPPUNIT_ASSERT_EQUAL(u"\"wght\" 500"_ustr,
getProperty<OUString>(xRun, u"CharFontVariationsAsian"_ustr));
CPPUNIT_ASSERT_EQUAL(u"\"wght\" 300"_ustr,
getProperty<OUString>(xRun, u"CharFontVariationsComplex"_ustr));
}
CPPUNIT_TEST_FIXTURE(Test, testFontVariationSettingsWesternOnly)
{
createSwDoc();
uno::Reference<beans::XPropertySet> xCursor(getRun(getParagraph(1), 1), uno::UNO_QUERY);
xCursor->setPropertyValue(u"CharFontVariations"_ustr, uno::Any(u"\"wght\" 700"_ustr));
save(TestFilter::ODT);
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
assertXPathNoAttribute(pXmlDoc, "//style:style/style:text-properties",
"font-variation-settings-asian");
assertXPathNoAttribute(pXmlDoc, "//style:style/style:text-properties",
"font-variation-settings-complex");
saveAndReload(TestFilter::ODT);
uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(1), 1), uno::UNO_QUERY);
CPPUNIT_ASSERT_EQUAL(u"\"wght\" 700"_ustr,
getProperty<OUString>(xRun, u"CharFontVariations"_ustr));
CPPUNIT_ASSERT_EQUAL(OUString(), getProperty<OUString>(xRun, u"CharFontVariationsAsian"_ustr));
CPPUNIT_ASSERT_EQUAL(OUString(),
getProperty<OUString>(xRun, u"CharFontVariationsComplex"_ustr));
}
} // end of anonymous namespace
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+2
View File
@@ -336,6 +336,8 @@ std::unique_ptr<ItemInfoPackage> createItemInfoPackageSwAttributes()
{ RES_CHRATR_SCRIPT_HINT, new SvxScriptHintItem( RES_CHRATR_SCRIPT_HINT ), SID_ATTR_CHAR_SCRIPT_HINT, SFX_ITEMINFOFLAG_NONE },
{ RES_CHRATR_OPTICAL_SIZING, new SvxOpticalSizingItem( false, RES_CHRATR_OPTICAL_SIZING ), SID_ATTR_CHAR_OPTICAL_SIZING, SFX_ITEMINFOFLAG_NONE },
{ RES_CHRATR_FONT_VARIATIONS, new SvxFontVariationsItem( RES_CHRATR_FONT_VARIATIONS ), SID_ATTR_CHAR_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ RES_CHRATR_CJK_FONT_VARIATIONS, new SvxFontVariationsItem( RES_CHRATR_CJK_FONT_VARIATIONS ), SID_ATTR_CHAR_CJK_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ RES_CHRATR_CTL_FONT_VARIATIONS, new SvxFontVariationsItem( RES_CHRATR_CTL_FONT_VARIATIONS ), SID_ATTR_CHAR_CTL_FONT_VARIATIONS, SFX_ITEMINFOFLAG_NONE },
{ RES_TXTATR_REFMARK, new SwFormatRefMark( SwMarkName() ), 0, SFX_ITEMINFOFLAG_NONE },
{ RES_TXTATR_TOXMARK, createSwTOXMarkForItemInfoPackage(), 0, SFX_ITEMINFOFLAG_NONE },
+1 -1
View File
@@ -18,7 +18,7 @@
*/
#pragma once
#define NUM_DEFAULT_VALUES 42
#define NUM_DEFAULT_VALUES 44
#include "swfont.hxx"
+5 -5
View File
@@ -239,7 +239,8 @@ public:
inline void SetCaseMap( const SvxCaseMap eNew );
inline void SetEmphasisMark( const FontEmphasisMark eValue );
inline void SetOpticalSizing( bool bOpticalSizing );
inline void SetVariations( const std::vector<vcl::font::Variation>& rVariations );
inline void SetVariations( const std::vector<vcl::font::Variation>& rVariations,
const SwFontScript nWhich );
// methods for sub-/superscript
inline void SetEscapement( const short nNewEsc );
@@ -735,12 +736,11 @@ inline void SwSubFont::SetVariations( const std::vector<vcl::font::Variation>& r
Font::SetVariations( rVariations );
}
inline void SwFont::SetVariations( const std::vector<vcl::font::Variation>& rVariations )
inline void SwFont::SetVariations( const std::vector<vcl::font::Variation>& rVariations,
const SwFontScript nWhich )
{
m_bFontChg = true;
m_aSub[SwFontScript::Latin].SetVariations( rVariations );
m_aSub[SwFontScript::CJK].SetVariations( rVariations );
m_aSub[SwFontScript::CTL].SetVariations( rVariations );
m_aSub[nWhich].SetVariations( rVariations );
}
inline void SwFont::SetPropWidth( const sal_uInt16 nNew )
+2
View File
@@ -2632,6 +2632,8 @@ void SwContentFrame::UpdateAttr_( const SfxPoolItem* pOld, const SfxPoolItem* pN
case RES_CHRATR_NOHYPHEN:
case RES_CHRATR_OPTICAL_SIZING:
case RES_CHRATR_FONT_VARIATIONS:
case RES_CHRATR_CJK_FONT_VARIATIONS:
case RES_CHRATR_CTL_FONT_VARIATIONS:
case RES_PARATR_NUMRULE:
rInvFlags |= SwContentFrameInvFlags::SetCompletePaint;
break;
+1 -1
View File
@@ -18,7 +18,7 @@
*/
#pragma once
#define NUM_ATTRIBUTE_STACKS 48
#define NUM_ATTRIBUTE_STACKS 50
#include <vector>
#include <swfntcch.hxx>
+23 -12
View File
@@ -120,17 +120,19 @@ const sal_uInt8 StackPos[ RES_TXTATR_WITHEND_END - RES_CHRATR_BEGIN + 1 ] =
39, // RES_CHRATR_SCRIPT_HINT, // 45
40, // RES_CHRATR_OPTICAL_SIZING // 46
41, // RES_CHRATR_FONT_VARIATIONS // 47
42, // RES_TXTATR_REFMARK, // 48
43, // RES_TXTATR_TOXMARK, // 49
44, // RES_TXTATR_META, // 50
44, // RES_TXTATR_METAFIELD, // 51
0, // RES_TXTATR_AUTOFMT, // 52
0, // RES_TXTATR_INETFMT // 53
0, // RES_TXTATR_CHARFMT, // 54
45, // RES_TXTATR_CJK_RUBY, // 55
0, // RES_TXTATR_UNKNOWN_CONTAINER, // 56
46, // RES_TXTATR_INPUTFIELD // 57
47, // RES_TXTATR_CONTENTCONTROL // 58
42, // RES_CHRATR_CJK_FONT_VARIATIONS // 48
43, // RES_CHRATR_CTL_FONT_VARIATIONS // 49
44, // RES_TXTATR_REFMARK, // 50
45, // RES_TXTATR_TOXMARK, // 51
46, // RES_TXTATR_META, // 52
46, // RES_TXTATR_METAFIELD, // 53
0, // RES_TXTATR_AUTOFMT, // 54
0, // RES_TXTATR_INETFMT // 55
0, // RES_TXTATR_CHARFMT, // 56
47, // RES_TXTATR_CJK_RUBY, // 57
0, // RES_TXTATR_UNKNOWN_CONTAINER, // 58
48, // RES_TXTATR_INPUTFIELD // 59
49, // RES_TXTATR_CONTENTCONTROL // 60
};
namespace CharFormat
@@ -839,7 +841,16 @@ void SwAttrHandler::FontChg(const SfxPoolItem& rItem, SwFont& rFnt, bool bPush )
rFnt.SetOpticalSizing( rItem.StaticWhichCast(RES_CHRATR_OPTICAL_SIZING).GetValue() );
break;
case RES_CHRATR_FONT_VARIATIONS :
rFnt.SetVariations( rItem.StaticWhichCast(RES_CHRATR_FONT_VARIATIONS).GetVariations() );
rFnt.SetVariations( rItem.StaticWhichCast(RES_CHRATR_FONT_VARIATIONS).GetVariations(),
SwFontScript::Latin );
break;
case RES_CHRATR_CJK_FONT_VARIATIONS :
rFnt.SetVariations( rItem.StaticWhichCast(RES_CHRATR_CJK_FONT_VARIATIONS).GetVariations(),
SwFontScript::CJK );
break;
case RES_CHRATR_CTL_FONT_VARIATIONS :
rFnt.SetVariations( rItem.StaticWhichCast(RES_CHRATR_CTL_FONT_VARIATIONS).GetVariations(),
SwFontScript::CTL );
break;
case RES_TXTATR_CJK_RUBY :
rFnt.SetVertical( 0_deg10, m_bVertLayout );
+5 -1
View File
@@ -669,7 +669,11 @@ void SwFont::SetDiffFnt( const SfxItemSet *pAttrSet,
if( const SvxOpticalSizingItem* pItem = pAttrSet->GetItemIfSet( RES_CHRATR_OPTICAL_SIZING ) )
SetOpticalSizing( pItem->GetValue() );
if( const SvxFontVariationsItem* pItem = pAttrSet->GetItemIfSet( RES_CHRATR_FONT_VARIATIONS ) )
SetVariations( pItem->GetVariations() );
SetVariations( pItem->GetVariations(), SwFontScript::Latin );
if( const SvxFontVariationsItem* pItem = pAttrSet->GetItemIfSet( RES_CHRATR_CJK_FONT_VARIATIONS ) )
SetVariations( pItem->GetVariations(), SwFontScript::CJK );
if( const SvxFontVariationsItem* pItem = pAttrSet->GetItemIfSet( RES_CHRATR_CTL_FONT_VARIATIONS ) )
SetVariations( pItem->GetVariations(), SwFontScript::CTL );
}
else
{
+4
View File
@@ -208,6 +208,8 @@ std::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetCharStyleP
{ UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_OPTICAL_SIZING, RES_CHRATR_OPTICAL_SIZING , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_FONT_VARIATIONS, RES_CHRATR_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CJK_FONT_VARIATIONS, RES_CHRATR_CJK_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CTL_FONT_VARIATIONS, RES_CHRATR_CTL_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_SHADOWED, RES_CHRATR_SHADOWED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CONTOURED, RES_CHRATR_CONTOUR, cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_WORD_MODE, RES_CHRATR_WORDLINEMODE,cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
@@ -282,6 +284,8 @@ std::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetAutoCharS
{ UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_OPTICAL_SIZING, RES_CHRATR_OPTICAL_SIZING , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_FONT_VARIATIONS, RES_CHRATR_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CJK_FONT_VARIATIONS, RES_CHRATR_CJK_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CTL_FONT_VARIATIONS, RES_CHRATR_CTL_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_SHADOWED, RES_CHRATR_SHADOWED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_CONTOURED, RES_CHRATR_CONTOUR, cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
{ UNO_NAME_CHAR_WORD_MODE, RES_CHRATR_WORDLINEMODE,cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},
@@ -175,6 +175,8 @@
{ UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_OPTICAL_SIZING, RES_CHRATR_OPTICAL_SIZING, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_FONT_VARIATIONS, RES_CHRATR_FONT_VARIATIONS, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_CJK_FONT_VARIATIONS, RES_CHRATR_CJK_FONT_VARIATIONS, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_CTL_FONT_VARIATIONS, RES_CHRATR_CTL_FONT_VARIATIONS, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_SHADOWED, RES_CHRATR_SHADOWED, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_CHAR_CONTOURED, RES_CHRATR_CONTOUR, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \
{ UNO_NAME_DROP_CAP_FORMAT, RES_PARATR_DROP, cppu::UnoType<css::style::DropCapFormat>::get(), PropertyAttribute::MAYBEVOID, MID_DROPCAP_FORMAT | CONVERT_TWIPS }, \
@@ -452,6 +454,8 @@
{ UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_OPTICAL_SIZING, RES_CHRATR_OPTICAL_SIZING , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_FONT_VARIATIONS, RES_CHRATR_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_CJK_FONT_VARIATIONS, RES_CHRATR_CJK_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_CTL_FONT_VARIATIONS, RES_CHRATR_CTL_FONT_VARIATIONS , cppu::UnoType<OUString>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_SHADOWED, RES_CHRATR_SHADOWED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_CHAR_CONTOURED, RES_CHRATR_CONTOUR, cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},\
{ UNO_NAME_DROP_CAP_FORMAT, RES_PARATR_DROP, cppu::UnoType<css::style::DropCapFormat>::get() , PROPERTY_NONE, MID_DROPCAP_FORMAT|CONVERT_TWIPS },\
+11
View File
@@ -2560,6 +2560,15 @@ static SwHTMLWriter& OutCSS1_SvxOpticalSizing( SwHTMLWriter& rWrt, const SfxPool
static SwHTMLWriter& OutCSS1_SvxFontVariations( SwHTMLWriter& rWrt, const SfxPoolItem& rHt )
{
sal_uInt16 nScript = CSS1_OUTMODE_WESTERN;
switch( rHt.Which() )
{
case RES_CHRATR_CJK_FONT_VARIATIONS: nScript = CSS1_OUTMODE_CJK; break;
case RES_CHRATR_CTL_FONT_VARIATIONS: nScript = CSS1_OUTMODE_CTL; break;
}
if( !rWrt.IsCSS1Script( nScript ) )
return rWrt;
const auto& rVariations = static_cast<const SvxFontVariationsItem&>(rHt).GetVariations();
if( !rVariations.empty() )
{
@@ -3487,6 +3496,8 @@ SwAttrFnTab const aCSS1AttrFnTab = {
/* RES_CHRATR_SCRIPT_HINT */ nullptr,
/* RES_CHRATR_OPTICAL_SIZING */ OutCSS1_SvxOpticalSizing,
/* RES_CHRATR_FONT_VARIATIONS */ OutCSS1_SvxFontVariations,
/* RES_CHRATR_CJK_FONT_VARIATIONS */ OutCSS1_SvxFontVariations,
/* RES_CHRATR_CTL_FONT_VARIATIONS */ OutCSS1_SvxFontVariations,
/* RES_TXTATR_REFMARK */ nullptr,
/* RES_TXTATR_TOXMARK */ nullptr,
+2
View File
@@ -3326,6 +3326,8 @@ const SwAttrFnTab aHTMLAttrFnTab = {
/* RES_CHRATR_SCRIPT_HINT */ nullptr,
/* RES_CHRATR_OPTICAL_SIZING */ OutHTML_CSS1Attr,
/* RES_CHRATR_FONT_VARIATIONS */ OutHTML_CSS1Attr,
/* RES_CHRATR_CJK_FONT_VARIATIONS */ OutHTML_CSS1Attr,
/* RES_CHRATR_CTL_FONT_VARIATIONS */ OutHTML_CSS1Attr,
/* RES_TXTATR_REFMARK */ nullptr,
/* RES_TXTATR_TOXMARK */ nullptr,
+6
View File
@@ -1606,6 +1606,12 @@ HTMLAttr **SwHTMLParser::GetAttrTabEntry( sal_uInt16 nWhich )
case RES_CHRATR_FONT_VARIATIONS:
ppAttr = &m_xAttrTab->pFontVariations;
break;
case RES_CHRATR_CJK_FONT_VARIATIONS:
ppAttr = &m_xAttrTab->pFontVariationsCJK;
break;
case RES_CHRATR_CTL_FONT_VARIATIONS:
ppAttr = &m_xAttrTab->pFontVariationsCTL;
break;
case RES_CHRATR_BOX:
ppAttr = &m_xAttrTab->pCharBox;
break;
+12 -1
View File
@@ -288,6 +288,8 @@ struct SvxCSS1ItemIds
sal_uInt16 nBlink;
sal_uInt16 nOpticalSizing;
sal_uInt16 nFontVariations;
sal_uInt16 nFontVariationsCJK;
sal_uInt16 nFontVariationsCTL;
sal_uInt16 nLineSpacing;
sal_uInt16 nAdjust;
@@ -745,6 +747,8 @@ SvxCSS1Parser::SvxCSS1Parser( SfxItemPool& rPool, OUString aBaseURL,
aItemIds.nBlink = initTrueWhich( SID_ATTR_FLASH );
aItemIds.nOpticalSizing = initTrueWhich( SID_ATTR_CHAR_OPTICAL_SIZING );
aItemIds.nFontVariations = initTrueWhich( SID_ATTR_CHAR_FONT_VARIATIONS );
aItemIds.nFontVariationsCJK = initTrueWhich( SID_ATTR_CHAR_CJK_FONT_VARIATIONS );
aItemIds.nFontVariationsCTL = initTrueWhich( SID_ATTR_CHAR_CTL_FONT_VARIATIONS );
aItemIds.nLineSpacing = initTrueWhich( SID_ATTR_PARA_LINESPACE );
aItemIds.nAdjust = initTrueWhich( SID_ATTR_PARA_ADJUST );
@@ -1297,7 +1301,14 @@ static void ParseCSS1_font_variation_settings( const CSS1Expression *pExpr,
}
if( !aVariations.empty() )
rItemSet.Put( SvxFontVariationsItem( std::move(aVariations), aItemIds.nFontVariations ) );
{
SvxFontVariationsItem aItem( std::move(aVariations), aItemIds.nFontVariations );
rItemSet.Put( aItem );
aItem.SetWhich( aItemIds.nFontVariationsCJK );
rItemSet.Put( aItem );
aItem.SetWhich( aItemIds.nFontVariationsCTL );
rItemSet.Put( aItem );
}
}
static void ParseCSS1_text_transform( const CSS1Expression *pExpr,
+2
View File
@@ -131,6 +131,8 @@ struct HTMLAttrTable
HTMLAttr* pCharBox;
HTMLAttr* pOpticalSizing;
HTMLAttr* pFontVariations;
HTMLAttr* pFontVariationsCJK;
HTMLAttr* pFontVariationsCTL;
};
class HTMLAttr
+2
View File
@@ -89,6 +89,8 @@ inline constexpr OUString PROP_CharFontStyleName = u"CharFontStyleName"_ustr;
inline constexpr OUString PROP_CharFontStyleNameAsian = u"CharFontStyleNameAsian"_ustr;
inline constexpr OUString PROP_CharFontStyleNameComplex = u"CharFontStyleNameComplex"_ustr;
inline constexpr OUString PROP_CharFontVariations = u"CharFontVariations"_ustr;
inline constexpr OUString PROP_CharFontVariationsAsian = u"CharFontVariationsAsian"_ustr;
inline constexpr OUString PROP_CharFontVariationsComplex = u"CharFontVariationsComplex"_ustr;
inline constexpr OUString PROP_CharHeight = u"CharHeight"_ustr;
inline constexpr OUString PROP_CharHeightAsian = u"CharHeightAsian"_ustr;
inline constexpr OUString PROP_CharHeightComplex = u"CharHeightComplex"_ustr;
+2
View File
@@ -912,6 +912,8 @@ namespace xmloff::token {
TOKEN( "font-style-name-asian", XML_FONT_STYLE_NAME_ASIAN ),
TOKEN( "font-style-name-complex", XML_FONT_STYLE_NAME_COMPLEX ),
TOKEN( "font-variation-settings", XML_FONT_VARIATION_SETTINGS ),
TOKEN( "font-variation-settings-asian", XML_FONT_VARIATION_SETTINGS_ASIAN ),
TOKEN( "font-variation-settings-complex", XML_FONT_VARIATION_SETTINGS_COMPLEX ),
TOKEN( "font-variant", XML_FONT_VARIANT ),
TOKEN( "font-weight", XML_FONT_WEIGHT ),
TOKEN( "font-weight-asian", XML_FONT_WEIGHT_ASIAN ),
+4
View File
@@ -255,6 +255,8 @@ XMLPropertyMapEntry constexpr aXMLParaPropMap[] =
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 ),
MAP_EXT( PROP_CharFontVariations, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS, XML_TYPE_STRING | XML_TYPE_PROP_TEXT, 0 ),
MAP_EXT( PROP_CharFontVariationsAsian, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS_ASIAN, XML_TYPE_STRING | XML_TYPE_PROP_TEXT, 0 ),
MAP_EXT( PROP_CharFontVariationsComplex, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS_COMPLEX, XML_TYPE_STRING | 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
@@ -645,6 +647,8 @@ XMLPropertyMapEntry constexpr aXMLTextPropMap[] =
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 ),
MAP_EXT( PROP_CharFontVariations, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS, XML_TYPE_STRING | XML_TYPE_PROP_TEXT, 0 ),
MAP_EXT( PROP_CharFontVariationsAsian, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS_ASIAN, XML_TYPE_STRING | XML_TYPE_PROP_TEXT, 0 ),
MAP_EXT( PROP_CharFontVariationsComplex, XML_NAMESPACE_LO_EXT, XML_FONT_VARIATION_SETTINGS_COMPLEX, XML_TYPE_STRING | 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
+2
View File
@@ -816,6 +816,8 @@ font-style-name
font-style-name-asian
font-style-name-complex
font-variation-settings
font-variation-settings-asian
font-variation-settings-complex
font-variant
font-weight
font-weight-asian