1bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com/* 2bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * Copyright 2011 The Android Open Source Project 3bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * 4bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * Use of this source code is governed by a BSD-style license that can be 5bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * found in the LICENSE file. 6bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com */ 7bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 8bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com#ifndef SKFONTCONFIGPARSER_ANDROID_H_ 9bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com#define SKFONTCONFIGPARSER_ANDROID_H_ 10bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 119a70f347c9f279bf7b4ad8f24e78e3e524767ed5djsollen@google.com#include "SkString.h" 12bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com#include "SkTDArray.h" 13bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 143b6255493e458c6b2c1412af908581f0bf3f6b70djsollen/** \class SkLanguage 153b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 163b6255493e458c6b2c1412af908581f0bf3f6b70djsollen The SkLanguage class represents a human written language, and is used by 173b6255493e458c6b2c1412af908581f0bf3f6b70djsollen text draw operations to determine which glyph to draw when drawing 183b6255493e458c6b2c1412af908581f0bf3f6b70djsollen characters with variants (ie Han-derived characters). 193b6255493e458c6b2c1412af908581f0bf3f6b70djsollen*/ 203b6255493e458c6b2c1412af908581f0bf3f6b70djsollenclass SkLanguage { 213b6255493e458c6b2c1412af908581f0bf3f6b70djsollenpublic: 223b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage() { } 233b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage(const SkString& tag) : fTag(tag) { } 243b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage(const char* tag) : fTag(tag) { } 253b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage(const char* tag, size_t len) : fTag(tag, len) { } 263b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage(const SkLanguage& b) : fTag(b.fTag) { } 273b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 283b6255493e458c6b2c1412af908581f0bf3f6b70djsollen /** Gets a BCP 47 language identifier for this SkLanguage. 293b6255493e458c6b2c1412af908581f0bf3f6b70djsollen @return a BCP 47 language identifier representing this language 303b6255493e458c6b2c1412af908581f0bf3f6b70djsollen */ 313b6255493e458c6b2c1412af908581f0bf3f6b70djsollen const SkString& getTag() const { return fTag; } 323b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 333b6255493e458c6b2c1412af908581f0bf3f6b70djsollen /** Performs BCP 47 fallback to return an SkLanguage one step more general. 343b6255493e458c6b2c1412af908581f0bf3f6b70djsollen @return an SkLanguage one step more general 353b6255493e458c6b2c1412af908581f0bf3f6b70djsollen */ 363b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage getParent() const; 373b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 383b6255493e458c6b2c1412af908581f0bf3f6b70djsollen bool operator==(const SkLanguage& b) const { 393b6255493e458c6b2c1412af908581f0bf3f6b70djsollen return fTag == b.fTag; 403b6255493e458c6b2c1412af908581f0bf3f6b70djsollen } 413b6255493e458c6b2c1412af908581f0bf3f6b70djsollen bool operator!=(const SkLanguage& b) const { 423b6255493e458c6b2c1412af908581f0bf3f6b70djsollen return fTag != b.fTag; 433b6255493e458c6b2c1412af908581f0bf3f6b70djsollen } 443b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkLanguage& operator=(const SkLanguage& b) { 453b6255493e458c6b2c1412af908581f0bf3f6b70djsollen fTag = b.fTag; 463b6255493e458c6b2c1412af908581f0bf3f6b70djsollen return *this; 473b6255493e458c6b2c1412af908581f0bf3f6b70djsollen } 483b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 493b6255493e458c6b2c1412af908581f0bf3f6b70djsollenprivate: 503b6255493e458c6b2c1412af908581f0bf3f6b70djsollen //! BCP 47 language identifier 513b6255493e458c6b2c1412af908581f0bf3f6b70djsollen SkString fTag; 523b6255493e458c6b2c1412af908581f0bf3f6b70djsollen}; 533b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 543b6255493e458c6b2c1412af908581f0bf3f6b70djsollenenum FontVariants { 553b6255493e458c6b2c1412af908581f0bf3f6b70djsollen kDefault_FontVariant = 0x01, 563b6255493e458c6b2c1412af908581f0bf3f6b70djsollen kCompact_FontVariant = 0x02, 573b6255493e458c6b2c1412af908581f0bf3f6b70djsollen kElegant_FontVariant = 0x04, 583b6255493e458c6b2c1412af908581f0bf3f6b70djsollen kLast_FontVariant = kElegant_FontVariant, 593b6255493e458c6b2c1412af908581f0bf3f6b70djsollen}; 603b6255493e458c6b2c1412af908581f0bf3f6b70djsollentypedef uint32_t FontVariant; 613b6255493e458c6b2c1412af908581f0bf3f6b70djsollen 62bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.comstruct FontFileInfo { 6307544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson FontFileInfo() : fIndex(0), fWeight(0) { } 648d84c995319dd4a82e4f2054bbd19f968c671ca6bungeman 6531db71dd59b18ae0f36ca2686fba5fdcc6fe9439commit-bot@chromium.org SkString fFileName; 668d84c995319dd4a82e4f2054bbd19f968c671ca6bungeman int fIndex; 6707544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson int fWeight; 68bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com}; 69bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 70bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com/** 71d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson * A font family provides one or more names for a collection of fonts, each of 72d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson * which has a different style (normal, italic) or weight (thin, light, bold, 73d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson * etc). 74d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson * Some fonts may occur in compact variants for use in the user interface. 75d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson * Android distinguishes "fallback" fonts to support non-ASCII character sets. 76bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com */ 77bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.comstruct FontFamily { 7807544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson FontFamily() 793b6255493e458c6b2c1412af908581f0bf3f6b70djsollen : fVariant(kDefault_FontVariant) 80d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson , fOrder(-1) 8107544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson , fIsFallbackFont(false) { } 82bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 8307544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson SkTArray<SkString> fNames; 84d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson SkTArray<FontFileInfo> fFonts; 8507544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson SkLanguage fLanguage; 863b6255493e458c6b2c1412af908581f0bf3f6b70djsollen FontVariant fVariant; 87d3ddea284ec6611a93a6b75e64de39d0bc7e083ctomhudson int fOrder; // internal to SkFontConfigParser 8807544757c9fcf0f359f1686a3779eb2e75dd5b36tomhudson bool fIsFallbackFont; 89bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com}; 90bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 91bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.comnamespace SkFontConfigParser { 92bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 93bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com/** 94bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * Parses all system font configuration files and returns the results in an 95bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * array of FontFamily structures. 96bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com */ 97bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.comvoid GetFontFamilies(SkTDArray<FontFamily*> &fontFamilies); 98bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 99bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com/** 100bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * Parses all test font configuration files and returns the results in an 101bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com * array of FontFamily structures. 102bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com */ 103bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.comvoid GetTestFontFamilies(SkTDArray<FontFamily*> &fontFamilies, 104bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com const char* testMainConfigFile, 105bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com const char* testFallbackConfigFile); 106bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 107bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com} // SkFontConfigParser namespace 108bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com 109bfae9d373ccc9cf47fd70757092962c7850fadf4djsollen@google.com#endif /* SKFONTCONFIGPARSER_ANDROID_H_ */ 110