summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorKhaled Hosny <khaled@aliftype.com>2022-12-03 16:29:46 +0200
committerخالد حسني <khaled@aliftype.com>2022-12-04 08:21:38 +0000
commitfcba85d2ebb54692e0730610026b9b51feb67716 (patch)
treeba12c032b2d1cdad8ad836ad475be4d44b3e5daf /vcl
parentb6e338fe746028f82c973987eaf04280715110e4 (diff)
Check for trailing numeric part in isCharacterVariant/isStylisticSet
We want to mach features like “ss01” but not, say, “ssty”. Change-Id: Idc4fdf78c577afe66cf76d7f722dc2009863654e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143614 Tested-by: خالد حسني <khaled@aliftype.com> Reviewed-by: خالد حسني <khaled@aliftype.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/font/OpenTypeFeatureDefinitionList.hxx3
-rw-r--r--vcl/source/font/OpenTypeFeatureDefinitionList.cxx43
2 files changed, 6 insertions, 40 deletions
diff --git a/vcl/inc/font/OpenTypeFeatureDefinitionList.hxx b/vcl/inc/font/OpenTypeFeatureDefinitionList.hxx
index c8fb6f7a449d..1ae634deabe8 100644
--- a/vcl/inc/font/OpenTypeFeatureDefinitionList.hxx
+++ b/vcl/inc/font/OpenTypeFeatureDefinitionList.hxx
@@ -25,9 +25,6 @@ private:
void init();
- static bool isSpecialFeature(vcl::font::Feature& rFeature);
- static FeatureDefinition handleSpecialFeature(vcl::font::Feature& rFeature);
-
public:
OpenTypeFeatureDefinitionListPrivate();
FeatureDefinition getDefinition(vcl::font::Feature& rFeature);
diff --git a/vcl/source/font/OpenTypeFeatureDefinitionList.cxx b/vcl/source/font/OpenTypeFeatureDefinitionList.cxx
index 4cc370cec3c7..0400833937af 100644
--- a/vcl/source/font/OpenTypeFeatureDefinitionList.cxx
+++ b/vcl/source/font/OpenTypeFeatureDefinitionList.cxx
@@ -125,49 +125,18 @@ void OpenTypeFeatureDefinitionListPrivate::init()
});
}
-namespace
-{
-OUString getNumericLowerPart(vcl::font::Feature& rFeature)
-{
- auto nFeatureCode = rFeature.m_nCode;
- char cChar1((sal_uInt32(nFeatureCode) >> 8) & 0xFF);
- char cChar2((sal_uInt32(nFeatureCode) >> 0) & 0xFF);
-
- if (rtl::isAsciiDigit(static_cast<unsigned char>(cChar1))
- && rtl::isAsciiDigit(static_cast<unsigned char>(cChar2)))
- {
- return OUStringChar(cChar1) + OUStringChar(cChar2);
- }
- return OUString();
-}
-
-} // end anonymous namespace
-
-bool OpenTypeFeatureDefinitionListPrivate::isSpecialFeature(vcl::font::Feature& rFeature)
-{
- return rFeature.isCharacterVariant() || rFeature.isStylisticSet();
-}
-
-FeatureDefinition
-OpenTypeFeatureDefinitionListPrivate::handleSpecialFeature(vcl::font::Feature& rFeature)
+FeatureDefinition OpenTypeFeatureDefinitionListPrivate::getDefinition(vcl::font::Feature& rFeature)
{
- FeatureDefinition aFeatureDefinition;
- OUString sNumericPart = getNumericLowerPart(rFeature);
- if (!sNumericPart.isEmpty())
+ if (rFeature.isCharacterVariant() || rFeature.isStylisticSet())
{
+ FeatureDefinition aFeatureDefinition;
+ OUString sNumericPart = OUStringChar(char((rFeature.m_nCode >> 8) & 0xFF))
+ + OUStringChar(char((rFeature.m_nCode >> 0) & 0xFF));
if (rFeature.isCharacterVariant())
aFeatureDefinition = { rFeature.m_nCode, STR_FONT_FEATURE_ID_CVXX, sNumericPart };
else if (rFeature.isStylisticSet())
aFeatureDefinition = { rFeature.m_nCode, STR_FONT_FEATURE_ID_SSXX, sNumericPart };
- }
- return aFeatureDefinition;
-}
-
-FeatureDefinition OpenTypeFeatureDefinitionListPrivate::getDefinition(vcl::font::Feature& rFeature)
-{
- if (isSpecialFeature(rFeature))
- {
- return handleSpecialFeature(rFeature);
+ return aFeatureDefinition;
}
auto nFeatureCode = rFeature.m_nCode;