783f166793
In OpenType fonts we have no way if detecting what features are on by default and what not (short of hard-coding this, since HarfBuzz has no API of giving us this information, and it is also not a fixed set per-font, depends also on the text being shaped). The dialog currently does not differentiate between a disabled feature and unset feature. To make this distinction, feature value is now signed and negative value means the feature is unset (i.e. the default is used), and the checkbox is now a try state one to reflect this. Change-Id: Iba5d13f02610e7b761677acc19872788c72afde1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138729 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#ifndef INCLUDED_VCL_FONT_FEATUREPASER_HXX
|
|
#define INCLUDED_VCL_FONT_FEATUREPASER_HXX
|
|
|
|
#include <vcl/dllapi.h>
|
|
#include <rtl/ustring.hxx>
|
|
#include <vector>
|
|
#include <unordered_map>
|
|
|
|
#include <vcl/font/Feature.hxx>
|
|
|
|
namespace vcl::font
|
|
{
|
|
// These must not conflict with font name lists which use ; and ,
|
|
constexpr const char FeaturePrefix = ':';
|
|
constexpr const char FeatureSeparator = '&';
|
|
|
|
VCL_DLLPUBLIC OUString trimFontNameFeatures(OUString const& rFontName);
|
|
|
|
class VCL_DLLPUBLIC FeatureParser
|
|
{
|
|
private:
|
|
OUString m_sLanguage;
|
|
std::vector<FeatureSetting> m_aFeatures;
|
|
|
|
public:
|
|
FeatureParser(std::u16string_view sFontName);
|
|
|
|
OUString const& getLanguage() const { return m_sLanguage; }
|
|
|
|
std::vector<FeatureSetting> const& getFeatures() const { return m_aFeatures; }
|
|
|
|
std::unordered_map<uint32_t, int32_t> getFeaturesMap() const;
|
|
};
|
|
|
|
} // namespace vcl::font
|
|
|
|
#endif // INCLUDED_VCL_FONT_FEATUREPASER_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|