/* * Copyright 2011 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkFontMgr_android_parser_DEFINED #define SkFontMgr_android_parser_DEFINED #include "include/core/SkFontArguments.h" #include "include/core/SkFontMgr.h" #include "include/core/SkString.h" #include "include/core/SkTypes.h" #include "include/private/base/SkTArray.h" #include "include/private/base/SkTDArray.h" #include "src/core/SkTHash.h" #include <climits> #include <limits> /** \class SkLanguage The SkLanguage class represents a human written language, and is used by text draw operations to determine which glyph to draw when drawing characters with variants (ie Han-derived characters). */ class SkLanguage { … }; enum FontVariants { … }; FontVariant; // Must remain trivially movable (can be memmoved). struct FontFileInfo { … }; /** * A font family provides one or more names for a collection of fonts, each of * which has a different style (normal, italic) or weight (thin, light, bold, * etc). * Some fonts may occur in compact variants for use in the user interface. * Android distinguishes "fallback" fonts to support non-ASCII character sets. */ struct FontFamily { … }; namespace SkFontMgr_Android_Parser { /** Parses system font configuration files and appends result to fontFamilies. */ void GetSystemFontFamilies(SkTDArray<FontFamily*>& fontFamilies); /** Parses font configuration files and appends result to fontFamilies. */ void GetCustomFontFamilies(SkTDArray<FontFamily*>& fontFamilies, const SkString& basePath, const char* fontsXml, const char* fallbackFontsXml, const char* langFallbackFontsDir = nullptr); } // namespace SkFontMgr_Android_Parser /** Parses a null terminated string into an integer type, checking for overflow. * http://www.w3.org/TR/html-markup/datatypes.html#common.data.integer.non-negative-def * * If the string cannot be parsed into 'value', returns false and does not change 'value'. */ template <typename T> bool parse_non_negative_integer(const char* s, T* value) { … } /** Parses a null terminated string into a signed fixed point value with bias N. * * Like http://www.w3.org/TR/html-markup/datatypes.html#common.data.float-def , * but may start with '.' and does not support 'e'. '-?((:digit:+(.:digit:+)?)|(.:digit:+))' * * Checks for overflow. * Low bit rounding is not defined (is currently truncate). * Bias (N) required to allow for the sign bit and 4 bits of integer. * * If the string cannot be parsed into 'value', returns false and does not change 'value'. */ template <int N, typename T> bool parse_fixed(const char* s, T* value) { … } #endif /* SkFontMgr_android_parser_DEFINED */