]> git.lyx.org Git - lyx.git/blob - src/LaTeXFonts.h
3f8b1351fc752868ce909c6b4afaa1672199218f
[lyx.git] / src / LaTeXFonts.h
1 // -*- C++ -*-
2 /**
3  * \file LaTeXFonts.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Jürgen Spitzmüller
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #ifndef LATEXFONTS_H
13 #define LATEXFONTS_H
14
15 #include "support/docstring.h"
16
17 #include <map>
18 #include <vector>
19
20
21 namespace lyx {
22
23 class Lexer;
24
25 /// LaTeX Font definition
26 class LaTeXFont {
27 public:
28         /// TeX font
29         LaTeXFont() : switchdefault_(false) {}
30         /// The font name
31         docstring const & name() { return name_; }
32         /// The name to appear in the document dialog
33         docstring const & guiname() { return guiname_; }
34         /// Font family (rm, sf, tt)
35         docstring const & family() { return family_; }
36         /// The package that provides this font
37         docstring const & package() { return package_; }
38         /// Alternative packages if package() is not available
39         std::vector<docstring> const & altpackages() { return altpackages_; }
40         /// A package that provides all families
41         docstring const & completepackage() { return completepackage_; }
42         /// A package specifically needed for OT1 font encoding
43         docstring const & ot1package() { return ot1package_; }
44         /// A package that provides Old Style Figures for this font
45         docstring const & osfpackage() { return osfpackage_; }
46         /// A package option for Old Style Figures
47         docstring const & osfoption() { return osfoption_; }
48         /// A package option for true SmallCaps
49         docstring const & scoption() { return scoption_; }
50         /// A package option for both Old Style Figures and SmallCaps
51         docstring const & osfscoption() { return osfscoption_; }
52         /// A package option for font scaling
53         docstring const & scaleoption() { return scaleoption_; }
54         /// Alternative requirement to test for
55         docstring const & requires() { return requires_; }
56         /// Issue the familydefault switch
57         bool switchdefault() const { return switchdefault_; }
58         /// Is this font available?
59         bool available(bool ot1 = false) const;
60         /// Does this font provide Old Style Figures?
61         bool providesOSF(bool ot1 = false) const;
62         /// Does this font provide optional true SmallCaps?
63         bool providesSC(bool ot1 = false) const;
64         /// Does this font provide scaling?
65         bool providesScale(bool ot1 = false) const;
66         /// Return the preferred available package 
67         std::string const getAvailablePackage(bool dryrun = false,
68                                               bool ot1 = false,
69                                               bool complete = false);
70         /// Return the package options
71         std::string const getPackageOptions(bool const & ot1,
72                                             bool const & sc,
73                                             bool const & osf,
74                                             int const & scale = 100);
75         ///
76         bool read(Lexer & lex);
77         ///
78         bool readFont(Lexer & lex);
79 private:
80         ///
81         docstring name_;
82         ///
83         docstring guiname_;
84         ///
85         docstring family_;
86         ///
87         docstring package_;
88         ///
89         std::vector<docstring> altpackages_;
90         ///
91         docstring completepackage_;
92         ///
93         docstring ot1package_;
94         ///
95         docstring osfpackage_;
96         ///
97         docstring osfoption_;
98         ///
99         docstring scoption_;
100         ///
101         docstring osfscoption_;
102         ///
103         docstring scaleoption_;
104         ///
105         docstring requires_;
106         ///
107         bool switchdefault_;
108         ///
109         bool available_;
110         ///
111         bool available_ot1_;
112 };
113   
114   
115 /** The list of available LaTeX fonts
116  */
117 class LaTeXFonts {
118 public:
119         ///
120         typedef std::map<docstring, LaTeXFont> TexFontMap;
121         /// Get all LaTeXFonts
122         TexFontMap getLaTeXFonts();
123         /// Get a specific LaTeXFont \p name
124         LaTeXFont getLaTeXFont(docstring const & name);
125 private:
126         ///
127         void readLaTeXFonts();
128         ///
129         TexFontMap texfontmap_;
130 };
131
132 /// Implementation is in LyX.cpp
133 extern LaTeXFonts & theLaTeXFonts();
134
135
136 } // namespace lyx
137
138 #endif