qfontdatabase.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/text/qfontdatabase.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8bool qt_enable_test_font = false;-
9-
10__attribute__((visibility("default"))) void qt_setQtEnableTestFont(bool value)-
11{-
12 qt_enable_test_font = value;-
13}
never executed: end of block
0
14-
15-
16static int getFontWeight(const QString &weightString)-
17{-
18 QString s = weightString.toLower();-
19 if (s == QLatin1String("normal")
s == QLatin1String("normal")Description
TRUEnever evaluated
FALSEnever evaluated
|| s == QLatin1String("regular")
s == QLatin1String("regular")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
20 return
never executed: return QFont::Normal;
QFont::Normal;
never executed: return QFont::Normal;
0
21 if (s == QLatin1String("bold")
s == QLatin1String("bold")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
22 return
never executed: return QFont::Bold;
QFont::Bold;
never executed: return QFont::Bold;
0
23 if (s == QLatin1String("semibold")
s == QLatin1String("semibold")Description
TRUEnever evaluated
FALSEnever evaluated
|| s == QLatin1String("semi bold")
s == QLatin1St...g("semi bold")Description
TRUEnever evaluated
FALSEnever evaluated
0
24 || s == QLatin1String("demibold")
s == QLatin1String("demibold")Description
TRUEnever evaluated
FALSEnever evaluated
|| s == QLatin1String("demi bold")
s == QLatin1St...g("demi bold")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
25 return
never executed: return QFont::DemiBold;
QFont::DemiBold;
never executed: return QFont::DemiBold;
0
26 if (s == QLatin1String("medium")
s == QLatin1String("medium")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
27 return
never executed: return QFont::Medium;
QFont::Medium;
never executed: return QFont::Medium;
0
28 if (s == QLatin1String("black")
s == QLatin1String("black")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
29 return
never executed: return QFont::Black;
QFont::Black;
never executed: return QFont::Black;
0
30 if (s == QLatin1String("light")
s == QLatin1String("light")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
31 return
never executed: return QFont::Light;
QFont::Light;
never executed: return QFont::Light;
0
32 if (s == QLatin1String("thin")
s == QLatin1String("thin")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
33 return
never executed: return QFont::Thin;
QFont::Thin;
never executed: return QFont::Thin;
0
34 const QStringRef s2 = s.midRef(2);-
35 if (s.startsWith(QLatin1String("ex"))
s.startsWith(Q...1String("ex"))Description
TRUEnever evaluated
FALSEnever evaluated
|| s.startsWith(QLatin1String("ul"))
s.startsWith(Q...1String("ul"))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
36 if (s2 == QLatin1String("tralight")
s2 == QLatin1S...ng("tralight")Description
TRUEnever evaluated
FALSEnever evaluated
|| s == QLatin1String("tra light")
s == QLatin1St...g("tra light")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
37 return
never executed: return QFont::ExtraLight;
QFont::ExtraLight;
never executed: return QFont::ExtraLight;
0
38 if (s2 == QLatin1String("trabold")
s2 == QLatin1String("trabold")Description
TRUEnever evaluated
FALSEnever evaluated
|| s2 == QLatin1String("tra bold")
s2 == QLatin1S...ng("tra bold")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
39 return
never executed: return QFont::ExtraBold;
QFont::ExtraBold;
never executed: return QFont::ExtraBold;
0
40 }
never executed: end of block
0
41-
42-
43-
44 if (s.contains(QLatin1String("bold"))
s.contains(QLa...tring("bold"))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
45 if (s.contains(QLatin1String("demi"))
s.contains(QLa...tring("demi"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
46 return
never executed: return QFont::DemiBold;
QFont::DemiBold;
never executed: return QFont::DemiBold;
0
47 return
never executed: return QFont::Bold;
QFont::Bold;
never executed: return QFont::Bold;
0
48 }-
49 if (s.contains(QLatin1String("thin"))
s.contains(QLa...tring("thin"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
50 return
never executed: return QFont::Thin;
QFont::Thin;
never executed: return QFont::Thin;
0
51 if (s.contains(QLatin1String("light"))
s.contains(QLa...ring("light"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
52 return
never executed: return QFont::Light;
QFont::Light;
never executed: return QFont::Light;
0
53 if (s.contains(QLatin1String("black"))
s.contains(QLa...ring("black"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
54 return
never executed: return QFont::Black;
QFont::Black;
never executed: return QFont::Black;
0
55-
56-
57-
58-
59-
60 if (s.compare(QCoreApplication::translate("QFontDatabase", "Normal", "The Normal or Regular font weight"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
61 return
never executed: return QFont::Normal;
QFont::Normal;
never executed: return QFont::Normal;
0
62 const QString translatedBold = QCoreApplication::translate("QFontDatabase", "Bold").toLower();-
63 if (s == translatedBold
s == translatedBoldDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
64 return
never executed: return QFont::Bold;
QFont::Bold;
never executed: return QFont::Bold;
0
65 if (s.compare(QCoreApplication::translate("QFontDatabase", "Demi Bold"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
66 return
never executed: return QFont::DemiBold;
QFont::DemiBold;
never executed: return QFont::DemiBold;
0
67 if (s.compare(QCoreApplication::translate("QFontDatabase", "Medium", "The Medium font weight"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
68 return
never executed: return QFont::Medium;
QFont::Medium;
never executed: return QFont::Medium;
0
69 if (s.compare(QCoreApplication::translate("QFontDatabase", "Black"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
70 return
never executed: return QFont::Black;
QFont::Black;
never executed: return QFont::Black;
0
71 const QString translatedLight = QCoreApplication::translate("QFontDatabase", "Light").toLower();-
72 if (s == translatedLight
s == translatedLightDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
73 return
never executed: return QFont::Light;
QFont::Light;
never executed: return QFont::Light;
0
74 if (s.compare(QCoreApplication::translate("QFontDatabase", "Thin"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
75 return
never executed: return QFont::Thin;
QFont::Thin;
never executed: return QFont::Thin;
0
76 if (s.compare(QCoreApplication::translate("QFontDatabase", "Extra Light"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
77 return
never executed: return QFont::ExtraLight;
QFont::ExtraLight;
never executed: return QFont::ExtraLight;
0
78 if (s.compare(QCoreApplication::translate("QFontDatabase", "Extra Bold"), Qt::CaseInsensitive) == 0
s.compare(QCor...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
79 return
never executed: return QFont::ExtraBold;
QFont::ExtraBold;
never executed: return QFont::ExtraBold;
0
80-
81-
82-
83 const QString translatedExtra = QCoreApplication::translate("QFontDatabase", "Extra").toLower();-
84 if (s.contains(translatedBold)
s.contains(translatedBold)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
85-
86 QString translatedDemi = QCoreApplication::translate("QFontDatabase", "Demi").toLower();-
87 if (s .contains(translatedDemi)
s .contains(translatedDemi)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
88 return
never executed: return QFont::DemiBold;
QFont::DemiBold;
never executed: return QFont::DemiBold;
0
89 if (s.contains(translatedExtra)
s.contains(translatedExtra)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
90 return
never executed: return QFont::ExtraBold;
QFont::ExtraBold;
never executed: return QFont::ExtraBold;
0
91 return
never executed: return QFont::Bold;
QFont::Bold;
never executed: return QFont::Bold;
0
92 }-
93-
94 if (s.contains(translatedLight)
s.contains(translatedLight)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
95 if (s.contains(translatedExtra)
s.contains(translatedExtra)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
96 return
never executed: return QFont::ExtraLight;
QFont::ExtraLight;
never executed: return QFont::ExtraLight;
0
97 return
never executed: return QFont::Light;
QFont::Light;
never executed: return QFont::Light;
0
98 }-
99 return
never executed: return QFont::Normal;
QFont::Normal;
never executed: return QFont::Normal;
0
100}-
101-
102-
103struct QtFontSize-
104{-
105-
106 void *handle;-
107-
108 unsigned short pixelSize : 16;-
109};-
110-
111-
112-
113struct QtFontStyle-
114{-
115 struct Key {-
116 Key(const QString &styleString);-
117 Key() : style(QFont::StyleNormal),-
118 weight(QFont::Normal), stretch(0) { }
never executed: end of block
0
119 Key(const Key &o) : style(o.style), weight(o.weight), stretch(o.stretch) { }
never executed: end of block
0
120 uint style : 2;-
121 signed int weight : 8;-
122 signed int stretch : 12;-
123-
124 bool operator==(const Key & other) {-
125 return
never executed: return (style == other.style && weight == other.weight && (stretch == 0 || other.stretch == 0 || stretch == other.stretch));
(style == other.style
style == other.styleDescription
TRUEnever evaluated
FALSEnever evaluated
&& weight == other.weight
weight == other.weightDescription
TRUEnever evaluated
FALSEnever evaluated
&&
never executed: return (style == other.style && weight == other.weight && (stretch == 0 || other.stretch == 0 || stretch == other.stretch));
0
126 (stretch == 0
stretch == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| other.stretch == 0
other.stretch == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| stretch == other.stretch
stretch == other.stretchDescription
TRUEnever evaluated
FALSEnever evaluated
));
never executed: return (style == other.style && weight == other.weight && (stretch == 0 || other.stretch == 0 || stretch == other.stretch));
0
127 }-
128 bool operator!=(const Key &other) {-
129 return
never executed: return !operator==(other);
!operator==(other);
never executed: return !operator==(other);
0
130 }-
131 bool operator <(const Key &o) {-
132 int x = (style << 12) + (weight << 14) + stretch;-
133 int y = (o.style << 12) + (o.weight << 14) + o.stretch;-
134 return
never executed: return (x < y);
(x < y);
never executed: return (x < y);
0
135 }-
136 };-
137-
138 QtFontStyle(const Key &k)-
139 : key(k), bitmapScalable(false), smoothScalable(false),-
140 count(0), pixelSizes(0)-
141 {-
142 }
never executed: end of block
0
143-
144 ~QtFontStyle() {-
145 while (count
countDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
146-
147 count--;-
148 QPlatformIntegration *integration = QGuiApplicationPrivate::platformIntegration();-
149 if (integration
integrationDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
150 integration->fontDatabase()->releaseHandle(pixelSizes[count].handle);-
151 }
never executed: end of block
0
152 }
never executed: end of block
0
153 free(pixelSizes);-
154 }
never executed: end of block
0
155-
156 Key key;-
157 bool bitmapScalable : 1;-
158 bool smoothScalable : 1;-
159 signed int count : 30;-
160 QtFontSize *pixelSizes;-
161 QString styleName;-
162-
163 bool antialiased;-
164-
165 QtFontSize *pixelSize(unsigned short size, bool = false);-
166};-
167-
168QtFontStyle::Key::Key(const QString &styleString)-
169 : style(QFont::StyleNormal), weight(QFont::Normal), stretch(0)-
170{-
171 weight = getFontWeight(styleString);-
172-
173 if (!styleString.isEmpty()
!styleString.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
174-
175 if (styleString.contains(QLatin1String("Italic"))
styleString.co...ing("Italic"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
176 style = QFont::StyleItalic;
never executed: style = QFont::StyleItalic;
0
177 else if (styleString.contains(QLatin1String("Oblique"))
styleString.co...ng("Oblique"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
178 style = QFont::StyleOblique;
never executed: style = QFont::StyleOblique;
0
179-
180-
181 else if (styleString.contains(QCoreApplication::translate("QFontDatabase", "Italic"))
styleString.co...e", "Italic"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
182 style = QFont::StyleItalic;
never executed: style = QFont::StyleItalic;
0
183 else if (styleString.contains(QCoreApplication::translate("QFontDatabase", "Oblique"))
styleString.co...", "Oblique"))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
184 style = QFont::StyleOblique;
never executed: style = QFont::StyleOblique;
0
185 }
never executed: end of block
0
186}
never executed: end of block
0
187-
188QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)-
189{-
190 for (int i = 0; i < count
i < countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
191 if (pixelSizes[i].pixelSize == size
pixelSizes[i]....elSize == sizeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
192 return
never executed: return pixelSizes + i;
pixelSizes + i;
never executed: return pixelSizes + i;
0
193 }
never executed: end of block
0
194 if (!add
!addDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
195 return
never executed: return 0;
0;
never executed: return 0;
0
196-
197 if (!pixelSizes
!pixelSizesDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
198-
199 QtFontSize *newPixelSizes = (QtFontSize *)malloc(sizeof(QtFontSize));-
200 do {if(!(newPixelSizes)
!(newPixelSizes)Description
TRUEnever evaluated
FALSEnever evaluated
)qt_check_pointer(__FILE__,278);
never executed: qt_check_pointer(__FILE__,278);
} while (0);
0
201 pixelSizes = newPixelSizes;-
202 }
never executed: end of block
else if (!(count % 8)
!(count % 8)Description
TRUEnever evaluated
FALSEnever evaluated
|| count == 1
count == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
203 QtFontSize *newPixelSizes = (QtFontSize *)-
204 realloc(pixelSizes,-
205 (((count+8) >> 3) << 3) * sizeof(QtFontSize));-
206 do {if(!(newPixelSizes)
!(newPixelSizes)Description
TRUEnever evaluated
FALSEnever evaluated
)qt_check_pointer(__FILE__,284);
never executed: qt_check_pointer(__FILE__,284);
} while (0);
0
207 pixelSizes = newPixelSizes;-
208 }
never executed: end of block
0
209 pixelSizes[count].pixelSize = size;-
210 pixelSizes[count].handle = 0;-
211 return
never executed: return pixelSizes + (count++);
pixelSizes + (count++);
never executed: return pixelSizes + (count++);
0
212}-
213-
214struct QtFontFoundry-
215{-
216 QtFontFoundry(const QString &n) : name(n), count(0), styles(0) {}
never executed: end of block
0
217 ~QtFontFoundry() {-
218 while (count--
count--Description
TRUEnever evaluated
FALSEnever evaluated
)
0
219 delete styles[count];
never executed: delete styles[count];
0
220 free(styles);-
221 }
never executed: end of block
0
222-
223 QString name;-
224-
225 int count;-
226 QtFontStyle **styles;-
227 QtFontStyle *style(const QtFontStyle::Key &, const QString & = QString(), bool = false);-
228};-
229-
230QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &styleName, bool create)-
231{-
232 int pos = 0;-
233 for (; pos < count
pos < countDescription
TRUEnever evaluated
FALSEnever evaluated
; pos++) {
0
234 bool hasStyleName = !styleName.isEmpty();-
235 if (hasStyleName
hasStyleNameDescription
TRUEnever evaluated
FALSEnever evaluated
&& !styles[pos]->styleName.isEmpty()
!styles[pos]->...Name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
236 if (styles[pos]->styleName == styleName
styles[pos]->s...e == styleNameDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
237 return
never executed: return styles[pos];
styles[pos];
never executed: return styles[pos];
0
238 }
never executed: end of block
else {
0
239 if (styles[pos]->key == key
styles[pos]->key == keyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
240 return
never executed: return styles[pos];
styles[pos];
never executed: return styles[pos];
0
241 }
never executed: end of block
0
242 }-
243 if (!create
!createDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
244 return
never executed: return 0;
0;
never executed: return 0;
0
245-
246-
247 if (!(count % 8)
!(count % 8)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
248 QtFontStyle **newStyles = (QtFontStyle **)-
249 realloc(styles, (((count+8) >> 3) << 3) * sizeof(QtFontStyle *));-
250 do {if(!(newStyles)
!(newStyles)Description
TRUEnever evaluated
FALSEnever evaluated
)qt_check_pointer(__FILE__,328);
never executed: qt_check_pointer(__FILE__,328);
} while (0);
0
251 styles = newStyles;-
252 }
never executed: end of block
0
253-
254 QtFontStyle *style = new QtFontStyle(key);-
255 style->styleName = styleName;-
256 styles[pos] = style;-
257 count++;-
258 return
never executed: return styles[pos];
styles[pos];
never executed: return styles[pos];
0
259}-
260-
261-
262struct QtFontFamily-
263{-
264 enum WritingSystemStatus {-
265 Unknown = 0,-
266 Supported = 1,-
267 UnsupportedFT = 2,-
268 Unsupported = UnsupportedFT-
269 };-
270-
271 QtFontFamily(const QString &n)-
272 :-
273 populated(false),-
274 fixedPitch(false),-
275 name(n), count(0), foundries(0)-
276 {-
277 memset(writingSystems, 0, sizeof(writingSystems));-
278 }
never executed: end of block
0
279 ~QtFontFamily() {-
280 while (count--
count--Description
TRUEnever evaluated
FALSEnever evaluated
)
0
281 delete foundries[count];
never executed: delete foundries[count];
0
282 free(foundries);-
283 }
never executed: end of block
0
284-
285 bool populated : 1;-
286 bool fixedPitch : 1;-
287-
288 QString name;-
289 QStringList aliases;-
290 int count;-
291 QtFontFoundry **foundries;-
292-
293 unsigned char writingSystems[QFontDatabase::WritingSystemsCount];-
294-
295 bool matchesFamilyName(const QString &familyName) const;-
296 QtFontFoundry *foundry(const QString &f, bool = false);-
297-
298 void ensurePopulated();-
299};-
300-
301QtFontFoundry *QtFontFamily::foundry(const QString &f, bool create)-
302{-
303 if (f.isNull()
f.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
&& count == 1
count == 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
304 return
never executed: return foundries[0];
foundries[0];
never executed: return foundries[0];
0
305-
306 for (int i = 0; i < count
i < countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
307 if (foundries[i]->name.compare(f, Qt::CaseInsensitive) == 0
foundries[i]->...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
308 return
never executed: return foundries[i];
foundries[i];
never executed: return foundries[i];
0
309 }
never executed: end of block
0
310 if (!create
!createDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
311 return
never executed: return 0;
0;
never executed: return 0;
0
312-
313 if (!(count % 8)
!(count % 8)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
314 QtFontFoundry **newFoundries = (QtFontFoundry **)-
315 realloc(foundries,-
316 (((count+8) >> 3) << 3) * sizeof(QtFontFoundry *));-
317 do {if(!(newFoundries)
!(newFoundries)Description
TRUEnever evaluated
FALSEnever evaluated
)qt_check_pointer(__FILE__,395);
never executed: qt_check_pointer(__FILE__,395);
} while (0);
0
318 foundries = newFoundries;-
319 }
never executed: end of block
0
320-
321 foundries[count] = new QtFontFoundry(f);-
322 return
never executed: return foundries[count++];
foundries[count++];
never executed: return foundries[count++];
0
323}-
324-
325bool QtFontFamily::matchesFamilyName(const QString &familyName) const-
326{-
327 return
never executed: return name.compare(familyName, Qt::CaseInsensitive) == 0 || aliases.contains(familyName, Qt::CaseInsensitive);
name.compare(familyName, Qt::CaseInsensitive) == 0
name.compare(f...ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| aliases.contains(familyName, Qt::CaseInsensitive)
aliases.contai...seInsensitive)Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return name.compare(familyName, Qt::CaseInsensitive) == 0 || aliases.contains(familyName, Qt::CaseInsensitive);
0
328}-
329-
330void QtFontFamily::ensurePopulated()-
331{-
332 if (populated
populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
333 return;
never executed: return;
0
334-
335 QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamily(name);-
336 ((!(populated)) ? qt_assert_x(__PRETTY_FUNCTION__, QString(name).toLocal8Bit().constData(),__FILE__,414) : qt_noop());-
337}
never executed: end of block
0
338-
339-
340struct FallbacksCacheKey {-
341 QString family;-
342 QFont::Style style;-
343 QFont::StyleHint styleHint;-
344 QChar::Script script;-
345};-
346-
347inline bool operator==(const FallbacksCacheKey &lhs, const FallbacksCacheKey &rhs) noexcept-
348{-
349 return
never executed: return lhs.script == rhs.script && lhs.styleHint == rhs.styleHint && lhs.style == rhs.style && lhs.family == rhs.family;
lhs.script == rhs.script
lhs.script == rhs.scriptDescription
TRUEnever evaluated
FALSEnever evaluated
&&
never executed: return lhs.script == rhs.script && lhs.styleHint == rhs.styleHint && lhs.style == rhs.style && lhs.family == rhs.family;
0
350 lhs.styleHint == rhs.styleHint
lhs.styleHint == rhs.styleHintDescription
TRUEnever evaluated
FALSEnever evaluated
&&
never executed: return lhs.script == rhs.script && lhs.styleHint == rhs.styleHint && lhs.style == rhs.style && lhs.family == rhs.family;
0
351 lhs.style == rhs.style
lhs.style == rhs.styleDescription
TRUEnever evaluated
FALSEnever evaluated
&&
never executed: return lhs.script == rhs.script && lhs.styleHint == rhs.styleHint && lhs.style == rhs.style && lhs.family == rhs.family;
0
352 lhs.family == rhs.family
lhs.family == rhs.familyDescription
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return lhs.script == rhs.script && lhs.styleHint == rhs.styleHint && lhs.style == rhs.style && lhs.family == rhs.family;
0
353}-
354-
355inline bool operator!=(const FallbacksCacheKey &lhs, const FallbacksCacheKey &rhs) noexcept-
356{-
357 return
never executed: return !operator==(lhs, rhs);
!operator==(lhs, rhs);
never executed: return !operator==(lhs, rhs);
0
358}-
359-
360inline uint qHash(const FallbacksCacheKey &key, uint seed = 0) noexcept-
361{-
362 QtPrivate::QHashCombine hash;-
363 seed = hash(seed, key.family);-
364 seed = hash(seed, int(key.style));-
365 seed = hash(seed, int(key.styleHint));-
366 seed = hash(seed, int(key.script));-
367 return
never executed: return seed;
seed;
never executed: return seed;
0
368}-
369-
370-
371class QFontDatabasePrivate-
372{-
373public:-
374 QFontDatabasePrivate()-
375 : count(0), families(0),-
376 fallbacksCache(64),-
377 reregisterAppFonts(false)-
378 { }
never executed: end of block
0
379-
380 ~QFontDatabasePrivate() {-
381 free();-
382 }
never executed: end of block
0
383-
384 enum FamilyRequestFlags {-
385 RequestFamily = 0,-
386 EnsureCreated,-
387 EnsurePopulated-
388 };-
389-
390 QtFontFamily *family(const QString &f, FamilyRequestFlags flags = EnsurePopulated);-
391 void free() {-
392 while (count--
count--Description
TRUEnever evaluated
FALSEnever evaluated
)
0
393 delete families[count];
never executed: delete families[count];
0
394 ::free(families);-
395 families = 0;-
396 count = 0;-
397-
398 }
never executed: end of block
0
399-
400 int count;-
401 QtFontFamily **families;-
402-
403 QCache<FallbacksCacheKey, QStringList> fallbacksCache;-
404-
405-
406 struct ApplicationFont {-
407 QString fileName;-
408 QByteArray data;-
409 QStringList families;-
410 };-
411 QVector<ApplicationFont> applicationFonts;-
412 int addAppFont(const QByteArray &fontData, const QString &fileName);-
413 bool reregisterAppFonts;-
414 bool isApplicationFont(const QString &fileName);-
415-
416 void invalidate();-
417};-
418-
419void QFontDatabasePrivate::invalidate()-
420{-
421 QFontCache::instance()->clear();-
422-
423 fallbacksCache.clear();-
424 free();-
425 QGuiApplicationPrivate::platformIntegration()->fontDatabase()->invalidate();-
426 static_cast<QGuiApplication *>(QCoreApplication::instance())->fontDatabaseChanged();-
427}
never executed: end of block
0
428-
429QtFontFamily *QFontDatabasePrivate::family(const QString &f, FamilyRequestFlags flags)-
430{-
431 QtFontFamily *fam = 0;-
432-
433 int low = 0;-
434 int high = count;-
435 int pos = count / 2;-
436 int res = 1;-
437 if (count
countDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
438 while ((
(res = familie...eInsensitive))Description
TRUEnever evaluated
FALSEnever evaluated
res = families[pos]->name.compare(f, Qt::CaseInsensitive))
(res = familie...eInsensitive))Description
TRUEnever evaluated
FALSEnever evaluated
&& pos != low
pos != lowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
439 if (res > 0
res > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
440 high = pos;
never executed: high = pos;
0
441 else-
442 low = pos;
never executed: low = pos;
0
443 pos = (high + low) / 2;-
444 }
never executed: end of block
0
445 if (!res
!resDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
446 fam = families[pos];
never executed: fam = families[pos];
0
447 }
never executed: end of block
0
448-
449 if (!fam
!famDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(flags & EnsureCreated)Description
TRUEnever evaluated
FALSEnever evaluated
flags & EnsureCreated)
(flags & EnsureCreated)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
450 if (res < 0
res < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
451 pos++;
never executed: pos++;
0
452-
453-
454 if (!(count % 8)
!(count % 8)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
455 QtFontFamily **newFamilies = (QtFontFamily **)-
456 realloc(families,-
457 (((count+8) >> 3) << 3) * sizeof(QtFontFamily *));-
458 do {if(!(newFamilies)
!(newFamilies)Description
TRUEnever evaluated
FALSEnever evaluated
)qt_check_pointer(__FILE__,536);
never executed: qt_check_pointer(__FILE__,536);
} while (0);
0
459 families = newFamilies;-
460 }
never executed: end of block
0
461-
462 QtFontFamily *family = new QtFontFamily(f);-
463 memmove(families + pos + 1, families + pos, (count-pos)*sizeof(QtFontFamily *));-
464 families[pos] = family;-
465 count++;-
466-
467 fam = families[pos];-
468 }
never executed: end of block
0
469-
470 if (fam
famDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(flags & EnsurePopulated)Description
TRUEnever evaluated
FALSEnever evaluated
flags & EnsurePopulated)
(flags & EnsurePopulated)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
471 fam->ensurePopulated();
never executed: fam->ensurePopulated();
0
472-
473 return
never executed: return fam;
fam;
never executed: return fam;
0
474}-
475-
476-
477-
478static const int scriptForWritingSystem[] = {-
479 QChar::Script_Common,-
480 QChar::Script_Latin,-
481 QChar::Script_Greek,-
482 QChar::Script_Cyrillic,-
483 QChar::Script_Armenian,-
484 QChar::Script_Hebrew,-
485 QChar::Script_Arabic,-
486 QChar::Script_Syriac,-
487 QChar::Script_Thaana,-
488 QChar::Script_Devanagari,-
489 QChar::Script_Bengali,-
490 QChar::Script_Gurmukhi,-
491 QChar::Script_Gujarati,-
492 QChar::Script_Oriya,-
493 QChar::Script_Tamil,-
494 QChar::Script_Telugu,-
495 QChar::Script_Kannada,-
496 QChar::Script_Malayalam,-
497 QChar::Script_Sinhala,-
498 QChar::Script_Thai,-
499 QChar::Script_Lao,-
500 QChar::Script_Tibetan,-
501 QChar::Script_Myanmar,-
502 QChar::Script_Georgian,-
503 QChar::Script_Khmer,-
504 QChar::Script_Han,-
505 QChar::Script_Han,-
506 QChar::Script_Han,-
507 QChar::Script_Hangul,-
508 QChar::Script_Latin,-
509 QChar::Script_Common,-
510 QChar::Script_Ogham,-
511 QChar::Script_Runic,-
512 QChar::Script_Nko-
513};-
514-
515static_assert(bool(sizeof(scriptForWritingSystem) / sizeof(scriptForWritingSystem[0]) == QFontDatabase::WritingSystemsCount), "sizeof(scriptForWritingSystem) / sizeof(scriptForWritingSystem[0]) == QFontDatabase::WritingSystemsCount");-
516-
517__attribute__((visibility("default"))) int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem)-
518{-
519 return
never executed: return scriptForWritingSystem[writingSystem];
scriptForWritingSystem[writingSystem];
never executed: return scriptForWritingSystem[writingSystem];
0
520}-
521static void parseFontName(const QString &name, QString &foundry, QString &family)-
522{-
523 int i = name.indexOf(QLatin1Char('['));-
524 int li = name.lastIndexOf(QLatin1Char(']'));-
525 if (i >= 0
i >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& li >= 0
li >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& i < li
i < liDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
526 foundry = name.mid(i + 1, li - i - 1);-
527 if (i > 0
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
&& name[i - 1] == QLatin1Char(' ')
name[i - 1] ==...atin1Char(' ')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
528 i--;
never executed: i--;
0
529 family = name.left(i);-
530 }
never executed: end of block
else {
0
531 foundry.clear();-
532 family = name;-
533 }
never executed: end of block
0
534-
535-
536 bool space = true;-
537 QChar *s = family.data();-
538 int len = family.length();-
539 while(len--
len--Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
540 if (space
spaceDescription
TRUEnever evaluated
FALSEnever evaluated
) *
never executed: *s = s->toUpper();
s = s->toUpper();
never executed: *s = s->toUpper();
0
541 space = s->isSpace();-
542 ++s;-
543 }
never executed: end of block
0
544-
545 space = true;-
546 s = foundry.data();-
547 len = foundry.length();-
548 while(len--
len--Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
549 if (space
spaceDescription
TRUEnever evaluated
FALSEnever evaluated
) *
never executed: *s = s->toUpper();
s = s->toUpper();
never executed: *s = s->toUpper();
0
550 space = s->isSpace();-
551 ++s;-
552 }
never executed: end of block
0
553}
never executed: end of block
0
554-
555-
556struct QtFontDesc-
557{-
558 inline QtFontDesc() : family(0), foundry(0), style(0), size(0) {}
never executed: end of block
0
559 QtFontFamily *family;-
560 QtFontFoundry *foundry;-
561 QtFontStyle *style;-
562 QtFontSize *size;-
563};-
564-
565static void initFontDef(const QtFontDesc &desc, const QFontDef &request, QFontDef *fontDef, bool multi)-
566{-
567 fontDef->family = desc.family->name;-
568 if (! desc.foundry->name.isEmpty()
! desc.foundry->name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& desc.family->count > 1
desc.family->count > 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
569 fontDef->family += QString::fromLatin1(" [");-
570 fontDef->family += desc.foundry->name;-
571 fontDef->family += QLatin1Char(']');-
572 }
never executed: end of block
0
573-
574 if (desc.style->smoothScalable
desc.style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
0
575 || QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()
QGuiApplicatio...waysScalable()Description
TRUEnever evaluated
FALSEnever evaluated
0
576 || (desc.style->bitmapScalable
desc.style->bitmapScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(request.style...::PreferMatch)Description
TRUEnever evaluated
FALSEnever evaluated
request.styleStrategy & QFont::PreferMatch)
(request.style...::PreferMatch)Description
TRUEnever evaluated
FALSEnever evaluated
)) {
0
577 fontDef->pixelSize = request.pixelSize;-
578 }
never executed: end of block
else {
0
579 fontDef->pixelSize = desc.size->pixelSize;-
580 }
never executed: end of block
0
581 fontDef->pointSize = request.pointSize;-
582-
583 fontDef->styleHint = request.styleHint;-
584 fontDef->styleStrategy = request.styleStrategy;-
585-
586 if (!multi
!multiDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
587 fontDef->weight = desc.style->key.weight;
never executed: fontDef->weight = desc.style->key.weight;
0
588 if (!multi
!multiDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
589 fontDef->style = desc.style->key.style;
never executed: fontDef->style = desc.style->key.style;
0
590 fontDef->fixedPitch = desc.family->fixedPitch;-
591 fontDef->stretch = desc.style->key.stretch;-
592 fontDef->ignorePitch = false;-
593}
never executed: end of block
0
594-
595static QStringList familyList(const QFontDef &req)-
596{-
597-
598 QStringList family_list;-
599 if (req.family.isEmpty()
req.family.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
600 return
never executed: return family_list;
family_list;
never executed: return family_list;
0
601-
602 QStringList list = req.family.split(QLatin1Char(','));-
603 const int numFamilies = list.size();-
604 family_list.reserve(numFamilies);-
605 for (int i = 0; i < numFamilies
i < numFamiliesDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
606 QString str = list.at(i).trimmed();-
607 if ((str.startsWith(QLatin1Char('"'))
str.startsWith...tin1Char('"'))Description
TRUEnever evaluated
FALSEnever evaluated
&& str.endsWith(QLatin1Char('"'))
str.endsWith(QLatin1Char('"'))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
608 || (str.startsWith(QLatin1Char('\''))
str.startsWith...in1Char('\''))Description
TRUEnever evaluated
FALSEnever evaluated
&& str.endsWith(QLatin1Char('\''))
str.endsWith(Q...in1Char('\''))Description
TRUEnever evaluated
FALSEnever evaluated
))
0
609 str = str.mid(1, str.length() - 2);
never executed: str = str.mid(1, str.length() - 2);
0
610 family_list << str;-
611 }
never executed: end of block
0
612-
613-
614 QStringList subs_list;-
615 QStringList::ConstIterator it = family_list.constBegin(), end = family_list.constEnd();-
616 for (; it != end
it != endDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it)
0
617 subs_list += QFont::substitutes(*it);
never executed: subs_list += QFont::substitutes(*it);
0
618-
619-
620 family_list += subs_list;-
621-
622 return
never executed: return family_list;
family_list;
never executed: return family_list;
0
623}-
624-
625namespace { namespace Q_QGS_privateDb { typedef QFontDatabasePrivate Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<QFontDatabasePrivate, Q_QGS_privateDb::innerFunction, Q_QGS_privateDb::guard> privateDb;
0
626namespace { namespace Q_QGS_fontDatabaseMutex { typedef QMutex Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type (QMutex::Recursive))) : value (QMutex::Recursive) { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<QMutex, Q_QGS_fontDatabaseMutex::innerFunction, Q_QGS_fontDatabaseMutex::guard> fontDatabaseMutex;
0
627-
628-
629void qt_cleanupFontDatabase()-
630{-
631 QFontDatabasePrivate *db = privateDb();-
632 if (db
dbDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
633 db->fallbacksCache.clear();-
634 db->free();-
635 }
never executed: end of block
0
636}
never executed: end of block
0
637-
638-
639QMutex *qt_fontdatabase_mutex()-
640{-
641 return
never executed: return fontDatabaseMutex();
fontDatabaseMutex();
never executed: return fontDatabaseMutex();
0
642}-
643-
644-
645void qt_registerFont(const QString &familyName, const QString &stylename,-
646 const QString &foundryname, int weight,-
647 QFont::Style style, int stretch, bool antialiased,-
648 bool scalable, int pixelSize, bool fixedPitch,-
649 const QSupportedWritingSystems &writingSystems, void *handle)-
650{-
651 QFontDatabasePrivate *d = privateDb();-
652-
653 QtFontStyle::Key styleKey;-
654 styleKey.style = style;-
655 styleKey.weight = weight;-
656 styleKey.stretch = stretch;-
657 QtFontFamily *f = d->family(familyName, QFontDatabasePrivate::EnsureCreated);-
658 f->fixedPitch = fixedPitch;-
659-
660 for (int i = 0; i < QFontDatabase::WritingSystemsCount
i < QFontDatab...ngSystemsCountDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
661 if (writingSystems.supported(QFontDatabase::WritingSystem(i))
writingSystems...tingSystem(i))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
662 f->writingSystems[i] = QtFontFamily::Supported;
never executed: f->writingSystems[i] = QtFontFamily::Supported;
0
663 }
never executed: end of block
0
664-
665 QtFontFoundry *foundry = f->foundry(foundryname, true);-
666 QtFontStyle *fontStyle = foundry->style(styleKey, stylename, true);-
667 fontStyle->smoothScalable = scalable;-
668 fontStyle->antialiased = antialiased;-
669 QtFontSize *size = fontStyle->pixelSize(pixelSize ? pixelSize : 0xffff, true);-
670 if (size->handle
size->handleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
671 QPlatformIntegration *integration = QGuiApplicationPrivate::platformIntegration();-
672 if (integration
integrationDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
673 integration->fontDatabase()->releaseHandle(size->handle);
never executed: integration->fontDatabase()->releaseHandle(size->handle);
0
674 }
never executed: end of block
0
675 size->handle = handle;-
676 f->populated = true;-
677}
never executed: end of block
0
678-
679void qt_registerFontFamily(const QString &familyName)-
680{-
681-
682 privateDb()->family(familyName, QFontDatabasePrivate::EnsureCreated);-
683}
never executed: end of block
0
684-
685void qt_registerAliasToFontFamily(const QString &familyName, const QString &alias)-
686{-
687 if (alias.isEmpty()
alias.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
688 return;
never executed: return;
0
689-
690 QFontDatabasePrivate *d = privateDb();-
691 QtFontFamily *f = d->family(familyName, QFontDatabasePrivate::RequestFamily);-
692 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
693 return;
never executed: return;
0
694-
695 if (f->aliases.contains(alias, Qt::CaseInsensitive)
f->aliases.con...seInsensitive)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
696 return;
never executed: return;
0
697-
698 f->aliases.push_back(alias);-
699}
never executed: end of block
0
700-
701QString qt_resolveFontFamilyAlias(const QString &alias)-
702{-
703 if (!alias.isEmpty()
!alias.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
704 const QFontDatabasePrivate *d = privateDb();-
705 for (int i = 0; i < d->count
i < d->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
706 if (d->families[i]->matchesFamilyName(alias)
d->families[i]...ilyName(alias)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
707 return
never executed: return d->families[i]->name;
d->families[i]->name;
never executed: return d->families[i]->name;
0
708 }
never executed: end of block
0
709 return
never executed: return alias;
alias;
never executed: return alias;
0
710}-
711-
712QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const-
713{-
714 (void)family;;-
715 (void)styleHint;;-
716-
717 QStringList preferredFallbacks;-
718 QStringList otherFallbacks;-
719-
720 size_t writingSystem = std::find(scriptForWritingSystem,-
721 scriptForWritingSystem + QFontDatabase::WritingSystemsCount,-
722 script) - scriptForWritingSystem;-
723 if (writingSystem >= QFontDatabase::WritingSystemsCount
writingSystem ...ngSystemsCountDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
724 writingSystem = QFontDatabase::Any;
never executed: writingSystem = QFontDatabase::Any;
0
725-
726 QFontDatabasePrivate *db = privateDb();-
727 for (int i = 0; i < db->count
i < db->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
728 QtFontFamily *f = db->families[i];-
729-
730 f->ensurePopulated();-
731-
732 if (writingSystem > QFontDatabase::Any
writingSystem ...tDatabase::AnyDescription
TRUEnever evaluated
FALSEnever evaluated
&& f->writingSystems[writingSystem] != QtFontFamily::Supported
f->writingSyst...ily::SupportedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
733 continue;
never executed: continue;
0
734-
735 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++j) {
0
736 QtFontFoundry *foundry = f->foundries[j];-
737-
738 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++k) {
0
739 QString name = foundry->name.isEmpty()
foundry->name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
740 ? f->name-
741 : f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']');-
742 if (style == foundry->styles[k]->key.style
style == found...[k]->key.styleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
743 preferredFallbacks.append(name);
never executed: preferredFallbacks.append(name);
0
744 else-
745 otherFallbacks.append(name);
never executed: otherFallbacks.append(name);
0
746 }-
747 }
never executed: end of block
0
748 }
never executed: end of block
0
749-
750 return
never executed: return preferredFallbacks + otherFallbacks;
preferredFallbacks + otherFallbacks;
never executed: return preferredFallbacks + otherFallbacks;
0
751}-
752-
753static void initializeDb();-
754-
755static QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script)-
756{-
757 QFontDatabasePrivate *db = privateDb();-
758 if (!db->count
!db->countDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
759 initializeDb();
never executed: initializeDb();
0
760-
761 const FallbacksCacheKey cacheKey = { family, style, styleHint, script };-
762-
763 if (const
const QStringL...ject(cacheKey)Description
TRUEnever evaluated
FALSEnever evaluated
QStringList *fallbacks = db->fallbacksCache.object(cacheKey)
const QStringL...ject(cacheKey)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
764 return
never executed: return *fallbacks;
*fallbacks;
never executed: return *fallbacks;
0
765-
766-
767 QStringList retList = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(family,style,styleHint,script);-
768-
769 QStringList::iterator i;-
770 for (i = retList.begin(); i != retList.end()
i != retList.end()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
771 bool contains = false;-
772 for (int j = 0; j < db->count
j < db->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
773 if (db->families[j]->matchesFamilyName(*i)
db->families[j...FamilyName(*i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
774 contains = true;-
775 break;
never executed: break;
0
776 }-
777 }
never executed: end of block
0
778 if (!contains
!containsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
779 i = retList.erase(i);-
780 --i;-
781 }
never executed: end of block
0
782 }
never executed: end of block
0
783-
784 db->fallbacksCache.insert(cacheKey, new QStringList(retList));-
785-
786 return
never executed: return retList;
retList;
never executed: return retList;
0
787}-
788-
789QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script)-
790{-
791 QMutexLocker locker(fontDatabaseMutex());-
792 return
never executed: return fallbacksForFamily(family, style, styleHint, script);
fallbacksForFamily(family, style, styleHint, script);
never executed: return fallbacksForFamily(family, style, styleHint, script);
0
793}-
794-
795static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt);-
796-
797static void initializeDb()-
798{-
799 QFontDatabasePrivate *db = privateDb();-
800-
801-
802 if (!db->count
!db->countDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
803 QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase();
never executed: QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase();
0
804-
805 if (db->reregisterAppFonts
db->reregisterAppFontsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
806 for (int i = 0; i < db->applicationFonts.count()
i < db->applic...nFonts.count()Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
807 if (!db->applicationFonts.at(i).families.isEmpty()
!db->applicati...lies.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
808 registerFont(&db->applicationFonts[i]);
never executed: registerFont(&db->applicationFonts[i]);
0
809 }
never executed: end of block
0
810 db->reregisterAppFonts = false;-
811 }
never executed: end of block
0
812}
never executed: end of block
0
813-
814static inline void load(const QString & = QString(), int = -1)-
815{-
816-
817 if (!privateDb()->count
!privateDb()->countDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
818 initializeDb();
never executed: initializeDb();
0
819}
never executed: end of block
0
820-
821static-
822QFontEngine *loadSingleEngine(int script,-
823 const QFontDef &request,-
824 QtFontFamily *family, QtFontFoundry *foundry,-
825 QtFontStyle *style, QtFontSize *size)-
826{-
827 (void)foundry;;-
828-
829 ((!(size)) ? qt_assert("size",__FILE__,920) : qt_noop());-
830 QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase();-
831 int pixelSize = size->pixelSize;-
832 if (!pixelSize
!pixelSizeDescription
TRUEnever evaluated
FALSEnever evaluated
|| (style->smoothScalable
style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& pixelSize == 0xffff
pixelSize == 0xffffDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
833 || pfdb->fontsAlwaysScalable()
pfdb->fontsAlwaysScalable()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
834 pixelSize = request.pixelSize;-
835 }
never executed: end of block
0
836-
837 QFontDef def = request;-
838 def.pixelSize = pixelSize;-
839-
840 QFontCache *fontCache = QFontCache::instance();-
841-
842 QFontCache::Key key(def,script);-
843 QFontEngine *engine = fontCache->findEngine(key);-
844 if (!engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
845 const bool cacheForCommonScript = script != QChar::Script_Common
script != QChar::Script_CommonDescription
TRUEnever evaluated
FALSEnever evaluated
0
846 && (
(family->writi...upported) != 0Description
TRUEnever evaluated
FALSEnever evaluated
family->writingSystems[QFontDatabase::Latin] & QtFontFamily::Supported) != 0
(family->writi...upported) != 0Description
TRUEnever evaluated
FALSEnever evaluated
;
0
847-
848 if (__builtin_expect(!!(cacheForCommonScript), true)
__builtin_expe...Script), true)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
849-
850 key.script = QChar::Script_Common;-
851 engine = fontCache->findEngine(key);-
852 key.script = script;-
853 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
854-
855 if (__builtin_expect(!!(!engine->supportsScript(QChar::Script(script))), false)
__builtin_expe...ipt))), false)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
856 QMessageLogger(__FILE__, 947, __PRETTY_FUNCTION__).warning(" OpenType support missing for script %d", script);-
857 return
never executed: return 0;
0;
never executed: return 0;
0
858 }-
859-
860 engine->isSmoothlyScalable = style->smoothScalable;-
861 fontCache->insertEngine(key, engine);-
862 return
never executed: return engine;
engine;
never executed: return engine;
0
863 }-
864 }
never executed: end of block
0
865-
866-
867-
868-
869 if (style->key.stretch != 0
style->key.stretch != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& request.stretch != 0
request.stretch != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
870 && (request.styleName.isEmpty()
request.styleName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| request.styleName != style->styleName
request.styleN...yle->styleNameDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
871 def.stretch = (request.stretch * 100 + 50) / style->key.stretch;-
872 }
never executed: end of block
0
873-
874 engine = pfdb->fontEngine(def, size->handle);-
875 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
876-
877 if (!engine->supportsScript(QChar::Script(script))
!engine->suppo...cript(script))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
878 QMessageLogger(__FILE__, 969, __PRETTY_FUNCTION__).warning(" OpenType support missing for script %d", script);-
879 if (engine->ref.load() == 0
engine->ref.load() == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
880 delete engine;
never executed: delete engine;
0
881 return
never executed: return 0;
0;
never executed: return 0;
0
882 }-
883-
884 engine->isSmoothlyScalable = style->smoothScalable;-
885 fontCache->insertEngine(key, engine);-
886-
887 if (__builtin_expect(!!(cacheForCommonScript && !engine->symbol), true)
__builtin_expe...symbol), true)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
888-
889 key.script = QChar::Script_Common;-
890 if (!fontCache->findEngine(key)
!fontCache->findEngine(key)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
891 fontCache->insertEngine(key, engine);
never executed: fontCache->insertEngine(key, engine);
0
892 }
never executed: end of block
0
893 }
never executed: end of block
0
894 }
never executed: end of block
0
895 return
never executed: return engine;
engine;
never executed: return engine;
0
896}-
897-
898static-
899QFontEngine *loadEngine(int script, const QFontDef &request,-
900 QtFontFamily *family, QtFontFoundry *foundry,-
901 QtFontStyle *style, QtFontSize *size)-
902{-
903 QFontEngine *engine = loadSingleEngine(script, request, family, foundry, style, size);-
904-
905 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(request.styleStrategy & QFont::NoFontMerging)
!(request.styl...NoFontMerging)Description
TRUEnever evaluated
FALSEnever evaluated
&& !engine->symbol
!engine->symbolDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
906 QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase();-
907 QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, QChar::Script(script));-
908 if (!request.fallBackFamilies.isEmpty()
!request.fallB...lies.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
909 QStringList fallbacks = request.fallBackFamilies;-
910-
911 QFont::StyleHint styleHint = QFont::StyleHint(request.styleHint);-
912 if (styleHint == QFont::AnyStyle
styleHint == QFont::AnyStyleDescription
TRUEnever evaluated
FALSEnever evaluated
&& request.fixedPitch
request.fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
913 styleHint = QFont::TypeWriter;
never executed: styleHint = QFont::TypeWriter;
0
914-
915 fallbacks += fallbacksForFamily(family->name, QFont::Style(style->key.style), styleHint, QChar::Script(script));-
916-
917 pfMultiEngine->setFallbackFamiliesList(fallbacks);-
918 }
never executed: end of block
0
919 engine = pfMultiEngine;-
920-
921-
922-
923 QFontCache::Key key(request, script, 1);-
924 QFontCache::instance()->insertEngine(key, engine);-
925 }
never executed: end of block
0
926-
927 return
never executed: return engine;
engine;
never executed: return engine;
0
928}-
929-
930static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt)-
931{-
932 QFontDatabasePrivate *db = privateDb();-
933-
934 fnt->families = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->addApplicationFont(fnt->data,fnt->fileName);-
935-
936 db->reregisterAppFonts = true;-
937}
never executed: end of block
0
938-
939static QtFontStyle *bestStyle(QtFontFoundry *foundry, const QtFontStyle::Key &styleKey,-
940 const QString &styleName = QString())-
941{-
942 int best = 0;-
943 int dist = 0xffff;-
944-
945 for ( int i = 0; i < foundry->count
i < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++ ) {
0
946 QtFontStyle *style = foundry->styles[i];-
947-
948 if (!styleName.isEmpty()
!styleName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& styleName == style->styleName
styleName == style->styleNameDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
949 dist = 0;-
950 best = i;-
951 break;
never executed: break;
0
952 }-
953-
954 int d = qAbs( styleKey.weight - style->key.weight );-
955-
956 if ( styleKey.stretch != 0
styleKey.stretch != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& style->key.stretch != 0
style->key.stretch != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
957 d += qAbs( styleKey.stretch - style->key.stretch );-
958 }
never executed: end of block
0
959-
960 if (styleKey.style != style->key.style
styleKey.style...yle->key.styleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
961 if (styleKey.style != QFont::StyleNormal
styleKey.style...t::StyleNormalDescription
TRUEnever evaluated
FALSEnever evaluated
&& style->key.style != QFont::StyleNormal
style->key.sty...t::StyleNormalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
962-
963 d += 0x0001;
never executed: d += 0x0001;
0
964 else-
965 d += 0x1000;
never executed: d += 0x1000;
0
966 }-
967-
968 if ( d < dist
d < distDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
969 best = i;-
970 dist = d;-
971 }
never executed: end of block
0
972 }
never executed: end of block
0
973-
974 if (false) QMessageLogger(__FILE__, 1065, __PRETTY_FUNCTION__).debug( " best style has distance 0x%x", dist );
dead code: QMessageLogger(__FILE__, 1065, __PRETTY_FUNCTION__).debug( " best style has distance 0x%x", dist );
-
975 return
never executed: return foundry->styles[best];
foundry->styles[best];
never executed: return foundry->styles[best];
0
976}-
977-
978-
979static-
980unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,-
981 const QtFontFamily *family, const QString &foundry_name,-
982 QtFontStyle::Key styleKey, int pixelSize, char pitch,-
983 QtFontDesc *desc, const QString &styleName = QString())-
984{-
985 (void)script;;-
986 (void)pitch;;-
987-
988 desc->foundry = 0;-
989 desc->style = 0;-
990 desc->size = 0;-
991-
992-
993 if (false) QMessageLogger(__FILE__, 1084, __PRETTY_FUNCTION__).debug(" REMARK: looking for best foundry for family '%s' [%d]", family->name.toLatin1().constData(), family->count);
dead code: QMessageLogger(__FILE__, 1084, __PRETTY_FUNCTION__).debug(" REMARK: looking for best foundry for family '%s' [%d]", family->name.toLatin1().constData(), family->count);
-
994-
995 for (int x = 0; x < family->count
x < family->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
996 QtFontFoundry *foundry = family->foundries[x];-
997 if (!foundry_name.isEmpty()
!foundry_name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& foundry->name.compare(foundry_name, Qt::CaseInsensitive) != 0
foundry->name....ensitive) != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
998 continue;
never executed: continue;
0
999-
1000 if (false) QMessageLogger(__FILE__, 1091, __PRETTY_FUNCTION__).debug(" looking for matching style in foundry '%s' %d",
dead code: QMessageLogger(__FILE__, 1091, __PRETTY_FUNCTION__).debug(" looking for matching style in foundry '%s' %d", foundry->name.isEmpty() ? "-- none --" : foundry->name.toLatin1().constData(), foundry->count);
-
1001 foundry->name.isEmpty() ? "-- none --" : foundry->name.toLatin1().constData(), foundry->count);
dead code: QMessageLogger(__FILE__, 1091, __PRETTY_FUNCTION__).debug(" looking for matching style in foundry '%s' %d", foundry->name.isEmpty() ? "-- none --" : foundry->name.toLatin1().constData(), foundry->count);
-
1002-
1003 QtFontStyle *style = bestStyle(foundry, styleKey, styleName);-
1004-
1005 if (!style->smoothScalable
!style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(styleStrategy...:ForceOutline)Description
TRUEnever evaluated
FALSEnever evaluated
styleStrategy & QFont::ForceOutline)
(styleStrategy...:ForceOutline)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1006 if (false) QMessageLogger(__FILE__, 1097, __PRETTY_FUNCTION__).debug(" ForceOutline set, but not smoothly scalable");
dead code: QMessageLogger(__FILE__, 1097, __PRETTY_FUNCTION__).debug(" ForceOutline set, but not smoothly scalable");
-
1007 continue;
never executed: continue;
0
1008 }-
1009-
1010 int px = -1;-
1011 QtFontSize *size = 0;-
1012-
1013-
1014 if (!(styleStrategy & QFont::ForceOutline)
!(styleStrateg...:ForceOutline)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1015 size = style->pixelSize(pixelSize);-
1016 if (size
sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1017 if (false) QMessageLogger(__FILE__, 1108, __PRETTY_FUNCTION__).debug(" found exact size match (%d pixels)", size->pixelSize);
dead code: QMessageLogger(__FILE__, 1108, __PRETTY_FUNCTION__).debug(" found exact size match (%d pixels)", size->pixelSize);
-
1018 px = size->pixelSize;-
1019 }
never executed: end of block
0
1020 }
never executed: end of block
0
1021-
1022-
1023 if (!size
!sizeDescription
TRUEnever evaluated
FALSEnever evaluated
&& style->smoothScalable
style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& ! (styleStrategy & QFont::PreferBitmap)
! (styleStrate...:PreferBitmap)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1024 size = style->pixelSize(0xffff);-
1025 if (size
sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1026 if (false) QMessageLogger(__FILE__, 1117, __PRETTY_FUNCTION__).debug(" found smoothly scalable font (%d pixels)", pixelSize);
dead code: QMessageLogger(__FILE__, 1117, __PRETTY_FUNCTION__).debug(" found smoothly scalable font (%d pixels)", pixelSize);
-
1027 px = pixelSize;-
1028 }
never executed: end of block
0
1029 }
never executed: end of block
0
1030-
1031-
1032 if (!size
!sizeDescription
TRUEnever evaluated
FALSEnever evaluated
&& style->bitmapScalable
style->bitmapScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(styleStrategy...::PreferMatch)Description
TRUEnever evaluated
FALSEnever evaluated
styleStrategy & QFont::PreferMatch)
(styleStrategy...::PreferMatch)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1033 size = style->pixelSize(0);-
1034 if (size
sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1035 if (false) QMessageLogger(__FILE__, 1126, __PRETTY_FUNCTION__).debug(" found bitmap scalable font (%d pixels)", pixelSize);
dead code: QMessageLogger(__FILE__, 1126, __PRETTY_FUNCTION__).debug(" found bitmap scalable font (%d pixels)", pixelSize);
-
1036 px = pixelSize;-
1037 }
never executed: end of block
0
1038 }
never executed: end of block
0
1039-
1040-
1041-
1042 if (! size
! sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1043 unsigned int distance = ~0u;-
1044 for (int x = 0; x < style->count
x < style->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
1045-
1046 unsigned int d;-
1047 if (style->pixelSizes[x].pixelSize < pixelSize
style->pixelSi...ze < pixelSizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1048-
1049-
1050-
1051 d = pixelSize - style->pixelSizes[x].pixelSize + 1;-
1052 }
never executed: end of block
else {
0
1053 d = style->pixelSizes[x].pixelSize - pixelSize;-
1054 }
never executed: end of block
0
1055-
1056 if (d < distance
d < distanceDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1057 distance = d;-
1058 size = style->pixelSizes + x;-
1059 if (false) QMessageLogger(__FILE__, 1150, __PRETTY_FUNCTION__).debug(" best size so far: %3d (%d)", size->pixelSize, pixelSize);
dead code: QMessageLogger(__FILE__, 1150, __PRETTY_FUNCTION__).debug(" best size so far: %3d (%d)", size->pixelSize, pixelSize);
-
1060 }
never executed: end of block
0
1061 }
never executed: end of block
0
1062-
1063 if (!size
!sizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1064 if (false) QMessageLogger(__FILE__, 1155, __PRETTY_FUNCTION__).debug(" no size supports the script we want");
dead code: QMessageLogger(__FILE__, 1155, __PRETTY_FUNCTION__).debug(" no size supports the script we want");
-
1065 continue;
never executed: continue;
0
1066 }-
1067-
1068 if (style->bitmapScalable
style->bitmapScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& ! (styleStrategy & QFont::PreferQuality)
! (styleStrate...PreferQuality)Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
1069 (
(distance * 10...ixelSize) >= 2Description
TRUEnever evaluated
FALSEnever evaluated
distance * 10 / pixelSize) >= 2
(distance * 10...ixelSize) >= 2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1070-
1071-
1072 size = style->pixelSize(0);-
1073 px = pixelSize;-
1074 }
never executed: end of block
else {
0
1075 px = size->pixelSize;-
1076 }
never executed: end of block
0
1077 }-
1078-
1079-
1080 unsigned int this_score = 0x0000;-
1081 enum {-
1082 PitchMismatch = 0x4000,-
1083 StyleMismatch = 0x2000,-
1084 BitmapScaledPenalty = 0x1000-
1085 };-
1086 if (pitch != '*'
pitch != '*'Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1087 if ((pitch == 'm'
pitch == 'm'Description
TRUEnever evaluated
FALSEnever evaluated
&& !family->fixedPitch
!family->fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1088 || (pitch == 'p'
pitch == 'p'Description
TRUEnever evaluated
FALSEnever evaluated
&& family->fixedPitch
family->fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
))
0
1089 this_score += PitchMismatch;
never executed: this_score += PitchMismatch;
0
1090 }
never executed: end of block
0
1091 if (styleKey != style->key
styleKey != style->keyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1092 this_score += StyleMismatch;
never executed: this_score += StyleMismatch;
0
1093 if (!style->smoothScalable
!style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& px != size->pixelSize
px != size->pixelSizeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1094 this_score += BitmapScaledPenalty;
never executed: this_score += BitmapScaledPenalty;
0
1095 if (px != pixelSize
px != pixelSizeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1096 this_score += qAbs(px - pixelSize);
never executed: this_score += qAbs(px - pixelSize);
0
1097-
1098 if (this_score < score
this_score < scoreDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1099 if (false) QMessageLogger(__FILE__, 1190, __PRETTY_FUNCTION__).debug(" found a match: score %x best score so far %x",
dead code: QMessageLogger(__FILE__, 1190, __PRETTY_FUNCTION__).debug(" found a match: score %x best score so far %x", this_score, score);
-
1100 this_score, score);
dead code: QMessageLogger(__FILE__, 1190, __PRETTY_FUNCTION__).debug(" found a match: score %x best score so far %x", this_score, score);
-
1101-
1102 score = this_score;-
1103 desc->foundry = foundry;-
1104 desc->style = style;-
1105 desc->size = size;-
1106 }
never executed: end of block
else {
0
1107 if (false) QMessageLogger(__FILE__, 1198, __PRETTY_FUNCTION__).debug(" score %x no better than best %x", this_score, score);
dead code: QMessageLogger(__FILE__, 1198, __PRETTY_FUNCTION__).debug(" score %x no better than best %x", this_score, score);
-
1108 }
never executed: end of block
0
1109 }-
1110-
1111 return
never executed: return score;
score;
never executed: return score;
0
1112}-
1113-
1114static bool matchFamilyName(const QString &familyName, QtFontFamily *f)-
1115{-
1116 if (familyName.isEmpty()
familyName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1117 return
never executed: return true;
true;
never executed: return true;
0
1118 return
never executed: return f->matchesFamilyName(familyName);
f->matchesFamilyName(familyName);
never executed: return f->matchesFamilyName(familyName);
0
1119}-
1120-
1121-
1122-
1123-
1124-
1125-
1126static int match(int script, const QFontDef &request,-
1127 const QString &family_name, const QString &foundry_name,-
1128 QtFontDesc *desc, const QList<int> &blacklistedFamilies)-
1129{-
1130 int result = -1;-
1131-
1132 QtFontStyle::Key styleKey;-
1133 styleKey.style = request.style;-
1134 styleKey.weight = request.weight;-
1135 styleKey.stretch = request.stretch;-
1136 char pitch = request.ignorePitch
request.ignorePitchDescription
TRUEnever evaluated
FALSEnever evaluated
? '*' : request.fixedPitch
request.fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
? 'm' : 'p';
0
1137-
1138-
1139 if (false) QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1140 " request:\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1141 " family: %s [%s], script: %d\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1142 " weight: %d, style: %d\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1143 " stretch: %d\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1144 " pixelSize: %g\n"
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1145 " pitch: %c",
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1146 family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(),
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1147 foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(),
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1148 script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
dead code: QMessageLogger(__FILE__, 1230, __PRETTY_FUNCTION__).debug("QFontDatabase::match\n" " request:\n" " family: %s [%s], script: %d\n" " weight: %d, style: %d\n" " stretch: %d\n" " pixelSize: %g\n" " pitch: %c", family_name.isEmpty() ? "-- first in script --" : family_name.toLatin1().constData(), foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(), script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
-
1149-
1150 desc->family = 0;-
1151 desc->foundry = 0;-
1152 desc->style = 0;-
1153 desc->size = 0;-
1154-
1155 unsigned int score = ~0u;-
1156-
1157 load(family_name, script);-
1158-
1159 size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem +-
1160 QFontDatabase::WritingSystemsCount, script) - scriptForWritingSystem;-
1161 if (writingSystem >= QFontDatabase::WritingSystemsCount
writingSystem ...ngSystemsCountDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1162 writingSystem = QFontDatabase::Any;
never executed: writingSystem = QFontDatabase::Any;
0
1163-
1164 QFontDatabasePrivate *db = privateDb();-
1165 for (int x = 0; x < db->count
x < db->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
1166 if (blacklistedFamilies.contains(x)
blacklistedFam...es.contains(x)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1167 continue;
never executed: continue;
0
1168 QtFontDesc test;-
1169 test.family = db->families[x];-
1170-
1171 if (!matchFamilyName(family_name, test.family)
!matchFamilyNa..., test.family)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1172 continue;
never executed: continue;
0
1173-
1174 test.family->ensurePopulated();-
1175-
1176-
1177 if (writingSystem != QFontDatabase::Any
writingSystem ...tDatabase::AnyDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(test.family->writingSystems[writingSystem] & QtFontFamily::Supported)
!(test.family-...ly::Supported)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1178 continue;
never executed: continue;
0
1179-
1180-
1181-
1182 unsigned int newscore =-
1183 bestFoundry(script, score, request.styleStrategy,-
1184 test.family, foundry_name, styleKey, request.pixelSize, pitch,-
1185 &test, request.styleName);-
1186 if (test.foundry == 0
test.foundry == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& !foundry_name.isEmpty()
!foundry_name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1187-
1188-
1189 newscore = bestFoundry(script, score, request.styleStrategy, test.family,-
1190 QString(), styleKey, request.pixelSize,-
1191 pitch, &test, request.styleName);-
1192 }
never executed: end of block
0
1193-
1194 if (newscore < score
newscore < scoreDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1195 result = x;-
1196 score = newscore;-
1197 *desc = test;-
1198 }
never executed: end of block
0
1199 if (newscore < 10
newscore < 10Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1200 break;
never executed: break;
0
1201 }
never executed: end of block
0
1202 return
never executed: return result;
result;
never executed: return result;
0
1203}-
1204-
1205static QString styleStringHelper(int weight, QFont::Style style)-
1206{-
1207 QString result;-
1208 if (weight > QFont::Normal
weight > QFont::NormalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1209 if (weight >= QFont::Black
weight >= QFont::BlackDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1210 result = QCoreApplication::translate("QFontDatabase", "Black");
never executed: result = QCoreApplication::translate("QFontDatabase", "Black");
0
1211 else if (weight >= QFont::ExtraBold
weight >= QFont::ExtraBoldDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1212 result = QCoreApplication::translate("QFontDatabase", "Extra Bold");
never executed: result = QCoreApplication::translate("QFontDatabase", "Extra Bold");
0
1213 else if (weight >= QFont::Bold
weight >= QFont::BoldDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1214 result = QCoreApplication::translate("QFontDatabase", "Bold");
never executed: result = QCoreApplication::translate("QFontDatabase", "Bold");
0
1215 else if (weight >= QFont::DemiBold
weight >= QFont::DemiBoldDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1216 result = QCoreApplication::translate("QFontDatabase", "Demi Bold");
never executed: result = QCoreApplication::translate("QFontDatabase", "Demi Bold");
0
1217 else if (weight >= QFont::Medium
weight >= QFont::MediumDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1218 result = QCoreApplication::translate("QFontDatabase", "Medium", "The Medium font weight");
never executed: result = QCoreApplication::translate("QFontDatabase", "Medium", "The Medium font weight");
0
1219 }
never executed: end of block
else {
0
1220 if (weight <= QFont::Thin
weight <= QFont::ThinDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1221 result = QCoreApplication::translate("QFontDatabase", "Thin");
never executed: result = QCoreApplication::translate("QFontDatabase", "Thin");
0
1222 else if (weight <= QFont::ExtraLight
weight <= QFont::ExtraLightDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1223 result = QCoreApplication::translate("QFontDatabase", "Extra Light");
never executed: result = QCoreApplication::translate("QFontDatabase", "Extra Light");
0
1224 else if (weight <= QFont::Light
weight <= QFont::LightDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1225 result = QCoreApplication::translate("QFontDatabase", "Light");
never executed: result = QCoreApplication::translate("QFontDatabase", "Light");
0
1226 }
never executed: end of block
0
1227-
1228 if (style == QFont::StyleItalic
style == QFont::StyleItalicDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1229 result += QLatin1Char(' ') + QCoreApplication::translate("QFontDatabase", "Italic");
never executed: result += QLatin1Char(' ') + QCoreApplication::translate("QFontDatabase", "Italic");
0
1230 else if (style == QFont::StyleOblique
style == QFont::StyleObliqueDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1231 result += QLatin1Char(' ') + QCoreApplication::translate("QFontDatabase", "Oblique");
never executed: result += QLatin1Char(' ') + QCoreApplication::translate("QFontDatabase", "Oblique");
0
1232-
1233 if (result.isEmpty()
result.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1234 result = QCoreApplication::translate("QFontDatabase", "Normal", "The Normal or Regular font weight");
never executed: result = QCoreApplication::translate("QFontDatabase", "Normal", "The Normal or Regular font weight");
0
1235-
1236 return
never executed: return result.simplified();
result.simplified();
never executed: return result.simplified();
0
1237}-
1238-
1239-
1240-
1241-
1242-
1243-
1244QString QFontDatabase::styleString(const QFont &font)-
1245{-
1246 return
never executed: return font.styleName().isEmpty() ? styleStringHelper(font.weight(), font.style()) : font.styleName();
font.styleName().isEmpty()
font.styleName().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
? styleStringHelper(font.weight(), font.style())
never executed: return font.styleName().isEmpty() ? styleStringHelper(font.weight(), font.style()) : font.styleName();
0
1247 : font.styleName();
never executed: return font.styleName().isEmpty() ? styleStringHelper(font.weight(), font.style()) : font.styleName();
0
1248}-
1249-
1250-
1251-
1252-
1253-
1254-
1255QString QFontDatabase::styleString(const QFontInfo &fontInfo)-
1256{-
1257 return
never executed: return fontInfo.styleName().isEmpty() ? styleStringHelper(fontInfo.weight(), fontInfo.style()) : fontInfo.styleName();
fontInfo.styleName().isEmpty()
fontInfo.styleName().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
? styleStringHelper(fontInfo.weight(), fontInfo.style())
never executed: return fontInfo.styleName().isEmpty() ? styleStringHelper(fontInfo.weight(), fontInfo.style()) : fontInfo.styleName();
0
1258 : fontInfo.styleName();
never executed: return fontInfo.styleName().isEmpty() ? styleStringHelper(fontInfo.weight(), fontInfo.style()) : fontInfo.styleName();
0
1259}-
1260QFontDatabase::QFontDatabase()-
1261{-
1262 if (!(static_cast<QGuiApplication *>(QCoreApplication::instance()))
!(static_cast<...::instance()))Description
TRUEnever evaluated
FALSEnever evaluated
|| !QGuiApplicationPrivate::platformIntegration()
!QGuiApplicati...mIntegration()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1263 QMessageLogger(__FILE__, 1411, __PRETTY_FUNCTION__).fatal("QFontDatabase: Must construct a QGuiApplication before accessing QFontDatabase");
never executed: QMessageLogger(__FILE__, 1411, __PRETTY_FUNCTION__).fatal("QFontDatabase: Must construct a QGuiApplication before accessing QFontDatabase");
0
1264-
1265 QMutexLocker locker(fontDatabaseMutex());-
1266 createDatabase();-
1267 d = privateDb();-
1268}
never executed: end of block
0
1269QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems() const-
1270{-
1271 QMutexLocker locker(fontDatabaseMutex());-
1272-
1273 ::load();-
1274-
1275 quint64 writingSystemsFound = 0;-
1276 static_assert(bool(WritingSystemsCount < 64), "WritingSystemsCount < 64");-
1277-
1278 for (int i = 0; i < d->count
i < d->countDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
1279 QtFontFamily *family = d->families[i];-
1280 family->ensurePopulated();-
1281-
1282 if (family->count == 0
family->count == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1283 continue;
never executed: continue;
0
1284 for (uint x = Latin; x < uint(WritingSystemsCount)
x < uint(WritingSystemsCount)Description
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
1285 if (family->writingSystems[x] & QtFontFamily::Supported
family->writin...ily::SupportedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1286 writingSystemsFound |= quint64(1) << x;
never executed: writingSystemsFound |= quint64(1) << x;
0
1287 }
never executed: end of block
0
1288 }
never executed: end of block
0
1289-
1290-
1291 locker.unlock();-
1292-
1293 QList<WritingSystem> list;-
1294 list.reserve(qPopulationCount(writingSystemsFound));-
1295 for (uint x = Latin ; x < uint(WritingSystemsCount)
x < uint(WritingSystemsCount)Description
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
1296 if (writingSystemsFound & (quint64(1) << x)
writingSystems...int64(1) << x)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1297 list.push_back(WritingSystem(x));
never executed: list.push_back(WritingSystem(x));
0
1298 }
never executed: end of block
0
1299 return
never executed: return list;
list;
never executed: return list;
0
1300}-
1301QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems(const QString &family) const-
1302{-
1303 QString familyName, foundryName;-
1304 parseFontName(family, foundryName, familyName);-
1305-
1306 QMutexLocker locker(fontDatabaseMutex());-
1307-
1308 ::load();-
1309-
1310 QList<WritingSystem> list;-
1311 QtFontFamily *f = d->family(familyName);-
1312 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
|| f->count == 0
f->count == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1313 return
never executed: return list;
list;
never executed: return list;
0
1314-
1315 for (int x = Latin; x < WritingSystemsCount
x < WritingSystemsCountDescription
TRUEnever evaluated
FALSEnever evaluated
; ++x) {
0
1316 const WritingSystem writingSystem = WritingSystem(x);-
1317 if (f->writingSystems[writingSystem] & QtFontFamily::Supported
f->writingSyst...ily::SupportedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1318 list.append(writingSystem);
never executed: list.append(writingSystem);
0
1319 }
never executed: end of block
0
1320 return
never executed: return list;
list;
never executed: return list;
0
1321}-
1322QStringList QFontDatabase::families(WritingSystem writingSystem) const-
1323{-
1324 QMutexLocker locker(fontDatabaseMutex());-
1325-
1326 ::load();-
1327-
1328 QStringList flist;-
1329 for (int i = 0; i < d->count
i < d->countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1330 QtFontFamily *f = d->families[i];-
1331 if (f->populated
f->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
&& f->count == 0
f->count == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1332 continue;
never executed: continue;
0
1333 if (writingSystem != Any
writingSystem != AnyDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1334 f->ensurePopulated();-
1335 if (f->writingSystems[writingSystem] != QtFontFamily::Supported
f->writingSyst...ily::SupportedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1336 continue;
never executed: continue;
0
1337 }
never executed: end of block
0
1338 if (!f->populated
!f->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
|| f->count == 1
f->count == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1339 flist.append(f->name);-
1340 }
never executed: end of block
else {
0
1341 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1342 QString str = f->name;-
1343 QString foundry = f->foundries[j]->name;-
1344 if (!foundry.isEmpty()
!foundry.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1345 str += QLatin1String(" [");-
1346 str += foundry;-
1347 str += QLatin1Char(']');-
1348 }
never executed: end of block
0
1349 flist.append(str);-
1350 }
never executed: end of block
0
1351 }
never executed: end of block
0
1352 }-
1353 return
never executed: return flist;
flist;
never executed: return flist;
0
1354}-
1355QStringList QFontDatabase::styles(const QString &family) const-
1356{-
1357 QString familyName, foundryName;-
1358 parseFontName(family, foundryName, familyName);-
1359-
1360 QMutexLocker locker(fontDatabaseMutex());-
1361-
1362 ::load(familyName);-
1363-
1364 QStringList l;-
1365 QtFontFamily *f = d->family(familyName);-
1366 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1367 return
never executed: return l;
l;
never executed: return l;
0
1368-
1369 QtFontFoundry allStyles(foundryName);-
1370 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1371 QtFontFoundry *foundry = f->foundries[j];-
1372 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1373 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++) {
0
1374 QtFontStyle::Key ke(foundry->styles[k]->key);-
1375 ke.stretch = 0;-
1376 allStyles.style(ke, foundry->styles[k]->styleName, true);-
1377 }
never executed: end of block
0
1378 }
never executed: end of block
0
1379 }
never executed: end of block
0
1380-
1381 l.reserve(allStyles.count);-
1382 for (int i = 0; i < allStyles.count
i < allStyles.countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1383 l.append(allStyles.styles[i]->styleName.isEmpty() ?-
1384 styleStringHelper(allStyles.styles[i]->key.weight,-
1385 (QFont::Style)allStyles.styles[i]->key.style) :-
1386 allStyles.styles[i]->styleName);-
1387 }
never executed: end of block
0
1388 return
never executed: return l;
l;
never executed: return l;
0
1389}-
1390-
1391-
1392-
1393-
1394-
1395-
1396bool QFontDatabase::isFixedPitch(const QString &family,-
1397 const QString &style) const-
1398{-
1399 (void)style;;-
1400-
1401 QString familyName, foundryName;-
1402 parseFontName(family, foundryName, familyName);-
1403-
1404 QMutexLocker locker(fontDatabaseMutex());-
1405-
1406 ::load(familyName);-
1407-
1408 QtFontFamily *f = d->family(familyName);-
1409 return
never executed: return (f && f->fixedPitch);
(f
fDescription
TRUEnever evaluated
FALSEnever evaluated
&& f->fixedPitch
f->fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
);
never executed: return (f && f->fixedPitch);
0
1410}-
1411bool QFontDatabase::isBitmapScalable(const QString &family,-
1412 const QString &style) const-
1413{-
1414 bool bitmapScalable = false;-
1415 QString familyName, foundryName;-
1416 parseFontName(family, foundryName, familyName);-
1417-
1418 QMutexLocker locker(fontDatabaseMutex());-
1419-
1420 ::load(familyName);-
1421-
1422 QtFontFamily *f = d->family(familyName);-
1423 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return bitmapScalable;
bitmapScalable;
never executed: return bitmapScalable;
0
1424-
1425 QtFontStyle::Key styleKey(style);-
1426 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1427 QtFontFoundry *foundry = f->foundries[j];-
1428 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1429 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1430 if ((style.isEmpty()
style.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1431 foundry->styles[k]->styleName == style
foundry->style...eName == styleDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1432 foundry->styles[k]->key == styleKey
foundry->style...ey == styleKeyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1433 && foundry->styles[k]->bitmapScalable
foundry->style...bitmapScalableDescription
TRUEnever evaluated
FALSEnever evaluated
&& !foundry->styles[k]->smoothScalable
!foundry->styl...smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1434 bitmapScalable = true;-
1435 goto
never executed: goto end;
end;
never executed: goto end;
0
1436 }-
1437 }
never executed: end of block
0
1438 }
never executed: end of block
0
1439 end:
code before this statement never executed: end:
0
1440 return
never executed: return bitmapScalable;
bitmapScalable;
never executed: return bitmapScalable;
0
1441}-
1442bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style) const-
1443{-
1444 bool smoothScalable = false;-
1445 QString familyName, foundryName;-
1446 parseFontName(family, foundryName, familyName);-
1447-
1448 QMutexLocker locker(fontDatabaseMutex());-
1449-
1450 ::load(familyName);-
1451-
1452 QtFontFamily *f = d->family(familyName);-
1453 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1454 for (int i = 0; i < d->count
i < d->countDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
1455 if (d->families[i]->matchesFamilyName(familyName)
d->families[i]...me(familyName)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1456 f = d->families[i];-
1457 f->ensurePopulated();-
1458 break;
never executed: break;
0
1459 }-
1460 }
never executed: end of block
0
1461 }
never executed: end of block
0
1462 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return smoothScalable;
smoothScalable;
never executed: return smoothScalable;
0
1463-
1464 QtFontStyle::Key styleKey(style);-
1465 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1466 QtFontFoundry *foundry = f->foundries[j];-
1467 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1468 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1469 if ((style.isEmpty()
style.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1470 foundry->styles[k]->styleName == style
foundry->style...eName == styleDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1471 foundry->styles[k]->key == styleKey
foundry->style...ey == styleKeyDescription
TRUEnever evaluated
FALSEnever evaluated
) && foundry->styles[k]->smoothScalable
foundry->style...smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1472 smoothScalable = true;-
1473 goto
never executed: goto end;
end;
never executed: goto end;
0
1474 }-
1475 }
never executed: end of block
0
1476 }
never executed: end of block
0
1477 end:
code before this statement never executed: end:
0
1478 return
never executed: return smoothScalable;
smoothScalable;
never executed: return smoothScalable;
0
1479}-
1480-
1481-
1482-
1483-
1484-
1485-
1486-
1487bool QFontDatabase::isScalable(const QString &family,-
1488 const QString &style) const-
1489{-
1490 QMutexLocker locker(fontDatabaseMutex());-
1491 if (isSmoothlyScalable(family, style)
isSmoothlyScal...family, style)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1492 return
never executed: return true;
true;
never executed: return true;
0
1493 return
never executed: return isBitmapScalable(family, style);
isBitmapScalable(family, style);
never executed: return isBitmapScalable(family, style);
0
1494}-
1495QList<int> QFontDatabase::pointSizes(const QString &family,-
1496 const QString &styleName)-
1497{-
1498 if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()
QGuiApplicatio...waysScalable()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1499 return
never executed: return standardSizes();
standardSizes();
never executed: return standardSizes();
0
1500-
1501 bool smoothScalable = false;-
1502 QString familyName, foundryName;-
1503 parseFontName(family, foundryName, familyName);-
1504-
1505 QMutexLocker locker(fontDatabaseMutex());-
1506-
1507 ::load(familyName);-
1508-
1509 QList<int> sizes;-
1510-
1511 QtFontFamily *fam = d->family(familyName);-
1512 if (!fam
!famDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return sizes;
sizes;
never executed: return sizes;
0
1513-
1514-
1515 const int dpi = qt_defaultDpiY();-
1516-
1517 QtFontStyle::Key styleKey(styleName);-
1518 for (int j = 0; j < fam->count
j < fam->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1519 QtFontFoundry *foundry = fam->foundries[j];-
1520 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1521 QtFontStyle *style = foundry->style(styleKey, styleName);-
1522 if (!style
!styleDescription
TRUEnever evaluated
FALSEnever evaluated
) continue;
never executed: continue;
0
1523-
1524 if (style->smoothScalable
style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1525 smoothScalable = true;-
1526 goto
never executed: goto end;
end;
never executed: goto end;
0
1527 }-
1528 for (int l = 0; l < style->count
l < style->countDescription
TRUEnever evaluated
FALSEnever evaluated
; l++) {
0
1529 const QtFontSize *size = style->pixelSizes + l;-
1530-
1531 if (size->pixelSize != 0
size->pixelSize != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& size->pixelSize != 0xffff
size->pixelSize != 0xffffDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1532 const uint pointSize = qRound(size->pixelSize * 72.0 / dpi);-
1533 if (! sizes.contains(pointSize)
! sizes.contains(pointSize)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1534 sizes.append(pointSize);
never executed: sizes.append(pointSize);
0
1535 }
never executed: end of block
0
1536 }
never executed: end of block
0
1537 }
never executed: end of block
0
1538 }
never executed: end of block
0
1539 end:
code before this statement never executed: end:
0
1540 if (smoothScalable
smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1541 return
never executed: return standardSizes();
standardSizes();
never executed: return standardSizes();
0
1542-
1543 std::sort(sizes.begin(), sizes.end());-
1544 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
1545}-
1546-
1547-
1548-
1549-
1550-
1551-
1552-
1553QFont QFontDatabase::font(const QString &family, const QString &style,-
1554 int pointSize) const-
1555{-
1556 QString familyName, foundryName;-
1557 parseFontName(family, foundryName, familyName);-
1558-
1559 QMutexLocker locker(fontDatabaseMutex());-
1560-
1561 ::load(familyName);-
1562-
1563 QtFontFoundry allStyles(foundryName);-
1564 QtFontFamily *f = d->family(familyName);-
1565 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return QGuiApplication::font();
QGuiApplication::font();
never executed: return QGuiApplication::font();
0
1566-
1567 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1568 QtFontFoundry *foundry = f->foundries[j];-
1569 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1570 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1571 allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
never executed: allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
0
1572 }
never executed: end of block
0
1573 }
never executed: end of block
0
1574-
1575 QtFontStyle::Key styleKey(style);-
1576 QtFontStyle *s = bestStyle(&allStyles, styleKey, style);-
1577-
1578 if (!s
!sDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1579 return
never executed: return QGuiApplication::font();
QGuiApplication::font();
never executed: return QGuiApplication::font();
0
1580-
1581 QFont fnt(family, pointSize, s->key.weight);-
1582 fnt.setStyle((QFont::Style)s->key.style);-
1583 if (!s->styleName.isEmpty()
!s->styleName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1584 fnt.setStyleName(s->styleName);
never executed: fnt.setStyleName(s->styleName);
0
1585 return
never executed: return fnt;
fnt;
never executed: return fnt;
0
1586}-
1587QList<int> QFontDatabase::smoothSizes(const QString &family,-
1588 const QString &styleName)-
1589{-
1590 if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()
QGuiApplicatio...waysScalable()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1591 return
never executed: return standardSizes();
standardSizes();
never executed: return standardSizes();
0
1592-
1593 bool smoothScalable = false;-
1594 QString familyName, foundryName;-
1595 parseFontName(family, foundryName, familyName);-
1596-
1597 QMutexLocker locker(fontDatabaseMutex());-
1598-
1599 ::load(familyName);-
1600-
1601 QList<int> sizes;-
1602-
1603 QtFontFamily *fam = d->family(familyName);-
1604 if (!fam
!famDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1605 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
1606-
1607 const int dpi = qt_defaultDpiY();-
1608-
1609 QtFontStyle::Key styleKey(styleName);-
1610 for (int j = 0; j < fam->count
j < fam->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1611 QtFontFoundry *foundry = fam->foundries[j];-
1612 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1613 QtFontStyle *style = foundry->style(styleKey, styleName);-
1614 if (!style
!styleDescription
TRUEnever evaluated
FALSEnever evaluated
) continue;
never executed: continue;
0
1615-
1616 if (style->smoothScalable
style->smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1617 smoothScalable = true;-
1618 goto
never executed: goto end;
end;
never executed: goto end;
0
1619 }-
1620 for (int l = 0; l < style->count
l < style->countDescription
TRUEnever evaluated
FALSEnever evaluated
; l++) {
0
1621 const QtFontSize *size = style->pixelSizes + l;-
1622-
1623 if (size->pixelSize != 0
size->pixelSize != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& size->pixelSize != 0xffff
size->pixelSize != 0xffffDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1624 const uint pointSize = qRound(size->pixelSize * 72.0 / dpi);-
1625 if (! sizes.contains(pointSize)
! sizes.contains(pointSize)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1626 sizes.append(pointSize);
never executed: sizes.append(pointSize);
0
1627 }
never executed: end of block
0
1628 }
never executed: end of block
0
1629 }
never executed: end of block
0
1630 }
never executed: end of block
0
1631 end:
code before this statement never executed: end:
0
1632 if (smoothScalable
smoothScalableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1633 return
never executed: return QFontDatabase::standardSizes();
QFontDatabase::standardSizes();
never executed: return QFontDatabase::standardSizes();
0
1634-
1635 std::sort(sizes.begin(), sizes.end());-
1636 return
never executed: return sizes;
sizes;
never executed: return sizes;
0
1637}-
1638-
1639-
1640-
1641-
1642-
1643-
1644-
1645QList<int> QFontDatabase::standardSizes()-
1646{-
1647 return
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->standardSizes();
QGuiApplicationPrivate::platformIntegration()->fontDatabase()->standardSizes();
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->standardSizes();
0
1648}-
1649bool QFontDatabase::italic(const QString &family, const QString &style) const-
1650{-
1651 QString familyName, foundryName;-
1652 parseFontName(family, foundryName, familyName);-
1653-
1654 QMutexLocker locker(fontDatabaseMutex());-
1655-
1656 ::load(familyName);-
1657-
1658 QtFontFoundry allStyles(foundryName);-
1659 QtFontFamily *f = d->family(familyName);-
1660 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return false;
false;
never executed: return false;
0
1661-
1662 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1663 QtFontFoundry *foundry = f->foundries[j];-
1664 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1665 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1666 allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
never executed: allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
0
1667 }
never executed: end of block
0
1668 }
never executed: end of block
0
1669-
1670 QtFontStyle::Key styleKey(style);-
1671 QtFontStyle *s = allStyles.style(styleKey, style);-
1672 return
never executed: return s && s->key.style == QFont::StyleItalic;
s
sDescription
TRUEnever evaluated
FALSEnever evaluated
&& s->key.style == QFont::StyleItalic
s->key.style =...t::StyleItalicDescription
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return s && s->key.style == QFont::StyleItalic;
0
1673}-
1674bool QFontDatabase::bold(const QString &family,-
1675 const QString &style) const-
1676{-
1677 QString familyName, foundryName;-
1678 parseFontName(family, foundryName, familyName);-
1679-
1680 QMutexLocker locker(fontDatabaseMutex());-
1681-
1682 ::load(familyName);-
1683-
1684 QtFontFoundry allStyles(foundryName);-
1685 QtFontFamily *f = d->family(familyName);-
1686 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return false;
false;
never executed: return false;
0
1687-
1688 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1689 QtFontFoundry *foundry = f->foundries[j];-
1690 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1691 foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1692 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1693 allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
never executed: allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
0
1694 }
never executed: end of block
0
1695 }
never executed: end of block
0
1696-
1697 QtFontStyle::Key styleKey(style);-
1698 QtFontStyle *s = allStyles.style(styleKey, style);-
1699 return
never executed: return s && s->key.weight >= QFont::Bold;
s
sDescription
TRUEnever evaluated
FALSEnever evaluated
&& s->key.weight >= QFont::Bold
s->key.weight >= QFont::BoldDescription
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return s && s->key.weight >= QFont::Bold;
0
1700}-
1701int QFontDatabase::weight(const QString &family,-
1702 const QString &style) const-
1703{-
1704 QString familyName, foundryName;-
1705 parseFontName(family, foundryName, familyName);-
1706-
1707 QMutexLocker locker(fontDatabaseMutex());-
1708-
1709 ::load(familyName);-
1710-
1711 QtFontFoundry allStyles(foundryName);-
1712 QtFontFamily *f = d->family(familyName);-
1713 if (!f
!fDescription
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return -1;
-1;
never executed: return -1;
0
1714-
1715 for (int j = 0; j < f->count
j < f->countDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
1716 QtFontFoundry *foundry = f->foundries[j];-
1717 if (foundryName.isEmpty()
foundryName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
||
0
1718 foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0
foundry->name....ensitive) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1719 for (int k = 0; k < foundry->count
k < foundry->countDescription
TRUEnever evaluated
FALSEnever evaluated
; k++)
0
1720 allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
never executed: allStyles.style(foundry->styles[k]->key, foundry->styles[k]->styleName, true);
0
1721 }
never executed: end of block
0
1722 }
never executed: end of block
0
1723-
1724 QtFontStyle::Key styleKey(style);-
1725 QtFontStyle *s = allStyles.style(styleKey, style);-
1726 return
never executed: return s ? s->key.weight : -1;
s
sDescription
TRUEnever evaluated
FALSEnever evaluated
? s->key.weight : -1;
never executed: return s ? s->key.weight : -1;
0
1727}-
1728-
1729-
1730-
1731bool QFontDatabase::hasFamily(const QString &family) const-
1732{-
1733 QString parsedFamily, foundry;-
1734 parseFontName(family, foundry, parsedFamily);-
1735 const QString familyAlias = resolveFontFamilyAlias(parsedFamily);-
1736 return
never executed: return families().contains(familyAlias, Qt::CaseInsensitive);
families().contains(familyAlias, Qt::CaseInsensitive);
never executed: return families().contains(familyAlias, Qt::CaseInsensitive);
0
1737}-
1738bool QFontDatabase::isPrivateFamily(const QString &family) const-
1739{-
1740 return
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->isPrivateFontFamily(family);
QGuiApplicationPrivate::platformIntegration()->fontDatabase()->isPrivateFontFamily(family);
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->isPrivateFontFamily(family);
0
1741}-
1742-
1743-
1744-
1745-
1746-
1747-
1748QString QFontDatabase::writingSystemName(WritingSystem writingSystem)-
1749{-
1750 const char *name = 0;-
1751 switch (writingSystem) {-
1752 case
never executed: case Any:
Any:
never executed: case Any:
0
1753 name = "Any";-
1754 break;
never executed: break;
0
1755 case
never executed: case Latin:
Latin:
never executed: case Latin:
0
1756 name = "Latin";-
1757 break;
never executed: break;
0
1758 case
never executed: case Greek:
Greek:
never executed: case Greek:
0
1759 name = "Greek";-
1760 break;
never executed: break;
0
1761 case
never executed: case Cyrillic:
Cyrillic:
never executed: case Cyrillic:
0
1762 name = "Cyrillic";-
1763 break;
never executed: break;
0
1764 case
never executed: case Armenian:
Armenian:
never executed: case Armenian:
0
1765 name = "Armenian";-
1766 break;
never executed: break;
0
1767 case
never executed: case Hebrew:
Hebrew:
never executed: case Hebrew:
0
1768 name = "Hebrew";-
1769 break;
never executed: break;
0
1770 case
never executed: case Arabic:
Arabic:
never executed: case Arabic:
0
1771 name = "Arabic";-
1772 break;
never executed: break;
0
1773 case
never executed: case Syriac:
Syriac:
never executed: case Syriac:
0
1774 name = "Syriac";-
1775 break;
never executed: break;
0
1776 case
never executed: case Thaana:
Thaana:
never executed: case Thaana:
0
1777 name = "Thaana";-
1778 break;
never executed: break;
0
1779 case
never executed: case Devanagari:
Devanagari:
never executed: case Devanagari:
0
1780 name = "Devanagari";-
1781 break;
never executed: break;
0
1782 case
never executed: case Bengali:
Bengali:
never executed: case Bengali:
0
1783 name = "Bengali";-
1784 break;
never executed: break;
0
1785 case
never executed: case Gurmukhi:
Gurmukhi:
never executed: case Gurmukhi:
0
1786 name = "Gurmukhi";-
1787 break;
never executed: break;
0
1788 case
never executed: case Gujarati:
Gujarati:
never executed: case Gujarati:
0
1789 name = "Gujarati";-
1790 break;
never executed: break;
0
1791 case
never executed: case Oriya:
Oriya:
never executed: case Oriya:
0
1792 name = "Oriya";-
1793 break;
never executed: break;
0
1794 case
never executed: case Tamil:
Tamil:
never executed: case Tamil:
0
1795 name = "Tamil";-
1796 break;
never executed: break;
0
1797 case
never executed: case Telugu:
Telugu:
never executed: case Telugu:
0
1798 name = "Telugu";-
1799 break;
never executed: break;
0
1800 case
never executed: case Kannada:
Kannada:
never executed: case Kannada:
0
1801 name = "Kannada";-
1802 break;
never executed: break;
0
1803 case
never executed: case Malayalam:
Malayalam:
never executed: case Malayalam:
0
1804 name = "Malayalam";-
1805 break;
never executed: break;
0
1806 case
never executed: case Sinhala:
Sinhala:
never executed: case Sinhala:
0
1807 name = "Sinhala";-
1808 break;
never executed: break;
0
1809 case
never executed: case Thai:
Thai:
never executed: case Thai:
0
1810 name = "Thai";-
1811 break;
never executed: break;
0
1812 case
never executed: case Lao:
Lao:
never executed: case Lao:
0
1813 name = "Lao";-
1814 break;
never executed: break;
0
1815 case
never executed: case Tibetan:
Tibetan:
never executed: case Tibetan:
0
1816 name = "Tibetan";-
1817 break;
never executed: break;
0
1818 case
never executed: case Myanmar:
Myanmar:
never executed: case Myanmar:
0
1819 name = "Myanmar";-
1820 break;
never executed: break;
0
1821 case
never executed: case Georgian:
Georgian:
never executed: case Georgian:
0
1822 name = "Georgian";-
1823 break;
never executed: break;
0
1824 case
never executed: case Khmer:
Khmer:
never executed: case Khmer:
0
1825 name = "Khmer";-
1826 break;
never executed: break;
0
1827 case
never executed: case SimplifiedChinese:
SimplifiedChinese:
never executed: case SimplifiedChinese:
0
1828 name = "Simplified Chinese";-
1829 break;
never executed: break;
0
1830 case
never executed: case TraditionalChinese:
TraditionalChinese:
never executed: case TraditionalChinese:
0
1831 name = "Traditional Chinese";-
1832 break;
never executed: break;
0
1833 case
never executed: case Japanese:
Japanese:
never executed: case Japanese:
0
1834 name = "Japanese";-
1835 break;
never executed: break;
0
1836 case
never executed: case Korean:
Korean:
never executed: case Korean:
0
1837 name = "Korean";-
1838 break;
never executed: break;
0
1839 case
never executed: case Vietnamese:
Vietnamese:
never executed: case Vietnamese:
0
1840 name = "Vietnamese";-
1841 break;
never executed: break;
0
1842 case
never executed: case Symbol:
Symbol:
never executed: case Symbol:
0
1843 name = "Symbol";-
1844 break;
never executed: break;
0
1845 case
never executed: case Ogham:
Ogham:
never executed: case Ogham:
0
1846 name = "Ogham";-
1847 break;
never executed: break;
0
1848 case
never executed: case Runic:
Runic:
never executed: case Runic:
0
1849 name = "Runic";-
1850 break;
never executed: break;
0
1851 case
never executed: case Nko:
Nko:
never executed: case Nko:
0
1852 name = "N'Ko";-
1853 break;
never executed: break;
0
1854 default
never executed: default:
:
never executed: default:
0
1855 ((!(false)) ? qt_assert_x("QFontDatabase::writingSystemName", "invalid 'writingSystem' parameter",__FILE__,2170) : qt_noop());-
1856 break;
never executed: break;
0
1857 }-
1858 return
never executed: return QCoreApplication::translate("QFontDatabase", name);
QCoreApplication::translate("QFontDatabase", name);
never executed: return QCoreApplication::translate("QFontDatabase", name);
0
1859}-
1860-
1861-
1862-
1863-
1864-
1865QString QFontDatabase::writingSystemSample(WritingSystem writingSystem)-
1866{-
1867 QString sample;-
1868 switch (writingSystem) {-
1869 case
never executed: case Any:
Any:
never executed: case Any:
0
1870 case
never executed: case Symbol:
Symbol:
never executed: case Symbol:
0
1871-
1872 sample += QLatin1String("AaBbzZ");-
1873 break;
never executed: break;
0
1874 case
never executed: case Latin:
Latin:
never executed: case Latin:
0
1875-
1876-
1877 sample = QLatin1String("Aa");-
1878 sample += QChar(0x00C3);-
1879 sample += QChar(0x00E1);-
1880 sample += QLatin1String("Zz");-
1881 break;
never executed: break;
0
1882 case
never executed: case Greek:
Greek:
never executed: case Greek:
0
1883 sample += QChar(0x0393);-
1884 sample += QChar(0x03B1);-
1885 sample += QChar(0x03A9);-
1886 sample += QChar(0x03C9);-
1887 break;
never executed: break;
0
1888 case
never executed: case Cyrillic:
Cyrillic:
never executed: case Cyrillic:
0
1889 sample += QChar(0x0414);-
1890 sample += QChar(0x0434);-
1891 sample += QChar(0x0436);-
1892 sample += QChar(0x044f);-
1893 break;
never executed: break;
0
1894 case
never executed: case Armenian:
Armenian:
never executed: case Armenian:
0
1895 sample += QChar(0x053f);-
1896 sample += QChar(0x054f);-
1897 sample += QChar(0x056f);-
1898 sample += QChar(0x057f);-
1899 break;
never executed: break;
0
1900 case
never executed: case Hebrew:
Hebrew:
never executed: case Hebrew:
0
1901 sample += QChar(0x05D0);-
1902 sample += QChar(0x05D1);-
1903 sample += QChar(0x05D2);-
1904 sample += QChar(0x05D3);-
1905 break;
never executed: break;
0
1906 case
never executed: case Arabic:
Arabic:
never executed: case Arabic:
0
1907 sample += QChar(0x0628);-
1908 sample += QChar(0x0629);-
1909 sample += QChar(0x062A);-
1910 sample += QChar(0x063A);-
1911 break;
never executed: break;
0
1912 case
never executed: case Syriac:
Syriac:
never executed: case Syriac:
0
1913 sample += QChar(0x0715);-
1914 sample += QChar(0x0725);-
1915 sample += QChar(0x0716);-
1916 sample += QChar(0x0726);-
1917 break;
never executed: break;
0
1918 case
never executed: case Thaana:
Thaana:
never executed: case Thaana:
0
1919 sample += QChar(0x0784);-
1920 sample += QChar(0x0794);-
1921 sample += QChar(0x078c);-
1922 sample += QChar(0x078d);-
1923 break;
never executed: break;
0
1924 case
never executed: case Devanagari:
Devanagari:
never executed: case Devanagari:
0
1925 sample += QChar(0x0905);-
1926 sample += QChar(0x0915);-
1927 sample += QChar(0x0925);-
1928 sample += QChar(0x0935);-
1929 break;
never executed: break;
0
1930 case
never executed: case Bengali:
Bengali:
never executed: case Bengali:
0
1931 sample += QChar(0x0986);-
1932 sample += QChar(0x0996);-
1933 sample += QChar(0x09a6);-
1934 sample += QChar(0x09b6);-
1935 break;
never executed: break;
0
1936 case
never executed: case Gurmukhi:
Gurmukhi:
never executed: case Gurmukhi:
0
1937 sample += QChar(0x0a05);-
1938 sample += QChar(0x0a15);-
1939 sample += QChar(0x0a25);-
1940 sample += QChar(0x0a35);-
1941 break;
never executed: break;
0
1942 case
never executed: case Gujarati:
Gujarati:
never executed: case Gujarati:
0
1943 sample += QChar(0x0a85);-
1944 sample += QChar(0x0a95);-
1945 sample += QChar(0x0aa5);-
1946 sample += QChar(0x0ab5);-
1947 break;
never executed: break;
0
1948 case
never executed: case Oriya:
Oriya:
never executed: case Oriya:
0
1949 sample += QChar(0x0b06);-
1950 sample += QChar(0x0b16);-
1951 sample += QChar(0x0b2b);-
1952 sample += QChar(0x0b36);-
1953 break;
never executed: break;
0
1954 case
never executed: case Tamil:
Tamil:
never executed: case Tamil:
0
1955 sample += QChar(0x0b89);-
1956 sample += QChar(0x0b99);-
1957 sample += QChar(0x0ba9);-
1958 sample += QChar(0x0bb9);-
1959 break;
never executed: break;
0
1960 case
never executed: case Telugu:
Telugu:
never executed: case Telugu:
0
1961 sample += QChar(0x0c05);-
1962 sample += QChar(0x0c15);-
1963 sample += QChar(0x0c25);-
1964 sample += QChar(0x0c35);-
1965 break;
never executed: break;
0
1966 case
never executed: case Kannada:
Kannada:
never executed: case Kannada:
0
1967 sample += QChar(0x0c85);-
1968 sample += QChar(0x0c95);-
1969 sample += QChar(0x0ca5);-
1970 sample += QChar(0x0cb5);-
1971 break;
never executed: break;
0
1972 case
never executed: case Malayalam:
Malayalam:
never executed: case Malayalam:
0
1973 sample += QChar(0x0d05);-
1974 sample += QChar(0x0d15);-
1975 sample += QChar(0x0d25);-
1976 sample += QChar(0x0d35);-
1977 break;
never executed: break;
0
1978 case
never executed: case Sinhala:
Sinhala:
never executed: case Sinhala:
0
1979 sample += QChar(0x0d90);-
1980 sample += QChar(0x0da0);-
1981 sample += QChar(0x0db0);-
1982 sample += QChar(0x0dc0);-
1983 break;
never executed: break;
0
1984 case
never executed: case Thai:
Thai:
never executed: case Thai:
0
1985 sample += QChar(0x0e02);-
1986 sample += QChar(0x0e12);-
1987 sample += QChar(0x0e22);-
1988 sample += QChar(0x0e32);-
1989 break;
never executed: break;
0
1990 case
never executed: case Lao:
Lao:
never executed: case Lao:
0
1991 sample += QChar(0x0e8d);-
1992 sample += QChar(0x0e9d);-
1993 sample += QChar(0x0ead);-
1994 sample += QChar(0x0ebd);-
1995 break;
never executed: break;
0
1996 case
never executed: case Tibetan:
Tibetan:
never executed: case Tibetan:
0
1997 sample += QChar(0x0f00);-
1998 sample += QChar(0x0f01);-
1999 sample += QChar(0x0f02);-
2000 sample += QChar(0x0f03);-
2001 break;
never executed: break;
0
2002 case
never executed: case Myanmar:
Myanmar:
never executed: case Myanmar:
0
2003 sample += QChar(0x1000);-
2004 sample += QChar(0x1001);-
2005 sample += QChar(0x1002);-
2006 sample += QChar(0x1003);-
2007 break;
never executed: break;
0
2008 case
never executed: case Georgian:
Georgian:
never executed: case Georgian:
0
2009 sample += QChar(0x10a0);-
2010 sample += QChar(0x10b0);-
2011 sample += QChar(0x10c0);-
2012 sample += QChar(0x10d0);-
2013 break;
never executed: break;
0
2014 case
never executed: case Khmer:
Khmer:
never executed: case Khmer:
0
2015 sample += QChar(0x1780);-
2016 sample += QChar(0x1790);-
2017 sample += QChar(0x17b0);-
2018 sample += QChar(0x17c0);-
2019 break;
never executed: break;
0
2020 case
never executed: case SimplifiedChinese:
SimplifiedChinese:
never executed: case SimplifiedChinese:
0
2021 sample += QChar(0x4e2d);-
2022 sample += QChar(0x6587);-
2023 sample += QChar(0x8303);-
2024 sample += QChar(0x4f8b);-
2025 break;
never executed: break;
0
2026 case
never executed: case TraditionalChinese:
TraditionalChinese:
never executed: case TraditionalChinese:
0
2027 sample += QChar(0x4e2d);-
2028 sample += QChar(0x6587);-
2029 sample += QChar(0x7bc4);-
2030 sample += QChar(0x4f8b);-
2031 break;
never executed: break;
0
2032 case
never executed: case Japanese:
Japanese:
never executed: case Japanese:
0
2033 sample += QChar(0x30b5);-
2034 sample += QChar(0x30f3);-
2035 sample += QChar(0x30d7);-
2036 sample += QChar(0x30eb);-
2037 sample += QChar(0x3067);-
2038 sample += QChar(0x3059);-
2039 break;
never executed: break;
0
2040 case
never executed: case Korean:
Korean:
never executed: case Korean:
0
2041 sample += QChar(0xac00);-
2042 sample += QChar(0xac11);-
2043 sample += QChar(0xac1a);-
2044 sample += QChar(0xac2f);-
2045 break;
never executed: break;
0
2046 case
never executed: case Vietnamese:
Vietnamese:
never executed: case Vietnamese:
0
2047 {-
2048 static const char vietnameseUtf8[] = {-
2049 char(0xef), char(0xbb), char(0xbf), char(0xe1), char(0xbb), char(0x97),-
2050 char(0xe1), char(0xbb), char(0x99),-
2051 char(0xe1), char(0xbb), char(0x91),-
2052 char(0xe1), char(0xbb), char(0x93),-
2053 };-
2054 sample += QString::fromUtf8(vietnameseUtf8, sizeof(vietnameseUtf8));-
2055 break;
never executed: break;
0
2056 }-
2057 case
never executed: case Ogham:
Ogham:
never executed: case Ogham:
0
2058 sample += QChar(0x1681);-
2059 sample += QChar(0x1682);-
2060 sample += QChar(0x1683);-
2061 sample += QChar(0x1684);-
2062 break;
never executed: break;
0
2063 case
never executed: case Runic:
Runic:
never executed: case Runic:
0
2064 sample += QChar(0x16a0);-
2065 sample += QChar(0x16a1);-
2066 sample += QChar(0x16a2);-
2067 sample += QChar(0x16a3);-
2068 break;
never executed: break;
0
2069 case
never executed: case Nko:
Nko:
never executed: case Nko:
0
2070 sample += QChar(0x7ca);-
2071 sample += QChar(0x7cb);-
2072 sample += QChar(0x7cc);-
2073 sample += QChar(0x7cd);-
2074 break;
never executed: break;
0
2075 default
never executed: default:
:
never executed: default:
0
2076 break;
never executed: break;
0
2077 }-
2078 return
never executed: return sample;
sample;
never executed: return sample;
0
2079}-
2080-
2081-
2082void QFontDatabase::parseFontName(const QString &name, QString &foundry, QString &family)-
2083{-
2084 ::parseFontName(name, foundry, family);-
2085}
never executed: end of block
0
2086-
2087void QFontDatabase::createDatabase()-
2088{ initializeDb(); }
never executed: end of block
0
2089-
2090-
2091__attribute__((visibility("default"))) QByteArray qt_fontdata_from_index(int index)-
2092{-
2093 QMutexLocker locker(fontDatabaseMutex());-
2094 return
never executed: return privateDb()->applicationFonts.value(index).data;
privateDb()->applicationFonts.value(index).data;
never executed: return privateDb()->applicationFonts.value(index).data;
0
2095}-
2096-
2097int QFontDatabasePrivate::addAppFont(const QByteArray &fontData, const QString &fileName)-
2098{-
2099 QFontDatabasePrivate::ApplicationFont font;-
2100 font.data = fontData;-
2101 font.fileName = fileName;-
2102-
2103 int i;-
2104 for (i = 0; i < applicationFonts.count()
i < applicationFonts.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
2105 if (applicationFonts.at(i).families.isEmpty()
applicationFon...lies.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2106 break;
never executed: break;
0
2107 if (i >= applicationFonts.count()
i >= applicationFonts.count()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2108 applicationFonts.append(ApplicationFont());-
2109 i = applicationFonts.count() - 1;-
2110 }
never executed: end of block
0
2111-
2112 if (font.fileName.isEmpty()
font.fileName.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& !fontData.isEmpty()
!fontData.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2113 font.fileName = QString::fromLatin1(":qmemoryfonts/") + QString::number(i);
never executed: font.fileName = QString::fromLatin1(":qmemoryfonts/") + QString::number(i);
0
2114-
2115 registerFont(&font);-
2116 if (font.families.isEmpty()
font.families.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2117 return
never executed: return -1;
-1;
never executed: return -1;
0
2118-
2119 applicationFonts[i] = font;-
2120-
2121 invalidate();-
2122 return
never executed: return i;
i;
never executed: return i;
0
2123}-
2124-
2125bool QFontDatabasePrivate::isApplicationFont(const QString &fileName)-
2126{-
2127 for (int i = 0; i < applicationFonts.count()
i < applicationFonts.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
2128 if (applicationFonts.at(i).fileName == fileName
applicationFon...me == fileNameDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2129 return
never executed: return true;
true;
never executed: return true;
0
2130 return
never executed: return false;
false;
never executed: return false;
0
2131}-
2132int QFontDatabase::addApplicationFont(const QString &fileName)-
2133{-
2134 QByteArray data;-
2135 if (!QFileInfo(fileName).isNativePath()
!QFileInfo(fil...isNativePath()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2136 QFile f(fileName);-
2137 if (!f.open(QIODevice::ReadOnly)
!f.open(QIODevice::ReadOnly)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2138 return
never executed: return -1;
-1;
never executed: return -1;
0
2139 data = f.readAll();-
2140 }
never executed: end of block
0
2141 QMutexLocker locker(fontDatabaseMutex());-
2142 return
never executed: return privateDb()->addAppFont(data, fileName);
privateDb()->addAppFont(data, fileName);
never executed: return privateDb()->addAppFont(data, fileName);
0
2143}-
2144int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)-
2145{-
2146 QMutexLocker locker(fontDatabaseMutex());-
2147 return
never executed: return privateDb()->addAppFont(fontData, QString() );
privateDb()->addAppFont(fontData, QString() );
never executed: return privateDb()->addAppFont(fontData, QString() );
0
2148}-
2149QStringList QFontDatabase::applicationFontFamilies(int id)-
2150{-
2151 QMutexLocker locker(fontDatabaseMutex());-
2152 return
never executed: return privateDb()->applicationFonts.value(id).families;
privateDb()->applicationFonts.value(id).families;
never executed: return privateDb()->applicationFonts.value(id).families;
0
2153}-
2154QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)-
2155{-
2156 const QFont *font = 0;-
2157 if (const
const QPlatfor...latformTheme()Description
TRUEnever evaluated
FALSEnever evaluated
QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()
const QPlatfor...latformTheme()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2158 switch (type) {-
2159 case
never executed: case GeneralFont:
GeneralFont:
never executed: case GeneralFont:
0
2160 font = theme->font(QPlatformTheme::SystemFont);-
2161 break;
never executed: break;
0
2162 case
never executed: case FixedFont:
FixedFont:
never executed: case FixedFont:
0
2163 font = theme->font(QPlatformTheme::FixedFont);-
2164 break;
never executed: break;
0
2165 case
never executed: case TitleFont:
TitleFont:
never executed: case TitleFont:
0
2166 font = theme->font(QPlatformTheme::TitleBarFont);-
2167 break;
never executed: break;
0
2168 case
never executed: case SmallestReadableFont:
SmallestReadableFont:
never executed: case SmallestReadableFont:
0
2169 font = theme->font(QPlatformTheme::MiniFont);-
2170 break;
never executed: break;
0
2171 }-
2172 }
never executed: end of block
0
2173-
2174 if (font
fontDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2175 return
never executed: return *font;
*font;
never executed: return *font;
0
2176 else if (QPlatformIntegration *integration = QGuiApplicationPrivate::platformIntegration()
QPlatformInteg...mIntegration()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2177 return
never executed: return integration->fontDatabase()->defaultFont();
integration->fontDatabase()->defaultFont();
never executed: return integration->fontDatabase()->defaultFont();
0
2178 else-
2179 return
never executed: return QFont();
QFont();
never executed: return QFont();
0
2180}-
2181bool QFontDatabase::removeApplicationFont(int handle)-
2182{-
2183 QMutexLocker locker(fontDatabaseMutex());-
2184-
2185 QFontDatabasePrivate *db = privateDb();-
2186 if (handle < 0
handle < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| handle >= db->applicationFonts.count()
handle >= db->...nFonts.count()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2187 return
never executed: return false;
false;
never executed: return false;
0
2188-
2189 db->applicationFonts[handle] = QFontDatabasePrivate::ApplicationFont();-
2190-
2191 db->reregisterAppFonts = true;-
2192 db->invalidate();-
2193 return
never executed: return true;
true;
never executed: return true;
0
2194}-
2195bool QFontDatabase::removeAllApplicationFonts()-
2196{-
2197 QMutexLocker locker(fontDatabaseMutex());-
2198-
2199 QFontDatabasePrivate *db = privateDb();-
2200 if (db->applicationFonts.isEmpty()
db->applicationFonts.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2201 return
never executed: return false;
false;
never executed: return false;
0
2202-
2203 db->applicationFonts.clear();-
2204 db->invalidate();-
2205 return
never executed: return true;
true;
never executed: return true;
0
2206}-
2207bool QFontDatabase::supportsThreadedFontRendering()-
2208{-
2209 return
never executed: return true;
true;
never executed: return true;
0
2210}-
2211-
2212-
2213-
2214-
2215-
2216QFontEngine *QFontDatabase::findFont(const QFontDef &request, int script)-
2217{-
2218 QMutexLocker locker(fontDatabaseMutex());-
2219-
2220 if (!privateDb()->count
!privateDb()->countDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2221 initializeDb();
never executed: initializeDb();
0
2222-
2223 QFontEngine *engine;-
2224-
2225-
2226-
2227 if (qt_enable_test_font
qt_enable_test_fontDescription
TRUEnever evaluated
FALSEnever evaluated
&& request.family == QLatin1String("__Qt__Box__Engine__")
request.family...ox__Engine__")Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2228 engine = new QTestFontEngine(request.pixelSize);-
2229 engine->fontDef = request;-
2230 return
never executed: return engine;
engine;
never executed: return engine;
0
2231 }-
2232-
2233-
2234 QFontCache *fontCache = QFontCache::instance();-
2235-
2236-
2237-
2238-
2239 bool multi = !(request.styleStrategy & QFont::NoFontMerging);-
2240 QFontCache::Key key(request, script, multi ? 1 : 0);-
2241 engine = fontCache->findEngine(key);-
2242 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2243 if (false) QMessageLogger(__FILE__, 2655, __PRETTY_FUNCTION__).debug("Cache hit level 1");
dead code: QMessageLogger(__FILE__, 2655, __PRETTY_FUNCTION__).debug("Cache hit level 1");
-
2244 return
never executed: return engine;
engine;
never executed: return engine;
0
2245 }-
2246-
2247 QString family_name, foundry_name;-
2248-
2249 parseFontName(request.family, foundry_name, family_name);-
2250-
2251 QtFontDesc desc;-
2252 QList<int> blackListed;-
2253 int index = match(script, request, family_name, foundry_name, &desc, blackListed);-
2254 if (index >= 0
index >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2255 engine = loadEngine(script, request, desc.family, desc.foundry, desc.style, desc.size);-
2256 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2257 initFontDef(desc, request, &engine->fontDef, multi);
never executed: initFontDef(desc, request, &engine->fontDef, multi);
0
2258 else-
2259 blackListed.append(index);
never executed: blackListed.append(index);
0
2260 } else {-
2261 if (false) QMessageLogger(__FILE__, 2673, __PRETTY_FUNCTION__).debug(" NO MATCH FOUND\n");
dead code: QMessageLogger(__FILE__, 2673, __PRETTY_FUNCTION__).debug(" NO MATCH FOUND\n");
-
2262 }
never executed: end of block
0
2263-
2264 if (!engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2265 if (!request.family.isEmpty()
!request.family.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2266 QFont::StyleHint styleHint = QFont::StyleHint(request.styleHint);-
2267 if (styleHint == QFont::AnyStyle
styleHint == QFont::AnyStyleDescription
TRUEnever evaluated
FALSEnever evaluated
&& request.fixedPitch
request.fixedPitchDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2268 styleHint = QFont::TypeWriter;
never executed: styleHint = QFont::TypeWriter;
0
2269-
2270 QStringList fallbacks = request.fallBackFamilies-
2271 + fallbacksForFamily(request.family,-
2272 QFont::Style(request.style),-
2273 styleHint,-
2274 QChar::Script(script));-
2275 if (script > QChar::Script_Common
script > QChar::Script_CommonDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2276 fallbacks += QString();
never executed: fallbacks += QString();
0
2277-
2278 for (int i = 0; !engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
&& i < fallbacks.size()
i < fallbacks.size()Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
2279 QFontDef def = request;-
2280 def.family = fallbacks.at(i);-
2281 QFontCache::Key key(def, script, multi ? 1 : 0);-
2282 engine = fontCache->findEngine(key);-
2283 if (!engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2284 QtFontDesc desc;-
2285 do {-
2286 index = match(script, def, def.family, QLatin1String(""), &desc, blackListed);-
2287 if (index >= 0
index >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2288 QFontDef loadDef = def;-
2289 if (loadDef.family.isEmpty()
loadDef.family.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2290 loadDef.family = desc.family->name;
never executed: loadDef.family = desc.family->name;
0
2291 engine = loadEngine(script, loadDef, desc.family, desc.foundry, desc.style, desc.size);-
2292 if (engine
engineDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2293 initFontDef(desc, loadDef, &engine->fontDef, multi);
never executed: initFontDef(desc, loadDef, &engine->fontDef, multi);
0
2294 else-
2295 blackListed.append(index);
never executed: blackListed.append(index);
0
2296 }-
2297 }
never executed: end of block
while (index >= 0
index >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& !engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
);
0
2298 }
never executed: end of block
0
2299 }
never executed: end of block
0
2300 }
never executed: end of block
0
2301-
2302 if (!engine
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
2303 engine = new QFontEngineBox(request.pixelSize);
never executed: engine = new QFontEngineBox(request.pixelSize);
0
2304-
2305 if (false) QMessageLogger(__FILE__, 2717, __PRETTY_FUNCTION__).debug("returning box engine");
dead code: QMessageLogger(__FILE__, 2717, __PRETTY_FUNCTION__).debug("returning box engine");
-
2306 }
never executed: end of block
0
2307-
2308 return
never executed: return engine;
engine;
never executed: return engine;
0
2309}-
2310-
2311void QFontDatabase::load(const QFontPrivate *d, int script)-
2312{-
2313 QFontDef req = d->request;-
2314-
2315 if (req.pixelSize == -1
req.pixelSize == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2316 req.pixelSize = std::floor(((req.pointSize * d->dpi) / 72) * 100 + 0.5) / 100;-
2317 req.pixelSize = qRound(req.pixelSize);-
2318 }
never executed: end of block
0
2319 if (req.pointSize < 0
req.pointSize < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2320 req.pointSize = req.pixelSize*72.0/d->dpi;
never executed: req.pointSize = req.pixelSize*72.0/d->dpi;
0
2321 if (req.stretch == 0
req.stretch == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2322 req.stretch = 100;
never executed: req.stretch = 100;
0
2323-
2324-
2325 const QStringList fallBackFamilies = familyList(req);-
2326-
2327 if (!d->engineData
!d->engineDataDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2328 QFontCache *fontCache = QFontCache::instance();-
2329-
2330-
2331-
2332 req.family = fallBackFamilies.join(QLatin1Char(','));-
2333-
2334 d->engineData = fontCache->findEngineData(req);-
2335 if (!d->engineData
!d->engineDataDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2336-
2337 d->engineData = new QFontEngineData;-
2338 fontCache->insertEngineData(req, d->engineData);-
2339 }
never executed: end of block
0
2340 d->engineData->ref.ref();-
2341 }
never executed: end of block
0
2342-
2343-
2344 if (d->engineData->engines[script]
d->engineData->engines[script]Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2345 return;
never executed: return;
0
2346-
2347 QFontEngine *fe = nullptr;-
2348-
2349 req.fallBackFamilies = fallBackFamilies;-
2350 if (!req.fallBackFamilies.isEmpty()
!req.fallBackF...lies.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2351 req.family = req.fallBackFamilies.takeFirst();
never executed: req.family = req.fallBackFamilies.takeFirst();
0
2352-
2353-
2354 QStringList family_list;-
2355-
2356 if (!req.family.isEmpty()
!req.family.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2357-
2358 family_list << req.family;-
2359-
2360-
2361 QString defaultFamily = QGuiApplication::font().family();-
2362 if (! family_list.contains(defaultFamily)
! family_list....defaultFamily)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2363 family_list << defaultFamily;
never executed: family_list << defaultFamily;
0
2364-
2365 }
never executed: end of block
0
2366-
2367-
2368 family_list << QString();-
2369-
2370 QStringList::ConstIterator it = family_list.constBegin(), end = family_list.constEnd();-
2371 for (; !fe
!feDescription
TRUEnever evaluated
FALSEnever evaluated
&& it != end
it != endDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
2372 req.family = *it;-
2373-
2374 fe = QFontDatabase::findFont(req, script);-
2375 if (fe
feDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
2376 if (fe->type() == QFontEngine::Box
fe->type() == QFontEngine::BoxDescription
TRUEnever evaluated
FALSEnever evaluated
&& !req.family.isEmpty()
!req.family.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2377 if (fe->ref.load() == 0
fe->ref.load() == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2378 delete fe;
never executed: delete fe;
0
2379 fe = 0;-
2380 }
never executed: end of block
else {
0
2381 if (d->dpi > 0
d->dpi > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
2382 fe->fontDef.pointSize = qreal(double((fe->fontDef.pixelSize * 72) / d->dpi));
never executed: fe->fontDef.pointSize = qreal(double((fe->fontDef.pixelSize * 72) / d->dpi));
0
2383 }
never executed: end of block
0
2384 }-
2385-
2386-
2387 req.fallBackFamilies.clear();-
2388 }
never executed: end of block
0
2389-
2390 ((!(fe)) ? qt_assert("fe",__FILE__,2802) : qt_noop());-
2391 if (fe->symbol
fe->symbolDescription
TRUEnever evaluated
FALSEnever evaluated
|| (
(d->request.st...NoFontMerging)Description
TRUEnever evaluated
FALSEnever evaluated
d->request.styleStrategy & QFont::NoFontMerging)
(d->request.st...NoFontMerging)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2392 for (int i = 0; i < QChar::ScriptCount
i < QChar::ScriptCountDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
2393 if (!d->engineData->engines[i]
!d->engineData->engines[i]Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
2394 d->engineData->engines[i] = fe;-
2395 fe->ref.ref();-
2396 }
never executed: end of block
0
2397 }
never executed: end of block
0
2398 }
never executed: end of block
else {
0
2399 d->engineData->engines[script] = fe;-
2400 fe->ref.ref();-
2401 }
never executed: end of block
0
2402}-
2403-
2404QString QFontDatabase::resolveFontFamilyAlias(const QString &family)-
2405{-
2406 return
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family);
QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family);
never executed: return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family);
0
2407}-
2408-
2409-
2410-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9