34#define MS_HEAD_TAG DWRITE_MAKE_OPENTYPE_TAG('h','e','a','d')
35#define MS_OS2_TAG DWRITE_MAKE_OPENTYPE_TAG('O','S','/','2')
36#define MS_CMAP_TAG DWRITE_MAKE_OPENTYPE_TAG('c','m','a','p')
37#define MS_NAME_TAG DWRITE_MAKE_OPENTYPE_TAG('n','a','m','e')
38#define MS_VDMX_TAG DWRITE_MAKE_OPENTYPE_TAG('V','D','M','X')
39#define MS_GASP_TAG DWRITE_MAKE_OPENTYPE_TAG('g','a','s','p')
40#define MS_CPAL_TAG DWRITE_MAKE_OPENTYPE_TAG('C','P','A','L')
41#define MS_COLR_TAG DWRITE_MAKE_OPENTYPE_TAG('C','O','L','R')
43static const IID IID_issystemcollection = {0x14d88047,0x331f,0x4cd3,{0xbc,0xa8,0x3e,0x67,0x99,0xaf,0x34,0x75}};
99 size +=
sizeof(*entry);
112 WARN(
"Failed to add cache entry.\n");
129 unsigned short mode,
BOOL *has_contours)
139 if (!
entry->has_advance)
151 entry->has_advance = 1;
155 return entry->advance;
180 if (!
entry->has_bbox)
202 unsigned int bitmap_size, _1bpp;
212 params.mode = rendering_mode;
228 if (
entry->has_bitmap)
240 entry->is_1bpp = !!_1bpp;
241 entry->has_bitmap = 1;
257 if (
key->size != key2->size)
return key->size < key2->size ? -1 : 1;
258 if (
key->glyph != key2->glyph)
return (
int)
key->glyph - (
int)key2->glyph;
259 if (
key->mode != key2->mode)
return (
int)
key->mode - (
int)key2->mode;
267 fontface->
cache.max_size = 0x8000;
705 return &fontface->
vdmx;
711 return &fontface->
gasp;
717 return &fontface->
cpal;
735 if (
data->info_strings[
i])
736 IDWriteLocalizedStrings_Release(
data->info_strings[
i]);
739 IDWriteLocalizedStrings_Release(
data->names);
741 if (
data->family_names)
742 IDWriteLocalizedStrings_Release(
data->family_names);
745 IDWriteFontFile_Release(
data->file);
757 for (
i = 0;
i <
data->count; ++
i)
760 IDWriteLocalizedStrings_Release(
data->familyname);
772 UINT32 left_key_size, right_key_size;
773 const void *left_key, *right_key;
779 hr = IDWriteFontFile_GetReferenceKey(
left, &left_key, &left_key_size);
783 hr = IDWriteFontFile_GetReferenceKey(
right, &right_key, &right_key_size);
787 if (left_key_size != right_key_size)
790 return !
memcmp(left_key, right_key, left_key_size);
846 TRACE(
"%p, refcount %lu.\n", iface, refcount);
860 if (fontface->
vdmx.context)
861 IDWriteFontFace5_ReleaseFontTable(iface, fontface->
vdmx.context);
862 if (fontface->
gasp.context)
863 IDWriteFontFace5_ReleaseFontTable(iface, fontface->
gasp.context);
864 if (fontface->
cpal.context)
865 IDWriteFontFace5_ReleaseFontTable(iface, fontface->
cpal.context);
866 if (fontface->
colr.context)
867 IDWriteFontFace5_ReleaseFontTable(iface, fontface->
colr.context);
868 if (fontface->
kern.context)
869 IDWriteFontFace5_ReleaseFontTable(iface, fontface->
kern.context);
871 IDWriteFontFile_Release(fontface->
file);
873 IDWriteLocalizedStrings_Release(fontface->
names);
875 IDWriteLocalizedStrings_Release(fontface->
family_names);
889 IDWriteFontFileStream_Release(fontface->
stream);
894 IDWriteFactory7_Release(fontface->
factory);
906 TRACE(
"%p.\n", iface);
908 return fontface->
type;
916 TRACE(
"%p, %p, %p.\n", iface, number_of_files, fontfiles);
920 *number_of_files = 1;
924 if (!*number_of_files)
927 IDWriteFontFile_AddRef(fontface->
file);
928 *fontfiles = fontface->
file;
937 TRACE(
"%p.\n", iface);
939 return fontface->
index;
946 TRACE(
"%p.\n", iface);
955 TRACE(
"%p.\n", iface);
975 TRACE(
"%p.\n", iface);
993 TRACE(
"%p, %p, %u, %p, %d.\n", iface, glyphs, glyph_count,
ret, is_sideways);
999 FIXME(
"sideways metrics are not supported.\n");
1008 for (
i = 0;
i < glyph_count; ++
i)
1053 TRACE(
"%p, %s, %p, %p, %p, %p.\n", iface,
debugstr_fourcc(table_tag),
table_data,
table_size,
context, exists);
1065 TRACE(
"%p, %p.\n", iface, table_context);
1067 IDWriteFontFileStream_ReleaseFileFragment(fontface->
stream, table_context);
1088 unsigned int i,
j,
p;
1092 TRACE(
"%p, %.8e, %p, %p, %p, %u, %d, %d, %p.\n", iface, emSize, glyphs, advances,
offsets,
1095 if (!glyphs || !
sink)
1110 if (!(origins =
malloc(
sizeof(*origins) *
count)))
1121 memset(&outline_size, 0,
sizeof(outline_size));
1135 params.outline = &outline_size;
1140 sizeof(*
outline.tags.values));
1142 sizeof(*
outline.points.values));
1147 WARN(
"Failed to get glyph outline for glyph %u.\n", glyphs[
i]);
1168 ID2D1SimplifiedGeometrySink_AddLines(
sink, &
point, 1);
1174 ID2D1SimplifiedGeometrySink_AddBeziers(
sink, &
segment, 1);
1188 float ppem,
unsigned int gasp)
1222 TRACE(
"%p, %.8e, %.8e, %d, %p, %p.\n", iface, emSize, ppdip, measuring,
params,
mode);
1229 *
mode = IDWriteRenderingParams_GetRenderingMode(
params);
1233 ppem = emSize * ppdip;
1249 HRESULT hr = IDWriteFontFace5_GetGdiCompatibleMetrics(iface, emSize, pixels_per_dip,
transform, &metrics1);
1256 return (
int)
floorf(metric + 0.5f);
1278 TRACE(
"%p, %.8e, %.8e, %p, %d, %p, %u, %p, %d.\n", iface, emSize, ppdip,
m, use_gdi_natural,
glyphs,
1279 glyph_count,
metrics, is_sideways);
1284 size = emSize * ppdip;
1289 for (
i = 0;
i < glyph_count; ++
i)
1295 hr = IDWriteFontFace5_GetDesignGlyphMetrics(iface,
glyphs +
i, 1, &design, is_sideways);
1305#define SCALE_METRIC(x) ret->x = round_metric(round_metric((design.x) * scale) / scale)
1336 TRACE(
"%p, %.8e, %.8e, %p, %p.\n", iface, em_size, pixels_per_dip,
m,
metrics);
1338 if (em_size <= 0.0f || pixels_per_dip <= 0.0f) {
1343 em_size *= pixels_per_dip;
1344 if (
m &&
m->m22 != 0.0f)
1345 em_size *=
fabs(
m->m22);
1354#define SCALE_METRIC(x) metrics->x = round_metric(round_metric((design->x) * scale) / scale)
1413 TRACE(
"%p.\n", iface);
1426 FIXME(
"Sideways mode is not supported.\n");
1428 switch (measuring_mode)
1432 measuring_mode, &has_contours);
1444 FIXME(
"Transform is not supported.\n");
1454 WARN(
"Unknown measuring mode %u.\n", measuring_mode);
1465 TRACE(
"%p, %u, %p, %p, %d.\n", iface, glyph_count,
glyphs, advances, is_sideways);
1468 FIXME(
"sideways mode not supported\n");
1471 for (
i = 0;
i < glyph_count; ++
i)
1489 TRACE(
"%p, %.8e, %.8e, %p, %d, %d, %u, %p, %p.\n", iface, em_size, ppdip,
transform,
1490 use_gdi_natural, is_sideways, glyph_count,
glyphs, advances);
1492 if (em_size < 0.0f || ppdip <= 0.0f) {
1493 memset(advances, 0,
sizeof(*advances) * glyph_count);
1497 if (em_size == 0.0f) {
1498 memset(advances, 0,
sizeof(*advances) * glyph_count);
1505 for (
i = 0;
i < glyph_count; ++
i)
1538 TRACE(
"%p.\n", iface);
1549 is_sideways, threshold, measuring_mode,
NULL, rendering_mode, &gridfitmode);
1557 TRACE(
"%p, %u, %p, %p.\n", iface, glyph_count, nominal_glyphs,
glyphs);
1566 TRACE(
"%p.\n", iface);
1575 TRACE(
"%p.\n", iface);
1584 TRACE(
"%p.\n", iface);
1593 TRACE(
"%p.\n", iface);
1603 TRACE(
"%p, %u, %u, %u, %p.\n", iface, palette_index, first_entry_index, entry_count, entries);
1617 TRACE(
"%p, %.8e, %.8e, %.8e, %p, %d, %d, %d, %p, %p, %p.\n", iface, emSize, dpiX, dpiY,
m, is_sideways, threshold,
1618 measuringmode,
params, renderingmode, gridfitmode);
1624 FIXME(
"sideways mode not supported\n");
1626 emSize *=
max(dpiX, dpiY) / 96.0f;
1634 hr = IDWriteRenderingParams_QueryInterface(
params, &IID_IDWriteRenderingParams2, (
void**)¶ms2);
1636 *renderingmode = IDWriteRenderingParams2_GetRenderingMode(params2);
1637 *gridfitmode = IDWriteRenderingParams2_GetGridFitMode(params2);
1638 IDWriteRenderingParams2_Release(params2);
1641 *renderingmode = IDWriteRenderingParams_GetRenderingMode(
params);
1649 if (emSize >= emthreshold)
1656 if (emSize >= emthreshold)
1676 IDWriteFontFaceReference_AddRef(*
reference);
1694 TRACE(
"%p.\n", iface);
1703 TRACE(
"%p.\n", iface);
1712 TRACE(
"%p.\n", iface);
1714 return fontface->
style;
1750 if (!strings_cache[stringid])
1760 IDWriteFontFileStream_Release(
desc.stream);
1779 TRACE(
"%p, %u, %p, %p.\n", iface, stringid,
strings, exists);
1791 TRACE(
"%p, %#x.\n", iface,
ch);
1804 TRACE(
"%p, %.8e, %.8e, %.8e, %p, %d, %d, %d, %p, %p, %p.\n", iface, emSize, dpiX, dpiY,
m, is_sideways, threshold,
1805 measuring_mode,
params, rendering_mode, gridfit_mode);
1811 FIXME(
"sideways mode not supported\n");
1813 emSize *=
max(dpiX, dpiY) / 96.0f;
1821 hr = IDWriteRenderingParams_QueryInterface(
params, &IID_IDWriteRenderingParams3, (
void**)¶ms3);
1823 mode = IDWriteRenderingParams3_GetRenderingMode1(params3);
1824 *gridfit_mode = IDWriteRenderingParams3_GetGridFitMode(params3);
1825 IDWriteRenderingParams3_Release(params3);
1828 mode = IDWriteRenderingParams_GetRenderingMode(
params);
1829 *rendering_mode =
mode;
1837 if (emSize >= emthreshold)
1841 *rendering_mode =
mode;
1845 if (emSize >= emthreshold)
1859 FIXME(
"%p, %#x: stub\n", iface,
ch);
1866 FIXME(
"%p, %u: stub\n", iface, glyph);
1882 FIXME(
"%p, %p, %u, %d, %p: stub\n", iface,
glyphs,
count, enqueue_if_not, are_local);
1890 FIXME(
"%p, %u, %u, %u, %p: stub\n", iface, glyph, ppem_first, ppem_last,
formats);
1899 TRACE(
"%p.\n", iface);
1907 FIXME(
"%p, %u, %u, %d, %p, %p: stub\n", iface, glyph, ppem,
format,
data,
context);
1919 FIXME(
"%p: stub\n", iface);
1927 FIXME(
"%p, %p, %u: stub\n", iface, axis_values, value_count);
1937 FIXME(
"%p: stub\n", iface);
1962 return fontface->
index == other_face->index &&
1963 fontface->
simulations == other_face->simulations &&
2048 IDWriteFontFace3 **
ret)
2055 IDWriteFontFace3_AddRef(*
ret);
2073 hr = IDWriteFontFile_Analyze(fontface->
file, &is_supported, &
file_type, &face_type, &face_num);
2077 hr = IDWriteFactory7_CreateFontFace(fontface->
factory, face_type, 1, &fontface->
file, fontface->
index,
2081 hr = IDWriteFontFace_QueryInterface(
face, &IID_IDWriteFontFace3, (
void **)
ret);
2082 IDWriteFontFace_Release(
face);
2099 TRACE(
"%p.\n", iface);
2101 return fontface->
index;
2108 TRACE(
"%p.\n", iface);
2120 IDWriteFontFile_AddRef(*
file);
2127 FIXME(
"%p.\n", iface);
2134 FIXME(
"%p.\n", iface);
2141 FIXME(
"%p, %p.\n", iface, writetime);
2148 FIXME(
"%p.\n", iface);
2155 FIXME(
"%p.\n", iface);
2209 struct list *cached_list;
2215 font->data->simulations, &cached_list, &IID_IDWriteFontFace4, (
void **)fontface);
2222 desc.factory =
font->family->collection->factory;
2226 desc.simulations =
data->simulations;
2230 IDWriteFontFileStream_Release(
desc.stream);
2245 IDWriteFont3_AddRef(iface);
2274 IDWriteFontFamily2_Release(&
font->family->IDWriteFontFamily2_iface);
2289 IDWriteFontFamily_AddRef(*
family);
2297 TRACE(
"%p.\n", iface);
2299 return font->data->weight;
2306 TRACE(
"%p.\n", iface);
2308 return font->data->stretch;
2315 TRACE(
"%p.\n", iface);
2324 TRACE(
"%p.\n", iface);
2345 TRACE(
"%p, %d, %p, %p.\n", iface, stringid,
strings, exists);
2358 TRACE(
"%p.\n", iface);
2360 return font->data->simulations;
2384 TRACE(
"%p, %#x, %p.\n", iface,
ch, exists);
2395 TRACE(
"%p, %p.\n", iface, fontface);
2413 TRACE(
"%p, %p.\n", iface, panose);
2415 *panose =
font->data->panose;
2437 TRACE(
"%p.\n", iface);
2446 TRACE(
"%p.\n", iface);
2455 TRACE(
"%p, %p.\n", iface, fontface);
2469 return font->data->face_index == other_font->data->face_index
2470 &&
font->data->simulations == other_font->data->simulations
2480 return IDWriteFactory7_CreateFontFaceReference(
font->family->collection->factory,
font->data->file,
2489 TRACE(
"%p, %#x.\n", iface,
ch);
2496 FIXME(
"%p: stub.\n", iface);
2557 *lf =
font->data->lf;
2569 *fontsig =
font->data->fontsig;
2586 if (!(
object =
calloc(1,
sizeof(*
object))))
2590 object->refcount = 1;
2592 IDWriteFontFamily2_AddRef(&
family->IDWriteFontFamily2_iface);
2594 object->style =
object->data->style;
2597 *
font = &
object->IDWriteFont3_iface;
2613 IDWriteFontList2_AddRef(iface);
2646 IDWriteFontFamily2_Release(&fontlist->
family->IDWriteFontFamily2_iface);
2657 return IDWriteFontFamily2_GetFontCollection(&fontlist->
family->IDWriteFontFamily2_iface,
collection);
2664 TRACE(
"%p.\n", iface);
2730 IDWriteFont3_Release(
font);
2740 TRACE(
"%p, %p.\n", iface, fontset);
2809 IDWriteFontCollection3_Release(&family->
collection->IDWriteFontCollection3_iface);
2832 TRACE(
"%p.\n", iface);
2834 return family->
data->count;
2845 if (!family->
data->count)
2868 FLOAT cur_req_prod, next_req_prod;
2870 if (next_to_req < cur_to_req)
2873 if (next_to_req > cur_to_req)
2879 if (next_req_prod > cur_req_prod)
2882 if (next_req_prod < cur_req_prod)
2885 if (
next->stretch >
cur->stretch)
2887 if (
next->stretch <
cur->stretch)
2895 if (
next->weight >
cur->weight)
2897 if (
next->weight <
cur->weight)
2913 if (!family->
data->count)
2922 for (
i = 1;
i < family->
data->count; ++
i)
2950 for (
j = 0;
j <
b;
j++) {
2989 fonts->refcount = 1;
2991 IDWriteFontFamily2_AddRef(&
fonts->family->IDWriteFontFamily2_iface);
2992 fonts->font_count = 0;
2996 if (
family->data->has_normal_face ||
family->data->has_italic_face)
3000 if (
family->data->has_oblique_face ||
family->data->has_italic_face)
3004 for (
i = 0;
i <
family->data->count; ++
i)
3035 if (!family->
data->count)
3065 FIXME(
"%p, %p, %u, %p.\n", iface, axis_values, num_values, fontlist);
3074 TRACE(
"%p, %p.\n", iface, fontset);
3077 family->
data->count, fontset);
3158 TRACE(
"%p, %p.\n", iface, fontset);
3161 family->
data->count, fontset);
3185 if (!(
object =
calloc(1,
sizeof(*
object))))
3190 object->refcount = 1;
3192 IDWriteFontCollection3_AddRef(&
collection->IDWriteFontCollection3_iface);
3220 IDWriteFontCollection3_AddRef(iface);
3245 IDWriteFontCollection3_AddRef(iface);
3290 TRACE(
"%p.\n", iface);
3371 face_index = IDWriteFontFace_GetIndex(
face);
3378 for (
j = 0;
j < family_data->
count; ++
j)
3391 IDWriteFontFile_Release(
file);
3407 FIXME(
"%p, %p.\n", iface, fontset);
3456 FIXME(
"%p, %s, %p, %u, %p.\n", iface,
debugstr_w(familyname), axis_values, num_values, fontlist);
3465 TRACE(
"%p.\n", iface);
3472 FIXME(
"%p, %p.\n", iface, fontset);
3479 FIXME(
"%p.\n", iface);
3572 hr = IDWriteFontFile_GetReferenceKey(
file, &
key, &key_size);
3581 IDWriteFontFileLoader_Release(
loader);
3595 hr = IDWriteLocalizedStrings_FindLocaleName(
strings,
L"en-us", &
index, &exists);
3631 return ch ==
' ' ||
ch ==
'.' ||
ch ==
'-' ||
ch ==
'_';
3645 while ((
pattern = &patterns[
i++])->part1)
3655 if (
token->len != len_part1)
3669 struct list *next_entry;
3672 if (
token->len < len_part2)
3676 if (
token->len == len_part1 + len_part2)
3692 if (
token->len != len_part2)
3765 static const struct name_pattern ultracondensed_patterns[] =
3767 {
L"extra",
L"compressed" },
3768 {
L"ext",
L"compressed" },
3769 {
L"ultra",
L"compressed" },
3770 {
L"ultra",
L"condensed" },
3771 {
L"ultra",
L"cond" },
3775 static const struct name_pattern extracondensed_patterns[] =
3778 {
L"extra",
L"condensed" },
3779 {
L"ext",
L"condensed" },
3780 {
L"extra",
L"cond" },
3781 {
L"ext",
L"cond" },
3785 static const struct name_pattern semicondensed_patterns[] =
3789 {
L"semi",
L"condensed" },
3790 {
L"semi",
L"cond" },
3794 static const struct name_pattern semiexpanded_patterns[] =
3797 {
L"semi",
L"expanded" },
3798 {
L"semi",
L"extended" },
3802 static const struct name_pattern extraexpanded_patterns[] =
3804 {
L"extra",
L"expanded" },
3805 {
L"ext",
L"expanded" },
3806 {
L"extra",
L"extended" },
3807 {
L"ext",
L"extended" },
3811 static const struct name_pattern ultraexpanded_patterns[] =
3813 {
L"ultra",
L"expanded" },
3814 {
L"ultra",
L"extended" },
3818 static const struct name_pattern condensed_patterns[] =
3864 {
L"extra",
L"thin" },
3865 {
L"ext",
L"thin" },
3866 {
L"ultra",
L"thin" },
3870 static const struct name_pattern extralight_patterns[] =
3872 {
L"extra",
L"light" },
3873 {
L"ext",
L"light" },
3874 {
L"ultra",
L"light" },
3878 static const struct name_pattern semilight_patterns[] =
3880 {
L"semi",
L"light" },
3886 {
L"semi",
L"bold" },
3887 {
L"demi",
L"bold" },
3891 static const struct name_pattern extrabold_patterns[] =
3893 {
L"extra",
L"bold" },
3894 {
L"ext",
L"bold" },
3895 {
L"ultra",
L"bold" },
3899 static const struct name_pattern extrablack_patterns[] =
3901 {
L"extra",
L"black" },
3902 {
L"ext",
L"black" },
3903 {
L"ultra",
L"black" },
3939 static const struct name_pattern demibold2_patterns[] =
3945 static const struct name_pattern extrabold2_patterns[] =
4015 else if (target < entry->
weight)
4058 static const WCHAR *regular_patterns[] =
4075 while (!regular_ptr && (
ptr = regular_patterns[
i++]))
4080 if (pattern_len >
len)
4083 src = facenameW +
len - pattern_len;
4084 while (
src >= facenameW)
4151 struct name_token stretch_name, weight_name, style_name;
4152 WCHAR familynameW[255], facenameW[255], finalW[255];
4171 wcscat(familynameW, facenameW);
4205 if (stretch !=
font->stretch) {
4210 font->stretch = stretch;
4219 if (!
wcscmp(familyW, finalW))
4226 if (weight_name.
ptr)
4239 if (stretch_name.
ptr)
4247 static const WCHAR *stretchnamesW[] =
4260 wcscpy(stretchW, stretchnamesW[
font->stretch]);
4273 if (!*weightW && !*stretchW && !*
styleW)
4274 wcscpy(faceW, regular_ptr ? regular_ptr :
L"Regular");
4279 if (*stretchW)
wcscpy(faceW, stretchW);
4283 if (*faceW)
wcscat(faceW,
L" ");
4289 if (*faceW)
wcscat(faceW,
L" ");
4301 static const float width_axis_values[] =
4318 WCHAR familyW[255], faceW[255];
4330 IDWriteFontFile_AddRef(
data->file);
4341 WARN(
"Unable to get family name from the font file, hr %#lx.\n",
hr);
4369 data->axis[1].value = width_axis_values[
props.stretch];
4396 IDWriteFontFile_AddRef(
data->file);
4397 IDWriteLocalizedStrings_AddRef(
data->family_names);
4426 size_t i,
j, heaviest;
4428 for (
i = 0;
i < family->
count; ++
i)
4433 if (family->
fonts[
i]->bold_sim_tested)
4436 family->
fonts[
i]->bold_sim_tested = 1;
4439 if (family->
fonts[
j]->bold_sim_tested)
4442 if ((family->
fonts[
i]->style == family->
fonts[
j]->style) &&
4443 (family->
fonts[
i]->stretch == family->
fonts[
j]->stretch)) {
4448 family->
fonts[
j]->bold_sim_tested = 1;
4454 static const struct name_pattern weightsim_patterns[] =
4456 {
L"extra",
L"light" },
4457 {
L"ext",
L"light" },
4458 {
L"ultra",
L"light" },
4459 {
L"semi",
L"light" },
4460 {
L"semi",
L"bold" },
4461 {
L"demi",
L"bold" },
4470 WCHAR facenameW[255], initialW[255];
4487 if (*facenameW)
wcscat(facenameW,
L" ");
4503 for (
i = 0;
i < family->
count; ++
i)
4505 UINT32 regular = ~0
u, oblique = ~0
u;
4507 WCHAR facenameW[255];
4509 if (family->
fonts[
i]->oblique_sim_tested)
4512 family->
fonts[
i]->oblique_sim_tested = 1;
4521 if (family->
fonts[
j]->oblique_sim_tested)
4524 if ((family->
fonts[
i]->weight == family->
fonts[
j]->weight) &&
4525 (family->
fonts[
i]->stretch == family->
fonts[
j]->stretch)) {
4527 family->
fonts[
j]->oblique_sim_tested = 1;
4535 if (regular != ~0
u && oblique != ~0
u)
4553 if (*facenameW)
wcscat(facenameW,
L" ");
4554 wcscat(facenameW,
L"Oblique");
4565 const WCHAR *replacement_name)
4587 for (
i = 0;
i < replacement->
count; ++
i)
4597 IDWriteLocalizedStrings_Release(
strings);
4613 if (
RegQueryInfoKeyW(hkey,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL, &max_namelen, &max_datalen,
NULL,
NULL)) {
4628 while (*replacement) {
4631 replacement +=
wcslen(replacement) + 1;
4652 struct fontfile_enum {
4656 struct fontfile_enum *fileenum, *fileenum2;
4658 struct list scannedfiles;
4677 TRACE(
"building font collection:\n");
4689 hr = IDWriteFontFileEnumerator_MoveNext(enumerator, &
current);
4693 hr = IDWriteFontFileEnumerator_GetCurrentFontFile(enumerator, &
file);
4704 IDWriteFontFile_Release(
file);
4709 IDWriteFontFile_Release(
file);
4717 IDWriteFontFileStream_Release(
stream);
4718 IDWriteFontFile_Release(
file);
4724 fileenum =
malloc(
sizeof(*fileenum));
4725 fileenum->file =
file;
4755 if (familyW[0] ==
'.')
4788 IDWriteFontFileStream_Release(
stream);
4793 IDWriteFontFile_Release(fileenum->file);
4823 if (familyW[0] ==
'.')
4884 WARN(
"Failed to get file stream.\n");
4893 desc.simulations =
entry->desc.simulations;
4897 WARN(
"Failed to add font collection element, hr %#lx.\n",
hr);
4899 IDWriteFontFileStream_Release(
stream);
4911 hr = IDWriteFontCollection3_QueryInterface(&
collection->IDWriteFontCollection3_iface,
riid,
ret);
4912 IDWriteFontCollection3_Release(&
collection->IDWriteFontCollection3_iface);
4938 IDWriteFontFileEnumerator_AddRef(iface);
4963 IDWriteFactory7_Release(enumerator->
factory);
4982 wcscat(fullpathW,
L"\\fonts\\");
5014 enumerator->
index++;
5019 name_count = max_name_count;
5025 if (name_count >= max_name_count) {
5027 max_name_count *= 2;
5053 enumerator->
index++;
5077 if (!(enumerator =
calloc(1,
sizeof(*enumerator))))
5083 enumerator->
index = -1;
5092 IDWriteFactory7_AddRef(
factory);
5097 ERR(
"failed to open fonts list key\n");
5098 IDWriteFactory7_Release(
factory);
5123 &IID_IDWriteFontCollection, (
void **)
collection);
5124 IDWriteFontSet_Release(fontset);
5131 TRACE(
"Building system font collection for factory %p.\n",
factory);
5133 IDWriteFontFileEnumerator_Release(enumerator);
5159 IDWriteFontFile_Release(
file);
5167 IDWriteFontFileStream_Release(
stream);
5168 IDWriteFontFile_Release(
file);
5177 if (!
wcsicmp(keynameW,
L"SystemDefaultEUDCFont"))
5183 IDWriteLocalizedStrings_Release(
names);
5185 IDWriteFontFile_Release(
file);
5217 IDWriteFontFileStream_Release(
stream);
5218 IDWriteFontFile_Release(
file);
5226 WCHAR eudckeypathW[16];
5275 hr = IDWriteFontCollection3_FindFamilyName(&
collection->IDWriteFontCollection3_iface,
L"",
5281 WARN(
"failed to add global default EUDC font, 0x%08lx\n",
hr);
5301 IDWriteFontFile_AddRef(iface);
5330 IDWriteFontFileLoader_Release(
file->loader);
5332 IDWriteFontFileStream_Release(
file->stream);
5359 IDWriteFontFileLoader_AddRef(*
loader);
5373 *is_supported =
FALSE;
5379 hr = IDWriteFontFileLoader_CreateStreamFromKey(
file->loader,
file->reference_key,
file->key_size, &
stream);
5386 IDWriteFontFileStream_Release(
stream);
5419 IDWriteFontFileLoader_AddRef(
loader);
5426 *
ret = &
file->IDWriteFontFile_iface;
5436 const void *data_ptr;
5441 if (
SUCCEEDED(IDWriteFontFileStream_ReadFileFragment(fontface->
stream, &data_ptr, 0,
size, &data_context)))
5452 WARN(
"Backend failed to create font object.\n");
5453 IDWriteFontFileStream_ReleaseFileFragment(fontface->
stream, data_context);
5463 release_params.
object = font_object;
5465 IDWriteFontFileStream_ReleaseFileFragment(fontface->
stream, data_context);
5483 if (!(fontface =
calloc(1,
sizeof(*fontface))))
5498 IDWriteFactory7_AddRef(fontface->
factory);
5500 IDWriteFontFile_AddRef(fontface->
file);
5502 IDWriteFontFileStream_AddRef(fontface->
stream);
5525 if (
desc->font_data)
5547 if (fontface->
names)
5548 IDWriteLocalizedStrings_AddRef(fontface->
names);
5551 IDWriteLocalizedStrings_AddRef(fontface->
family_names);
5559 IDWriteFontFileStream_AddRef(fontface->
cmap.stream);
5657 IUnknown_Release(
stream->owner);
5732 TRACE_(dwrite_file)(
"%p, %p, 0x%s, 0x%s, %p.\n", iface, fragment_start,
5735 *fragment_context =
NULL;
5739 *fragment_start =
NULL;
5749 TRACE_(dwrite_file)(
"%p, %p.\n", iface, fragment_context);
5756 TRACE_(dwrite_file)(
"%p, %p.\n", iface,
size);
5767 TRACE_(dwrite_file)(
"%p, %p.\n", iface, last_writetime);
5769 li.
u.LowPart =
stream->entry->key->writetime.dwLowDateTime;
5770 li.
u.HighPart =
stream->entry->key->writetime.dwHighDateTime;
5794 if (!(
object =
calloc(1,
sizeof(*
object))))
5798 object->refcount = 1;
5801 object->size =
size;
5802 object->entry =
entry;
5804 *
ret = &
object->IDWriteFontFileStream_iface;
5818 IDWriteLocalFontFileLoader_AddRef(iface);
5904 stream->stream = filestream;
5928 IDWriteFontFileStream_QueryInterface(
stream->stream, &IID_IDWriteFontFileStream, (
void **)
ret);
6043 IDWriteGlyphRunAnalysis_AddRef(iface);
6089 *bounds = analysis->
bounds;
6094 FIXME(
"sideways runs are not supported.\n");
6096 memset(&glyph_bitmap, 0,
sizeof(glyph_bitmap));
6100 glyph_bitmap.
m = &analysis->
m;
6119 *bounds = analysis->
bounds;
6156 static const BYTE masks[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
6175 memset(&glyph_bitmap, 0,
sizeof(glyph_bitmap));
6179 glyph_bitmap.
m = &analysis->
m;
6189 unsigned int is_1bpp;
6205 WARN(
"Failed to render glyph[%u] = %#x.\n",
i, glyph_bitmap.
glyph);
6229 dst[
x] = DWRITE_ALPHA_MAX;
6302 int draw_width = (runbounds.
right - runbounds.
left) * pixel_size;
6317 for (
y = 0;
y < runbounds.
bottom - runbounds.
top;
y++) {
6332 TRACE(
"%p, %p, %p, %p, %p.\n", iface,
params, gamma, contrast, cleartypelevel);
6346 *cleartypelevel = 1.0f;
6350 WARN(
"NATURAL_SYMMETRIC_DOWNSAMPLED mode is ignored.\n");
6355 *gamma = IDWriteRenderingParams_GetGamma(
params);
6356 *contrast = IDWriteRenderingParams_GetEnhancedContrast(
params);
6357 *cleartypelevel = IDWriteRenderingParams_GetClearTypeLevel(
params);
6391 FIXME(
"Sideways mode is not supported.\n");
6397 switch (measuring_mode)
6403 return ppdip > 0.0f ?
floorf(
advance * emsize * ppdip / upem + 0.5f) / ppdip : 0.0f;
6405 WARN(
"Unknown measuring mode %u.\n", measuring_mode);
6423 if ((
UINT32)
desc->aa_mode > DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE)
6432 if (!(analysis =
calloc(1,
sizeof(*analysis))))
6440 ||
desc->aa_mode == DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE)
6464 analysis->
m = *
desc->transform;
6474 for (
i = 0;
i <
desc->run->glyphCount; ++
i)
6492 IDWriteColorGlyphRunEnumerator1_AddRef(iface);
6527 if (glyphenum->
colr.context)
6528 IDWriteFontFace5_ReleaseFontTable(glyphenum->
fontface, glyphenum->
colr.context);
6529 IDWriteFontFace5_Release(glyphenum->
fontface);
6552 FLOAT advance_adj = 0.0f;
6553 BOOL got_palette_index;
6561 if (glyphenum->
glyphs[
g].num_layers == 0) {
6563 first_glyph =
min(first_glyph,
g);
6582 got_palette_index =
FALSE;
6591 if (glyphenum->
glyphs[
g].layer == glyphenum->
glyphs[
g].num_layers) {
6598 if (!got_palette_index) {
6607 WARN(
"failed to get palette entry, fontface %p, palette %u, index %u, 0x%08lx\n", glyphenum->
fontface,
6614 got_palette_index =
TRUE;
6642 TRACE(
"%p, %p.\n", iface, has_run);
6708 BOOL colorfont, has_colored_glyph;
6733 FIXME(
"Unimplemented formats requested %#x.\n",
formats);
6737 if (!(colorglyphenum =
calloc(1,
sizeof(*colorglyphenum))))
6744 IDWriteFontFace5_AddRef(colorglyphenum->
fontface);
6746 colorglyphenum->
run = *run;
6752 colorglyphenum->
colr.exists =
TRUE;
6759 has_colored_glyph =
FALSE;
6764 has_colored_glyph =
TRUE;
6766 if (colorglyphenum->
glyphs[
i].num_layers == 0)
6772 if (!has_colored_glyph) {
6819 IDWriteFontFaceReference1_AddRef(iface);
6849 IDWriteFontFile_Release(
reference->file);
6850 IDWriteFactory7_Release(
reference->factory);
6862 TRACE(
"%p, %p.\n", iface, fontface);
6864 return IDWriteFontFaceReference1_CreateFontFaceWithSimulations(iface,
reference->simulations, fontface);
6880 hr = IDWriteFontFile_Analyze(
reference->file, &is_supported, &
file_type, &face_type, &face_num);
6888 hr = IDWriteFontFace_QueryInterface(fontface, &IID_IDWriteFontFace3, (
void **)
ret);
6889 IDWriteFontFace_Release(fontface);
6918 TRACE(
"%p.\n", iface);
6927 TRACE(
"%p.\n", iface);
6942 hr = IDWriteFontFile_GetReferenceKey(
reference->file, &
key, &key_size);
6951 IDWriteFontFileLoader_Release(
loader);
6958 FIXME(
"%p.\n", iface);
6965 FIXME(
"%p.\n", iface);
6972 FIXME(
"%p, %p.\n", iface, writetime);
6979 FIXME(
"%p.\n", iface);
6986 FIXME(
"%p.\n", iface);
7002 FIXME(
"%p, %p, %u.\n", iface, glyphs,
count);
7018 IDWriteFontFace3 *fontface3;
7021 TRACE(
"%p, %p.\n", iface, fontface);
7024 if (
SUCCEEDED(
hr = IDWriteFontFaceReference1_CreateFontFaceWithSimulations(iface,
reference->simulations,
7027 hr = IDWriteFontFace3_QueryInterface(fontface3, &IID_IDWriteFontFace5, (
void **)fontface);
7028 IDWriteFontFace3_Release(fontface3);
7038 TRACE(
"%p.\n", iface);
7093 if (!(
object =
calloc(1,
sizeof(*
object))))
7097 object->refcount = 1;
7100 IDWriteFactory7_AddRef(
object->factory);
7101 object->file =
file;
7102 IDWriteFontFile_AddRef(
object->file);
7103 object->index =
index;
7109 IDWriteFontFaceReference1_Release(&
object->IDWriteFontFaceReference1_iface);
7116 *
ret = &
object->IDWriteFontFaceReference1_iface;
7127 IDWriteFontFileStream_AddRef(iface);
7168 TRACE_(dwrite_file)(
"%p, %p, 0x%s, 0x%s, %p.\n", iface, fragment_start,
7171 *fragment_context =
NULL;
7174 *fragment_start =
NULL;
7184 TRACE_(dwrite_file)(
"%p, %p.\n", iface, fragment_context);
7191 TRACE_(dwrite_file)(
"%p, %p.\n", iface,
size);
7200 TRACE_(dwrite_file)(
"%p, %p.\n", iface, last_writetime);
7202 *last_writetime = 0;
7227 IDWriteInMemoryFontFileLoader_AddRef(iface);
7274 TRACE(
"%p, %p, %u, %p.\n", iface,
key, key_size,
ret);
7278 if (key_size !=
sizeof(
DWORD))
7294 *
ret = &
stream->IDWriteFontFileStream_iface;
7306 TRACE(
"%p, %p, %p, %u, %p, %p.\n", iface,
factory,
data, data_size,
owner, fontfile);
7320 IUnknown_AddRef(
stream->owner);
7335 return IDWriteFactory_CreateCustomFontFileReference(
factory, &
key,
sizeof(
key),
7343 TRACE(
"%p.\n", iface);
7370 *
ret = &
loader->IDWriteInMemoryFontFileLoader_iface;
7383 IDWriteFontResource_AddRef(iface);
7411 IDWriteFactory7_Release(
resource->factory);
7412 IDWriteFontFile_Release(
resource->file);
7424 TRACE(
"%p, %p.\n", iface, fontfile);
7427 IDWriteFontFile_AddRef(*fontfile);
7436 TRACE(
"%p.\n", iface);
7445 TRACE(
"%p.\n", iface);
7476 TRACE(
"%p, %p, %u.\n", iface, ranges,
count);
7519 FIXME(
"%p, %u, %u, %p, %p.\n", iface,
axis, axis_value, axis_range,
names);
7526 FIXME(
"%p.\n", iface);
7539 TRACE(
"%p, %#x, %p, %u, %p.\n", iface, simulations, axis_values, num_values, fontface);
7542 simulations, axis_values, num_values, &
reference);
7545 hr = IDWriteFontFaceReference1_CreateFontFace(
reference, fontface);
7546 IDWriteFontFaceReference1_Release(
reference);
7558 TRACE(
"%p, %#x, %p, %u, %p.\n", iface, simulations, axis_values, num_values,
reference);
7561 simulations, axis_values, num_values,
reference);
7609 IDWriteFontFile_AddRef(
resource->file);
7611 IDWriteFactory7_AddRef(
resource->factory);
7620 IDWriteFontFileStream_Release(stream_desc.
stream);
7637 IDWriteFontSet3_AddRef(iface);
7656#define MISSING_SET_PROP ((void *)0x1)
7664 IDWriteFontFile_Release(
entry->desc.file);
7668 IDWriteLocalizedStrings_Release(
entry->props[
i]);
7692 IDWriteLocalizedStrings_AddRef(
value);
7714 IDWriteFontFileStream_Release(stream_desc.
stream);
7719 IDWriteLocalizedStrings_AddRef(
value);
7740 IDWriteFactory7_Release(
set->factory);
7754 TRACE(
"%p.\n", iface);
7771 return IDWriteFactory7_CreateFontFaceReference_(
set->factory,
set->entries[
index]->desc.file,
7786 FIXME(
"%p, %p, %p, %p.\n", iface, fontface,
index, exists);
7845 switch (
props[
i].propertyId)
7856 IDWriteLocalizedStrings_Release(
value);
7867 FIXME(
"Unsupported property %d.\n",
props[
i].propertyId);
7880 FIXME(
"%p, %s, %d, %d, %d, %p.\n", iface,
debugstr_w(family),
weight, stretch,
style, fontset);
7890 unsigned int i, matched_count = 0;
7898 if (!(
object =
calloc(1,
sizeof(*
object))))
7931 FIXME(
"%p, %p, %p, %u, %p.\n", iface,
property, axis_values, num_values, fontset);
7938 FIXME(
"%p, %p.\n", iface, fontset);
7946 FIXME(
"%p, %p, %u, %p.\n", iface,
indices, num_indices, fontset);
7954 FIXME(
"%p, %p, %u, %d, %p.\n", iface, axis_ranges, num_ranges, select_any_range, fontset);
7962 FIXME(
"%p, %p, %u, %d, %p.\n", iface,
props, num_properties, select_any_property, fontset);
7970 FIXME(
"%p, %p, %u, %d, %p, %u, %p.\n", iface, ranges, num_ranges, select_any_range,
indices, num_indices, actual_num_indices);
7978 FIXME(
"%p, %p, %u, %d, %p, %u, %p.\n", iface,
props, num_properties, select_any_range,
indices,
7979 num_indices, actual_num_indices);
7987 FIXME(
"%p, %u, %p, %u, %p.\n", iface, font_index, axis_ranges, num_ranges, actual_num_ranges);
7995 FIXME(
"%p, %p, %u, %p.\n", iface, axis_ranges, num_ranges, actual_num_ranges);
8019 return IDWriteFactory7_CreateFontResource(
set->factory,
set->entries[
index]->desc.file,
8025 FIXME(
"%p, %u, %p.\n", iface,
index, fontface);
8039 FIXME(
"%p.\n", iface);
8115 entry->refcount = 1;
8117 IDWriteFontFile_AddRef(
entry->desc.file);
8118 entry->desc.face_type = face_type;
8119 entry->desc.face_index = face_index;
8120 entry->desc.simulations = simulations;
8130 object->IDWriteFontSet3_iface.lpVtbl = &
fontsetvtbl;
8131 object->refcount = 1;
8133 IDWriteFactory7_AddRef(
object->factory);
8134 object->entries = entries;
8135 object->count =
count;
8145 if (!(
object =
calloc(1,
sizeof(*
object))))
8174 if (!(
object =
calloc(1,
sizeof(*
object))))
8202 IDWriteFontSetBuilder2_AddRef(iface);
8231 IDWriteFactory7_Release(builder->
factory);
8232 for (
i = 0;
i < builder->
count; ++
i)
8277 desc.face_index =
i;
8314 desc.face_index = IDWriteFontFaceReference_GetFontFaceIndex(
reference);
8315 desc.simulations = IDWriteFontFaceReference_GetSimulations(
reference);
8320 IDWriteFontFile_Release(
desc.file);
8327 FIXME(
"%p, %p.\n", iface, fontset);
8336 TRACE(
"%p, %p.\n", iface, fontset);
8355 FIXME(
"%p, %p, %u, %#x, %p, %u, %p, %u, %p, %u.\n", iface,
file, face_index, simulations, axis_values, num_values,
8356 axis_ranges, num_ranges,
props, num_properties);
8373 IDWriteFontFile_Release(
file);
8397 if (!(builder =
calloc(1,
sizeof(*builder))))
8403 IDWriteFactory7_AddRef(builder->
factory);
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
COMPILER_DEPENDENT_UINT64 UINT64
#define InterlockedIncrement
#define InterlockedDecrement
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define RegCloseKey(hKey)
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
@ D2D1_FIGURE_BEGIN_FILLED
DWRITE_GLYPH_IMAGE_FORMATS
@ DWRITE_GLYPH_IMAGE_FORMATS_COLR
@ DWRITE_GLYPH_IMAGE_FORMATS_NONE
@ DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8
@ DWRITE_GLYPH_IMAGE_FORMATS_JPEG
@ DWRITE_GLYPH_IMAGE_FORMATS_PNG
@ DWRITE_GLYPH_IMAGE_FORMATS_CFF
@ DWRITE_GLYPH_IMAGE_FORMATS_SVG
@ DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE
@ DWRITE_GLYPH_IMAGE_FORMATS_TIFF
@ DWRITE_MEASURING_MODE_GDI_CLASSIC
@ DWRITE_MEASURING_MODE_NATURAL
@ DWRITE_MEASURING_MODE_GDI_NATURAL
int next_token(char **, FILE *)
#define UNIX_CALL(func, params)
static const struct pixel_format_desc formats[]
static void release_cached_stream(struct local_cached_stream *stream)
static HRESULT get_font_info_strings(const struct file_stream_desc *stream_desc, IDWriteFontFile *file, DWRITE_INFORMATIONAL_STRING_ID stringid, IDWriteLocalizedStrings **strings_cache, IDWriteLocalizedStrings **ret, BOOL *exists)
static HRESULT WINAPI glyphrunanalysis_GetAlphaTextureBounds(IDWriteGlyphRunAnalysis *iface, DWRITE_TEXTURE_TYPE type, RECT *bounds)
static ULONG WINAPI fontfacereference_AddRef(IDWriteFontFaceReference1 *iface)
static UINT32 WINAPI dwritefontset3_GetFontSourceNameLength(IDWriteFontSet3 *iface, UINT32 index)
static HRESULT WINAPI glyphrunanalysis_CreateAlphaTexture(IDWriteGlyphRunAnalysis *iface, DWRITE_TEXTURE_TYPE type, RECT const *bounds, BYTE *bitmap, UINT32 size)
static HRESULT WINAPI dwritefontfamily_GetFont(IDWriteFontFamily2 *iface, UINT32 index, IDWriteFont **font)
static DWRITE_GLYPH_IMAGE_FORMATS WINAPI dwritefontface4_GetGlyphImageFormats(IDWriteFontFace5 *iface)
void get_logfont_from_font(IDWriteFont *iface, LOGFONTW *lf)
static HRESULT WINAPI inmemoryfontfileloader_CreateStreamFromKey(IDWriteInMemoryFontFileLoader *iface, void const *key, UINT32 key_size, IDWriteFontFileStream **ret)
static HRESULT WINAPI dwritefontfamilylist1_GetFont(IDWriteFontList2 *iface, UINT32 index, IDWriteFont3 **font)
static void matrix_2x2_from_dwrite_matrix(MATRIX_2X2 *m1, const DWRITE_MATRIX *m2)
static HRESULT create_font(struct dwrite_fontfamily *family, UINT32 index, IDWriteFont3 **font)
static HRESULT WINAPI dwritefontlist1_GetFont(IDWriteFontList2 *iface, UINT32 index, IDWriteFont3 **font)
static HRESULT WINAPI dwritefontset3_GetFontSourceName(IDWriteFontSet3 *iface, UINT32 index, WCHAR *buffer, UINT32 buffer_size)
static UINT32 WINAPI dwritefontface_reference_GetFontFaceIndex(IDWriteFontFaceReference *iface)
static int __cdecl compare_knownweights(const void *a, const void *b)
static void init_fontset(struct dwrite_fontset *object, IDWriteFactory7 *factory, struct dwrite_fontset_entry **entries, unsigned int count)
static struct dwrite_fontresource * impl_from_IDWriteFontResource(IDWriteFontResource *iface)
static HRESULT WINAPI dwritefontset1_GetFilteredFontIndices_(IDWriteFontSet3 *iface, DWRITE_FONT_AXIS_RANGE const *ranges, UINT32 num_ranges, BOOL select_any_range, UINT32 *indices, UINT32 num_indices, UINT32 *actual_num_indices)
static HRESULT WINAPI localfontfilestream_QueryInterface(IDWriteFontFileStream *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontfamilylist_GetFontCollection(IDWriteFontList2 *iface, IDWriteFontCollection **collection)
static HRESULT WINAPI dwritefontsetbuilder_AddFontFaceReference_(IDWriteFontSetBuilder2 *iface, IDWriteFontFaceReference *ref, DWRITE_FONT_PROPERTY const *props, UINT32 prop_count)
static HRESULT WINAPI inmemoryfontfileloader_QueryInterface(IDWriteInMemoryFontFileLoader *iface, REFIID riid, void **obj)
static DWRITE_FONT_WEIGHT WINAPI dwritefontface3_GetWeight(IDWriteFontFace5 *iface)
static DWRITE_FONT_STYLE WINAPI dwritefont_GetStyle(IDWriteFont3 *iface)
static void init_font_prop_vec(DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, struct dwrite_font_propvec *vec)
static HRESULT eudc_collection_add_family(IDWriteFactory7 *factory, struct dwrite_fontcollection *collection, const WCHAR *keynameW, const WCHAR *pathW)
static unsigned int get_glyph_bitmap_pitch(DWRITE_RENDERING_MODE1 rendering_mode, INT width)
static HRESULT create_local_file_reference(IDWriteFactory7 *factory, const WCHAR *filename, IDWriteFontFile **file)
static HRESULT WINAPI dwritefontfamily2_GetFontSet(IDWriteFontFamily2 *iface, IDWriteFontSet1 **fontset)
static HRESULT WINAPI dwritefontsetbuilder2_AddFont(IDWriteFontSetBuilder2 *iface, IDWriteFontFile *file, unsigned int face_index, DWRITE_FONT_SIMULATIONS simulations, const DWRITE_FONT_AXIS_VALUE *axis_values, unsigned int num_values, const DWRITE_FONT_AXIS_RANGE *axis_ranges, unsigned int num_ranges, const DWRITE_FONT_PROPERTY *props, unsigned int num_properties)
static UINT64 WINAPI fontfacereference_GetFileSize(IDWriteFontFaceReference1 *iface)
static ULONG WINAPI glyphrunanalysis_Release(IDWriteGlyphRunAnalysis *iface)
static HRESULT WINAPI dwritefontface4_GetGlyphImageData(IDWriteFontFace5 *iface, UINT16 glyph, UINT32 ppem, DWRITE_GLYPH_IMAGE_FORMATS format, DWRITE_GLYPH_IMAGE_DATA *data, void **context)
static HRESULT WINAPI dwritefontset_GetPropertyOccurrenceCount(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY const *property, UINT32 *count)
static HRESULT WINAPI fontfacereference1_CreateFontFace(IDWriteFontFaceReference1 *iface, IDWriteFontFace5 **fontface)
static void font_name_token_to_str(const struct name_token *name, WCHAR *strW)
static ULONG WINAPI dwritefontfamilylist_Release(IDWriteFontList2 *iface)
static HRESULT WINAPI dwritefontfamily_GetFirstMatchingFont(IDWriteFontFamily2 *iface, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, IDWriteFont **font)
static HRESULT WINAPI dwritefontface1_GetGdiCompatibleGlyphAdvances(IDWriteFontFace5 *iface, float em_size, float ppdip, const DWRITE_MATRIX *transform, BOOL use_gdi_natural, BOOL is_sideways, UINT32 glyph_count, UINT16 const *glyphs, INT32 *advances)
static HRESULT WINAPI dwritefontsetbuilder_CreateFontSet(IDWriteFontSetBuilder2 *iface, IDWriteFontSet **fontset)
static HRESULT WINAPI dwritefontresource_QueryInterface(IDWriteFontResource *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontface1_GetVerticalGlyphVariants(IDWriteFontFace5 *iface, UINT32 glyph_count, const UINT16 *nominal_glyphs, UINT16 *glyphs)
static ULONG WINAPI dwritefontsetbuilder_Release(IDWriteFontSetBuilder2 *iface)
static HRESULT WINAPI dwritefontset_GetPropertyValues(IDWriteFontSet3 *iface, UINT32 index, DWRITE_FONT_PROPERTY_ID id, BOOL *exists, IDWriteLocalizedStrings **values)
static DWRITE_LOCALITY WINAPI dwritefontfamily1_GetFontLocality(IDWriteFontFamily2 *iface, UINT32 index)
static ULONG WINAPI dwritefontfile_AddRef(IDWriteFontFile *iface)
static void release_fontset_entry(struct dwrite_fontset_entry *entry)
static DWRITE_FONT_WEIGHT WINAPI dwritefont_GetWeight(IDWriteFont3 *iface)
static void glyphrunanalysis_get_texturebounds(struct dwrite_glyphrunanalysis *analysis, RECT *bounds)
static UINT32 WINAPI dwritefontset_GetFontCount(IDWriteFontSet3 *iface)
static HRESULT WINAPI dwritefontface1_GetKerningPairAdjustments(IDWriteFontFace5 *iface, UINT32 count, const UINT16 *glyphs, INT32 *values)
static HRESULT WINAPI fontfacereference_GetFontFile(IDWriteFontFaceReference1 *iface, IDWriteFontFile **file)
static HRESULT WINAPI dwritefontface5_GetFontAxisValues(IDWriteFontFace5 *iface, DWRITE_FONT_AXIS_VALUE *axis_values, UINT32 value_count)
static HRESULT WINAPI dwritefontset1_GetFilteredFonts(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY const *props, UINT32 num_properties, BOOL select_any_property, IDWriteFontSet1 **fontset)
static BOOL is_better_font_match(const struct dwrite_font_propvec *next, const struct dwrite_font_propvec *cur, const struct dwrite_font_propvec *req)
static void fontfamily_add_oblique_simulated_face(struct dwrite_fontfamily_data *family)
static HRESULT WINAPI dwritefontset1_GetFontAxisRanges(IDWriteFontSet3 *iface, DWRITE_FONT_AXIS_RANGE *axis_ranges, UINT32 num_ranges, UINT32 *actual_num_ranges)
static HRESULT WINAPI dwritefontcollection2_GetFontFamily(IDWriteFontCollection3 *iface, UINT32 index, IDWriteFontFamily2 **ret)
static BOOL WINAPI dwritefontface1_HasKerningPairs(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefontset1_CreateFontResource(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontResource **resource)
static void fontname_tokenize(struct list *tokens, const WCHAR *nameW)
static UINT32 WINAPI dwritefontface_GetIndex(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefontsetbuilder_AddFontSet(IDWriteFontSetBuilder2 *iface, IDWriteFontSet *fontset)
static HRESULT WINAPI dwritefontfile_Analyze(IDWriteFontFile *iface, BOOL *is_supported, DWRITE_FONT_FILE_TYPE *file_type, DWRITE_FONT_FACE_TYPE *face_type, UINT32 *face_count)
static HRESULT WINAPI dwritefontface1_GetDesignGlyphAdvances(IDWriteFontFace5 *iface, UINT32 glyph_count, UINT16 const *glyphs, INT32 *advances, BOOL is_sideways)
static ULONG WINAPI localfontfileloader_Release(IDWriteLocalFontFileLoader *iface)
static struct dwrite_fontlist * impl_from_IDWriteFontList2(IDWriteFontList2 *iface)
static ULONG WINAPI dwritefontfile_Release(IDWriteFontFile *iface)
HRESULT create_fontfacereference(IDWriteFactory7 *factory, IDWriteFontFile *file, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 axis_values_count, IDWriteFontFaceReference1 **ret)
static DWRITE_FONT_SIMULATIONS WINAPI fontfacereference_GetSimulations(IDWriteFontFaceReference1 *iface)
static BOOL is_name_separator_char(WCHAR ch)
static HRESULT create_fontfamily(struct dwrite_fontcollection *collection, UINT32 index, struct dwrite_fontfamily **family)
static HRESULT WINAPI dwritesystemfontcollection_QueryInterface(IDWriteFontCollection3 *iface, REFIID riid, void **obj)
static UINT32 WINAPI inmemoryfontfileloader_GetFileCount(IDWriteInMemoryFontFileLoader *iface)
float fontface_get_scaled_design_advance(struct dwrite_fontface *fontface, DWRITE_MEASURING_MODE measuring_mode, float emsize, float ppdip, const DWRITE_MATRIX *transform, UINT16 glyph, BOOL is_sideways)
static HRESULT WINAPI dwritefont_GetFaceNames(IDWriteFont3 *iface, IDWriteLocalizedStrings **names)
HRESULT get_filestream_from_file(IDWriteFontFile *file, IDWriteFontFileStream **stream)
static const IDWriteFontCollection3Vtbl systemfontcollectionvtbl
static HRESULT WINAPI dwritefontface_reference_GetFontFile(IDWriteFontFaceReference *iface, IDWriteFontFile **file)
static HRESULT WINAPI dwritefontface3_GetFontFaceReference(IDWriteFontFace5 *iface, IDWriteFontFaceReference **reference)
static ULONG WINAPI dwritefontface_reference_Release(IDWriteFontFaceReference *iface)
static HRESULT WINAPI dwritefontcollection_QueryInterface(IDWriteFontCollection3 *iface, REFIID riid, void **obj)
static DWRITE_FONT_SIMULATIONS WINAPI dwritefontface_GetSimulations(IDWriteFontFace5 *iface)
static ULONG WINAPI dwritefont_AddRef(IDWriteFont3 *iface)
static ULONG WINAPI systemfontfileenumerator_AddRef(IDWriteFontFileEnumerator *iface)
static UINT32 WINAPI dwritefontresource_GetAxisValueNameCount(IDWriteFontResource *iface, UINT32 axis)
static void fontcollection_add_replacements(struct dwrite_fontcollection *collection)
static HRESULT WINAPI dwritefontset_QueryInterface(IDWriteFontSet3 *iface, REFIID riid, void **obj)
static BOOL WINAPI dwritefontface1_IsMonospacedFont(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefontface_reference_EnqueueGlyphDownloadRequest(IDWriteFontFaceReference *iface, UINT16 const *glyphs, UINT32 count)
static struct dwrite_glyphrunanalysis * impl_from_IDWriteGlyphRunAnalysis(IDWriteGlyphRunAnalysis *iface)
static ULONG WINAPI inmemoryfilestream_Release(IDWriteFontFileStream *iface)
static HRESULT WINAPI localfontfilestream_GetFileSize(IDWriteFontFileStream *iface, UINT64 *size)
static BOOL WINAPI fontfacereference_Equals(IDWriteFontFaceReference1 *iface, IDWriteFontFaceReference *ref)
static DWRITE_FONT_SOURCE_TYPE WINAPI dwritefontset3_GetFontSourceType(IDWriteFontSet3 *iface, UINT32 index)
static HRESULT WINAPI dwritefontset1_GetMatchingFonts(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY const *property, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values, IDWriteFontSet1 **fontset)
static ULONG WINAPI dwritefontcollection_AddRef(IDWriteFontCollection3 *iface)
static BOOL WINAPI dwritefontface1_HasVerticalGlyphVariants(IDWriteFontFace5 *iface)
HRESULT get_local_refkey(const WCHAR *path, const FILETIME *writetime, void **key, UINT32 *size)
static const struct dwrite_fonttable * get_fontface_vdmx(struct dwrite_fontface *fontface)
static HRESULT WINAPI colorglyphenum1_GetCurrentRun(IDWriteColorGlyphRunEnumerator1 *iface, DWRITE_COLOR_GLYPH_RUN1 const **run)
static HRESULT create_system_fontfile_enumerator(IDWriteFactory7 *factory, IDWriteFontFileEnumerator **ret)
static HRESULT WINAPI dwritefontfamily_QueryInterface(IDWriteFontFamily2 *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontface_GetRecommendedRenderingMode(IDWriteFontFace5 *iface, FLOAT emSize, FLOAT ppdip, DWRITE_MEASURING_MODE measuring, IDWriteRenderingParams *params, DWRITE_RENDERING_MODE *mode)
static HRESULT WINAPI dwritefontface_GetGlyphRunOutline(IDWriteFontFace5 *iface, FLOAT emSize, UINT16 const *glyphs, FLOAT const *advances, DWRITE_GLYPH_OFFSET const *offsets, UINT32 count, BOOL is_sideways, BOOL is_rtl, IDWriteGeometrySink *sink)
static HRESULT WINAPI dwritefontface5_GetFontResource(IDWriteFontFace5 *iface, IDWriteFontResource **resource)
static UINT32 WINAPI dwritefontface5_GetFontAxisValueCount(IDWriteFontFace5 *iface)
static DWRITE_FONT_FAMILY_MODEL WINAPI dwritefontcollection2_GetFontFamilyModel(IDWriteFontCollection3 *iface)
static void apply_outline_point_offset(const D2D1_POINT_2F *src, const D2D1_POINT_2F *offset, D2D1_POINT_2F *dst)
static ULONG WINAPI inmemoryfontfileloader_Release(IDWriteInMemoryFontFileLoader *iface)
static struct dwrite_inmemory_fileloader * impl_from_IDWriteInMemoryFontFileLoader(IDWriteInMemoryFontFileLoader *iface)
static const IDWriteGlyphRunAnalysisVtbl glyphrunanalysisvtbl
static ULONG WINAPI glyphrunanalysis_AddRef(IDWriteGlyphRunAnalysis *iface)
static DWRITE_LOCALITY WINAPI dwritefontlist1_GetFontLocality(IDWriteFontList2 *iface, UINT32 index)
static HRESULT WINAPI dwritefontfamilylist1_GetFontFaceReference(IDWriteFontList2 *iface, UINT32 index, IDWriteFontFaceReference **reference)
static HRESULT WINAPI localfontfileloader_GetLastWriteTimeFromKey(IDWriteLocalFontFileLoader *iface, void const *key, UINT32 key_size, FILETIME *writetime)
static ULONG WINAPI localfontfileloader_AddRef(IDWriteLocalFontFileLoader *iface)
static HRESULT WINAPI dwritefontcollection_FindFamilyName(IDWriteFontCollection3 *iface, const WCHAR *name, UINT32 *index, BOOL *exists)
static void dwrite_grab_font_table(void *context, UINT32 table, const BYTE **data, UINT32 *size, void **data_context)
static HRESULT WINAPI dwritefontset1_GetFilteredFonts__(IDWriteFontSet3 *iface, UINT32 const *indices, UINT32 num_indices, IDWriteFontSet1 **fontset)
static ULONG WINAPI dwritefontfamily_AddRef(IDWriteFontFamily2 *iface)
static HRESULT WINAPI dwritefontcollection1_GetFontFamily(IDWriteFontCollection3 *iface, UINT32 index, IDWriteFontFamily1 **ret)
HRESULT create_glyphrunanalysis(const struct glyphrunanalysis_desc *desc, IDWriteGlyphRunAnalysis **ret)
HRESULT create_colorglyphenum(D2D1_POINT_2F origin, const DWRITE_GLYPH_RUN *run, const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr, DWRITE_GLYPH_IMAGE_FORMATS formats, DWRITE_MEASURING_MODE measuring_mode, const DWRITE_MATRIX *transform, unsigned int palette, IDWriteColorGlyphRunEnumerator1 **ret)
static HRESULT WINAPI dwritefontface2_GetPaletteEntries(IDWriteFontFace5 *iface, UINT32 palette_index, UINT32 first_entry_index, UINT32 entry_count, DWRITE_COLOR_F *entries)
static void transform_point(D2D_POINT_2F *point, const DWRITE_MATRIX *m)
static HRESULT WINAPI dwritefontfamily1_GetFontFaceReference(IDWriteFontFamily2 *iface, UINT32 index, IDWriteFontFaceReference **reference)
static void WINAPI dwritefont1_GetPanose(IDWriteFont3 *iface, DWRITE_PANOSE *panose)
static HRESULT WINAPI dwritefontface_QueryInterface(IDWriteFontFace5 *iface, REFIID riid, void **obj)
static ULONG WINAPI dwritefontface_Release(IDWriteFontFace5 *iface)
static DWRITE_FONT_AXIS_ATTRIBUTES WINAPI dwritefontresource_GetFontAxisAttributes(IDWriteFontResource *iface, UINT32 axis)
static UINT32 WINAPI dwritefontface2_GetColorPaletteCount(IDWriteFontFace5 *iface)
static HRESULT create_localfontfilestream(const void *file_ptr, UINT64 size, struct local_cached_stream *entry, IDWriteFontFileStream **ret)
static ULONG WINAPI systemfontfileenumerator_Release(IDWriteFontFileEnumerator *iface)
static struct dwrite_fontfamily * impl_family_from_IDWriteFontList2(IDWriteFontList2 *iface)
static HRESULT WINAPI dwritefontset1_GetFirstFontResources(IDWriteFontSet3 *iface, IDWriteFontSet1 **fontset)
static const IDWriteFontList2Vtbl fontfamilylistvtbl
static HRESULT WINAPI dwritefontcollection2_GetFontSet(IDWriteFontCollection3 *iface, IDWriteFontSet1 **fontset)
static DWRITE_LOCALITY WINAPI dwritefontfamilylist1_GetFontLocality(IDWriteFontList2 *iface, UINT32 index)
static HRESULT WINAPI dwritefontfile_QueryInterface(IDWriteFontFile *iface, REFIID riid, void **obj)
static HRESULT WINAPI fontfacereference_EnqueueFontDownloadRequest(IDWriteFontFaceReference1 *iface)
static UINT16 dwritefontface_get_glyph(struct dwrite_fontface *fontface, unsigned int ch)
static DWRITE_FONT_STRETCH font_extract_stretch(struct list *tokens, DWRITE_FONT_STRETCH stretch, struct name_token *match)
static void WINAPI localfontfilestream_ReleaseFileFragment(IDWriteFontFileStream *iface, void *fragment_context)
static void dwrite_release_font_table(void *context, void *data_context)
static const IDWriteLocalFontFileLoaderVtbl localfontfileloadervtbl
static const IDWriteFontResourceVtbl fontresourcevtbl
static DWRITE_FONT_STYLE WINAPI dwritefontface3_GetStyle(IDWriteFontFace5 *iface)
static HRESULT WINAPI inmemoryfilestream_QueryInterface(IDWriteFontFileStream *iface, REFIID riid, void **obj)
static HRESULT collection_add_font_entry(struct dwrite_fontcollection *collection, const struct fontface_desc *desc)
static DWRITE_LOCALITY WINAPI dwritefontset1_GetFontLocality(IDWriteFontSet3 *iface, UINT32 index)
static HRESULT WINAPI dwritefontset_GetPropertyValues__(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY_ID id, IDWriteStringList **values)
static UINT32 WINAPI dwritefontfamilylist_GetFontCount(IDWriteFontList2 *iface)
static struct dwrite_font_data * addref_font_data(struct dwrite_font_data *data)
static BOOL is_font_acceptable_for_normal(const struct dwrite_font_data *font)
static HRESULT WINAPI fontfacereference_QueryInterface(IDWriteFontFaceReference1 *iface, REFIID riid, void **obj)
static HRESULT WINAPI localfontfilestream_GetLastWriteTime(IDWriteFontFileStream *iface, UINT64 *last_writetime)
static ULONG WINAPI colorglyphenum_Release(IDWriteColorGlyphRunEnumerator1 *iface)
static int fontface_get_design_advance(struct dwrite_fontface *fontface, DWRITE_MEASURING_MODE measuring_mode, float emsize, float ppdip, const DWRITE_MATRIX *transform, UINT16 glyph, BOOL is_sideways)
static UINT16 dwrite_get_font_upem(void *context)
static BOOL WINAPI dwritefontface_reference_Equals(IDWriteFontFaceReference *iface, IDWriteFontFaceReference *ref)
static HRESULT WINAPI dwritefontface1_GetGdiCompatibleMetrics(IDWriteFontFace5 *iface, FLOAT em_size, FLOAT pixels_per_dip, const DWRITE_MATRIX *m, DWRITE_FONT_METRICS1 *metrics)
static BOOL colorglyphenum_build_color_run(struct dwrite_colorglyphenum *glyphenum)
static HRESULT WINAPI dwritefontfamily1_GetFont(IDWriteFontFamily2 *iface, UINT32 index, IDWriteFont3 **font)
static HRESULT init_font_collection(struct dwrite_fontcollection *collection, IDWriteFactory7 *factory, DWRITE_FONT_FAMILY_MODEL family_model, BOOL is_system)
static UINT16 WINAPI dwritefontface_GetGlyphCount(IDWriteFontFace5 *iface)
static HRESULT WINAPI localfontfileloader_GetFilePathFromKey(IDWriteLocalFontFileLoader *iface, void const *key, UINT32 key_size, WCHAR *path, UINT32 length)
static ULONG WINAPI dwritefontfamily_Release(IDWriteFontFamily2 *iface)
static struct dwrite_fontset_builder * impl_from_IDWriteFontSetBuilder2(IDWriteFontSetBuilder2 *iface)
static HRESULT fontcollection_add_family(struct dwrite_fontcollection *collection, struct dwrite_fontfamily_data *family)
static UINT64 dwrite_fontface_get_font_object(struct dwrite_fontface *fontface)
static BOOL WINAPI dwritefontface3_HasCharacter(IDWriteFontFace5 *iface, UINT32 ch)
HRESULT get_system_fontcollection(IDWriteFactory7 *factory, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteFontCollection **collection)
static BOOL WINAPI dwritefontface3_IsGlyphLocal(IDWriteFontFace5 *iface, UINT16 glyph)
static BOOL WINAPI dwritefont1_IsMonospacedFont(IDWriteFont3 *iface)
static HRESULT get_cached_glyph_metrics(struct dwrite_fontface *fontface, UINT16 glyph, DWRITE_GLYPH_METRICS *metrics)
static HRESULT WINAPI dwritefontfamilylist2_GetFontSet(IDWriteFontList2 *iface, IDWriteFontSet1 **fontset)
static HRESULT WINAPI dwritefontface3_GetRecommendedRenderingMode(IDWriteFontFace5 *iface, FLOAT emSize, FLOAT dpiX, FLOAT dpiY, DWRITE_MATRIX const *m, BOOL is_sideways, DWRITE_OUTLINE_THRESHOLD threshold, DWRITE_MEASURING_MODE measuring_mode, IDWriteRenderingParams *params, DWRITE_RENDERING_MODE1 *rendering_mode, DWRITE_GRID_FIT_MODE *gridfit_mode)
static void release_font_data(struct dwrite_font_data *data)
static struct dwrite_fontfamily * impl_from_IDWriteFontFamily2(IDWriteFontFamily2 *iface)
static const IDWriteFontList2Vtbl dwritefontlistvtbl
HRESULT get_fontsig_from_font(IDWriteFont *iface, FONTSIGNATURE *fontsig)
static BOOL match_pattern_list(struct list *tokens, const struct name_pattern *patterns, struct name_token *match)
static void fontface_release_cache_entry(struct cache_entry *entry)
static HRESULT WINAPI dwritefontface_GetFiles(IDWriteFontFace5 *iface, UINT32 *number_of_files, IDWriteFontFile **fontfiles)
static UINT32 WINAPI dwritefontfamily_GetFontCount(IDWriteFontFamily2 *iface)
@ RUNANALYSIS_BOUNDS_READY
@ RUNANALYSIS_BITMAP_READY
@ RUNANALYSIS_USE_TRANSFORM
void init_local_fontfile_loader(void)
void fontface_detach_from_cache(IDWriteFontFace5 *iface)
static HRESULT WINAPI inmemoryfontfileloader_CreateInMemoryFontFileReference(IDWriteInMemoryFontFileLoader *iface, IDWriteFactory *factory, void const *data, UINT32 data_size, IUnknown *owner, IDWriteFontFile **fontfile)
static HRESULT WINAPI dwritefontfamilylist_GetFont(IDWriteFontList2 *iface, UINT32 index, IDWriteFont **font)
static void WINAPI dwritefont1_GetMetrics(IDWriteFont3 *iface, DWRITE_FONT_METRICS1 *metrics)
static HRESULT WINAPI dwritefontset1_GetFontFaceReference(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontFaceReference1 **reference)
static HRESULT WINAPI dwritefontcollection_GetFontFromFontFace(IDWriteFontCollection3 *iface, IDWriteFontFace *face, IDWriteFont **font)
static HRESULT WINAPI systemfontfileenumerator_GetCurrentFontFile(IDWriteFontFileEnumerator *iface, IDWriteFontFile **file)
static HRESULT WINAPI fontfacereference_GetFileTime(IDWriteFontFaceReference1 *iface, FILETIME *writetime)
static HRESULT WINAPI dwritefontresource_CreateFontFace(IDWriteFontResource *iface, DWRITE_FONT_SIMULATIONS simulations, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values, IDWriteFontFace5 **fontface)
static const IDWriteFontFileStreamVtbl inmemoryfilestreamvtbl
static HRESULT WINAPI dwritefontfile_GetReferenceKey(IDWriteFontFile *iface, const void **key, UINT32 *key_size)
void dwrite_fontface_get_glyph_bbox(IDWriteFontFace *iface, struct dwrite_glyphbitmap *bitmap)
static HRESULT WINAPI dwritefontsetbuilder_QueryInterface(IDWriteFontSetBuilder2 *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontface_reference_EnqueueFileFragmentDownloadRequest(IDWriteFontFaceReference *iface, UINT64 offset, UINT64 size)
HRESULT create_font_collection_from_set(IDWriteFactory7 *factory, IDWriteFontSet *fontset, DWRITE_FONT_FAMILY_MODEL family_model, REFGUID riid, void **ret)
static struct dwrite_colorglyphenum * impl_from_IDWriteColorGlyphRunEnumerator1(IDWriteColorGlyphRunEnumerator1 *iface)
static UINT32 WINAPI dwritefontcollection_GetFontFamilyCount(IDWriteFontCollection3 *iface)
static const IDWriteFontFaceReferenceVtbl dwritefontface_reference_vtbl
static HRESULT WINAPI dwritefontfamily_GetFontCollection(IDWriteFontFamily2 *iface, IDWriteFontCollection **collection)
static HRESULT fontset_builder_add_file(struct dwrite_fontset_builder *builder, IDWriteFontFile *file)
static HRESULT WINAPI dwritefont_GetInformationalStrings(IDWriteFont3 *iface, DWRITE_INFORMATIONAL_STRING_ID stringid, IDWriteLocalizedStrings **strings, BOOL *exists)
static UINT32 WINAPI dwritefontresource_GetFontFaceIndex(IDWriteFontResource *iface)
static int fontface_cache_compare(const void *k, const struct wine_rb_entry *e)
static HRESULT WINAPI dwritefontlist_GetFont(IDWriteFontList2 *iface, UINT32 index, IDWriteFont **font)
static BOOL font_apply_differentiation_rules(struct dwrite_font_data *font, WCHAR *familyW, WCHAR *faceW)
static const IID IID_issystemcollection
static HRESULT WINAPI fontfacereference_EnqueueFileFragmentDownloadRequest(IDWriteFontFaceReference1 *iface, UINT64 offset, UINT64 size)
static struct dwrite_fontfacereference * impl_from_IDWriteFontFaceReference1(IDWriteFontFaceReference1 *iface)
static HRESULT WINAPI inmemoryfilestream_GetLastWriteTime(IDWriteFontFileStream *iface, UINT64 *last_writetime)
static UINT32 WINAPI dwritefontresource_GetFontAxisCount(IDWriteFontResource *iface)
static HRESULT WINAPI dwritefontset_FindFontFace(IDWriteFontSet3 *iface, IDWriteFontFace *fontface, UINT32 *index, BOOL *exists)
static void fontname_tokens_to_str(struct list *tokens, WCHAR *nameW)
static HRESULT glyphrunanalysis_render(struct dwrite_glyphrunanalysis *analysis)
static HRESULT WINAPI glyphrunanalysis_GetAlphaBlendParams(IDWriteGlyphRunAnalysis *iface, IDWriteRenderingParams *params, FLOAT *gamma, FLOAT *contrast, FLOAT *cleartypelevel)
static HRESULT WINAPI dwritefontlist_GetFontCollection(IDWriteFontList2 *iface, IDWriteFontCollection **collection)
static HRESULT WINAPI dwritefontsetbuilder1_AddFontFile(IDWriteFontSetBuilder2 *iface, IDWriteFontFile *file)
static HRESULT WINAPI dwritefontfamily2_GetMatchingFonts(IDWriteFontFamily2 *iface, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values, IDWriteFontList2 **fontlist)
static UINT32 WINAPI dwritefontlist_GetFontCount(IDWriteFontList2 *iface)
static HRESULT WINAPI dwritefontface4_GetGlyphImageFormats_(IDWriteFontFace5 *iface, UINT16 glyph, UINT32 ppem_first, UINT32 ppem_last, DWRITE_GLYPH_IMAGE_FORMATS *formats)
static HRESULT WINAPI dwritefontcollection1_GetFontSet(IDWriteFontCollection3 *iface, IDWriteFontSet **fontset)
static void fontface_cache_init(struct dwrite_fontface *fontface)
static HRESULT get_fontface_from_font(struct dwrite_font *font, IDWriteFontFace5 **fontface)
static struct dwrite_fontset_entry * addref_fontset_entry(struct dwrite_fontset_entry *entry)
static HRESULT WINAPI dwritefontface_reference_EnqueueCharacterDownloadRequest(IDWriteFontFaceReference *iface, WCHAR const *chars, UINT32 count)
static HRESULT fontset_create_from_font_data(IDWriteFactory7 *factory, struct dwrite_font_data **fonts, unsigned int count, IDWriteFontSet1 **ret)
static HRESULT WINAPI fontfacereference1_GetFontAxisValues(IDWriteFontFaceReference1 *iface, DWRITE_FONT_AXIS_VALUE *axis_values, UINT32 value_count)
static HRESULT WINAPI dwritefont_CreateFontFace(IDWriteFont3 *iface, IDWriteFontFace **fontface)
static HRESULT WINAPI dwritefontface3_AreCharactersLocal(IDWriteFontFace5 *iface, WCHAR const *text, UINT32 count, BOOL enqueue_if_not, BOOL *are_local)
static HRESULT WINAPI inmemoryfilestream_GetFileSize(IDWriteFontFileStream *iface, UINT64 *size)
static void WINAPI dwritefontface3_GetPanose(IDWriteFontFace5 *iface, DWRITE_PANOSE *panose)
static HRESULT WINAPI localfontfileloader_QueryInterface(IDWriteLocalFontFileLoader *iface, REFIID riid, void **obj)
static BOOL WINAPI dwritefont3_Equals(IDWriteFont3 *iface, IDWriteFont *other)
void get_logfont_from_fontface(IDWriteFontFace *iface, LOGFONTW *lf)
static int trim_spaces(WCHAR *in, WCHAR *ret)
HRESULT create_font_collection(IDWriteFactory7 *factory, IDWriteFontFileEnumerator *enumerator, BOOL is_system, IDWriteFontCollection3 **ret)
static HRESULT WINAPI dwritefontface_reference_CreateFontFace(IDWriteFontFaceReference *iface, IDWriteFontFace3 **ret)
static HRESULT WINAPI inmemoryfilestream_ReadFileFragment(IDWriteFontFileStream *iface, void const **fragment_start, UINT64 offset, UINT64 fragment_size, void **fragment_context)
static HRESULT fontset_builder_add_entry(struct dwrite_fontset_builder *builder, const struct dwrite_fontset_entry_desc *desc)
static UINT64 WINAPI dwritefontface_reference_GetLocalFileSize(IDWriteFontFaceReference *iface)
HRESULT create_font_resource(IDWriteFactory7 *factory, IDWriteFontFile *file, UINT32 face_index, IDWriteFontResource **ret)
static HRESULT WINAPI colorglyphenum_GetCurrentRun(IDWriteColorGlyphRunEnumerator1 *iface, DWRITE_COLOR_GLYPH_RUN const **run)
static HRESULT WINAPI systemfontfileenumerator_MoveNext(IDWriteFontFileEnumerator *iface, BOOL *current)
static const IDWriteFontCollection3Vtbl fontcollectionvtbl
static HRESULT dwrite_fontface_get_glyph_bitmap(struct dwrite_fontface *fontface, DWRITE_RENDERING_MODE1 rendering_mode, unsigned int *is_1bpp, struct dwrite_glyphbitmap *bitmap)
static DWRITE_FONT_STRETCH WINAPI dwritefontface3_GetStretch(IDWriteFontFace5 *iface)
static struct dwrite_inmemory_filestream * inmemory_impl_from_IDWriteFontFileStream(IDWriteFontFileStream *iface)
static HRESULT WINAPI dwritefontresource_GetAxisValueNames(IDWriteFontResource *iface, UINT32 axis, UINT32 axis_value, DWRITE_FONT_AXIS_RANGE *axis_range, IDWriteLocalizedStrings **names)
static BYTE * get_pixel_ptr(BYTE *ptr, DWRITE_TEXTURE_TYPE type, const RECT *runbounds, const RECT *bounds)
static struct dwrite_localfontfileloader local_fontfile_loader
static ULONG WINAPI inmemoryfilestream_AddRef(IDWriteFontFileStream *iface)
static HRESULT WINAPI fontfacereference_CreateFontFace(IDWriteFontFaceReference1 *iface, IDWriteFontFace3 **fontface)
HRESULT create_inmemory_fileloader(IDWriteInMemoryFontFileLoader **ret)
static HRESULT fontfamily_add_font(struct dwrite_fontfamily_data *family_data, struct dwrite_font_data *font_data)
static BOOL WINAPI dwritefontface2_IsColorFont(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefont3_CreateFontFace(IDWriteFont3 *iface, IDWriteFontFace3 **fontface)
static HRESULT WINAPI dwritefontfile_GetLoader(IDWriteFontFile *iface, IDWriteFontFileLoader **loader)
static DWRITE_FONT_STYLE font_extract_style(struct list *tokens, DWRITE_FONT_STYLE style, struct name_token *match)
static BOOL fontcollection_add_replacement(struct dwrite_fontcollection *collection, const WCHAR *target_name, const WCHAR *replacement_name)
static BOOL is_known_weight_value(DWRITE_FONT_WEIGHT weight, WCHAR *nameW)
static ULONG WINAPI localfontfilestream_AddRef(IDWriteFontFileStream *iface)
static void WINAPI dwritefontface4_ReleaseGlyphImageData(IDWriteFontFace5 *iface, void *context)
static HRESULT WINAPI dwritefontlist2_GetFontSet(IDWriteFontList2 *iface, IDWriteFontSet1 **fontset)
static HRESULT init_fontfamily_data(IDWriteLocalizedStrings *familyname, struct dwrite_fontfamily_data **ret)
static HRESULT WINAPI dwritefontface1_GetUnicodeRanges(IDWriteFontFace5 *iface, UINT32 max_count, DWRITE_UNICODE_RANGE *ranges, UINT32 *count)
static HRESULT WINAPI dwritefontcollection_GetFontFamily(IDWriteFontCollection3 *iface, UINT32 index, IDWriteFontFamily **ret)
static const IDWriteFontFileVtbl dwritefontfilevtbl
static void WINAPI inmemoryfilestream_ReleaseFileFragment(IDWriteFontFileStream *iface, void *fragment_context)
struct scriptshaping_cache * fontface_get_shaping_cache(struct dwrite_fontface *fontface)
static HRESULT WINAPI dwritefontset_FindFontFaceReference(IDWriteFontSet3 *iface, IDWriteFontFaceReference *reference, UINT32 *index, BOOL *exists)
static HRESULT WINAPI localfontfilestream_ReadFileFragment(IDWriteFontFileStream *iface, void const **fragment_start, UINT64 offset, UINT64 fragment_size, void **fragment_context)
static UINT32 fontface_get_horz_metric_adjustment(const struct dwrite_fontface *fontface)
static BOOL fontset_entry_is_matching(struct dwrite_fontset_entry *entry, DWRITE_FONT_PROPERTY const *props, unsigned int count)
static HRESULT WINAPI dwritefont3_GetFontFaceReference(IDWriteFont3 *iface, IDWriteFontFaceReference **reference)
HRESULT create_font_file(IDWriteFontFileLoader *loader, const void *reference_key, UINT32 key_size, IDWriteFontFile **ret)
static DWRITE_FONT_SIMULATIONS WINAPI dwritefontface_reference_GetSimulations(IDWriteFontFaceReference *iface)
static HRESULT fontset_builder_create_fontset(IDWriteFactory7 *factory, struct dwrite_fontset_entry **src_entries, unsigned int count, IDWriteFontSet **ret)
static struct dwrite_localfontfileloader * impl_from_IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoader *iface)
static UINT64 WINAPI fontfacereference_GetLocalFileSize(IDWriteFontFaceReference1 *iface)
static const IDWriteFontFamily2Vtbl fontfamilyvtbl
static HRESULT WINAPI dwritefontresource_GetDefaultFontAxisValues(IDWriteFontResource *iface, DWRITE_FONT_AXIS_VALUE *values, UINT32 count)
static HRESULT WINAPI glyphrunanalysis_QueryInterface(IDWriteGlyphRunAnalysis *iface, REFIID riid, void **ppv)
static struct dwrite_localfontfilestream * impl_from_IDWriteFontFileStream(IDWriteFontFileStream *iface)
static HRESULT WINAPI fontfacereference_CreateFontFaceWithSimulations(IDWriteFontFaceReference1 *iface, DWRITE_FONT_SIMULATIONS simulations, IDWriteFontFace3 **ret)
static const IDWriteFontFileStreamVtbl localfontfilestreamvtbl
static HRESULT WINAPI dwritefontfamily_GetMatchingFonts(IDWriteFontFamily2 *iface, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, IDWriteFontList **ret)
static HRESULT WINAPI dwritefontface3_GetInformationalStrings(IDWriteFontFace5 *iface, DWRITE_INFORMATIONAL_STRING_ID stringid, IDWriteLocalizedStrings **strings, BOOL *exists)
static DWRITE_RENDERING_MODE fontface_renderingmode_from_measuringmode(DWRITE_MEASURING_MODE measuring, float ppem, unsigned int gasp)
static HRESULT WINAPI fontfacereference_EnqueueGlyphDownloadRequest(IDWriteFontFaceReference1 *iface, UINT16 const *glyphs, UINT32 count)
struct dwrite_fontface * unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
static const WCHAR * facename_remove_regular_term(WCHAR *facenameW, INT len)
static void WINAPI dwritefontface_ReleaseFontTable(IDWriteFontFace5 *iface, void *table_context)
static const struct dwrite_fonttable * get_fontface_cpal(struct dwrite_fontface *fontface)
static ULONG WINAPI colorglyphenum_AddRef(IDWriteColorGlyphRunEnumerator1 *iface)
static BOOL WINAPI dwritefontface3_IsCharacterLocal(IDWriteFontFace5 *iface, UINT32 ch)
static ULONG WINAPI dwritefontset_AddRef(IDWriteFontSet3 *iface)
static DWRITE_LOCALITY WINAPI dwritefontface_reference_GetLocality(IDWriteFontFaceReference *iface)
static const FLOAT RECOMMENDED_OUTLINE_A_THRESHOLD
static struct dwrite_fontcollection * impl_from_IDWriteFontCollection3(IDWriteFontCollection3 *iface)
static void release_fontfamily_data(struct dwrite_fontfamily_data *data)
static ULONG WINAPI dwritefontset_Release(IDWriteFontSet3 *iface)
static HRESULT WINAPI dwritefontface3_GetFamilyNames(IDWriteFontFace5 *iface, IDWriteLocalizedStrings **names)
static HRESULT WINAPI dwritefontsetbuilder2_AddFontFile(IDWriteFontSetBuilder2 *iface, const WCHAR *filepath)
static DWRITE_FONT_STRETCH WINAPI dwritefont_GetStretch(IDWriteFont3 *iface)
static HRESULT WINAPI dwritefontlist1_GetFontFaceReference(IDWriteFontList2 *iface, UINT32 index, IDWriteFontFaceReference **reference)
static HRESULT WINAPI fontfacereference_EnqueueCharacterDownloadRequest(IDWriteFontFaceReference1 *iface, WCHAR const *chars, UINT32 count)
static DWRITE_LOCALITY WINAPI dwritefont3_GetLocality(IDWriteFont3 *iface)
static HANDLE WINAPI dwritefontset2_GetExpirationEvent(IDWriteFontSet3 *iface)
static const IDWriteFontSet3Vtbl fontsetvtbl
static HRESULT WINAPI dwritefont_HasCharacter(IDWriteFont3 *iface, UINT32 ch, BOOL *exists)
static ULONG WINAPI dwritefontcollection_Release(IDWriteFontCollection3 *iface)
static const FLOAT RECOMMENDED_OUTLINE_AA_THRESHOLD
static DWRITE_FONT_SIMULATIONS WINAPI dwritefont_GetSimulations(IDWriteFont3 *iface)
static struct dwrite_fontfacereference * unsafe_impl_from_IDWriteFontFaceReference(IDWriteFontFaceReference *iface)
static HRESULT WINAPI dwritefont1_GetUnicodeRanges(IDWriteFont3 *iface, UINT32 max_count, DWRITE_UNICODE_RANGE *ranges, UINT32 *count)
static HRESULT WINAPI localfontfileloader_GetFilePathLengthFromKey(IDWriteLocalFontFileLoader *iface, void const *key, UINT32 key_size, UINT32 *length)
static const IDWriteFontFaceReference1Vtbl fontfacereferencevtbl
static HRESULT WINAPI dwritefontface3_GetFaceNames(IDWriteFontFace5 *iface, IDWriteLocalizedStrings **names)
static struct dwrite_font * unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
static HRESULT WINAPI dwritefont_QueryInterface(IDWriteFont3 *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontresource_GetAxisNames(IDWriteFontResource *iface, UINT32 axis, IDWriteLocalizedStrings **names)
static void WINAPI dwritefont_GetMetrics(IDWriteFont3 *iface, DWRITE_FONT_METRICS *metrics)
HRESULT create_fontset_builder(IDWriteFactory7 *factory, IDWriteFontSetBuilder2 **ret)
static BOOL WINAPI dwritefont_IsSymbolFont(IDWriteFont3 *iface)
static HRESULT WINAPI dwritefontset1_GetFontAxisRanges_(IDWriteFontSet3 *iface, UINT32 font_index, DWRITE_FONT_AXIS_RANGE *axis_ranges, UINT32 num_ranges, UINT32 *actual_num_ranges)
static ULONG WINAPI dwritefontlist_Release(IDWriteFontList2 *iface)
static HRESULT WINAPI dwritefontface_GetGlyphIndices(IDWriteFontFace5 *iface, UINT32 const *codepoints, UINT32 count, UINT16 *glyphs)
static const IDWriteInMemoryFontFileLoaderVtbl inmemoryfontfileloadervtbl
static HRESULT init_font_data(const struct fontface_desc *desc, DWRITE_FONT_FAMILY_MODEL family_model, struct dwrite_font_data **ret)
static HRESULT WINAPI dwritefontset_GetFontFaceReference(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontFaceReference **reference)
static const FLOAT RECOMMENDED_NATURAL_PPEM
BOOL(* matching_filter_func)(const struct dwrite_font_data *)
IDWriteFontFileLoader * get_local_fontfile_loader(void)
static HRESULT WINAPI dwritefontface_reference_CreateFontFaceWithSimulations(IDWriteFontFaceReference *iface, DWRITE_FONT_SIMULATIONS simulations, IDWriteFontFace3 **ret)
static HANDLE WINAPI dwritefontcollection3_GetExpirationEvent(IDWriteFontCollection3 *iface)
static struct system_fontfile_enumerator * impl_from_IDWriteFontFileEnumerator(IDWriteFontFileEnumerator *iface)
static HRESULT WINAPI colorglyphenum_MoveNext(IDWriteColorGlyphRunEnumerator1 *iface, BOOL *has_run)
static const IDWriteColorGlyphRunEnumerator1Vtbl colorglyphenumvtbl
static ULONG WINAPI dwritefontlist_AddRef(IDWriteFontList2 *iface)
static const IDWriteFontFileEnumeratorVtbl systemfontfileenumeratorvtbl
static void WINAPI dwritefontface_GetMetrics(IDWriteFontFace5 *iface, DWRITE_FONT_METRICS *metrics)
static struct cache_entry * fontface_get_cache_entry(struct dwrite_fontface *fontface, size_t size, const struct cache_key *key)
static HRESULT create_local_cached_stream(const void *key, UINT32 key_size, struct local_cached_stream **ret)
static HRESULT WINAPI dwritefontface_TryGetFontTable(IDWriteFontFace5 *iface, UINT32 table_tag, const void **table_data, UINT32 *table_size, void **context, BOOL *exists)
HRESULT get_eudc_fontcollection(IDWriteFactory7 *factory, IDWriteFontCollection3 **ret)
static const IDWriteFont3Vtbl dwritefontvtbl
static UINT32 WINAPI fontfacereference_GetFontFaceIndex(IDWriteFontFaceReference1 *iface)
static ULONG WINAPI inmemoryfontfileloader_AddRef(IDWriteInMemoryFontFileLoader *iface)
static FLOAT get_glyph_origin(const struct dwrite_colorglyphenum *glyphenum, UINT32 g)
static BOOL WINAPI dwritefontface_IsSymbolFont(IDWriteFontFace5 *iface)
static UINT32 collection_find_family(struct dwrite_fontcollection *collection, const WCHAR *name)
static struct dwrite_fontface * impl_from_IDWriteFontFaceReference(IDWriteFontFaceReference *iface)
static ULONG WINAPI dwritefont_Release(IDWriteFont3 *iface)
static ULONG WINAPI fontfacereference_Release(IDWriteFontFaceReference1 *iface)
static const IDWriteFontFace5Vtbl dwritefontfacevtbl
static BOOL is_font_acceptable_for_oblique_italic(const struct dwrite_font_data *font)
static ULONG WINAPI dwritefontface_reference_AddRef(IDWriteFontFaceReference *iface)
static HRESULT WINAPI dwritefontset1_GetFilteredFontIndices(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY const *props, UINT32 num_properties, BOOL select_any_range, UINT32 *indices, UINT32 num_indices, UINT32 *actual_num_indices)
static struct dwrite_fontset * unsafe_impl_from_IDWriteFontSet(IDWriteFontSet *iface)
static HRESULT WINAPI dwritefontface_reference_EnqueueFontDownloadRequest(IDWriteFontFaceReference *iface)
static HRESULT WINAPI dwritefontcollection2_GetMatchingFonts(IDWriteFontCollection3 *iface, const WCHAR *familyname, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values, IDWriteFontList2 **fontlist)
static HRESULT WINAPI dwritefontset_GetMatchingFonts(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY const *props, UINT32 count, IDWriteFontSet **filtered_set)
static BOOL is_same_fontfile(IDWriteFontFile *left, IDWriteFontFile *right)
static BOOL dwrite_has_glyph(void *context, unsigned int codepoint)
static BOOL WINAPI dwritefontface5_HasVariations(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefontset1_CreateFontFace(IDWriteFontSet3 *iface, UINT32 index, IDWriteFontFace5 **fontface)
static HRESULT WINAPI dwritefontsetbuilder_AddFontFaceReference(IDWriteFontSetBuilder2 *iface, IDWriteFontFaceReference *reference)
static void WINAPI dwritefontface1_GetMetrics(IDWriteFontFace5 *iface, DWRITE_FONT_METRICS1 *metrics)
static HRESULT WINAPI dwritefontset_GetPropertyValues_(IDWriteFontSet3 *iface, DWRITE_FONT_PROPERTY_ID id, WCHAR const *preferred_locales, IDWriteStringList **values)
static int round_metric(FLOAT metric)
static HRESULT WINAPI dwritefontfamilylist_QueryInterface(IDWriteFontList2 *iface, REFIID riid, void **obj)
static HRESULT fontlist_get_font(const struct dwrite_fontlist *fontlist, unsigned int index, IDWriteFont3 **font)
HRESULT create_fontface(const struct fontface_desc *desc, struct list *cached_list, IDWriteFontFace5 **ret)
static UINT64 WINAPI dwritefontface_reference_GetFileSize(IDWriteFontFaceReference *iface)
static HRESULT WINAPI localfontfileloader_CreateStreamFromKey(IDWriteLocalFontFileLoader *iface, const void *key, UINT32 key_size, IDWriteFontFileStream **ret)
static FLOAT get_font_prop_vec_distance(const struct dwrite_font_propvec *left, const struct dwrite_font_propvec *right)
static HRESULT WINAPI dwritefontface2_GetRecommendedRenderingMode(IDWriteFontFace5 *iface, FLOAT emSize, FLOAT dpiX, FLOAT dpiY, DWRITE_MATRIX const *m, BOOL is_sideways, DWRITE_OUTLINE_THRESHOLD threshold, DWRITE_MEASURING_MODE measuringmode, IDWriteRenderingParams *params, DWRITE_RENDERING_MODE *renderingmode, DWRITE_GRID_FIT_MODE *gridfitmode)
static struct dwrite_fontface * impl_from_IDWriteFontFace5(IDWriteFontFace5 *iface)
static void WINAPI dwritefontface1_GetCaretMetrics(IDWriteFontFace5 *iface, DWRITE_CARET_METRICS *metrics)
static ULONG WINAPI dwritefontfamilylist_AddRef(IDWriteFontList2 *iface)
static ULONG WINAPI localfontfilestream_Release(IDWriteFontFileStream *iface)
static int fontface_get_glyph_advance(struct dwrite_fontface *fontface, float fontsize, unsigned short glyph, unsigned short mode, BOOL *has_contours)
static void fontstrings_get_en_string(IDWriteLocalizedStrings *strings, WCHAR *buffer, UINT32 size)
static HRESULT WINAPI dwritefontface1_GetRecommendedRenderingMode(IDWriteFontFace5 *iface, FLOAT font_emsize, FLOAT dpiX, FLOAT dpiY, const DWRITE_MATRIX *transform, BOOL is_sideways, DWRITE_OUTLINE_THRESHOLD threshold, DWRITE_MEASURING_MODE measuring_mode, DWRITE_RENDERING_MODE *rendering_mode)
HRESULT get_fontsig_from_fontface(IDWriteFontFace *iface, FONTSIGNATURE *fontsig)
static HRESULT WINAPI dwritefontset1_GetFilteredFonts_(IDWriteFontSet3 *iface, DWRITE_FONT_AXIS_RANGE const *axis_ranges, UINT32 num_ranges, BOOL select_any_range, IDWriteFontSet1 **fontset)
static HRESULT WINAPI dwritefontset_GetMatchingFonts_(IDWriteFontSet3 *iface, WCHAR const *family, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STRETCH stretch, DWRITE_FONT_STYLE style, IDWriteFontSet **fontset)
static HRESULT fontset_create_entry(IDWriteFontFile *file, DWRITE_FONT_FACE_TYPE face_type, unsigned int face_index, unsigned int simulations, struct dwrite_fontset_entry **ret)
static HRESULT WINAPI dwritefontresource_GetFontFile(IDWriteFontResource *iface, IDWriteFontFile **fontfile)
static HRESULT WINAPI dwritefontface_reference_QueryInterface(IDWriteFontFaceReference *iface, REFIID riid, void **obj)
static HRESULT WINAPI dwritefontface3_AreGlyphsLocal(IDWriteFontFace5 *iface, UINT16 const *glyphs, UINT32 count, BOOL enqueue_if_not, BOOL *are_local)
static FLOAT get_font_prop_vec_dotproduct(const struct dwrite_font_propvec *left, const struct dwrite_font_propvec *right)
static HRESULT WINAPI systemfontfileenumerator_QueryInterface(IDWriteFontFileEnumerator *iface, REFIID riid, void **obj)
static ULONG WINAPI dwritefontresource_AddRef(IDWriteFontResource *iface)
static const IDWriteFontSetBuilder2Vtbl fontsetbuildervtbl
static void release_inmemory_stream(struct dwrite_inmemory_stream_data *stream)
static HRESULT WINAPI dwritefontfamily_GetFamilyNames(IDWriteFontFamily2 *iface, IDWriteLocalizedStrings **names)
static HRESULT WINAPI colorglyphenum_QueryInterface(IDWriteColorGlyphRunEnumerator1 *iface, REFIID riid, void **ppv)
static ULONG WINAPI dwritefontface_AddRef(IDWriteFontFace5 *iface)
static DWRITE_LOCALITY WINAPI fontfacereference_GetLocality(IDWriteFontFaceReference1 *iface)
static const struct dwrite_fonttable * get_fontface_gasp(struct dwrite_fontface *fontface)
static void fontfamily_add_bold_simulated_face(struct dwrite_fontfamily_data *family)
static HRESULT init_font_data_from_font(const struct dwrite_font_data *src, DWRITE_FONT_SIMULATIONS simulations, const WCHAR *facenameW, struct dwrite_font_data **ret)
static HRESULT WINAPI dwritefontface_GetGdiCompatibleGlyphMetrics(IDWriteFontFace5 *iface, FLOAT emSize, FLOAT ppdip, DWRITE_MATRIX const *m, BOOL use_gdi_natural, UINT16 const *glyphs, UINT32 glyph_count, DWRITE_GLYPH_METRICS *metrics, BOOL is_sideways)
static const struct shaping_font_ops dwrite_font_ops
BOOL is_system_collection(IDWriteFontCollection *collection)
static BOOL dwritefont_has_character(struct dwrite_font *font, UINT32 ch)
static UINT32 WINAPI dwritefontface2_GetPaletteEntryCount(IDWriteFontFace5 *iface)
static HRESULT WINAPI dwritefontlist_QueryInterface(IDWriteFontList2 *iface, REFIID riid, void **obj)
static BOOL WINAPI dwritefontresource_HasVariations(IDWriteFontResource *iface)
static UINT16 dwrite_get_glyph(void *context, unsigned int codepoint)
static HRESULT WINAPI dwritefontface_GetGdiCompatibleMetrics(IDWriteFontFace5 *iface, FLOAT emSize, FLOAT pixels_per_dip, DWRITE_MATRIX const *transform, DWRITE_FONT_METRICS *metrics)
static HRESULT WINAPI dwritefontresource_CreateFontFaceReference(IDWriteFontResource *iface, DWRITE_FONT_SIMULATIONS simulations, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_values, IDWriteFontFaceReference1 **reference)
const void * get_fontface_table(IDWriteFontFace5 *fontface, UINT32 tag, struct dwrite_fonttable *table)
static HRESULT WINAPI dwritefontresource_GetFontAxisRanges(IDWriteFontResource *iface, DWRITE_FONT_AXIS_RANGE *ranges, UINT32 count)
static void fontface_cache_clear(struct dwrite_fontface *fontface)
static IDWriteLocalizedStrings * fontset_entry_get_property(struct dwrite_fontset_entry *entry, DWRITE_FONT_PROPERTY_ID property)
static ULONG WINAPI dwritefontresource_Release(IDWriteFontResource *iface)
static UINT32 WINAPI fontfacereference1_GetFontAxisValueCount(IDWriteFontFaceReference1 *iface)
static struct dwrite_fontfile * impl_from_IDWriteFontFile(IDWriteFontFile *iface)
static DWRITE_FONT_WEIGHT font_extract_weight(struct list *tokens, DWRITE_FONT_WEIGHT weight, struct name_token *match)
static BOOL WINAPI dwritefontface5_Equals(IDWriteFontFace5 *iface, IDWriteFontFace *other)
static HRESULT WINAPI dwritefontface_GetDesignGlyphMetrics(IDWriteFontFace5 *iface, UINT16 const *glyphs, UINT32 glyph_count, DWRITE_GLYPH_METRICS *ret, BOOL is_sideways)
static ULONG WINAPI dwritefontsetbuilder_AddRef(IDWriteFontSetBuilder2 *iface)
static HRESULT WINAPI dwritefont_GetFontFamily(IDWriteFont3 *iface, IDWriteFontFamily **family)
static BOOL WINAPI dwritefont2_IsColorFont(IDWriteFont3 *iface)
static HRESULT WINAPI dwritefontface_reference_GetFileTime(IDWriteFontFaceReference *iface, FILETIME *writetime)
static DWRITE_FONT_FACE_TYPE WINAPI dwritefontface_GetType(IDWriteFontFace5 *iface)
static void matchingfonts_sort(struct dwrite_fontlist *fonts, const struct dwrite_font_propvec *req)
static struct dwrite_fontset * impl_from_IDWriteFontSet3(IDWriteFontSet3 *iface)
static struct dwrite_font * impl_from_IDWriteFont3(IDWriteFont3 *iface)
static BOOL WINAPI dwritefont3_HasCharacter(IDWriteFont3 *iface, UINT32 ch)
static HRESULT set_cached_glyph_metrics(struct dwrite_fontface *fontface, UINT16 glyph, DWRITE_GLYPH_METRICS *metrics)
static HRESULT colorglyphenum_get_current_run(const struct dwrite_colorglyphenum *glyphenum, DWRITE_COLOR_GLYPH_RUN1 const **run)
static NTSTATUS get_glyph_bitmap(void *args)
static NTSTATUS get_glyph_advance(void *args)
static NTSTATUS release_font_object(void *args)
static NTSTATUS get_glyph_bbox(void *args)
static NTSTATUS get_glyph_count(void *args)
static NTSTATUS get_glyph_outline(void *args)
static NTSTATUS create_font_object(void *args)
static NTSTATUS get_design_glyph_metrics(void *args)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define ERROR_NO_MORE_ITEMS
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI GetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP float __cdecl powf(float, float)
_ACRTIMP double __cdecl fabs(double)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
@ DWRITE_RENDERING_MODE_GDI_NATURAL
@ DWRITE_RENDERING_MODE_OUTLINE
@ DWRITE_RENDERING_MODE_GDI_CLASSIC
@ DWRITE_RENDERING_MODE_NATURAL
@ DWRITE_RENDERING_MODE_DEFAULT
@ DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC
@ DWRITE_FONT_FILE_TYPE_UNKNOWN
DWRITE_INFORMATIONAL_STRING_ID
@ DWRITE_INFORMATIONAL_STRING_NONE
@ DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES
@ DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG
@ DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG
@ DWRITE_INFORMATIONAL_STRING_FULL_NAME
@ DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME
@ DWRITE_FONT_FACE_TYPE_UNKNOWN
@ DWRITE_FONT_WEIGHT_EXTRA_BLACK
@ DWRITE_FONT_WEIGHT_SEMI_LIGHT
@ DWRITE_FONT_WEIGHT_NORMAL
@ DWRITE_FONT_WEIGHT_EXTRA_BOLD
@ DWRITE_FONT_WEIGHT_BOLD
@ DWRITE_FONT_WEIGHT_BLACK
@ DWRITE_FONT_WEIGHT_EXTRA_LIGHT
@ DWRITE_FONT_WEIGHT_DEMI_BOLD
@ DWRITE_FONT_WEIGHT_MEDIUM
@ DWRITE_FONT_WEIGHT_LIGHT
@ DWRITE_FONT_WEIGHT_THIN
@ DWRITE_FONT_SIMULATIONS_OBLIQUE
@ DWRITE_FONT_SIMULATIONS_NONE
@ DWRITE_FONT_SIMULATIONS_BOLD
@ DWRITE_FONT_STYLE_NORMAL
@ DWRITE_FONT_STYLE_ITALIC
@ DWRITE_FONT_STYLE_OBLIQUE
@ DWRITE_TEXTURE_ALIASED_1x1
@ DWRITE_TEXTURE_CLEARTYPE_3x1
@ DWRITE_FONT_STRETCH_EXTRA_CONDENSED
@ DWRITE_FONT_STRETCH_EXPANDED
@ DWRITE_FONT_STRETCH_NORMAL
@ DWRITE_FONT_STRETCH_SEMI_EXPANDED
@ DWRITE_FONT_STRETCH_ULTRA_EXPANDED
@ DWRITE_FONT_STRETCH_ULTRA_CONDENSED
@ DWRITE_FONT_STRETCH_CONDENSED
@ DWRITE_FONT_STRETCH_EXTRA_EXPANDED
@ DWRITE_FONT_STRETCH_SEMI_CONDENSED
@ DWRITE_OUTLINE_THRESHOLD_ANTIALIASED
@ DWRITE_GRID_FIT_MODE_DEFAULT
@ DWRITE_GRID_FIT_MODE_DISABLED
@ DWRITE_GRID_FIT_MODE_ENABLED
@ DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC
@ DWRITE_FONT_FAMILY_MODEL_WEIGHT_STRETCH_STYLE
@ DWRITE_FONT_AXIS_TAG_WEIGHT
@ DWRITE_FONT_AXIS_TAG_WIDTH
@ DWRITE_FONT_AXIS_TAG_ITALIC
DWRITE_FONT_AXIS_ATTRIBUTES
struct FONTSIGNATURE FONTSIGNATURE
@ DWRITE_FONT_SOURCE_TYPE_UNKNOWN
@ DWRITE_RENDERING_MODE1_DEFAULT
@ DWRITE_RENDERING_MODE1_ALIASED
@ DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC
@ DWRITE_RENDERING_MODE1_NATURAL
@ DWRITE_RENDERING_MODE1_OUTLINE
@ DWRITE_RENDERING_MODE1_GDI_NATURAL
@ DWRITE_RENDERING_MODE1_GDI_CLASSIC
@ DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED
@ DWRITE_FONT_PROPERTY_ID_NONE
@ DWRITE_FONT_PROPERTY_ID_POSTSCRIPT_NAME
@ DWRITE_FONT_PROPERTY_ID_STYLE
@ DWRITE_FONT_PROPERTY_ID_STRETCH
@ DWRITE_FONT_PROPERTY_ID_WEIGHT
@ DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FACE_NAME
@ DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME
@ DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FAMILY_NAME
@ DWRITE_FONT_PROPERTY_ID_DESIGN_SCRIPT_LANGUAGE_TAG
@ DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FAMILY_NAME
@ DWRITE_FONT_PROPERTY_ID_SEMANTIC_TAG
@ DWRITE_FONT_PROPERTY_ID_SUPPORTED_SCRIPT_LANGUAGE_TAG
@ DWRITE_FONT_PROPERTY_ID_FULL_NAME
@ DWRITE_FONT_PROPERTY_ID_WIN32_FAMILY_NAME
struct fontfacecached * factory_cache_fontface(IDWriteFactory7 *factory, struct list *fontfaces, IDWriteFontFace5 *fontface)
HRESULT opentype_get_cpal_entries(const struct dwrite_fonttable *table, unsigned int palette, unsigned int first_entry_index, unsigned int entry_count, DWRITE_COLOR_F *entries)
#define GLYPH_BLOCK_SHIFT
HRESULT create_system_fontset(IDWriteFactory7 *factory, REFIID riid, void **obj)
HRESULT opentype_get_font_var_axis(const struct file_stream_desc *stream_desc, struct dwrite_var_axis **axis, unsigned int *axis_count)
HRESULT opentype_get_font_info_strings(const struct file_stream_desc *stream_desc, DWRITE_INFORMATIONAL_STRING_ID id, IDWriteLocalizedStrings **strings)
unsigned int opentype_get_cpal_paletteentrycount(const struct dwrite_fonttable *table)
void factory_detach_fontcollection(IDWriteFactory7 *factory, IDWriteFontCollection3 *collection)
HRESULT add_localizedstring(IDWriteLocalizedStrings *, const WCHAR *, const WCHAR *)
BOOL opentype_get_vdmx_size(const struct dwrite_fonttable *table, INT ppem, UINT16 *ascent, UINT16 *descent)
@ GASP_SYMMETRIC_SMOOTHING
HRESULT opentype_get_font_facename(struct file_stream_desc *, WCHAR *, IDWriteLocalizedStrings **)
void set_en_localizedstring(IDWriteLocalizedStrings *, const WCHAR *)
BOOL localizedstrings_contains(IDWriteLocalizedStrings *strings, const WCHAR *str)
HRESULT create_localizedstrings(IDWriteLocalizedStrings **)
static BOOL is_simulation_valid(DWRITE_FONT_SIMULATIONS simulations)
HRESULT opentype_try_get_font_table(const struct file_stream_desc *stream_desc, UINT32 tag, const void **data, void **context, UINT32 *size, BOOL *exists)
void opentype_colr_next_glyph(const struct dwrite_fonttable *table, struct dwrite_colorglyph *color_glyph)
HRESULT opentype_analyze_font(IDWriteFontFileStream *, BOOL *, DWRITE_FONT_FILE_TYPE *, DWRITE_FONT_FACE_TYPE *, UINT32 *)
struct scriptshaping_cache * create_scriptshaping_cache(void *context, const struct shaping_font_ops *font_ops)
BOOL opentype_has_vertical_variants(struct dwrite_fontface *fontface)
void factory_lock(IDWriteFactory7 *factory)
void opentype_get_font_typo_metrics(struct file_stream_desc *stream_desc, unsigned int *ascent, unsigned int *descent)
HRESULT opentype_get_colr_glyph(const struct dwrite_fonttable *table, UINT16 glyph, struct dwrite_colorglyph *color_glyph)
void dwrite_cmap_init(struct dwrite_cmap *cmap, IDWriteFontFile *file, unsigned int face_index, DWRITE_FONT_FACE_TYPE face_type)
HRESULT factory_get_cached_fontface(IDWriteFactory7 *factory, IDWriteFontFile *const *files, UINT32 num_files, DWRITE_FONT_SIMULATIONS simulations, struct list **cache, REFIID riid, void **obj)
void release_scriptshaping_cache(struct scriptshaping_cache *)
UINT16 opentype_cmap_get_glyph(const struct dwrite_cmap *cmap, unsigned int ch)
UINT32 opentype_get_glyph_image_formats(IDWriteFontFace5 *fontface)
HRESULT compute_glyph_origins(DWRITE_GLYPH_RUN const *run, DWRITE_MEASURING_MODE measuring_mode, D2D1_POINT_2F baseline_origin, DWRITE_MATRIX const *transform, D2D1_POINT_2F *origins)
static const char * debugstr_matrix(const DWRITE_MATRIX *m)
unsigned int opentype_get_gasp_flags(const struct dwrite_fonttable *gasp, float emsize)
HRESULT clone_localizedstrings(IDWriteLocalizedStrings *iface, IDWriteLocalizedStrings **strings)
static BOOL dwrite_array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
HRESULT opentype_get_font_familyname(const struct file_stream_desc *desc, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteLocalizedStrings **names)
HRESULT opentype_cmap_get_unicode_ranges(const struct dwrite_cmap *cmap, unsigned int max_count, DWRITE_UNICODE_RANGE *ranges, unsigned int *count)
unsigned int opentype_get_cpal_palettecount(const struct dwrite_fonttable *table)
HRESULT opentype_get_kerning_pairs(struct dwrite_fontface *fontface, unsigned int count, const UINT16 *glyphs, INT32 *values)
BOOL opentype_has_kerning_pairs(struct dwrite_fontface *fontface)
static const MATRIX_2X2 identity_2x2
void factory_unlock(IDWriteFactory7 *factory)
void dwrite_cmap_release(struct dwrite_cmap *cmap)
void opentype_get_font_properties(const struct file_stream_desc *stream_desc, struct dwrite_font_props *props)
HRESULT opentype_get_vertical_glyph_variants(struct dwrite_fontface *fontface, unsigned int glyph_count, const UINT16 *nominal_glyphs, UINT16 *glyphs)
void opentype_get_font_metrics(struct file_stream_desc *, DWRITE_FONT_METRICS1 *, DWRITE_CARET_METRICS *)
Character const *const size_t const max_count
static const FxOffsetAndName offsets[]
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLuint GLuint GLsizei GLenum const GLvoid * indices
GLuint GLenum GLenum transform
GLenum GLenum GLenum GLenum GLenum scale
GLsizei const GLchar *const * strings
GLenum GLuint GLint GLenum face
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLboolean GLenum GLenum GLvoid * values
GLuint GLsizei GLsizei * length
GLsizei GLenum GLboolean sink
GLenum GLenum GLenum GLenum mapping
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const WCHAR styleW[]
#define InterlockedCompareExchange64
int const JOCTET unsigned int datalen
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
struct task_struct * current
D3D11_SHADER_VARIABLE_DESC desc
static const BYTE masks[8]
static const WCHAR pathW[]
static float(__cdecl *square_half_float)(float x
#define IsEqualIID(riid1, riid2)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI UnionRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
static unsigned __int64 next
static __inline const char * debugstr_fourcc(unsigned int cc)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
#define LIST_FOR_EACH_ENTRY_SAFE_REV(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_tail(const struct list *list)
#define WINE_RB_ENTRY_VALUE
FD_TYPE file_type(FDSC **curr, char *fixed)
wchar_t const *const size_t const buffer_size
DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat
DWRITE_MEASURING_MODE measuringMode
DWRITE_GLYPH_RUN glyphRun
DWRITE_GLYPH_RUN_DESCRIPTION * glyphRunDescription
DWRITE_FONT_AXIS_TAG axisTag
BOOL hasTypographicMetrics
IDWriteFontFace * fontFace
DWRITE_GLYPH_OFFSET const * glyphOffsets
UINT16 const * glyphIndices
FLOAT const * glyphAdvances
unsigned int has_contours
IDWriteColorGlyphRunEnumerator1 IDWriteColorGlyphRunEnumerator1_iface
DWRITE_COLOR_GLYPH_RUN1 colorrun
DWRITE_GLYPH_OFFSET * color_offsets
DWRITE_GLYPH_OFFSET * offsets
struct dwrite_fonttable colr
struct dwrite_colorglyph * glyphs
IDWriteFontFace5 * fontface
DWRITE_FONT_FACE_TYPE face_type
DWRITE_FONT_WEIGHT weight
unsigned int bold_sim_tested
DWRITE_FONT_STRETCH stretch
IDWriteLocalizedStrings * family_names
DWRITE_FONT_METRICS1 metrics
unsigned int oblique_sim_tested
IDWriteLocalizedStrings * info_strings[DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG+1]
IDWriteLocalizedStrings * names
struct dwrite_font_propvec propvec
DWRITE_FONT_AXIS_VALUE axis[3]
struct dwrite_fontfamily * family
IDWriteFont3 IDWriteFont3_iface
struct dwrite_font_data * data
struct dwrite_fontfamily_data ** family_data
IDWriteFactory7 * factory
IDWriteFontCollection3 IDWriteFontCollection3_iface
DWRITE_FONT_FAMILY_MODEL family_model
UINT32 glyph_image_formats
DWRITE_FONT_METRICS1 metrics
struct dwrite_fontface::@309 typo_metrics
DWRITE_GLYPH_METRICS * glyphs[GLYPH_MAX/GLYPH_BLOCK_SIZE]
DWRITE_FONT_WEIGHT weight
IDWriteFontFaceReference IDWriteFontFaceReference_iface
IDWriteLocalizedStrings * info_strings[DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG+1]
struct scriptshaping_cache * shaping_cache
DWRITE_CARET_METRICS caret
struct dwrite_fonttable kern
struct dwrite_fonttable cpal
struct dwrite_fonttable gasp
IDWriteFactory7 * factory
DWRITE_FONT_STRETCH stretch
struct dwrite_fonttable colr
struct fontfacecached * cached
IDWriteFontFace5 IDWriteFontFace5_iface
p_dwrite_fontface_get_font_object get_font_object
IDWriteLocalizedStrings * family_names
IDWriteFontFileStream * stream
DWRITE_FONT_FACE_TYPE type
IDWriteLocalizedStrings * names
struct dwrite_fontface::@308 cache
struct dwrite_fonttable vdmx
IDWriteFontFaceReference1 IDWriteFontFaceReference1_iface
IDWriteFactory7 * factory
DWRITE_FONT_AXIS_VALUE * axis_values
unsigned int has_oblique_face
unsigned int has_italic_face
struct dwrite_font_data ** fonts
IDWriteLocalizedStrings * familyname
unsigned int has_normal_face
IDWriteFontFamily2 IDWriteFontFamily2_iface
struct dwrite_fontcollection * collection
struct dwrite_fontfamily_data * data
IDWriteFontList2 IDWriteFontList2_iface
IDWriteFontFileLoader * loader
IDWriteFontFileStream * stream
IDWriteFontFile IDWriteFontFile_iface
struct dwrite_font_data ** fonts
IDWriteFontList2 IDWriteFontList2_iface
struct dwrite_fontfamily * family
IDWriteFontResource IDWriteFontResource_iface
struct dwrite_var_axis * axis
IDWriteFactory7 * factory
IDWriteFontSetBuilder2 IDWriteFontSetBuilder2_iface
IDWriteFactory7 * factory
struct dwrite_fontset_entry ** entries
DWRITE_FONT_FACE_TYPE face_type
IDWriteLocalizedStrings * props[DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME+1]
struct dwrite_fontset_entry_desc desc
IDWriteFactory7 * factory
struct dwrite_fontset_entry ** entries
IDWriteFontSet3 IDWriteFontSet3_iface
DWRITE_RENDERING_MODE1 rendering_mode
IDWriteGlyphRunAnalysis IDWriteGlyphRunAnalysis_iface
UINT32 max_glyph_bitmap_size
DWRITE_TEXTURE_TYPE texture_type
struct dwrite_inmemory_stream_data ** streams
IDWriteInMemoryFontFileLoader IDWriteInMemoryFontFileLoader_iface
IDWriteFontFileStream IDWriteFontFileStream_iface
struct dwrite_inmemory_stream_data * data
IDWriteLocalFontFileLoader IDWriteLocalFontFileLoader_iface
IDWriteFontFileStream IDWriteFontFileStream_iface
struct local_cached_stream * entry
struct dwrite_outline::@311 points
struct dwrite_outline::@310 tags
DWRITE_FONT_FACE_TYPE face_type
IDWriteFontFileStream * stream
IDWriteFactory7 * factory
DWRITE_FONT_FACE_TYPE face_type
IDWriteFontFileStream * stream
struct dwrite_outline * outline
DWRITE_FONT_WEIGHT weight
IDWriteFontFileStream * stream
struct local_refkey * key
IDWriteFontFileEnumerator IDWriteFontFileEnumerator_iface
IDWriteFactory7 * factory
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
T1_FIELD_DICT_FONTDICT family_name
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2736 u
static const WCHAR props[]
DWORD WINAPI GetLastError(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define E_NOT_SUFFICIENT_BUFFER
#define DWRITE_E_UNSUPPORTEDOPERATION
#define DWRITE_E_FILEFORMAT
#define E_NOT_VALID_STATE
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
static unsigned int block