9#include <private/qstringiterator_p.h>
48 HB_SCRIPT_CANADIAN_SYLLABICS,
79 HB_SCRIPT_NEW_TAI_LUE,
82 HB_SCRIPT_SYLOTI_NAGRI,
83 HB_SCRIPT_OLD_PERSIAN,
110 HB_SCRIPT_EGYPTIAN_HIEROGLYPHS,
115 HB_SCRIPT_MEETEI_MAYEK,
116 HB_SCRIPT_IMPERIAL_ARAMAIC,
117 HB_SCRIPT_OLD_SOUTH_ARABIAN,
118 HB_SCRIPT_INSCRIPTIONAL_PARTHIAN,
119 HB_SCRIPT_INSCRIPTIONAL_PAHLAVI,
120 HB_SCRIPT_OLD_TURKIC,
130 HB_SCRIPT_MEROITIC_CURSIVE,
131 HB_SCRIPT_MEROITIC_HIEROGLYPHS,
134 HB_SCRIPT_SORA_SOMPENG,
138 HB_SCRIPT_CAUCASIAN_ALBANIAN,
143 HB_SCRIPT_PAHAWH_HMONG,
147 HB_SCRIPT_MANICHAEAN,
148 HB_SCRIPT_MENDE_KIKAKUI,
151 HB_SCRIPT_OLD_NORTH_ARABIAN,
154 HB_SCRIPT_PAU_CIN_HAU,
155 HB_SCRIPT_OLD_PERMIC,
156 HB_SCRIPT_PSALTER_PAHLAVI,
160 HB_SCRIPT_WARANG_CITI,
164 HB_SCRIPT_ANATOLIAN_HIEROGLYPHS,
167 HB_SCRIPT_OLD_HUNGARIAN,
168 HB_SCRIPT_SIGNWRITING,
179 HB_SCRIPT_MASARAM_GONDI,
182 HB_SCRIPT_ZANABAZAR_SQUARE,
186 HB_SCRIPT_GUNJALA_GONDI,
187 HB_SCRIPT_HANIFI_ROHINGYA,
189 HB_SCRIPT_MEDEFAIDRIN,
190 HB_SCRIPT_OLD_SOGDIAN,
195 HB_SCRIPT_NANDINAGARI,
196 HB_SCRIPT_NYIAKENG_PUACHUE_HMONG,
200#if !HB_VERSION_ATLEAST(2, 6, 7)
201 hb_script_t(HB_TAG(
'C',
'h',
'r',
's')),
202 hb_script_t(HB_TAG(
'D',
'i',
'a',
'k')),
203 hb_script_t(HB_TAG(
'K',
'i',
't',
's')),
204 hb_script_t(HB_TAG(
'Y',
'e',
'z',
'i')),
206 HB_SCRIPT_CHORASMIAN,
207 HB_SCRIPT_DIVES_AKURU,
208 HB_SCRIPT_KHITAN_SMALL_SCRIPT,
212#if !HB_VERSION_ATLEAST(3, 0, 0)
213 hb_script_t(HB_TAG(
'C',
'p',
'm',
'n')),
214 hb_script_t(HB_TAG(
'O',
'u',
'g',
'r')),
215 hb_script_t(HB_TAG(
'T',
'n',
's',
'a')),
216 hb_script_t(HB_TAG(
'T',
'o',
't',
'o')),
217 hb_script_t(HB_TAG(
'V',
'i',
't',
'h')),
219 HB_SCRIPT_CYPRO_MINOAN,
220 HB_SCRIPT_OLD_UYGHUR,
226#if !HB_VERSION_ATLEAST(5, 2, 0)
227 hb_script_t(HB_TAG(
'K',
'a',
'w',
'i')),
228 hb_script_t(HB_TAG(
'N',
'a',
'g',
'm')),
231 HB_SCRIPT_NAG_MUNDARI,
243 uint i = QChar::ScriptCount - 1;
246 return QChar::Script(
i);
250static hb_unicode_combining_class_t
252 hb_codepoint_t unicode,
255 return hb_unicode_combining_class_t(QChar::combiningClass(unicode));
259 HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK,
260 HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK,
261 HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK,
263 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER,
264 HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER,
265 HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER,
267 HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR,
268 HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR,
269 HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR,
271 HB_UNICODE_GENERAL_CATEGORY_CONTROL,
272 HB_UNICODE_GENERAL_CATEGORY_FORMAT,
273 HB_UNICODE_GENERAL_CATEGORY_SURROGATE,
274 HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE,
275 HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED,
277 HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER,
278 HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER,
279 HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER,
280 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER,
281 HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER,
283 HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION,
284 HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION,
285 HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION,
286 HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION,
287 HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION,
288 HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION,
289 HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION,
291 HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL,
292 HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL,
293 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL,
294 HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL
297static hb_unicode_general_category_t
299 hb_codepoint_t unicode,
307 hb_codepoint_t unicode,
310 return QChar::mirroredChar(unicode);
315 hb_codepoint_t unicode,
323 hb_codepoint_t
a, hb_codepoint_t
b,
330 s += QChar::fromUcs4(
a);
331 s += QChar::fromUcs4(
b);
338 return !
it.hasNext();
344 hb_codepoint_t *
a, hb_codepoint_t *
b,
348 if (QChar::decompositionTag(ab) != QChar::Canonical)
373 const hb_codepoint_t
c = jt.next();
374 if (
c != *
a &&
c != ab) {
386 }
while (
it.hasNext());
387 normalized.chop(QChar::requiresSurrogates(*
b) ? 2 : 1);
400 funcs = hb_unicode_funcs_create(NULL);
410 hb_unicode_funcs_destroy(
funcs);
420 return qt_ufuncs()->funcs;
434 metrics->ascender = fe->ascent().value();
435 metrics->descender = fe->descent().value();
436 metrics->line_gap = fe->leading().value();
443 hb_codepoint_t unicode,
444 hb_codepoint_t *glyph,
450 *glyph = fe->glyphIndex(unicode);
457 hb_codepoint_t unicode, hb_codepoint_t ,
458 hb_codepoint_t *glyph,
465 *glyph = fe->glyphIndex(unicode);
472 hb_codepoint_t glyph,
483 g.advances = &advance;
487 return advance.
value();
492 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
498 glyph_t glyphs[2] = { first_glyph, second_glyph };
504 g.advances = &advance;
508 return advance.
value();
513 hb_codepoint_t glyph,
514 hb_glyph_extents_t *extents,
522 extents->x_bearing = gm.x.value();
523 extents->y_bearing = gm.y.value();
524 extents->width = gm.width.value();
525 extents->height = gm.height.value();
532 hb_codepoint_t glyph,
533 unsigned int point_index, hb_position_t *
x, hb_position_t *
y,
541 if (
Q_LIKELY(fe->getPointInOutline(glyph, 0, point_index, &xpos, &ypos, &numPoints) == 0)) {
568 funcs = hb_font_funcs_create();
578 hb_font_funcs_make_immutable(
funcs);
582 hb_font_funcs_destroy(
funcs);
602 return hb_blob_get_empty();
605 if (q_check_ptr(
buffer) ==
nullptr)
611 return hb_blob_create(
const_cast<const char *
>(
buffer),
length,
612 HB_MEMORY_MODE_WRITABLE,
621 data->user_data = fe->faceData.user_data;
622 data->get_font_table = fe->faceData.get_font_table;
626 hb_face_set_index(
face, fe->faceId().index);
627 hb_face_set_upem(
face, fe->emSquareSize().truncate());
645 return static_cast<hb_face_t *
>(fe->face_.get());
656 const qreal y_ppem = fe->fontDef.pixelSize;
657 const qreal x_ppem = (fe->fontDef.pixelSize * fe->fontDef.stretch) / 100.0;
659 hb_font_set_funcs(
font, qt_ffuncs()->
funcs, fe,
nullptr);
661 hb_font_set_ppem(
font,
int(x_ppem),
int(y_ppem));
681 return static_cast<hb_font_t *
>(fe->font_.get());
int pointSize() const
Returns the point size of the font.
\macro QT_RESTRICTED_CAST_FROM_ASCII
void reserve(qsizetype size)
Ensures the string has space for at least size characters.
QString normalized(NormalizationForm mode, QChar::UnicodeVersion version=QChar::Unicode_Unassigned) const
Returns the string in the given Unicode normalization mode, according to the given version of the Uni...
static VulkanServerBufferGlFunctions * funcs
QSet< QString >::iterator it
Combined button and popup list for selecting options.
AudioChannelLayoutTag tag
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void * user_data
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool(* qt_get_font_table_func_t)(void *user_data, uint tag, uchar *buffer, uint *length)
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
static hb_codepoint_t _hb_qt_unicode_mirroring(hb_unicode_funcs_t *, hb_codepoint_t unicode, void *)
static hb_unicode_combining_class_t _hb_qt_unicode_combining_class(hb_unicode_funcs_t *, hb_codepoint_t unicode, void *)
static hb_position_t _hb_qt_font_get_glyph_h_advance(hb_font_t *font, void *font_data, hb_codepoint_t glyph, void *)
static hb_position_t _hb_qt_font_get_glyph_h_kerning(hb_font_t *font, void *font_data, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, void *)
uint hb_qt_font_get_use_design_metrics(hb_font_t *font)
static void _hb_qt_font_release(void *user_data)
static hb_user_data_key_t _useDesignMetricsKey
static void _hb_qt_face_release(void *user_data)
static hb_unicode_general_category_t _hb_qt_unicode_general_category(hb_unicode_funcs_t *, hb_codepoint_t unicode, void *)
static QT_BEGIN_NAMESPACE const hb_script_t _qtscript_to_hbscript[]
static hb_bool_t _hb_qt_font_get_glyph_contour_point(hb_font_t *, void *font_data, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y, void *)
static hb_bool_t _hb_qt_get_font_h_extents(hb_font_t *, void *font_data, hb_font_extents_t *metrics, void *)
static hb_bool_t _hb_qt_font_get_nominal_glyph(hb_font_t *, void *font_data, hb_codepoint_t unicode, hb_codepoint_t *glyph, void *)
static hb_bool_t _hb_qt_unicode_compose(hb_unicode_funcs_t *, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, void *)
static hb_blob_t * _hb_qt_reference_table(hb_face_t *, hb_tag_t tag, void *user_data)
hb_unicode_funcs_t * hb_qt_get_unicode_funcs()
QChar::Script hb_qt_script_from_script(hb_script_t script)
static hb_bool_t _hb_qt_font_get_variation_glyph(hb_font_t *, void *font_data, hb_codepoint_t unicode, hb_codepoint_t, hb_codepoint_t *glyph, void *)
static hb_script_t _hb_qt_unicode_script(hb_unicode_funcs_t *, hb_codepoint_t unicode, void *)
static const hb_unicode_general_category_t _qtcategory_to_hbcategory[]
hb_script_t hb_qt_script_to_script(QChar::Script script)
static hb_face_t * _hb_qt_face_create(QFontEngine *fe)
hb_font_t * hb_qt_font_get_for_engine(QFontEngine *fe)
void hb_qt_font_set_use_design_metrics(hb_font_t *font, uint value)
static hb_bool_t _hb_qt_unicode_decompose(hb_unicode_funcs_t *, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, void *)
hb_face_t * hb_qt_face_get_for_engine(QFontEngine *fe)
static hb_font_t * _hb_qt_font_create(QFontEngine *fe)
static hb_bool_t _hb_qt_font_get_glyph_extents(hb_font_t *, void *font_data, hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *)
struct hb_face_t hb_face_t
struct hb_font_t hb_font_t
GLboolean GLboolean GLboolean b
GLint GLint GLint GLint GLint x
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLint GLenum GLboolean normalized
Q_CHECK_PTR(a=new int[80])
static constexpr QFixed fromReal(qreal r)
constexpr int value() const
hb_unicode_funcs_t * funcs