#pragma once #include #include #include #include #include namespace mbgl { enum GlyphIDType : uint16_t { FontPBF = 0x00, }; GlyphIDType genNewGlyphIDType(const std::string &url, const FontStack &fontStack, const std::vector> &pairs); class GlyphRange { public: uint16_t first = 0; uint16_t second = 0; GlyphIDType type = GlyphIDType::FontPBF; GlyphRange(uint32_t first_, uint32_t second_, GlyphIDType type_ = FontPBF); bool operator==(const GlyphRange &other) const; bool operator<(const GlyphRange &other) const; }; constexpr uint32_t GLYPHS_PER_GLYPH_RANGE = 256; constexpr uint32_t GLYPH_RANGES_PER_FONT_STACK = 256; // Verified against i18n::glyphRangeIsEntirelyLocallyGenerated by // i18n.GlyphRangeLocalGenerationCountMatchesConstant. constexpr uint32_t NON_IDEOGRAPH_GLYPH_RANGES_PER_FONT_STACK = 97; } // end namespace mbgl namespace std { template <> struct hash { std::size_t operator()(const mbgl::GlyphRange &range) const { return mbgl::util::hash(range.first, range.second); } }; } // namespace std