~aleteoryx/muditaos

d6fdeb32dcab999ac80777f488986feb6ab108ea — Paweł Joński 3 years ago 35ae5f2
[MOS-288] Split default and fallback fonts to separate entries

And fix emojis display
M doc/fonts.md => doc/fonts.md +8 -6
@@ 19,18 19,20 @@ Short example:
```
{
    "info" : {
        "default_font_name" :       "dejavu_sans_bold_27",
        "default_font_type_name" :  "dejavu_sans"
        "fallback_font" : "dejavu_sans_bold_27",
        "default_font": "gt_pressura_bold_27",
        "default_font_family" : "gt_pressura"
    },
    "style": {
        "mediumboldtitle":      "dejavu_sans/dejavu_sans_bold_27.mpf",
        "small":      "gt_pressura/gt_pressura_regular_24.mpf",
        ...
    }
}
```
There are two values in `info` part:
- `default_font_name` - fallback font in case of inability to load specified font
- `default_font_type_name` - default font family name used in methods which specify only size and weight of a font
There are three obligatory values in `info` part:
- `fallback_font` - fallback font used when specified font is unable to display some glyphs
- `default_font` - default font used in case of inability to load specified font
- `default_font_family` - default font family name used in methods which specify only size and weight of a font


Every key in `style` part defines font type to be used in fonts list in MuditaOS, which later can be used in `FontManager::getFont` method (ie `getFont("supersizemelight")`)

M module-gui/gui/core/Font.cpp => module-gui/gui/core/Font.cpp +2 -2
@@ 19,7 19,7 @@ namespace gui
    }

    Font::Font(unsigned int size, Weight weight)
        : Font(FontManager::getInstance().getDefaultFontTypeName(), size, weight)
        : Font(FontManager::getInstance().getDefaultFontFamilyName(), size, weight)
    {}

    Font::Font(RawFont *rawfont)


@@ 62,7 62,7 @@ namespace gui

    void Font::setFont(unsigned int size, Weight weight)
    {
        setFont((FontManager::getInstance().getDefaultFontTypeName()), size, weight);
        setFont((FontManager::getInstance().getDefaultFontFamilyName()), size, weight);
    }

    void Font::setSize(unsigned int new_size)

M module-gui/gui/core/FontManager.cpp => module-gui/gui/core/FontManager.cpp +14 -15
@@ 121,10 121,11 @@ namespace gui
            throw std::invalid_argument("Can't parse the file!");
        }

        auto fontmapObjects = fontmapJson.object_items();
        const auto infoJson = fontmapObjects["info"];
        defaultFontName     = infoJson["default_font_name"].string_value();
        defaultFontTypeName = infoJson["default_font_type_name"].string_value();
        auto fontmapObjects   = fontmapJson.object_items();
        const auto infoJson   = fontmapObjects["info"];
        fallbackFontName      = infoJson["fallback_font"].string_value();
        defaultFontFamilyName = infoJson["default_font_family"].string_value();
        defaultFontName       = infoJson["default_font"].string_value();

        const auto styleJson = fontmapObjects["style"];
        std::map<std::string, std::string> fontFiles;


@@ 152,11 153,13 @@ namespace gui
    {
        loadFonts(baseDirectory);

        auto fallback_font = find(getFontName(defaultFontName));
        if (fallback_font != nullptr) {
            for (auto font : fonts) {
                font->setFallbackFont(fallback_font);
            }
        auto fallback_font = find(fallbackFontName);
        if (not fallback_font) {
            return false;
        }

        for (auto &font : fonts) {
            font->setFallbackFont(fallback_font);
        }
        initialized = true;
        return initialized;


@@ 219,13 222,9 @@ namespace gui
        return getFont(defaultFontName);
    }

    auto FontManager::getDefaultFontName() const -> std::string
    {
        return defaultFontName;
    }
    auto FontManager::getDefaultFontTypeName() const -> std::string
    auto FontManager::getDefaultFontFamilyName() const -> std::string
    {
        return defaultFontTypeName;
        return defaultFontFamilyName;
    }

    auto FontManager::find(std::string_view name) const -> RawFont *

M module-gui/gui/core/FontManager.hpp => module-gui/gui/core/FontManager.hpp +3 -3
@@ 54,12 54,12 @@ namespace gui
            return initialized;
        }
        [[nodiscard]] auto getFontName(const std::string &font) const -> std::string;
        [[nodiscard]] auto getDefaultFontName() const -> std::string;
        [[nodiscard]] auto getDefaultFontTypeName() const -> std::string;
        [[nodiscard]] auto getDefaultFontFamilyName() const -> std::string;

      private:
        std::string fallbackFontName{};
        std::string defaultFontFamilyName{};
        std::string defaultFontName{};
        std::string defaultFontTypeName{};

        [[nodiscard]] auto find(std::string_view name) const -> RawFont *;
    };

M products/BellHybrid/CMakeLists.txt => products/BellHybrid/CMakeLists.txt +2 -2
@@ 108,14 108,14 @@ download_asset_release_json(json-common-target
                            ${CMAKE_CURRENT_SOURCE_DIR}/assets/assets_common.json
                            ${CMAKE_BINARY_DIR}/sysroot/sys/current/
                            MuditaOSPublicAssets
                            0.0.4
                            0.0.7
                            ${MUDITA_CACHE_DIR}
    )
download_asset_release_json(json-community-target
                            ${CMAKE_CURRENT_SOURCE_DIR}/assets/assets_community.json
                            ${CMAKE_BINARY_DIR}/sysroot/sys/current/
                            MuditaOSPublicAssets
                            0.0.4
                            0.0.7
                            ${MUDITA_CACHE_DIR}
    )
download_asset_json(json-rt1051-target

M products/PurePhone/CMakeLists.txt => products/PurePhone/CMakeLists.txt +2 -2
@@ 134,14 134,14 @@ download_asset_release_json(json-common-target
                            ${CMAKE_CURRENT_SOURCE_DIR}/assets/assets_common.json
                            ${CMAKE_BINARY_DIR}/sysroot/sys/current/
                            MuditaOSPublicAssets
                            0.0.5
                            0.0.7
                            ${MUDITA_CACHE_DIR}
    )
download_asset_release_json(json-community-target
                            ${CMAKE_CURRENT_SOURCE_DIR}/assets/assets_community.json
                            ${CMAKE_BINARY_DIR}/sysroot/sys/current/
                            MuditaOSPublicAssets
                            0.0.5
                            0.0.7
                            ${MUDITA_CACHE_DIR}
    )
download_asset_json(json-rt1051-target