Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef INCLUDED_VCL_FONTCAPABILITIES_HXX
11 : #define INCLUDED_VCL_FONTCAPABILITIES_HXX
12 :
13 : #include <boost/dynamic_bitset.hpp>
14 : #include <vector>
15 :
16 : //See OS/2 table, i.e. http://www.microsoft.com/typography/otspec/os2.htm#ur
17 : namespace vcl
18 : {
19 : namespace UnicodeCoverage
20 : {
21 : enum UnicodeCoverageEnum
22 : {
23 : BASIC_LATIN = 0,
24 : LATIN_1_SUPPLEMENT = 1,
25 : LATIN_EXTENDED_A = 2,
26 : LATIN_EXTENDED_B = 3,
27 : IPA_EXTENSIONS = 4,
28 : SPACING_MODIFIER_LETTERS = 5,
29 : COMBINING_DIACRITICAL_MARKS = 6,
30 : GREEK_AND_COPTIC = 7,
31 : COPTIC = 8,
32 : CYRILLIC = 9,
33 : ARMENIAN = 10,
34 : HEBREW = 11,
35 : VAI = 12,
36 : ARABIC = 13,
37 : NKO = 14,
38 : DEVANAGARI = 15,
39 : BENGALI = 16,
40 : GURMUKHI = 17,
41 : GUJARATI = 18,
42 : ODIA = 19,
43 : TAMIL = 20,
44 : TELUGU = 21,
45 : KANNADA = 22,
46 : MALAYALAM = 23,
47 : THAI = 24,
48 : LAO = 25,
49 : GEORGIAN = 26,
50 : BALINESE = 27,
51 : HANGUL_JAMO = 28,
52 : LATIN_EXTENDED_ADDITIONAL = 29,
53 : GREEK_EXTENDED = 30,
54 : GENERAL_PUNCTUATION = 31,
55 : SUPERSCRIPTS_AND_SUBSCRIPTS = 32,
56 : CURRENCY_SYMBOLS = 33,
57 : COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS = 34,
58 : LETTERLIKE_SYMBOLS = 35,
59 : NUMBER_FORMS = 36,
60 : ARROWS = 37,
61 : MATHEMATICAL_OPERATORS = 38,
62 : MISCELLANEOUS_TECHNICAL = 39,
63 : CONTROL_PICTURES = 40,
64 : OPTICAL_CHARACTER_RECOGNITION = 41,
65 : ENCLOSED_ALPHANUMERICS = 42,
66 : BOX_DRAWING = 43,
67 : BLOCK_ELEMENTS = 44,
68 : GEOMETRIC_SHAPES = 45,
69 : MISCELLANEOUS_SYMBOLS = 46,
70 : DINGBATS = 47,
71 : CJK_SYMBOLS_AND_PUNCTUATION = 48,
72 : HIRAGANA = 49,
73 : KATAKANA = 50,
74 : BOPOMOFO = 51,
75 : HANGUL_COMPATIBILITY_JAMO = 52,
76 : PHAGS_PA = 53,
77 : ENCLOSED_CJK_LETTERS_AND_MONTHS = 54,
78 : CJK_COMPATIBILITY = 55,
79 : HANGUL_SYLLABLES = 56,
80 : NONPLANE_0 = 57,
81 : PHOENICIAN = 58,
82 : CJK_UNIFIED_IDEOGRAPHS = 59,
83 : PRIVATE_USE_AREA_PLANE_0 = 60,
84 : CJK_STROKES = 61,
85 : ALPHABETIC_PRESENTATION_FORMS = 62,
86 : ARABIC_PRESENTATION_FORMS_A = 63,
87 : COMBINING_HALF_MARKS = 64,
88 : VERTICAL_FORMS = 65,
89 : SMALL_FORM_VARIANTS = 66,
90 : ARABIC_PRESENTATION_FORMS_B = 67,
91 : HALFWIDTH_AND_FULLWIDTH_FORMS = 68,
92 : SPECIALS = 69,
93 : TIBETAN = 70,
94 : SYRIAC = 71,
95 : THAANA = 72,
96 : SINHALA = 73,
97 : MYANMAR = 74,
98 : ETHIOPIC = 75,
99 : CHEROKEE = 76,
100 : UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 77,
101 : OGHAM = 78,
102 : RUNIC = 79,
103 : KHMER = 80,
104 : MONGOLIAN = 81,
105 : BRAILLE_PATTERNS = 82,
106 : YI_SYLLABLES = 83,
107 : TAGALOG = 84,
108 : OLD_ITALIC = 85,
109 : GOTHIC = 86,
110 : DESERET = 87,
111 : BYZANTINE_MUSICAL_SYMBOLS = 88,
112 : MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 89,
113 : PRIVATE_USE_PLANE_15 = 90,
114 : VARIATION_SELECTORS = 91,
115 : TAGS = 92,
116 : LIMBU = 93,
117 : TAI_LE = 94,
118 : NEW_TAI_LUE = 95,
119 : BUGINESE = 96,
120 : GLAGOLITIC = 97,
121 : TIFINAGH = 98,
122 : YIJING_HEXAGRAM_SYMBOLS = 99,
123 : SYLOTI_NAGRI = 100,
124 : LINEAR_B_SYLLABARY = 101,
125 : ANCIENT_GREEK_NUMBERS = 102,
126 : UGARITIC = 103,
127 : OLD_PERSIAN = 104,
128 : SHAVIAN = 105,
129 : OSMANYA = 106,
130 : CYPRIOT_SYLLABARY = 107,
131 : KHAROSHTHI = 108,
132 : TAI_XUAN_JING_SYMBOLS = 109,
133 : CUNEIFORM = 110,
134 : COUNTING_ROD_NUMERALS = 111,
135 : SUNDANESE = 112,
136 : LEPCHA = 113,
137 : OL_CHIKI = 114,
138 : SAURASHTRA = 115,
139 : KAYAH_LI = 116,
140 : REJANG = 117,
141 : CHAM = 118,
142 : ANCIENT_SYMBOLS = 119,
143 : PHAISTOS_DISC = 120,
144 : CARIAN = 121,
145 : DOMINO_TILES = 122,
146 : RESERVED1 = 123,
147 : RESERVED2 = 124,
148 : RESERVED3 = 125,
149 : RESERVED4 = 126,
150 : RESERVED5 = 127,
151 : MAX_UC_ENUM = 128
152 : };
153 : };
154 :
155 : namespace CodePageCoverage
156 : {
157 : enum CodePageCoverageEnum
158 : {
159 : CP1252 = 0,
160 : CP1250 = 1,
161 : CP1251 = 2,
162 : CP1253 = 3,
163 : CP1254 = 4,
164 : CP1255 = 5,
165 : CP1256 = 6,
166 : CP1257 = 7,
167 : CP1258 = 8,
168 : CP874 = 16,
169 : CP932 = 17,
170 : CP936 = 18,
171 : CP949 = 19,
172 : CP950 = 20,
173 : CP1361 = 21,
174 : CP869 = 48,
175 : CP866 = 49,
176 : CP865 = 50,
177 : CP864 = 51,
178 : CP863 = 52,
179 : CP862 = 53,
180 : CP861 = 54,
181 : CP860 = 55,
182 : CP857 = 56,
183 : CP855 = 57,
184 : CP852 = 58,
185 : CP775 = 59,
186 : CP737 = 60,
187 : CP780 = 61,
188 : CP850 = 62,
189 : CP437 = 63,
190 : MAX_CP_ENUM = 64
191 : };
192 : };
193 :
194 0 : struct FontCapabilities
195 : {
196 : boost::dynamic_bitset<sal_uInt32> maUnicodeRange;
197 : boost::dynamic_bitset<sal_uInt32> maCodePageRange;
198 : std::vector< sal_uInt32 > maGSUBScriptTags;
199 : };
200 : }
201 :
202 : #endif
203 :
204 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|