summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/font/OpenTypeFeatureDefinitonList.hxx2
-rw-r--r--vcl/inc/font/OpenTypeFeatureStrings.hrc52
-rw-r--r--vcl/qa/cppunit/FontFeatureTest.cxx12
-rw-r--r--vcl/source/font/FeatureCollector.cxx3
-rw-r--r--vcl/source/font/OpenTypeFeatureDefinitonList.cxx72
5 files changed, 34 insertions, 107 deletions
diff --git a/vcl/inc/font/OpenTypeFeatureDefinitonList.hxx b/vcl/inc/font/OpenTypeFeatureDefinitonList.hxx
index f606017d7412..b5abb2708f4f 100644
--- a/vcl/inc/font/OpenTypeFeatureDefinitonList.hxx
+++ b/vcl/inc/font/OpenTypeFeatureDefinitonList.hxx
@@ -26,12 +26,14 @@ class VCL_DLLPUBLIC OpenTypeFeatureDefinitonListPrivate
private:
std::vector<FeatureDefinition> m_aFeatureDefinition;
std::unordered_map<sal_uInt32, size_t> m_aCodeToIndex;
+ std::vector<sal_uInt32> m_aRequiredFeatures;
void init();
public:
OpenTypeFeatureDefinitonListPrivate();
FeatureDefinition getDefinition(sal_uInt32 nFeatureCode);
+ bool isRequired(sal_uInt32 nFeatureCode);
};
class VCL_DLLPUBLIC OpenTypeFeatureDefinitonList
diff --git a/vcl/inc/font/OpenTypeFeatureStrings.hrc b/vcl/inc/font/OpenTypeFeatureStrings.hrc
index 379a013b9f89..3ed3df4b90f4 100644
--- a/vcl/inc/font/OpenTypeFeatureStrings.hrc
+++ b/vcl/inc/font/OpenTypeFeatureStrings.hrc
@@ -23,27 +23,16 @@
#define NC_(Context, String) (Context "\004" u8##String)
#define STR_FONT_FEATURE_ID_AALT NC_("STR_FONT_FEATURE_ID_AALT", "Access All Alternates")
-#define STR_FONT_FEATURE_ID_ABVF NC_("STR_FONT_FEATURE_ID_ABVF", "Above Base Forms")
-#define STR_FONT_FEATURE_ID_ABVM NC_("STR_FONT_FEATURE_ID_ABVM", "Above Base Mark Positioning")
-#define STR_FONT_FEATURE_ID_ABVS NC_("STR_FONT_FEATURE_ID_ABVS", "Above Base Substitutions")
#define STR_FONT_FEATURE_ID_AFRC NC_("STR_FONT_FEATURE_ID_AFRC", "Alternative (Vertical) Fractions")
-#define STR_FONT_FEATURE_ID_AKHN NC_("STR_FONT_FEATURE_ID_AKHN", "Akhands")
#define STR_FONT_FEATURE_ID_ALIG NC_("STR_FONT_FEATURE_ID_ALIG", "Ancient Ligatures")
-#define STR_FONT_FEATURE_ID_BLWF NC_("STR_FONT_FEATURE_ID_BLWF", "Below Base Forms")
-#define STR_FONT_FEATURE_ID_BLWM NC_("STR_FONT_FEATURE_ID_BLWM", "Below Base Mark Positioning")
-#define STR_FONT_FEATURE_ID_BLWS NC_("STR_FONT_FEATURE_ID_BLWS", "Below Base Substitutions")
#define STR_FONT_FEATURE_ID_C2PC NC_("STR_FONT_FEATURE_ID_C2PC", "Capitals to Petite Capitals")
#define STR_FONT_FEATURE_ID_C2SC NC_("STR_FONT_FEATURE_ID_C2SC", "Capitals to Small Capitals")
#define STR_FONT_FEATURE_ID_CALT NC_("STR_FONT_FEATURE_ID_CALT", "Contextual Alternates")
#define STR_FONT_FEATURE_ID_CASE NC_("STR_FONT_FEATURE_ID_CASE", "Case-Sensitive Forms")
-#define STR_FONT_FEATURE_ID_CCMP NC_("STR_FONT_FEATURE_ID_CCMP", "Glyph Composition / Decomposition")
-#define STR_FONT_FEATURE_ID_CFAR NC_("STR_FONT_FEATURE_ID_CFAR", "Conjunct Form After Ro")
-#define STR_FONT_FEATURE_ID_CJCT NC_("STR_FONT_FEATURE_ID_CJCT", "Conjunct Forms")
#define STR_FONT_FEATURE_ID_CLIG NC_("STR_FONT_FEATURE_ID_CLIG", "Contextual Ligatures")
#define STR_FONT_FEATURE_ID_CPCT NC_("STR_FONT_FEATURE_ID_CPCT", "Centered CJK Punctuation")
#define STR_FONT_FEATURE_ID_CPSP NC_("STR_FONT_FEATURE_ID_CPSP", "Capital Spacing")
#define STR_FONT_FEATURE_ID_CSWH NC_("STR_FONT_FEATURE_ID_CSWH", "Contextual Swash")
-#define STR_FONT_FEATURE_ID_CURS NC_("STR_FONT_FEATURE_ID_CURS", "Cursive Attachment")
#define STR_FONT_FEATURE_ID_CV01 NC_("STR_FONT_FEATURE_ID_CV01", "Character Variant 1")
#define STR_FONT_FEATURE_ID_CV02 NC_("STR_FONT_FEATURE_ID_CV02", "Character Variant 2")
#define STR_FONT_FEATURE_ID_CV03 NC_("STR_FONT_FEATURE_ID_CV03", "Character Variant 3")
@@ -56,32 +45,22 @@
#define STR_FONT_FEATURE_ID_CV10 NC_("STR_FONT_FEATURE_ID_CV10", "Character Variant 10")
#define STR_FONT_FEATURE_ID_CV11 NC_("STR_FONT_FEATURE_ID_CV11", "Character Variant 11")
#define STR_FONT_FEATURE_ID_DCAP NC_("STR_FONT_FEATURE_ID_DCAP", "Drop Caps")
-#define STR_FONT_FEATURE_ID_DIST NC_("STR_FONT_FEATURE_ID_DIST", "Distances")
#define STR_FONT_FEATURE_ID_DLIG NC_("STR_FONT_FEATURE_ID_DLIG", "Discretionary Ligatures")
#define STR_FONT_FEATURE_ID_DNOM NC_("STR_FONT_FEATURE_ID_DNOM", "Denominators")
#define STR_FONT_FEATURE_ID_DPNG NC_("STR_FONT_FEATURE_ID_DPNG", "Dipthongs (Obsolete)")
-#define STR_FONT_FEATURE_ID_DTLS NC_("STR_FONT_FEATURE_ID_DTLS", "Dotless Forms")
#define STR_FONT_FEATURE_ID_EXPT NC_("STR_FONT_FEATURE_ID_EXPT", "Expert Forms")
#define STR_FONT_FEATURE_ID_FALT NC_("STR_FONT_FEATURE_ID_FALT", "Final Glyph on Line Alternates")
-#define STR_FONT_FEATURE_ID_FIN2 NC_("STR_FONT_FEATURE_ID_FIN2", "Terminal Forms #2")
-#define STR_FONT_FEATURE_ID_FIN3 NC_("STR_FONT_FEATURE_ID_FIN3", "Terminal Forms #3")
-#define STR_FONT_FEATURE_ID_FINA NC_("STR_FONT_FEATURE_ID_FINA", "Terminal Forms")
-#define STR_FONT_FEATURE_ID_FLAC NC_("STR_FONT_FEATURE_ID_FLAC", "Flattened Accent Over Capitals")
#define STR_FONT_FEATURE_ID_FRAC NC_("STR_FONT_FEATURE_ID_FRAC", "DIagonal Fractions")
#define STR_FONT_FEATURE_ID_FRAC_PARAM_1 NC_("STR_FONT_FEATURE_ID_FRAC_PARAM_1", "Diagonal Fractions")
#define STR_FONT_FEATURE_ID_FRAC_PARAM_2 NC_("STR_FONT_FEATURE_ID_FRAC_PARAM_2", "Nut Fractions")
#define STR_FONT_FEATURE_ID_FWID NC_("STR_FONT_FEATURE_ID_FWID", "Full Widths")
-#define STR_FONT_FEATURE_ID_HALF NC_("STR_FONT_FEATURE_ID_HALF", "Half Forms")
-#define STR_FONT_FEATURE_ID_HALN NC_("STR_FONT_FEATURE_ID_HALN", "Halant Forms")
#define STR_FONT_FEATURE_ID_HALT NC_("STR_FONT_FEATURE_ID_HALT", "Alternate Half Widths")
#define STR_FONT_FEATURE_ID_HIST NC_("STR_FONT_FEATURE_ID_HIST", "Historical Forms")
#define STR_FONT_FEATURE_ID_HKNA NC_("STR_FONT_FEATURE_ID_HKNA", "Horizontal Kana Alternates")
#define STR_FONT_FEATURE_ID_HLIG NC_("STR_FONT_FEATURE_ID_HLIG", "Historical Ligatures")
-#define STR_FONT_FEATURE_ID_HNGL NC_("STR_FONT_FEATURE_ID_HNGL", "Hanja to Hangul")
+#define STR_FONT_FEATURE_ID_HNGL NC_("STR_FONT_FEATURE_ID_HNGL", "Hanja to Hangul (Obsolete)")
#define STR_FONT_FEATURE_ID_HOJO NC_("STR_FONT_FEATURE_ID_HOJO", "Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms)")
#define STR_FONT_FEATURE_ID_HWID NC_("STR_FONT_FEATURE_ID_HWID", "Half Widths")
-#define STR_FONT_FEATURE_ID_INIT NC_("STR_FONT_FEATURE_ID_INIT", "Initial Forms")
-#define STR_FONT_FEATURE_ID_ISOL NC_("STR_FONT_FEATURE_ID_ISOL", "Isolated Forms")
#define STR_FONT_FEATURE_ID_ITAL NC_("STR_FONT_FEATURE_ID_ITAL", "Italics")
#define STR_FONT_FEATURE_ID_JALT NC_("STR_FONT_FEATURE_ID_JALT", "Justification Alternates")
#define STR_FONT_FEATURE_ID_JP04 NC_("STR_FONT_FEATURE_ID_JP04", "JIS2004 Forms")
@@ -91,20 +70,10 @@
#define STR_FONT_FEATURE_ID_KERN NC_("STR_FONT_FEATURE_ID_KERN", "Horizontal Kerning")
#define STR_FONT_FEATURE_ID_LFBD NC_("STR_FONT_FEATURE_ID_LFBD", "Left Bounds")
#define STR_FONT_FEATURE_ID_LIGA NC_("STR_FONT_FEATURE_ID_LIGA", "Standard Ligatures")
-#define STR_FONT_FEATURE_ID_LJMO NC_("STR_FONT_FEATURE_ID_LJMO", "Leading Jamo Forms")
#define STR_FONT_FEATURE_ID_LNUM NC_("STR_FONT_FEATURE_ID_LNUM", "Lining Figures")
-#define STR_FONT_FEATURE_ID_LOCL NC_("STR_FONT_FEATURE_ID_LOCL", "Localized Forms")
-#define STR_FONT_FEATURE_ID_LTRA NC_("STR_FONT_FEATURE_ID_LTRA", "Left to Right Alternates")
-#define STR_FONT_FEATURE_ID_LTRM NC_("STR_FONT_FEATURE_ID_LTRM", "Left to Right Mirrored Forms")
-#define STR_FONT_FEATURE_ID_MARK NC_("STR_FONT_FEATURE_ID_MARK", "Mark Positioning")
-#define STR_FONT_FEATURE_ID_MED2 NC_("STR_FONT_FEATURE_ID_MED2", "Medial Forms #2")
-#define STR_FONT_FEATURE_ID_MEDI NC_("STR_FONT_FEATURE_ID_MEDI", "Medial Forms")
#define STR_FONT_FEATURE_ID_MGRK NC_("STR_FONT_FEATURE_ID_MGRK", "Mathematical Greek")
-#define STR_FONT_FEATURE_ID_MKMK NC_("STR_FONT_FEATURE_ID_MKMK", "Mark to Mark Positioning")
-#define STR_FONT_FEATURE_ID_MSET NC_("STR_FONT_FEATURE_ID_MSET", "Mark Positioning via Substitution")
#define STR_FONT_FEATURE_ID_NALT NC_("STR_FONT_FEATURE_ID_NALT", "Alternate Annotation Forms")
#define STR_FONT_FEATURE_ID_NLCK NC_("STR_FONT_FEATURE_ID_NLCK", "NLC Kanji Forms")
-#define STR_FONT_FEATURE_ID_NUKT NC_("STR_FONT_FEATURE_ID_NUKT", "Nukta Forms")
#define STR_FONT_FEATURE_ID_NUMR NC_("STR_FONT_FEATURE_ID_NUMR", "Numerators")
#define STR_FONT_FEATURE_ID_ONUM NC_("STR_FONT_FEATURE_ID_ONUM", "Oldstyle Figures")
#define STR_FONT_FEATURE_ID_OPBD NC_("STR_FONT_FEATURE_ID_OPBD", "Optical Bounds")
@@ -114,25 +83,12 @@
#define STR_FONT_FEATURE_ID_PCAP NC_("STR_FONT_FEATURE_ID_PCAP", "Lowercase to Petite Capitals")
#define STR_FONT_FEATURE_ID_PKNA NC_("STR_FONT_FEATURE_ID_PKNA", "Proportional Kana")
#define STR_FONT_FEATURE_ID_PNUM NC_("STR_FONT_FEATURE_ID_PNUM", "Proportional Numbers")
-#define STR_FONT_FEATURE_ID_PREF NC_("STR_FONT_FEATURE_ID_PREF", "Pre Base Forms")
-#define STR_FONT_FEATURE_ID_PRES NC_("STR_FONT_FEATURE_ID_PRES", "Pre Base Substitutions")
-#define STR_FONT_FEATURE_ID_PSTF NC_("STR_FONT_FEATURE_ID_PSTF", "Post Base Forms")
-#define STR_FONT_FEATURE_ID_PSTS NC_("STR_FONT_FEATURE_ID_PSTS", "Post Base Substitutions")
#define STR_FONT_FEATURE_ID_PWID NC_("STR_FONT_FEATURE_ID_PWID", "Proportional Widths")
#define STR_FONT_FEATURE_ID_QWID NC_("STR_FONT_FEATURE_ID_QWID", "Quarter Widths")
-#define STR_FONT_FEATURE_ID_RAND NC_("STR_FONT_FEATURE_ID_RAND", "Randomize")
-#define STR_FONT_FEATURE_ID_RCLT NC_("STR_FONT_FEATURE_ID_RCLT", "Required Contextual Alternates")
-#define STR_FONT_FEATURE_ID_RKRF NC_("STR_FONT_FEATURE_ID_RKRF", "Rakar Forms")
-#define STR_FONT_FEATURE_ID_RLIG NC_("STR_FONT_FEATURE_ID_RLIG", "Required Ligatures")
-#define STR_FONT_FEATURE_ID_RPHF NC_("STR_FONT_FEATURE_ID_RPHF", "Reph Forms")
#define STR_FONT_FEATURE_ID_RTBD NC_("STR_FONT_FEATURE_ID_RTBD", "Right Bounds")
-#define STR_FONT_FEATURE_ID_RTLA NC_("STR_FONT_FEATURE_ID_RTLA", "Right to Left Alternates")
-#define STR_FONT_FEATURE_ID_RTLM NC_("STR_FONT_FEATURE_ID_RTLM", "Right to Left Mirrored Forms")
#define STR_FONT_FEATURE_ID_RUBY NC_("STR_FONT_FEATURE_ID_RUBY", "Ruby Notation Forms")
-#define STR_FONT_FEATURE_ID_RVRN NC_("STR_FONT_FEATURE_ID_RVRN", "Required Variation Alternates")
#define STR_FONT_FEATURE_ID_SALT NC_("STR_FONT_FEATURE_ID_SALT", "Stylistic Alternates")
#define STR_FONT_FEATURE_ID_SINF NC_("STR_FONT_FEATURE_ID_SINF", "Scientific Inferiors")
-#define STR_FONT_FEATURE_ID_SIZE NC_("STR_FONT_FEATURE_ID_SIZE", "Optical Size")
#define STR_FONT_FEATURE_ID_SMCP NC_("STR_FONT_FEATURE_ID_SMCP", "Lowercase to Small Capitals")
#define STR_FONT_FEATURE_ID_SMPL NC_("STR_FONT_FEATURE_ID_SMPL", "Simplified Forms")
#define STR_FONT_FEATURE_ID_SS01 NC_("STR_FONT_FEATURE_ID_SS01", "Stylistic Set 1")
@@ -155,23 +111,17 @@
#define STR_FONT_FEATURE_ID_SS18 NC_("STR_FONT_FEATURE_ID_SS18", "Stylistic Set 18")
#define STR_FONT_FEATURE_ID_SS19 NC_("STR_FONT_FEATURE_ID_SS19", "Stylistic Set 19")
#define STR_FONT_FEATURE_ID_SS20 NC_("STR_FONT_FEATURE_ID_SS20", "Stylistic Set 20")
-#define STR_FONT_FEATURE_ID_SSTY NC_("STR_FONT_FEATURE_ID_SSTY", "Script Style")
-#define STR_FONT_FEATURE_ID_STCH NC_("STR_FONT_FEATURE_ID_STCH", "Stretching Glyph Decomposition")
#define STR_FONT_FEATURE_ID_SUBS NC_("STR_FONT_FEATURE_ID_SUBS", "Subscript")
#define STR_FONT_FEATURE_ID_SUPS NC_("STR_FONT_FEATURE_ID_SUPS", "Superscript")
#define STR_FONT_FEATURE_ID_SWSH NC_("STR_FONT_FEATURE_ID_SWSH", "Swash")
#define STR_FONT_FEATURE_ID_TITL NC_("STR_FONT_FEATURE_ID_TITL", "Titling")
-#define STR_FONT_FEATURE_ID_TJMO NC_("STR_FONT_FEATURE_ID_TJMO", "Trailing Jamo Forms")
#define STR_FONT_FEATURE_ID_TNAM NC_("STR_FONT_FEATURE_ID_TNAM", "Traditional Name Forms")
#define STR_FONT_FEATURE_ID_TNUM NC_("STR_FONT_FEATURE_ID_TNUM", "Tabular Numbers")
#define STR_FONT_FEATURE_ID_TRAD NC_("STR_FONT_FEATURE_ID_TRAD", "Traditional Forms")
#define STR_FONT_FEATURE_ID_TWID NC_("STR_FONT_FEATURE_ID_TWID", "Third Widths")
#define STR_FONT_FEATURE_ID_UNIC NC_("STR_FONT_FEATURE_ID_UNIC", "Unicase")
#define STR_FONT_FEATURE_ID_VALT NC_("STR_FONT_FEATURE_ID_VALT", "Alternate Vertical Metrics")
-#define STR_FONT_FEATURE_ID_VATU NC_("STR_FONT_FEATURE_ID_VATU", "Vattu Variants")
-#define STR_FONT_FEATURE_ID_VERT NC_("STR_FONT_FEATURE_ID_VERT", "Vertical Alternatives")
#define STR_FONT_FEATURE_ID_VHAL NC_("STR_FONT_FEATURE_ID_VHAL", "Alternate Vertical Half Metrics")
-#define STR_FONT_FEATURE_ID_VJMO NC_("STR_FONT_FEATURE_ID_VJMO", "Vowel Jamo Forms")
#define STR_FONT_FEATURE_ID_VKNA NC_("STR_FONT_FEATURE_ID_VKNA", "Vertical Kana Alternates")
#define STR_FONT_FEATURE_ID_VKRN NC_("STR_FONT_FEATURE_ID_VKRN", "Vertical Kerning")
#define STR_FONT_FEATURE_ID_VPAL NC_("STR_FONT_FEATURE_ID_VPAL", "Proportional Alternate Vertical Metrics")
diff --git a/vcl/qa/cppunit/FontFeatureTest.cxx b/vcl/qa/cppunit/FontFeatureTest.cxx
index 63cc4913bb8d..5ab293574d71 100644
--- a/vcl/qa/cppunit/FontFeatureTest.cxx
+++ b/vcl/qa/cppunit/FontFeatureTest.cxx
@@ -59,12 +59,12 @@ void FontFeatureTest::testGetFontFeatures()
}
}
- CPPUNIT_ASSERT_EQUAL(size_t(31), rDefaultFontFeatures.size());
+ CPPUNIT_ASSERT_EQUAL(size_t(27), rDefaultFontFeatures.size());
- OUString aExpectedFeaturesString = "aalt c2sc case ccmp dlig fina frac hlig "
- "liga lnum nalt onum pnum salt sinf smcp "
- "ss01 ss02 ss03 ss04 ss05 ss06 sups tnum "
- "zero cpsp kern lfbd mark mkmk rtbd ";
+ OUString aExpectedFeaturesString = "aalt c2sc case dlig frac hlig liga lnum "
+ "nalt onum pnum salt sinf smcp ss01 ss02 "
+ "ss03 ss04 ss05 ss06 sups tnum zero cpsp "
+ "kern lfbd rtbd ";
CPPUNIT_ASSERT_EQUAL(aExpectedFeaturesString, aFeaturesString);
// Check C2SC feature
@@ -83,7 +83,7 @@ void FontFeatureTest::testGetFontFeatures()
// Check FRAC feature
{
- vcl::font::Feature& rFeature = rDefaultFontFeatures[6];
+ vcl::font::Feature& rFeature = rDefaultFontFeatures[4];
CPPUNIT_ASSERT_EQUAL(vcl::font::featureCode("frac"), rFeature.m_aID.m_aFeatureCode);
vcl::font::FeatureDefinition& rFracFeatureDefinition = rFeature.m_aDefinition;
diff --git a/vcl/source/font/FeatureCollector.cxx b/vcl/source/font/FeatureCollector.cxx
index 1087a9311daf..790c3a484dcb 100644
--- a/vcl/source/font/FeatureCollector.cxx
+++ b/vcl/source/font/FeatureCollector.cxx
@@ -92,6 +92,9 @@ void FeatureCollector::collectForLanguage(hb_tag_t aTableTag, sal_uInt32 nScript
for (hb_tag_t aFeatureTag : aFeatureTags)
{
+ if (OpenTypeFeatureDefinitonList::get().isRequired(aFeatureTag))
+ continue;
+
m_rFontFeatures.emplace_back();
vcl::font::Feature& rFeature = m_rFontFeatures.back();
rFeature.m_aID = { aFeatureTag, aScriptTag, aLanguageTag };
diff --git a/vcl/source/font/OpenTypeFeatureDefinitonList.cxx b/vcl/source/font/OpenTypeFeatureDefinitonList.cxx
index 17ee8268c741..8b5ce4858956 100644
--- a/vcl/source/font/OpenTypeFeatureDefinitonList.cxx
+++ b/vcl/source/font/OpenTypeFeatureDefinitonList.cxx
@@ -22,27 +22,16 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{
m_aFeatureDefinition.assign({
{ featureCode("aalt"), STR_FONT_FEATURE_ID_AALT },
- { featureCode("abvf"), STR_FONT_FEATURE_ID_ABVF },
- { featureCode("abvm"), STR_FONT_FEATURE_ID_ABVM },
- { featureCode("abvs"), STR_FONT_FEATURE_ID_ABVS },
{ featureCode("afrc"), STR_FONT_FEATURE_ID_AFRC },
- { featureCode("akhn"), STR_FONT_FEATURE_ID_AKHN },
{ featureCode("alig"), STR_FONT_FEATURE_ID_ALIG },
- { featureCode("blwf"), STR_FONT_FEATURE_ID_BLWF },
- { featureCode("blwm"), STR_FONT_FEATURE_ID_BLWM },
- { featureCode("blws"), STR_FONT_FEATURE_ID_BLWS },
{ featureCode("c2pc"), STR_FONT_FEATURE_ID_C2PC },
{ featureCode("c2sc"), STR_FONT_FEATURE_ID_C2SC },
{ featureCode("calt"), STR_FONT_FEATURE_ID_CALT },
{ featureCode("case"), STR_FONT_FEATURE_ID_CASE },
- { featureCode("ccmp"), STR_FONT_FEATURE_ID_CCMP },
- { featureCode("cfar"), STR_FONT_FEATURE_ID_CFAR },
- { featureCode("cjct"), STR_FONT_FEATURE_ID_CJCT },
{ featureCode("clig"), STR_FONT_FEATURE_ID_CLIG },
{ featureCode("cpct"), STR_FONT_FEATURE_ID_CPCT },
{ featureCode("cpsp"), STR_FONT_FEATURE_ID_CPSP },
{ featureCode("cswh"), STR_FONT_FEATURE_ID_CSWH },
- { featureCode("curs"), STR_FONT_FEATURE_ID_CURS },
{ featureCode("cv01"), STR_FONT_FEATURE_ID_CV01 },
{ featureCode("cv02"), STR_FONT_FEATURE_ID_CV02 },
{ featureCode("cv03"), STR_FONT_FEATURE_ID_CV03 },
@@ -53,23 +42,15 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{ featureCode("cv08"), STR_FONT_FEATURE_ID_CV08 },
{ featureCode("cv09"), STR_FONT_FEATURE_ID_CV09 },
{ featureCode("dcap"), STR_FONT_FEATURE_ID_DCAP },
- { featureCode("dist"), STR_FONT_FEATURE_ID_DIST },
{ featureCode("dlig"), STR_FONT_FEATURE_ID_DLIG },
{ featureCode("dnom"), STR_FONT_FEATURE_ID_DNOM },
{ featureCode("dpng"), STR_FONT_FEATURE_ID_DPNG },
- { featureCode("dtls"), STR_FONT_FEATURE_ID_DTLS },
{ featureCode("expt"), STR_FONT_FEATURE_ID_EXPT },
{ featureCode("falt"), STR_FONT_FEATURE_ID_FALT },
- { featureCode("fin2"), STR_FONT_FEATURE_ID_FIN2 },
- { featureCode("fin3"), STR_FONT_FEATURE_ID_FIN3 },
- { featureCode("fina"), STR_FONT_FEATURE_ID_FINA },
- { featureCode("flac"), STR_FONT_FEATURE_ID_FLAC },
{ featureCode("frac"), STR_FONT_FEATURE_ID_FRAC,
std::vector<FeatureParameter>{ { 1, STR_FONT_FEATURE_ID_FRAC_PARAM_1 },
{ 2, STR_FONT_FEATURE_ID_FRAC_PARAM_2 } } },
{ featureCode("fwid"), STR_FONT_FEATURE_ID_FWID },
- { featureCode("half"), STR_FONT_FEATURE_ID_HALF },
- { featureCode("haln"), STR_FONT_FEATURE_ID_HALN },
{ featureCode("halt"), STR_FONT_FEATURE_ID_HALT },
{ featureCode("hist"), STR_FONT_FEATURE_ID_HIST },
{ featureCode("hkna"), STR_FONT_FEATURE_ID_HKNA },
@@ -77,8 +58,6 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{ featureCode("hngl"), STR_FONT_FEATURE_ID_HNGL },
{ featureCode("hojo"), STR_FONT_FEATURE_ID_HOJO },
{ featureCode("hwid"), STR_FONT_FEATURE_ID_HWID },
- { featureCode("init"), STR_FONT_FEATURE_ID_INIT },
- { featureCode("isol"), STR_FONT_FEATURE_ID_ISOL },
{ featureCode("ital"), STR_FONT_FEATURE_ID_ITAL },
{ featureCode("jalt"), STR_FONT_FEATURE_ID_JALT },
{ featureCode("jp78"), STR_FONT_FEATURE_ID_JP78 },
@@ -88,20 +67,10 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{ featureCode("kern"), STR_FONT_FEATURE_ID_KERN },
{ featureCode("lfbd"), STR_FONT_FEATURE_ID_LFBD },
{ featureCode("liga"), STR_FONT_FEATURE_ID_LIGA },
- { featureCode("ljmo"), STR_FONT_FEATURE_ID_LJMO },
{ featureCode("lnum"), STR_FONT_FEATURE_ID_LNUM },
- { featureCode("locl"), STR_FONT_FEATURE_ID_LOCL },
- { featureCode("ltra"), STR_FONT_FEATURE_ID_LTRA },
- { featureCode("ltrm"), STR_FONT_FEATURE_ID_LTRM },
- { featureCode("mark"), STR_FONT_FEATURE_ID_MARK },
- { featureCode("med2"), STR_FONT_FEATURE_ID_MED2 },
- { featureCode("medi"), STR_FONT_FEATURE_ID_MEDI },
{ featureCode("mgrk"), STR_FONT_FEATURE_ID_MGRK },
- { featureCode("mkmk"), STR_FONT_FEATURE_ID_MKMK },
- { featureCode("mset"), STR_FONT_FEATURE_ID_MSET },
{ featureCode("nalt"), STR_FONT_FEATURE_ID_NALT },
{ featureCode("nlck"), STR_FONT_FEATURE_ID_NLCK },
- { featureCode("nukt"), STR_FONT_FEATURE_ID_NUKT },
{ featureCode("numr"), STR_FONT_FEATURE_ID_NUMR },
{ featureCode("onum"), STR_FONT_FEATURE_ID_ONUM },
{ featureCode("opbd"), STR_FONT_FEATURE_ID_OPBD },
@@ -111,25 +80,12 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{ featureCode("pcap"), STR_FONT_FEATURE_ID_PCAP },
{ featureCode("pkna"), STR_FONT_FEATURE_ID_PKNA },
{ featureCode("pnum"), STR_FONT_FEATURE_ID_PNUM },
- { featureCode("pref"), STR_FONT_FEATURE_ID_PREF },
- { featureCode("pres"), STR_FONT_FEATURE_ID_PRES },
- { featureCode("pstf"), STR_FONT_FEATURE_ID_PSTF },
- { featureCode("psts"), STR_FONT_FEATURE_ID_PSTS },
{ featureCode("pwid"), STR_FONT_FEATURE_ID_PWID },
{ featureCode("qwid"), STR_FONT_FEATURE_ID_QWID },
- { featureCode("rand"), STR_FONT_FEATURE_ID_RAND },
- { featureCode("rclt"), STR_FONT_FEATURE_ID_RCLT },
- { featureCode("rkrf"), STR_FONT_FEATURE_ID_RKRF },
- { featureCode("rlig"), STR_FONT_FEATURE_ID_RLIG },
- { featureCode("rphf"), STR_FONT_FEATURE_ID_RPHF },
{ featureCode("rtbd"), STR_FONT_FEATURE_ID_RTBD },
- { featureCode("rtla"), STR_FONT_FEATURE_ID_RTLA },
- { featureCode("rtlm"), STR_FONT_FEATURE_ID_RTLM },
{ featureCode("ruby"), STR_FONT_FEATURE_ID_RUBY },
- { featureCode("rvrn"), STR_FONT_FEATURE_ID_RVRN },
{ featureCode("salt"), STR_FONT_FEATURE_ID_SALT },
{ featureCode("sinf"), STR_FONT_FEATURE_ID_SINF },
- { featureCode("size"), STR_FONT_FEATURE_ID_SIZE },
{ featureCode("smcp"), STR_FONT_FEATURE_ID_SMCP },
{ featureCode("smpl"), STR_FONT_FEATURE_ID_SMPL },
{ featureCode("ss01"), STR_FONT_FEATURE_ID_SS01 },
@@ -152,23 +108,17 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{ featureCode("ss18"), STR_FONT_FEATURE_ID_SS18 },
{ featureCode("ss19"), STR_FONT_FEATURE_ID_SS19 },
{ featureCode("ss20"), STR_FONT_FEATURE_ID_SS20 },
- { featureCode("ssty"), STR_FONT_FEATURE_ID_SSTY },
- { featureCode("stch"), STR_FONT_FEATURE_ID_STCH },
{ featureCode("subs"), STR_FONT_FEATURE_ID_SUBS },
{ featureCode("sups"), STR_FONT_FEATURE_ID_SUPS },
{ featureCode("swsh"), STR_FONT_FEATURE_ID_SWSH },
{ featureCode("titl"), STR_FONT_FEATURE_ID_TITL },
- { featureCode("tjmo"), STR_FONT_FEATURE_ID_TJMO },
{ featureCode("tnam"), STR_FONT_FEATURE_ID_TNAM },
{ featureCode("tnum"), STR_FONT_FEATURE_ID_TNUM },
{ featureCode("trad"), STR_FONT_FEATURE_ID_TRAD },
{ featureCode("twid"), STR_FONT_FEATURE_ID_TWID },
{ featureCode("unic"), STR_FONT_FEATURE_ID_UNIC },
{ featureCode("valt"), STR_FONT_FEATURE_ID_VALT },
- { featureCode("vatu"), STR_FONT_FEATURE_ID_VATU },
- { featureCode("vert"), STR_FONT_FEATURE_ID_VERT },
{ featureCode("vhal"), STR_FONT_FEATURE_ID_VHAL },
- { featureCode("vjmo"), STR_FONT_FEATURE_ID_VJMO },
{ featureCode("vkna"), STR_FONT_FEATURE_ID_VKNA },
{ featureCode("vkrn"), STR_FONT_FEATURE_ID_VKRN },
{ featureCode("vpal"), STR_FONT_FEATURE_ID_VPAL },
@@ -181,6 +131,22 @@ void OpenTypeFeatureDefinitonListPrivate::init()
{
m_aCodeToIndex.emplace(m_aFeatureDefinition[i].getCode(), i);
}
+
+ m_aRequiredFeatures.assign({
+ featureCode("abvf"), featureCode("abvm"), featureCode("abvs"), featureCode("akhn"),
+ featureCode("blwf"), featureCode("blwm"), featureCode("blws"), featureCode("ccmp"),
+ featureCode("cfar"), featureCode("cjct"), featureCode("curs"), featureCode("dist"),
+ featureCode("dtls"), featureCode("fin2"), featureCode("fin3"), featureCode("fina"),
+ featureCode("flac"), featureCode("half"), featureCode("haln"), featureCode("init"),
+ featureCode("isol"), featureCode("ljmo"), featureCode("locl"), featureCode("ltra"),
+ featureCode("ltrm"), featureCode("mark"), featureCode("med2"), featureCode("medi"),
+ featureCode("mkmk"), featureCode("mset"), featureCode("nukt"), featureCode("pref"),
+ featureCode("pres"), featureCode("pstf"), featureCode("psts"), featureCode("rand"),
+ featureCode("rclt"), featureCode("rkrf"), featureCode("rlig"), featureCode("rphf"),
+ featureCode("rtla"), featureCode("rtlm"), featureCode("rvrn"), featureCode("size"),
+ featureCode("ssty"), featureCode("stch"), featureCode("tjmo"), featureCode("vatu"),
+ featureCode("vert"), featureCode("vjmo"),
+ });
}
FeatureDefinition OpenTypeFeatureDefinitonListPrivate::getDefinition(sal_uInt32 nFeatureCode)
@@ -193,6 +159,12 @@ FeatureDefinition OpenTypeFeatureDefinitonListPrivate::getDefinition(sal_uInt32
return FeatureDefinition();
}
+bool OpenTypeFeatureDefinitonListPrivate::isRequired(sal_uInt32 nFeatureCode)
+{
+ return std::find(m_aRequiredFeatures.begin(), m_aRequiredFeatures.end(), nFeatureCode)
+ != m_aRequiredFeatures.end();
+}
+
} // end font namespace
} // end vcl namespace