1 //
2 // C++ Interface: fmfontstrings
3 //
4 // Description:
5 //
6 //
7 // Author: Pierre Marchand <pierremarc@oep-h.com>, (C) 2008
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12 
13 #ifndef FMFONTSTRINGS_H
14 #define FMFONTSTRINGS_H
15 
16 #include "fontitem.h"
17 #include "fmfontdb.h"
18 #include <QObject>
19 
20 class FontStrings : public QObject
21 {
22 	Q_OBJECT
23 		FontStrings();
~FontStrings()24 		~FontStrings() {}
25 		static FontStrings* instance;
26 		static FontStrings* getInstance();
27 
28 	public:
29 		enum PanoseKey
30 		{
31 			FamilyType = 0,
32 			SerifStyle,
33 			Weight,
34 			Proportion,
35 			Contrast,
36 			StrokeVariation,
37 			ArmStyle,
38 			Letterform,
39 			Midline,
40 			XHeight,
41    			InvalidPK = 9999999
42 
43 		};
44 		static PanoseKey firstPanoseKey();
45 		static PanoseKey nextPanoseKey(PanoseKey pk);
46 
47 		static const QMap<FMFontDb::InfoItem,QString>& Names();
48 		static const QMap< PanoseKey, QMap<int, QString> >& Panose();
49 		static const QString PanoseKeyName(PanoseKey pk);
50 		static const QString PanoseKeyInfo(PanoseKey pk);
51 		static const QString Encoding(FT_Encoding enc);
52 		static const QMap<QString,QString>& Tables();
53 		static QString FsType(int fstype_part, bool shortString = true);
54 		static QString UnicodeCategory(QChar::Category);
55 		static QString scriptTagName(const QString& script);
56 
57 	private:
58 
59 		QMap<FMFontDb::InfoItem,QString> m_name;
60 		void fillNamesMeaning();
61 		void fillCharsetMap();
62 		void fillPanoseMap();
63 		void panoseFromFile(const QString& path);
64 		void fillTTTableList();
65 		void fillFSftypeMap();
66 		void fillUniCat();
67 		void fillScriptTagNames();
68 
69 		QMap< PanoseKey, QMap<int, QString> > m_panoseMap;
70 		QMap< PanoseKey, QString > m_panoseKeyName;
71 		QMap< PanoseKey, QString > m_panoseKeyInfo;
72 		QMap<FT_Encoding, QString> charsetMap;
73 		QMap<QString,QString> tttableList;// <TT name, description>
74 		QMap< int, QString > m_FsType;
75 		QMap<QChar::Category, QString> unicodeCategory;
76 		QMap<QString, QString> scriptTagNames;
77 };
78 
79 #endif
80 
81