|
Lines 208-213
Link Here
|
| 208 |
#ifndef Q_WS_MAC |
208 |
#ifndef Q_WS_MAC |
| 209 |
memset( widthCache, 0, widthCacheSize*sizeof( uchar ) ); |
209 |
memset( widthCache, 0, widthCacheSize*sizeof( uchar ) ); |
| 210 |
#endif |
210 |
#endif |
|
|
211 |
#ifdef Q_WS_X11 |
| 212 |
memset( scripts_uniEngine, 0, QFont::LastPrivateScript * sizeof( uchar ) ); |
| 213 |
uniEngine = 0; |
| 214 |
#endif |
| 211 |
} |
215 |
} |
| 212 |
|
216 |
|
| 213 |
QFontEngineData::~QFontEngineData() |
217 |
QFontEngineData::~QFontEngineData() |
|
Lines 223-228
Link Here
|
| 223 |
engine->deref(); |
227 |
engine->deref(); |
| 224 |
engine = 0; |
228 |
engine = 0; |
| 225 |
#endif // Q_WS_X11 || Q_WS_WIN |
229 |
#endif // Q_WS_X11 || Q_WS_WIN |
|
|
230 |
#ifdef Q_WS_X11 |
| 231 |
memset( scripts_uniEngine, 0, QFont::LastPrivateScript * sizeof( uchar ) ); |
| 232 |
uniEngine = 0; |
| 233 |
#endif |
| 226 |
} |
234 |
} |
| 227 |
|
235 |
|
| 228 |
|
236 |
|
|
Lines 1244-1250
Link Here
|
| 1244 |
*/ |
1252 |
*/ |
| 1245 |
bool QFont::exactMatch() const |
1253 |
bool QFont::exactMatch() const |
| 1246 |
{ |
1254 |
{ |
| 1247 |
QFontEngine *engine = d->engineForScript( QFont::NoScript ); |
1255 |
QFontEngine *engine = d->m_engineForScript( QFont::NoScript ); |
| 1248 |
#ifdef QT_CHECK_STATE |
1256 |
#ifdef QT_CHECK_STATE |
| 1249 |
Q_ASSERT( engine != 0 ); |
1257 |
Q_ASSERT( engine != 0 ); |
| 1250 |
#endif // QT_CHECK_STATE |
1258 |
#endif // QT_CHECK_STATE |
|
Lines 1976-1983
Link Here
|
| 1976 |
*/ |
1984 |
*/ |
| 1977 |
int QFontMetrics::ascent() const |
1985 |
int QFontMetrics::ascent() const |
| 1978 |
{ |
1986 |
{ |
| 1979 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
1987 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 1980 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
1988 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 1981 |
#ifdef QT_CHECK_STATE |
1989 |
#ifdef QT_CHECK_STATE |
| 1982 |
Q_ASSERT( engine != 0 ); |
1990 |
Q_ASSERT( engine != 0 ); |
| 1983 |
Q_ASSERT( latin_engine != 0 ); |
1991 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2000-2007
Link Here
|
| 2000 |
*/ |
2008 |
*/ |
| 2001 |
int QFontMetrics::descent() const |
2009 |
int QFontMetrics::descent() const |
| 2002 |
{ |
2010 |
{ |
| 2003 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2011 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2004 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2012 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2005 |
#ifdef QT_CHECK_STATE |
2013 |
#ifdef QT_CHECK_STATE |
| 2006 |
Q_ASSERT( engine != 0 ); |
2014 |
Q_ASSERT( engine != 0 ); |
| 2007 |
Q_ASSERT( latin_engine != 0 ); |
2015 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2020-2027
Link Here
|
| 2020 |
*/ |
2028 |
*/ |
| 2021 |
int QFontMetrics::height() const |
2029 |
int QFontMetrics::height() const |
| 2022 |
{ |
2030 |
{ |
| 2023 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2031 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2024 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2032 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2025 |
#ifdef QT_CHECK_STATE |
2033 |
#ifdef QT_CHECK_STATE |
| 2026 |
Q_ASSERT( engine != 0 ); |
2034 |
Q_ASSERT( engine != 0 ); |
| 2027 |
Q_ASSERT( latin_engine != 0 ); |
2035 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2040-2047
Link Here
|
| 2040 |
*/ |
2048 |
*/ |
| 2041 |
int QFontMetrics::leading() const |
2049 |
int QFontMetrics::leading() const |
| 2042 |
{ |
2050 |
{ |
| 2043 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2051 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2044 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2052 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2045 |
#ifdef QT_CHECK_STATE |
2053 |
#ifdef QT_CHECK_STATE |
| 2046 |
Q_ASSERT( engine != 0 ); |
2054 |
Q_ASSERT( engine != 0 ); |
| 2047 |
Q_ASSERT( latin_engine != 0 ); |
2055 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2059-2066
Link Here
|
| 2059 |
*/ |
2067 |
*/ |
| 2060 |
int QFontMetrics::lineSpacing() const |
2068 |
int QFontMetrics::lineSpacing() const |
| 2061 |
{ |
2069 |
{ |
| 2062 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2070 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2063 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2071 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2064 |
#ifdef QT_CHECK_STATE |
2072 |
#ifdef QT_CHECK_STATE |
| 2065 |
Q_ASSERT( engine != 0 ); |
2073 |
Q_ASSERT( engine != 0 ); |
| 2066 |
Q_ASSERT( latin_engine != 0 ); |
2074 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2083-2090
Link Here
|
| 2083 |
*/ |
2091 |
*/ |
| 2084 |
int QFontMetrics::minLeftBearing() const |
2092 |
int QFontMetrics::minLeftBearing() const |
| 2085 |
{ |
2093 |
{ |
| 2086 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2094 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2087 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2095 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2088 |
#ifdef QT_CHECK_STATE |
2096 |
#ifdef QT_CHECK_STATE |
| 2089 |
Q_ASSERT( engine != 0 ); |
2097 |
Q_ASSERT( engine != 0 ); |
| 2090 |
Q_ASSERT( latin_engine != 0 ); |
2098 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2105-2112
Link Here
|
| 2105 |
*/ |
2113 |
*/ |
| 2106 |
int QFontMetrics::minRightBearing() const |
2114 |
int QFontMetrics::minRightBearing() const |
| 2107 |
{ |
2115 |
{ |
| 2108 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2116 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2109 |
QFontEngine *latin_engine = d->engineForScript( QFont::Latin ); |
2117 |
QFontEngine *latin_engine = d->m_engineForScript( QFont::Latin ); |
| 2110 |
#ifdef QT_CHECK_STATE |
2118 |
#ifdef QT_CHECK_STATE |
| 2111 |
Q_ASSERT( engine != 0 ); |
2119 |
Q_ASSERT( engine != 0 ); |
| 2112 |
Q_ASSERT( latin_engine != 0 ); |
2120 |
Q_ASSERT( latin_engine != 0 ); |
|
Lines 2120-2127
Link Here
|
| 2120 |
*/ |
2128 |
*/ |
| 2121 |
int QFontMetrics::maxWidth() const |
2129 |
int QFontMetrics::maxWidth() const |
| 2122 |
{ |
2130 |
{ |
| 2123 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2131 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2124 |
QFontEngine *lengine = d->engineForScript( QFont::Latin ); |
2132 |
QFontEngine *lengine = d->m_engineForScript( QFont::Latin ); |
| 2125 |
#ifdef QT_CHECK_STATE |
2133 |
#ifdef QT_CHECK_STATE |
| 2126 |
Q_ASSERT( engine != 0 ); |
2134 |
Q_ASSERT( engine != 0 ); |
| 2127 |
Q_ASSERT( lengine != 0 ); |
2135 |
Q_ASSERT( lengine != 0 ); |
|
Lines 2137-2143
Link Here
|
| 2137 |
bool QFontMetrics::inFont(QChar ch) const |
2145 |
bool QFontMetrics::inFont(QChar ch) const |
| 2138 |
{ |
2146 |
{ |
| 2139 |
QFont::Script script; |
2147 |
QFont::Script script; |
| 2140 |
SCRIPT_FOR_CHAR( script, ch ); |
2148 |
SCRIPT_FOR_CHAR( script, ch, d ); |
| 2141 |
|
2149 |
|
| 2142 |
QFontEngine *engine = d->engineForScript( script ); |
2150 |
QFontEngine *engine = d->engineForScript( script ); |
| 2143 |
#ifdef QT_CHECK_STATE |
2151 |
#ifdef QT_CHECK_STATE |
|
Lines 2164-2170
Link Here
|
| 2164 |
int QFontMetrics::leftBearing(QChar ch) const |
2172 |
int QFontMetrics::leftBearing(QChar ch) const |
| 2165 |
{ |
2173 |
{ |
| 2166 |
QFont::Script script; |
2174 |
QFont::Script script; |
| 2167 |
SCRIPT_FOR_CHAR( script, ch ); |
2175 |
SCRIPT_FOR_CHAR( script, ch, d ); |
| 2168 |
|
2176 |
|
| 2169 |
QFontEngine *engine = d->engineForScript( script ); |
2177 |
QFontEngine *engine = d->engineForScript( script ); |
| 2170 |
#ifdef QT_CHECK_STATE |
2178 |
#ifdef QT_CHECK_STATE |
|
Lines 2198-2204
Link Here
|
| 2198 |
int QFontMetrics::rightBearing(QChar ch) const |
2206 |
int QFontMetrics::rightBearing(QChar ch) const |
| 2199 |
{ |
2207 |
{ |
| 2200 |
QFont::Script script; |
2208 |
QFont::Script script; |
| 2201 |
SCRIPT_FOR_CHAR( script, ch ); |
2209 |
SCRIPT_FOR_CHAR( script, ch, d ); |
| 2202 |
|
2210 |
|
| 2203 |
QFontEngine *engine = d->engineForScript( script ); |
2211 |
QFontEngine *engine = d->engineForScript( script ); |
| 2204 |
#ifdef QT_CHECK_STATE |
2212 |
#ifdef QT_CHECK_STATE |
|
Lines 2248-2254
Link Here
|
| 2248 |
width += d->engineData->widthCache[uc]; |
2256 |
width += d->engineData->widthCache[uc]; |
| 2249 |
else if ( ::category( *ch ) != QChar::Mark_NonSpacing ) { |
2257 |
else if ( ::category( *ch ) != QChar::Mark_NonSpacing ) { |
| 2250 |
QFont::Script script; |
2258 |
QFont::Script script; |
| 2251 |
SCRIPT_FOR_CHAR( script, *ch ); |
2259 |
SCRIPT_FOR_CHAR( script, *ch, d ); |
| 2252 |
|
2260 |
|
| 2253 |
if (script >= QFont::Arabic && script <= QFont::Khmer) |
2261 |
if (script >= QFont::Arabic && script <= QFont::Khmer) |
| 2254 |
break; |
2262 |
break; |
|
Lines 2378-2384
Link Here
|
| 2378 |
QRect QFontMetrics::boundingRect( QChar ch ) const |
2386 |
QRect QFontMetrics::boundingRect( QChar ch ) const |
| 2379 |
{ |
2387 |
{ |
| 2380 |
QFont::Script script; |
2388 |
QFont::Script script; |
| 2381 |
SCRIPT_FOR_CHAR( script, ch ); |
2389 |
SCRIPT_FOR_CHAR( script, ch, d ); |
| 2382 |
|
2390 |
|
| 2383 |
QFontEngine *engine = d->engineForScript( script ); |
2391 |
QFontEngine *engine = d->engineForScript( script ); |
| 2384 |
#ifdef QT_CHECK_STATE |
2392 |
#ifdef QT_CHECK_STATE |
|
Lines 2519-2525
Link Here
|
| 2519 |
*/ |
2527 |
*/ |
| 2520 |
int QFontMetrics::underlinePos() const |
2528 |
int QFontMetrics::underlinePos() const |
| 2521 |
{ |
2529 |
{ |
| 2522 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2530 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2523 |
#ifdef QT_CHECK_STATE |
2531 |
#ifdef QT_CHECK_STATE |
| 2524 |
Q_ASSERT( engine != 0 ); |
2532 |
Q_ASSERT( engine != 0 ); |
| 2525 |
#endif // QT_CHECK_STATE |
2533 |
#endif // QT_CHECK_STATE |
|
Lines 2559-2565
Link Here
|
| 2559 |
*/ |
2567 |
*/ |
| 2560 |
int QFontMetrics::lineWidth() const |
2568 |
int QFontMetrics::lineWidth() const |
| 2561 |
{ |
2569 |
{ |
| 2562 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2570 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2563 |
#ifdef QT_CHECK_STATE |
2571 |
#ifdef QT_CHECK_STATE |
| 2564 |
Q_ASSERT( engine != 0 ); |
2572 |
Q_ASSERT( engine != 0 ); |
| 2565 |
#endif // QT_CHECK_STATE |
2573 |
#endif // QT_CHECK_STATE |
|
Lines 2715-2721
Link Here
|
| 2715 |
*/ |
2723 |
*/ |
| 2716 |
QString QFontInfo::family() const |
2724 |
QString QFontInfo::family() const |
| 2717 |
{ |
2725 |
{ |
| 2718 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2726 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2719 |
#ifdef QT_CHECK_STATE |
2727 |
#ifdef QT_CHECK_STATE |
| 2720 |
Q_ASSERT( engine != 0 ); |
2728 |
Q_ASSERT( engine != 0 ); |
| 2721 |
#endif // QT_CHECK_STATE |
2729 |
#endif // QT_CHECK_STATE |
|
Lines 2729-2735
Link Here
|
| 2729 |
*/ |
2737 |
*/ |
| 2730 |
int QFontInfo::pointSize() const |
2738 |
int QFontInfo::pointSize() const |
| 2731 |
{ |
2739 |
{ |
| 2732 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2740 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2733 |
#ifdef QT_CHECK_STATE |
2741 |
#ifdef QT_CHECK_STATE |
| 2734 |
Q_ASSERT( engine != 0 ); |
2742 |
Q_ASSERT( engine != 0 ); |
| 2735 |
#endif // QT_CHECK_STATE |
2743 |
#endif // QT_CHECK_STATE |
|
Lines 2743-2749
Link Here
|
| 2743 |
*/ |
2751 |
*/ |
| 2744 |
int QFontInfo::pixelSize() const |
2752 |
int QFontInfo::pixelSize() const |
| 2745 |
{ |
2753 |
{ |
| 2746 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2754 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2747 |
#ifdef QT_CHECK_STATE |
2755 |
#ifdef QT_CHECK_STATE |
| 2748 |
Q_ASSERT( engine != 0 ); |
2756 |
Q_ASSERT( engine != 0 ); |
| 2749 |
#endif // QT_CHECK_STATE |
2757 |
#endif // QT_CHECK_STATE |
|
Lines 2757-2763
Link Here
|
| 2757 |
*/ |
2765 |
*/ |
| 2758 |
bool QFontInfo::italic() const |
2766 |
bool QFontInfo::italic() const |
| 2759 |
{ |
2767 |
{ |
| 2760 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2768 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2761 |
#ifdef QT_CHECK_STATE |
2769 |
#ifdef QT_CHECK_STATE |
| 2762 |
Q_ASSERT( engine != 0 ); |
2770 |
Q_ASSERT( engine != 0 ); |
| 2763 |
#endif // QT_CHECK_STATE |
2771 |
#endif // QT_CHECK_STATE |
|
Lines 2771-2777
Link Here
|
| 2771 |
*/ |
2779 |
*/ |
| 2772 |
int QFontInfo::weight() const |
2780 |
int QFontInfo::weight() const |
| 2773 |
{ |
2781 |
{ |
| 2774 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2782 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2775 |
#ifdef QT_CHECK_STATE |
2783 |
#ifdef QT_CHECK_STATE |
| 2776 |
Q_ASSERT( engine != 0 ); |
2784 |
Q_ASSERT( engine != 0 ); |
| 2777 |
#endif // QT_CHECK_STATE |
2785 |
#endif // QT_CHECK_STATE |
|
Lines 2838-2844
Link Here
|
| 2838 |
*/ |
2846 |
*/ |
| 2839 |
bool QFontInfo::fixedPitch() const |
2847 |
bool QFontInfo::fixedPitch() const |
| 2840 |
{ |
2848 |
{ |
| 2841 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2849 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2842 |
#ifdef QT_CHECK_STATE |
2850 |
#ifdef QT_CHECK_STATE |
| 2843 |
Q_ASSERT( engine != 0 ); |
2851 |
Q_ASSERT( engine != 0 ); |
| 2844 |
#endif // QT_CHECK_STATE |
2852 |
#endif // QT_CHECK_STATE |
|
Lines 2865-2871
Link Here
|
| 2865 |
*/ |
2873 |
*/ |
| 2866 |
QFont::StyleHint QFontInfo::styleHint() const |
2874 |
QFont::StyleHint QFontInfo::styleHint() const |
| 2867 |
{ |
2875 |
{ |
| 2868 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2876 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2869 |
#ifdef QT_CHECK_STATE |
2877 |
#ifdef QT_CHECK_STATE |
| 2870 |
Q_ASSERT( engine != 0 ); |
2878 |
Q_ASSERT( engine != 0 ); |
| 2871 |
#endif // QT_CHECK_STATE |
2879 |
#endif // QT_CHECK_STATE |
|
Lines 2895-2901
Link Here
|
| 2895 |
*/ |
2903 |
*/ |
| 2896 |
bool QFontInfo::exactMatch() const |
2904 |
bool QFontInfo::exactMatch() const |
| 2897 |
{ |
2905 |
{ |
| 2898 |
QFontEngine *engine = d->engineForScript( (QFont::Script) fscript ); |
2906 |
QFontEngine *engine = d->m_engineForScript( (QFont::Script) fscript ); |
| 2899 |
#ifdef QT_CHECK_STATE |
2907 |
#ifdef QT_CHECK_STATE |
| 2900 |
Q_ASSERT( engine != 0 ); |
2908 |
Q_ASSERT( engine != 0 ); |
| 2901 |
#endif // QT_CHECK_STATE |
2909 |
#endif // QT_CHECK_STATE |