X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFonts.h;h=481c2f78cb4f48e40ccdf2d2916a4a53a234581f;hb=ada09a2cdac01dec141c1fd680b0a8c4f77c2237;hp=3f8b1351fc752868ce909c6b4afaa1672199218f;hpb=03943ef730aa5dc6bb61433d4cbe35f082614da0;p=lyx.git diff --git a/src/LaTeXFonts.h b/src/LaTeXFonts.h index 3f8b1351fc..481c2f78cb 100644 --- a/src/LaTeXFonts.h +++ b/src/LaTeXFonts.h @@ -26,7 +26,8 @@ class Lexer; class LaTeXFont { public: /// TeX font - LaTeXFont() : switchdefault_(false) {} + // FIXME Add fontenc tag to classes which is used if no font is specified? + LaTeXFont() : osfdefault_(false), switchdefault_(false), moreopts_(false) { fontenc_.push_back("T1"); } /// The font name docstring const & name() { return name_; } /// The name to appear in the document dialog @@ -35,14 +36,18 @@ public: docstring const & family() { return family_; } /// The package that provides this font docstring const & package() { return package_; } - /// Alternative packages if package() is not available - std::vector const & altpackages() { return altpackages_; } - /// A package that provides all families - docstring const & completepackage() { return completepackage_; } - /// A package specifically needed for OT1 font encoding - docstring const & ot1package() { return ot1package_; } - /// A package that provides Old Style Figures for this font - docstring const & osfpackage() { return osfpackage_; } + /// Does this provide a specific font encoding? + bool hasFontenc(std::string const &) const; + /// The font encoding(s) + std::vector const & fontencs() const { return fontenc_; } + /// Alternative font if package() is not available + std::vector const & altfonts() { return altfonts_; } + /// A font that provides all families + docstring const & completefont() { return completefont_; } + /// A font specifically needed for OT1 font encoding + docstring const & ot1font() { return ot1font_; } + /// A font that provides Old Style Figures for this type face + docstring const & osffont() { return osffont_; } /// A package option for Old Style Figures docstring const & osfoption() { return osfoption_; } /// A package option for true SmallCaps @@ -51,32 +56,57 @@ public: docstring const & osfscoption() { return osfscoption_; } /// A package option for font scaling docstring const & scaleoption() { return scaleoption_; } + /// Does this provide additional options? + bool providesMoreOptions(bool ot1, bool complete, bool nomath); /// Alternative requirement to test for - docstring const & requires() { return requires_; } + docstring const & required() { return requires_; } + /// Does this font provide a given \p feature + bool provides(std::string const & name, bool ot1, + bool complete, bool nomath); /// Issue the familydefault switch bool switchdefault() const { return switchdefault_; } + /// Does the font provide Old Style Figures as default? + bool osfDefault() const { return osfdefault_; } /// Is this font available? - bool available(bool ot1 = false) const; + bool available(bool ot1, bool nomath); + /// Does this font provide an alternative without math? + bool providesNoMath(bool ot1, bool complete); /// Does this font provide Old Style Figures? - bool providesOSF(bool ot1 = false) const; + bool providesOSF(bool ot1, bool complete, bool nomath); /// Does this font provide optional true SmallCaps? - bool providesSC(bool ot1 = false) const; + bool providesSC(bool ot1, bool complete, bool nomath); + /** does this font provide OSF and Small Caps only via + * a single, undifferentiated expert option? + */ + bool hasMonolithicExpertSet(bool ot1, bool complete, bool nomath); /// Does this font provide scaling? - bool providesScale(bool ot1 = false) const; - /// Return the preferred available package - std::string const getAvailablePackage(bool dryrun = false, - bool ot1 = false, - bool complete = false); - /// Return the package options - std::string const getPackageOptions(bool const & ot1, - bool const & sc, - bool const & osf, - int const & scale = 100); + bool providesScale(bool ot1, bool complete, bool nomath); + /// Return the LaTeX Code + std::string const getLaTeXCode(bool dryrun, bool ot1, bool complete, + bool sc, bool osf, bool nomath, + std::string const & extraopts = std::string(), + int const & scale = 100); + /// Return the actually used font + docstring const getUsedFont(bool ot1, bool complete, bool nomath); + /// Return the actually used package + docstring const getUsedPackage(bool ot1, bool complete, bool nomath); /// bool read(Lexer & lex); /// bool readFont(Lexer & lex); private: + /// Return the preferred available package + std::string const getAvailablePackage(bool dryrun); + /// Return the package options + std::string const getPackageOptions(bool ot1, + bool complete, + bool sc, + bool osf, + int scale, + std::string const & extraopts, + bool nomath); + /// Return an alternative font + LaTeXFont altFont(docstring const & name); /// docstring name_; /// @@ -86,13 +116,19 @@ private: /// docstring package_; /// - std::vector altpackages_; + std::vector fontenc_; + /// + std::vector altfonts_; /// - docstring completepackage_; + docstring completefont_; /// - docstring ot1package_; + docstring nomathfont_; /// - docstring osfpackage_; + docstring ot1font_; + /// + docstring osffont_; + /// + docstring packageoptions_; /// docstring osfoption_; /// @@ -102,16 +138,20 @@ private: /// docstring scaleoption_; /// + std::vector provides_; + /// docstring requires_; /// - bool switchdefault_; + docstring preamble_; + /// + bool osfdefault_; /// - bool available_; + bool switchdefault_; /// - bool available_ot1_; + bool moreopts_; }; - - + + /** The list of available LaTeX fonts */ class LaTeXFonts { @@ -122,11 +162,15 @@ public: TexFontMap getLaTeXFonts(); /// Get a specific LaTeXFont \p name LaTeXFont getLaTeXFont(docstring const & name); + /// Get a specific AltFont \p name + LaTeXFont getAltFont(docstring const & name); private: /// void readLaTeXFonts(); /// TexFontMap texfontmap_; + /// + TexFontMap texaltfontmap_; }; /// Implementation is in LyX.cpp