27#ifdef FT_OPTION_AUTOFIT2
35#ifdef AF_CONFIG_OPTION_USE_WARPER
47#define FT_COMPONENT aflatin2
100 metrics->root.style_class->standard_char );
101 if ( glyph_index == 0 )
105 if (
error ||
face->glyph->outline.n_points <= 0 )
131 error = af_latin2_hints_compute_segments(
hints,
136 af_latin2_hints_link_segments(
hints,
142 for ( ; seg <
limit; seg++ )
157 axis->
widths[num_widths++].org = dist;
161 af_sort_widths( num_widths, axis->
widths );
195#define AF_LATIN_MAX_TEST_CHARACTERS 12
198 static const char af_latin2_blue_chars[AF_LATIN_MAX_BLUES]
199 [AF_LATIN_MAX_TEST_CHARACTERS+1] =
214 FT_Pos flats [AF_LATIN_MAX_TEST_CHARACTERS];
215 FT_Pos rounds[AF_LATIN_MAX_TEST_CHARACTERS];
230 "======================\n\n" ));
232 for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ )
234 const char*
p = af_latin2_blue_chars[bb];
235 const char*
limit =
p + AF_LATIN_MAX_TEST_CHARACTERS;
248 FT_Int best_point, best_y, best_first, best_last;
255 if ( glyph_index == 0 )
277 FT_Int old_best_point = best_point;
292 if ( best_point < 0 ||
points[pp].
y > best_y )
301 if ( best_point < 0 ||
points[pp].
y < best_y )
308 if ( best_point != old_best_point )
320 if ( best_point >= 0 )
334 if ( prev < best_first )
346 }
while (
start != best_point );
351 if (
next > best_last )
361 }
while (
end != best_point );
372 rounds[num_rounds++] = best_y;
374 flats[num_flats++] = best_y;
377 if ( num_flats == 0 && num_rounds == 0 )
395 blue_shoot = &
blue->shoot.org;
399 if ( num_flats == 0 )
402 *blue_shoot = rounds[num_rounds / 2];
404 else if ( num_rounds == 0 )
407 *blue_shoot = flats[num_flats / 2];
411 *blue_ref = flats[num_flats / 2];
412 *blue_shoot = rounds[num_rounds / 2];
418 if ( *blue_shoot != *blue_ref )
421 FT_Pos shoot = *blue_shoot;
428 *blue_shoot = ( shoot +
ref ) / 2;
430 FT_TRACE5((
" [overshoot smaller than reference,"
431 " taking mean value]\n" ));
448 " overshoot = %ld\n",
449 *blue_ref, *blue_shoot ));
461 FT_Bool started = 0, same_width = 1;
467 for (
i = 0x30;
i <= 0x39;
i++ )
473 if ( glyph_index == 0 )
498 metrics->root.digits_have_same_width = same_width;
513 FT_ENCODING_APPLE_ROMAN,
514 FT_ENCODING_ADOBE_STANDARD,
515 FT_ENCODING_ADOBE_LATIN_1,
523 for ( ee = 0; latin_encodings[ee] != FT_ENCODING_NONE; ee++ )
601 ppem =
metrics->root.scaler.face->size->metrics.x_ppem;
612 fitted = ( scaled + threshold ) & ~63;
615 if ( scaled != fitted )
619 " fitted = %.2g, scaling = %.4g\n",
620 scaled / 64.0, fitted / 64.0,
621 ( fitted * 1.0 ) / scaled ));
633 metrics->root.scaler.x_delta = delta;
638 metrics->root.scaler.y_delta = delta;
669 blue->flags &= ~AF_LATIN_BLUE_ACTIVE;
673 if ( dist <= 48 && dist >= -48 )
677 delta1 =
blue->shoot.org -
blue->ref.org;
686 else if ( delta2 < 64 )
687 delta2 = 32 + ( ( ( delta2 - 32 ) + 16 ) & ~31 );
695 blue->shoot.fit =
blue->ref.fit + delta2;
697 FT_TRACE5((
">> activating blue zone %d:"
698 " ref.cur=%.2g ref.fit=%.2g"
699 " shoot.cur=%.2g shoot.fit=%.2g\n",
700 nn,
blue->ref.cur / 64.0,
blue->ref.fit / 64.0,
701 blue->shoot.cur / 64.0,
blue->shoot.fit / 64.0 ));
768 segment_dir = major_dir;
799 for ( ; contour < contour_limit; contour++ )
833 FT_Pos min_u, min_v, max_u, max_v;
840 min_u = max_u =
point->u;
841 min_v = max_v =
point->v;
849 if (
point->u < min_u )
852 if (
point->u > max_u )
856 if (
point->v < min_v )
859 if (
point->v > max_v )
871 segment->
pos = (
FT_Short)( ( min_u + max_u ) >> 1 );
885 segment->
flags &= ~AF_EDGE_ROUND;
927 for ( segment = segments; segment < segments_end; segment++ )
936 if ( first_v < last_v )
939 if (
p->v < first_v )
941 ( ( first_v -
p->v ) >> 1 ) );
946 ( (
p->v - last_v ) >> 1 ) );
951 if (
p->v > first_v )
953 ( (
p->v - first_v ) >> 1 ) );
958 ( ( last_v -
p->v ) >> 1 ) );
963#ifdef AF_SORT_SEGMENTS
972 for ( ii = 0; ii <
count; ii++ )
974 if ( segments[ii].
dir > 0 )
976 for ( jj = ii + 1; jj <
count; jj++ )
978 if ( segments[jj].
dir < 0 )
984 segments[ii] = segments[jj];
995 axis->mid_segments = ii;
1011#ifdef AF_SORT_SEGMENTS
1012 AF_Segment segment_mid = segments + axis->mid_segments;
1014 FT_Pos len_threshold, len_score;
1019 if ( len_threshold == 0 )
1024#ifdef AF_SORT_SEGMENTS
1025 for ( seg1 = segments; seg1 < segment_mid; seg1++ )
1030 for ( seg2 = segment_mid; seg2 < segment_limit; seg2++ )
1033 for ( seg1 = segments; seg1 < segment_limit; seg1++ )
1038 for ( seg2 = segments; seg2 < segment_limit; seg2++ )
1039 if ( seg1->
dir + seg2->
dir == 0 && seg2->
pos > seg1->
pos )
1044 FT_Pos dist = pos2 - pos1;
1056 if ( min < seg2->min_coord )
1063 if (
len >= len_threshold )
1065 score = dist + len_score /
len;
1066 if ( score < seg1->score )
1068 seg1->
score = score;
1072 if ( score < seg2->score )
1074 seg2->
score = score;
1086 for ( seg1 = segments; seg1 < segment_limit; seg1++ )
1092 if ( seg2->
link != seg1 )
1117 FT_Pos edge_distance_threshold;
1118 FT_Pos segment_length_threshold;
1146 segment_length_threshold = 0;
1166 if ( edge_distance_threshold > 64 / 4 )
1167 edge_distance_threshold = 64 / 4;
1169 edge_distance_threshold =
FT_DivFix( edge_distance_threshold,
1172 for ( seg = segments; seg < segment_limit; seg++ )
1178 if ( seg->
height < segment_length_threshold )
1196 else if ( 2*seg->
height < 3 * segment_length_threshold )
1201 for ( ee = 0; ee < axis->
num_edges; ee++ )
1211 if ( dist < edge_distance_threshold && edge->
dir == seg->
dir )
1278 for ( edge = edges; edge < edge_limit; edge++ )
1287 }
while ( seg != edge->
first );
1291 for ( edge = edges; edge < edge_limit; edge++ )
1316 if ( seg->
dir == up_dir )
1340 edge2 = edge->
serif;
1349 edge_delta = edge->
fpos - edge2->
fpos;
1350 if ( edge_delta < 0 )
1351 edge_delta = -edge_delta;
1353 seg_delta = seg->
pos - seg2->
pos;
1354 if ( seg_delta < 0 )
1355 seg_delta = -seg_delta;
1357 if ( seg_delta < edge_delta )
1365 edge->
serif = edge2;
1374 }
while ( seg != edge->
first );
1379 if ( is_round > 0 && is_round >= is_straight )
1389 else if ( ups < downs )
1392 else if ( ups == downs )
1417 error = af_latin2_hints_compute_segments(
hints, dim );
1420 af_latin2_hints_link_segments(
hints, dim );
1422 error = af_latin2_hints_compute_edges(
hints, dim );
1443 if ( best_dist0 > 64 / 2 )
1444 best_dist0 = 64 / 2;
1450 for ( ; edge < edge_limit; edge++ )
1454 FT_Pos best_dist = best_dist0;
1456 for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ )
1459 FT_Bool is_top_blue, is_major_dir;
1476 if ( is_top_blue ^ is_major_dir )
1494 if ( dist < best_dist )
1509 if ( is_top_blue ^ is_under_ref )
1512 dist = edge->
fpos -
blue->shoot.org;
1517 if ( dist < best_dist )
1520 best_blue = &
blue->shoot;
1539 FT_UInt32 scaler_flags, other_flags;
1562 scaler_flags =
hints->scaler_flags;
1596#ifdef AF_CONFIG_OPTION_USE_WARPER
1598 if ( !
metrics->root.globals->module->warping )
1602 hints->scaler_flags = scaler_flags;
1603 hints->other_flags = other_flags;
1621 af_latin2_snap_width(
AF_Width widths,
1626 FT_Pos best = 64 + 32 + 2;
1652 if (
width < scaled + 48 )
1657 if (
width > scaled - 48 )
1700 if ( ( stem_flags &
AF_EDGE_SERIF ) && vertical && ( dist < 3 * 64 ) )
1709 else if ( dist < 56 )
1712 if ( axis->width_count > 0 )
1718 if ( axis->width_count > 0 )
1720 delta = dist - axis->widths[0].cur;
1727 dist = axis->widths[0].cur;
1735 if ( dist < 3 * 64 )
1743 else if ( delta < 32 )
1746 else if ( delta < 54 )
1753 dist = ( dist + 32 ) & ~63;
1762 dist = af_latin2_snap_width( axis->widths, axis->width_count, dist );
1770 dist = ( dist + 16 ) & ~63;
1784 dist = ( dist + 32 ) & ~63;
1793 dist = ( dist + 64 ) >> 1;
1795 else if ( dist < 128 )
1806 dist = ( dist + 22 ) & ~63;
1807 delta = dist - org_dist;
1815 dist = ( dist + 64 ) >> 1;
1820 dist = ( dist + 32 ) & ~63;
1843 FT_Pos fitted_width = af_latin2_compute_stem_width(
hints, dim, dist,
1848 stem_edge->
pos = base_edge->
pos + fitted_width;
1850 FT_TRACE5((
"LINK: edge %d (opos=%.2f) linked to (%.2f), "
1851 "dist was %.2f, now %.2f\n",
1852 stem_edge-
hints->axis[dim].edges, stem_edge->
opos / 64.0,
1853 stem_edge->
pos / 64.0, dist / 64.0, fitted_width / 64.0 ));
1893 FT_TRACE5((
"==== hinting %s edges =====\n",
1901 for ( edge = edges; edge < edge_limit; edge++ )
1928 FT_TRACE5((
"BLUE: edge %d (opos=%.2f) snapped to (%.2f), "
1930 edge1-edges, edge1->
opos / 64.0,
blue->fit / 64.0,
1931 edge1->
pos / 64.0 ));
1938 af_latin2_align_linked_edge(
hints, dim, edge1, edge2 );
1946 anchor_drift = ( anchor->
pos - anchor->
opos );
1948 anchor_drift = ( anchor_drift +
1949 ( edge2->
pos - edge2->
opos ) ) >> 1;
1956 for ( edge = edges; edge < edge_limit; edge++ )
1977 FT_TRACE5((
"ASSERTION FAILED for edge %d\n", edge2-edges ));
1979 af_latin2_align_linked_edge(
hints, dim, edge2, edge );
1986 FT_Pos org_len, org_center, cur_len;
1990 org_len = edge2->
opos - edge->
opos;
1991 cur_len = af_latin2_compute_stem_width(
hints, dim, org_len,
1994 if ( cur_len <= 64 )
2004 org_center = edge->
opos + ( org_len >> 1 );
2008 error1 = org_center - ( cur_pos1 - u_off );
2012 error2 = org_center - ( cur_pos1 + d_off );
2021 edge->
pos = cur_pos1 - cur_len / 2;
2022 edge2->
pos = edge->
pos + cur_len;
2027 FT_TRACE5((
"ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f)"
2028 " snapped to (%.2f) (%.2f)\n",
2029 edge-edges, edge->
opos / 64.0,
2030 edge2-edges, edge2->
opos / 64.0,
2031 edge->
pos / 64.0, edge2->
pos / 64.0 ));
2036 af_latin2_align_linked_edge(
hints, dim, edge, edge2 );
2040 anchor_drift = ( ( anchor->
pos - anchor->
opos ) +
2041 ( edge2->
pos - edge2->
opos ) ) >> 1;
2043 FT_TRACE5((
"DRIFT: %.2f\n", anchor_drift/64.0 ));
2047 FT_Pos org_pos, org_len, org_center, cur_center, cur_len;
2048 FT_Pos org_left, org_right;
2051 org_pos = edge->
opos + anchor_drift;
2052 org_len = edge2->
opos - edge->
opos;
2053 org_center = org_pos + ( org_len >> 1 );
2055 cur_len = af_latin2_compute_stem_width(
hints, dim, org_len,
2059 org_left = org_pos + ( ( org_len - cur_len ) >> 1 );
2060 org_right = org_pos + ( ( org_len + cur_len ) >> 1 );
2062 FT_TRACE5((
"ALIGN: left=%.2f right=%.2f ",
2063 org_left / 64.0, org_right / 64.0 ));
2064 cur_center = org_center;
2069 edge->
pos = edge2->
pos - cur_len;
2077 FT_Pos displacements[6], scores[6],
org, fit, delta;
2094 if ( cur_len <= 96 )
2102 FT_Pos frac_left = org_left & 63;
2103 FT_Pos frac_right = org_right & 63;
2105 if ( frac_left >= 22 && frac_left <= 42 &&
2106 frac_right >= 22 && frac_right <= 42 )
2109 fit = (
org <= 32 ) ? 16 : 48;
2112 scores[
count++] = delta;
2113 FT_TRACE5((
"dispA=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2116 fit = (
org <= 32 ) ? 16 : 48;
2119 scores[
count++] = delta;
2120 FT_TRACE5((
"dispB=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2129 scores[
count++] = delta;
2130 FT_TRACE5((
"dispC=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2137 scores[
count++] = delta;
2138 FT_TRACE5((
"dispD=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2142 FT_Pos best_score = scores[0];
2143 FT_Pos best_disp = displacements[0];
2146 for ( nn = 1; nn <
count; nn++ )
2148 if ( scores[nn] < best_score )
2150 best_score = scores[nn];
2151 best_disp = displacements[nn];
2155 cur_center = org_center + best_disp;
2161 edge->
pos = cur_center - ( cur_len >> 1 );
2162 edge2->
pos = edge->
pos + cur_len;
2164 FT_TRACE5((
"STEM1: %d (opos=%.2f) to %d (opos=%.2f)"
2165 " snapped to (%.2f) and (%.2f),"
2166 " org_len=%.2f cur_len=%.2f\n",
2167 edge-edges, edge->
opos / 64.0,
2168 edge2-edges, edge2->
opos / 64.0,
2169 edge->
pos / 64.0, edge2->
pos / 64.0,
2170 org_len / 64.0, cur_len / 64.0 ));
2175 if ( edge > edges && edge->
pos < edge[-1].pos )
2177 FT_TRACE5((
"BOUND: %d (pos=%.2f) to (%.2f)\n",
2178 edge-edges, edge->
pos / 64.0, edge[-1].pos / 64.0 ));
2179 edge->
pos = edge[-1].
pos;
2201 FT_Int n_edges = edge_limit - edges;
2226 span = dist1 - dist2;
2232 delta = edge3->
pos - ( 2 * edge2->
pos - edge1->
pos );
2233 edge3->
pos -= delta;
2238 if ( n_edges == 12 )
2240 ( edges + 8 )->
pos -= delta;
2241 ( edges + 11 )->
pos -= delta;
2252 if ( has_serifs || !anchor )
2258 for ( edge = edges; edge < edge_limit; edge++ )
2275 if ( delta < 64 + 16 )
2277 af_latin2_align_serif_edge(
hints, edge->
serif, edge );
2278 FT_TRACE5((
"SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f)"
2279 " aligned to (%.2f)\n",
2280 edge-edges, edge->
opos / 64.0,
2282 edge->
pos / 64.0 ));
2286 FT_TRACE5((
"SERIF_ANCHOR: edge %d (opos=%.2f)"
2287 " snapped to (%.2f)\n",
2288 edge-edges, edge->
opos / 64.0, edge->
pos / 64.0 ));
2306 after < edge_limit && after > edge )
2311 edge->pos =
before->pos +
2315 FT_TRACE5((
"SERIF_LINK1: edge %d (opos=%.2f) snapped to (%.2f)"
2316 " from %d (opos=%.2f)\n",
2317 edge-edges, edge->opos / 64.0, edge->pos / 64.0,
2322 edge->pos = anchor->
pos +
2323 ( ( edge->opos - anchor->
opos + 16 ) & ~31 );
2325 FT_TRACE5((
"SERIF_LINK2: edge %d (opos=%.2f)"
2326 " snapped to (%.2f)\n",
2327 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2333 if ( edge > edges && edge->pos < edge[-1].pos )
2334 edge->pos = edge[-1].pos;
2336 if ( edge + 1 < edge_limit &&
2338 edge->pos > edge[1].pos )
2339 edge->pos = edge[1].pos;
2346 af_latin2_hints_apply(
FT_UInt glyph_index,
2381#ifdef AF_CONFIG_OPTION_USE_WARPER
2391 af_warper_compute( &warper,
hints, dim, &
scale, &delta );
2392 af_glyph_hints_scale_dim(
hints, dim,
scale, delta );
2423 af_latin2_writing_system_class,
2425 AF_WRITING_SYSTEM_LATIN2,
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
af_sort_pos(FT_UInt count, FT_Pos *table)
#define AF_PROP_INCREASE_X_HEIGHT_MIN
af_axis_hints_new_edge(AF_AxisHints axis, FT_Int fpos, AF_Direction dir, FT_Bool top_to_bottom_hinting, FT_Memory memory, AF_Edge *anedge)
af_glyph_hints_done(AF_GlyphHints hints)
af_glyph_hints_align_edge_points(AF_GlyphHints hints, AF_Dimension dim)
af_glyph_hints_save(AF_GlyphHints hints, FT_Outline *outline)
af_glyph_hints_rescale(AF_GlyphHints hints, AF_StyleMetrics metrics)
af_axis_hints_new_segment(AF_AxisHints axis, FT_Memory memory, AF_Segment *asegment)
af_glyph_hints_reload(AF_GlyphHints hints, FT_Outline *outline)
af_glyph_hints_align_strong_points(AF_GlyphHints hints, AF_Dimension dim)
af_glyph_hints_align_weak_points(AF_GlyphHints hints, AF_Dimension dim)
af_glyph_hints_init(AF_GlyphHints hints, FT_Memory memory)
#define AF_HINTS_DO_BLUES(h)
#define AF_HINTS_DO_WARP(h)
#define AF_HINTS_DO_HORIZONTAL(h)
FT_BEGIN_HEADER enum AF_Dimension_ AF_Dimension
enum AF_Direction_ AF_Direction
#define AF_HINTS_DO_VERTICAL(h)
#define AF_LATIN_IS_X_HEIGHT_BLUE(b)
#define AF_LATIN_IS_TOP_BLUE(b)
#define AF_LATIN_HINTS_STEM_ADJUST
#define AF_LATIN_HINTS_DO_MONO(h)
#define AF_LATIN_MAX_WIDTHS
#define AF_LATIN_HINTS_VERT_SNAP
#define AF_LATIN_HINTS_MONO
#define AF_LATIN_HINTS_DO_VERT_SNAP(h)
#define AF_LATIN_CONSTANT(metrics, c)
struct AF_LatinMetricsRec_ * AF_LatinMetrics
#define AF_LATIN_BLUE_TOP
#define AF_LATIN_HINTS_DO_HORZ_SNAP(h)
#define AF_LATIN_HINTS_DO_STEM_ADJUST(h)
#define AF_LATIN_BLUE_ACTIVE
#define AF_LATIN_BLUE_ADJUSTMENT
#define AF_LATIN_HINTS_HORZ_SNAP
#define AF_SCALER_FLAG_NO_WARPER
FT_Error(* AF_WritingSystem_InitMetricsFunc)(AF_StyleMetrics metrics, FT_Face face)
void(* AF_WritingSystem_ScaleMetricsFunc)(AF_StyleMetrics metrics, AF_Scaler scaler)
FT_BEGIN_HEADER struct AF_WidthRec_ * AF_Width
void(* AF_WritingSystem_DoneMetricsFunc)(AF_StyleMetrics metrics)
FT_Error(* AF_WritingSystem_InitHintsFunc)(AF_GlyphHints hints, AF_StyleMetrics metrics)
#define AF_DEFINE_WRITING_SYSTEM_CLASS( writing_system_class, system, m_size, m_init, m_scale, m_done, m_stdw, h_init, h_apply)
FT_Error(* AF_WritingSystem_ApplyHintsFunc)(FT_UInt glyph_index, AF_GlyphHints hints, FT_Outline *outline, AF_StyleMetrics metrics)
#define AF_SCALER_FLAG_NO_HORIZONTAL
void(* AF_WritingSystem_GetStdWidthsFunc)(AF_StyleMetrics metrics, FT_Pos *stdHW, FT_Pos *stdVW)
FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags)
#define FT_STYLE_FLAG_ITALIC
#define FT_LOAD_IGNORE_TRANSFORM
enum FT_Render_Mode_ FT_Render_Mode
#define FT_LOAD_NO_HINTING
FT_DivFix(FT_Long a, FT_Long b)
FT_Get_Char_Index(FT_Face face, FT_ULong charcode)
FT_Select_Charmap(FT_Face face, FT_Encoding encoding)
FT_Set_Charmap(FT_Face face, FT_CharMap charmap)
enum FT_Encoding_ FT_Encoding
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
FT_MulFix(FT_Long a, FT_Long b)
FT_Get_Advance(FT_Face face, FT_UInt gindex, FT_Int32 load_flags, FT_Fixed *padvance)
#define FT_ASSERT(condition)
#define FT_TRACE5(varformat)
#define FT_CURVE_TAG(flag)
FT_BEGIN_HEADER typedef signed long FT_Pos
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
FT_BEGIN_HEADER typedef unsigned char FT_Bool
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei width
GLenum GLenum GLenum GLenum GLenum scale
GLenum GLenum GLvoid GLvoid GLvoid * span
GLenum GLuint GLint GLenum face
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
GLubyte GLubyte GLubyte GLubyte w
GLsizei const GLfloat * points
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
static char memory[1024 *256]
static unsigned __int64 next
namespace GUID const ADDRINFOEXW * hints
AF_LatinBlueRec blues[AF_BLUE_STRINGSET_MAX]
AF_WidthRec widths[AF_LATIN_MAX_WIDTHS]
FT_Pos edge_distance_threshold
FT_Render_Mode render_mode
__inline int before(__u32 seq1, __u32 seq2)
__inline int after(__u32 seq1, __u32 seq2)