27#ifdef FT_OPTION_AUTOFIT2
35#ifdef AF_CONFIG_OPTION_USE_WARPER
47#define FT_COMPONENT aflatin2
99 metrics->root.style_class->standard_char );
100 if ( glyph_index == 0 )
104 if (
error ||
face->glyph->outline.n_points <= 0 )
130 error = af_latin2_hints_compute_segments(
hints,
135 af_latin2_hints_link_segments(
hints,
141 for ( ; seg <
limit; seg++ )
156 axis->
widths[num_widths++].org = dist;
160 af_sort_widths( num_widths, axis->
widths );
194#define AF_LATIN_MAX_TEST_CHARACTERS 12
197 static const char af_latin2_blue_chars[AF_LATIN_MAX_BLUES]
198 [AF_LATIN_MAX_TEST_CHARACTERS+1] =
213 FT_Pos flats [AF_LATIN_MAX_TEST_CHARACTERS];
214 FT_Pos rounds[AF_LATIN_MAX_TEST_CHARACTERS];
229 "======================\n\n" ));
231 for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ )
233 const char*
p = af_latin2_blue_chars[bb];
234 const char*
limit =
p + AF_LATIN_MAX_TEST_CHARACTERS;
247 FT_Int best_point, best_y, best_first, best_last;
254 if ( glyph_index == 0 )
276 FT_Int old_best_point = best_point;
291 if ( best_point < 0 ||
points[pp].
y > best_y )
300 if ( best_point < 0 ||
points[pp].
y < best_y )
307 if ( best_point != old_best_point )
319 if ( best_point >= 0 )
333 if ( prev < best_first )
345 }
while (
start != best_point );
350 if (
next > best_last )
360 }
while (
end != best_point );
371 rounds[num_rounds++] = best_y;
373 flats[num_flats++] = best_y;
376 if ( num_flats == 0 && num_rounds == 0 )
394 blue_shoot = &
blue->shoot.org;
398 if ( num_flats == 0 )
401 *blue_shoot = rounds[num_rounds / 2];
403 else if ( num_rounds == 0 )
406 *blue_shoot = flats[num_flats / 2];
410 *blue_ref = flats[num_flats / 2];
411 *blue_shoot = rounds[num_rounds / 2];
417 if ( *blue_shoot != *blue_ref )
420 FT_Pos shoot = *blue_shoot;
427 *blue_shoot = ( shoot +
ref ) / 2;
429 FT_TRACE5((
" [overshoot smaller than reference,"
430 " taking mean value]\n" ));
447 " overshoot = %ld\n",
448 *blue_ref, *blue_shoot ));
460 FT_Bool started = 0, same_width = 1;
466 for (
i = 0x30;
i <= 0x39;
i++ )
472 if ( glyph_index == 0 )
497 metrics->root.digits_have_same_width = same_width;
512 FT_ENCODING_APPLE_ROMAN,
513 FT_ENCODING_ADOBE_STANDARD,
514 FT_ENCODING_ADOBE_LATIN_1,
522 for ( ee = 0; latin_encodings[ee] != FT_ENCODING_NONE; ee++ )
600 ppem =
metrics->root.scaler.face->size->metrics.x_ppem;
611 fitted = ( scaled + threshold ) & ~63;
614 if ( scaled != fitted )
618 " fitted = %.2g, scaling = %.4g\n",
619 scaled / 64.0, fitted / 64.0,
620 ( fitted * 1.0 ) / scaled ));
632 metrics->root.scaler.x_delta = delta;
637 metrics->root.scaler.y_delta = delta;
668 blue->flags &= ~AF_LATIN_BLUE_ACTIVE;
672 if ( dist <= 48 && dist >= -48 )
676 delta1 =
blue->shoot.org -
blue->ref.org;
685 else if ( delta2 < 64 )
686 delta2 = 32 + ( ( ( delta2 - 32 ) + 16 ) & ~31 );
694 blue->shoot.fit =
blue->ref.fit + delta2;
696 FT_TRACE5((
">> activating blue zone %d:"
697 " ref.cur=%.2g ref.fit=%.2g"
698 " shoot.cur=%.2g shoot.fit=%.2g\n",
699 nn,
blue->ref.cur / 64.0,
blue->ref.fit / 64.0,
700 blue->shoot.cur / 64.0,
blue->shoot.fit / 64.0 ));
767 segment_dir = major_dir;
798 for ( ; contour < contour_limit; contour++ )
832 FT_Pos min_u, min_v, max_u, max_v;
839 min_u = max_u =
point->u;
840 min_v = max_v =
point->v;
848 if (
point->u < min_u )
851 if (
point->u > max_u )
855 if (
point->v < min_v )
858 if (
point->v > max_v )
870 segment->
pos = (
FT_Short)( ( min_u + max_u ) >> 1 );
884 segment->
flags &= ~AF_EDGE_ROUND;
926 for ( segment = segments; segment < segments_end; segment++ )
935 if ( first_v < last_v )
938 if (
p->v < first_v )
940 ( ( first_v -
p->v ) >> 1 ) );
945 ( (
p->v - last_v ) >> 1 ) );
950 if (
p->v > first_v )
952 ( (
p->v - first_v ) >> 1 ) );
957 ( ( last_v -
p->v ) >> 1 ) );
962#ifdef AF_SORT_SEGMENTS
971 for ( ii = 0; ii <
count; ii++ )
973 if ( segments[ii].
dir > 0 )
975 for ( jj = ii + 1; jj <
count; jj++ )
977 if ( segments[jj].
dir < 0 )
983 segments[ii] = segments[jj];
994 axis->mid_segments = ii;
1010#ifdef AF_SORT_SEGMENTS
1011 AF_Segment segment_mid = segments + axis->mid_segments;
1013 FT_Pos len_threshold, len_score;
1018 if ( len_threshold == 0 )
1023#ifdef AF_SORT_SEGMENTS
1024 for ( seg1 = segments; seg1 < segment_mid; seg1++ )
1029 for ( seg2 = segment_mid; seg2 < segment_limit; seg2++ )
1032 for ( seg1 = segments; seg1 < segment_limit; seg1++ )
1037 for ( seg2 = segments; seg2 < segment_limit; seg2++ )
1038 if ( seg1->
dir + seg2->
dir == 0 && seg2->
pos > seg1->
pos )
1043 FT_Pos dist = pos2 - pos1;
1055 if ( min < seg2->min_coord )
1062 if (
len >= len_threshold )
1064 score = dist + len_score /
len;
1065 if ( score < seg1->score )
1067 seg1->
score = score;
1071 if ( score < seg2->score )
1073 seg2->
score = score;
1085 for ( seg1 = segments; seg1 < segment_limit; seg1++ )
1091 if ( seg2->
link != seg1 )
1116 FT_Pos edge_distance_threshold;
1117 FT_Pos segment_length_threshold;
1145 segment_length_threshold = 0;
1165 if ( edge_distance_threshold > 64 / 4 )
1166 edge_distance_threshold = 64 / 4;
1168 edge_distance_threshold =
FT_DivFix( edge_distance_threshold,
1171 for ( seg = segments; seg < segment_limit; seg++ )
1177 if ( seg->
height < segment_length_threshold )
1195 else if ( 2*seg->
height < 3 * segment_length_threshold )
1200 for ( ee = 0; ee < axis->
num_edges; ee++ )
1210 if ( dist < edge_distance_threshold && edge->
dir == seg->
dir )
1277 for ( edge = edges; edge < edge_limit; edge++ )
1286 }
while ( seg != edge->
first );
1290 for ( edge = edges; edge < edge_limit; edge++ )
1315 if ( seg->
dir == up_dir )
1339 edge2 = edge->
serif;
1348 edge_delta = edge->
fpos - edge2->
fpos;
1349 if ( edge_delta < 0 )
1350 edge_delta = -edge_delta;
1352 seg_delta = seg->
pos - seg2->
pos;
1353 if ( seg_delta < 0 )
1354 seg_delta = -seg_delta;
1356 if ( seg_delta < edge_delta )
1364 edge->
serif = edge2;
1373 }
while ( seg != edge->
first );
1378 if ( is_round > 0 && is_round >= is_straight )
1388 else if ( ups < downs )
1391 else if ( ups == downs )
1416 error = af_latin2_hints_compute_segments(
hints, dim );
1419 af_latin2_hints_link_segments(
hints, dim );
1421 error = af_latin2_hints_compute_edges(
hints, dim );
1442 if ( best_dist0 > 64 / 2 )
1443 best_dist0 = 64 / 2;
1449 for ( ; edge < edge_limit; edge++ )
1453 FT_Pos best_dist = best_dist0;
1455 for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ )
1458 FT_Bool is_top_blue, is_major_dir;
1475 if ( is_top_blue ^ is_major_dir )
1493 if ( dist < best_dist )
1508 if ( is_top_blue ^ is_under_ref )
1511 dist = edge->
fpos -
blue->shoot.org;
1516 if ( dist < best_dist )
1519 best_blue = &
blue->shoot;
1538 FT_UInt32 scaler_flags, other_flags;
1561 scaler_flags =
hints->scaler_flags;
1595#ifdef AF_CONFIG_OPTION_USE_WARPER
1597 if ( !
metrics->root.globals->module->warping )
1601 hints->scaler_flags = scaler_flags;
1602 hints->other_flags = other_flags;
1620 af_latin2_snap_width(
AF_Width widths,
1625 FT_Pos best = 64 + 32 + 2;
1651 if (
width < scaled + 48 )
1656 if (
width > scaled - 48 )
1699 if ( ( stem_flags &
AF_EDGE_SERIF ) && vertical && ( dist < 3 * 64 ) )
1708 else if ( dist < 56 )
1711 if ( axis->width_count > 0 )
1717 if ( axis->width_count > 0 )
1719 delta = dist - axis->widths[0].cur;
1726 dist = axis->widths[0].cur;
1734 if ( dist < 3 * 64 )
1742 else if ( delta < 32 )
1745 else if ( delta < 54 )
1752 dist = ( dist + 32 ) & ~63;
1761 dist = af_latin2_snap_width( axis->widths, axis->width_count, dist );
1769 dist = ( dist + 16 ) & ~63;
1783 dist = ( dist + 32 ) & ~63;
1792 dist = ( dist + 64 ) >> 1;
1794 else if ( dist < 128 )
1805 dist = ( dist + 22 ) & ~63;
1806 delta = dist - org_dist;
1814 dist = ( dist + 64 ) >> 1;
1819 dist = ( dist + 32 ) & ~63;
1842 FT_Pos fitted_width = af_latin2_compute_stem_width(
hints, dim, dist,
1847 stem_edge->
pos = base_edge->
pos + fitted_width;
1849 FT_TRACE5((
"LINK: edge %d (opos=%.2f) linked to (%.2f), "
1850 "dist was %.2f, now %.2f\n",
1851 stem_edge-
hints->axis[dim].edges, stem_edge->
opos / 64.0,
1852 stem_edge->
pos / 64.0, dist / 64.0, fitted_width / 64.0 ));
1892 FT_TRACE5((
"==== hinting %s edges =====\n",
1900 for ( edge = edges; edge < edge_limit; edge++ )
1927 FT_TRACE5((
"BLUE: edge %d (opos=%.2f) snapped to (%.2f), "
1929 edge1-edges, edge1->
opos / 64.0,
blue->fit / 64.0,
1930 edge1->
pos / 64.0 ));
1937 af_latin2_align_linked_edge(
hints, dim, edge1, edge2 );
1945 anchor_drift = ( anchor->
pos - anchor->
opos );
1947 anchor_drift = ( anchor_drift +
1948 ( edge2->
pos - edge2->
opos ) ) >> 1;
1955 for ( edge = edges; edge < edge_limit; edge++ )
1976 FT_TRACE5((
"ASSERTION FAILED for edge %d\n", edge2-edges ));
1978 af_latin2_align_linked_edge(
hints, dim, edge2, edge );
1985 FT_Pos org_len, org_center, cur_len;
1989 org_len = edge2->
opos - edge->
opos;
1990 cur_len = af_latin2_compute_stem_width(
hints, dim, org_len,
1993 if ( cur_len <= 64 )
2003 org_center = edge->
opos + ( org_len >> 1 );
2007 error1 = org_center - ( cur_pos1 - u_off );
2011 error2 = org_center - ( cur_pos1 + d_off );
2020 edge->
pos = cur_pos1 - cur_len / 2;
2021 edge2->
pos = edge->
pos + cur_len;
2026 FT_TRACE5((
"ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f)"
2027 " snapped to (%.2f) (%.2f)\n",
2028 edge-edges, edge->
opos / 64.0,
2029 edge2-edges, edge2->
opos / 64.0,
2030 edge->
pos / 64.0, edge2->
pos / 64.0 ));
2035 af_latin2_align_linked_edge(
hints, dim, edge, edge2 );
2039 anchor_drift = ( ( anchor->
pos - anchor->
opos ) +
2040 ( edge2->
pos - edge2->
opos ) ) >> 1;
2042 FT_TRACE5((
"DRIFT: %.2f\n", anchor_drift/64.0 ));
2046 FT_Pos org_pos, org_len, org_center, cur_center, cur_len;
2047 FT_Pos org_left, org_right;
2050 org_pos = edge->
opos + anchor_drift;
2051 org_len = edge2->
opos - edge->
opos;
2052 org_center = org_pos + ( org_len >> 1 );
2054 cur_len = af_latin2_compute_stem_width(
hints, dim, org_len,
2058 org_left = org_pos + ( ( org_len - cur_len ) >> 1 );
2059 org_right = org_pos + ( ( org_len + cur_len ) >> 1 );
2061 FT_TRACE5((
"ALIGN: left=%.2f right=%.2f ",
2062 org_left / 64.0, org_right / 64.0 ));
2063 cur_center = org_center;
2068 edge->
pos = edge2->
pos - cur_len;
2076 FT_Pos displacements[6], scores[6],
org, fit, delta;
2093 if ( cur_len <= 96 )
2101 FT_Pos frac_left = org_left & 63;
2102 FT_Pos frac_right = org_right & 63;
2104 if ( frac_left >= 22 && frac_left <= 42 &&
2105 frac_right >= 22 && frac_right <= 42 )
2108 fit = (
org <= 32 ) ? 16 : 48;
2111 scores[
count++] = delta;
2112 FT_TRACE5((
"dispA=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2115 fit = (
org <= 32 ) ? 16 : 48;
2118 scores[
count++] = delta;
2119 FT_TRACE5((
"dispB=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2128 scores[
count++] = delta;
2129 FT_TRACE5((
"dispC=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2136 scores[
count++] = delta;
2137 FT_TRACE5((
"dispD=%.2f (%d) ", ( fit -
org ) / 64.0, delta ));
2141 FT_Pos best_score = scores[0];
2142 FT_Pos best_disp = displacements[0];
2145 for ( nn = 1; nn <
count; nn++ )
2147 if ( scores[nn] < best_score )
2149 best_score = scores[nn];
2150 best_disp = displacements[nn];
2154 cur_center = org_center + best_disp;
2160 edge->
pos = cur_center - ( cur_len >> 1 );
2161 edge2->
pos = edge->
pos + cur_len;
2163 FT_TRACE5((
"STEM1: %d (opos=%.2f) to %d (opos=%.2f)"
2164 " snapped to (%.2f) and (%.2f),"
2165 " org_len=%.2f cur_len=%.2f\n",
2166 edge-edges, edge->
opos / 64.0,
2167 edge2-edges, edge2->
opos / 64.0,
2168 edge->
pos / 64.0, edge2->
pos / 64.0,
2169 org_len / 64.0, cur_len / 64.0 ));
2174 if ( edge > edges && edge->
pos < edge[-1].pos )
2176 FT_TRACE5((
"BOUND: %d (pos=%.2f) to (%.2f)\n",
2177 edge-edges, edge->
pos / 64.0, edge[-1].pos / 64.0 ));
2178 edge->
pos = edge[-1].
pos;
2200 FT_Int n_edges = edge_limit - edges;
2225 span = dist1 - dist2;
2231 delta = edge3->
pos - ( 2 * edge2->
pos - edge1->
pos );
2232 edge3->
pos -= delta;
2237 if ( n_edges == 12 )
2239 ( edges + 8 )->
pos -= delta;
2240 ( edges + 11 )->
pos -= delta;
2251 if ( has_serifs || !anchor )
2257 for ( edge = edges; edge < edge_limit; edge++ )
2274 if ( delta < 64 + 16 )
2276 af_latin2_align_serif_edge(
hints, edge->
serif, edge );
2277 FT_TRACE5((
"SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f)"
2278 " aligned to (%.2f)\n",
2279 edge-edges, edge->
opos / 64.0,
2281 edge->
pos / 64.0 ));
2285 FT_TRACE5((
"SERIF_ANCHOR: edge %d (opos=%.2f)"
2286 " snapped to (%.2f)\n",
2287 edge-edges, edge->
opos / 64.0, edge->
pos / 64.0 ));
2305 after < edge_limit && after > edge )
2310 edge->pos =
before->pos +
2314 FT_TRACE5((
"SERIF_LINK1: edge %d (opos=%.2f) snapped to (%.2f)"
2315 " from %d (opos=%.2f)\n",
2316 edge-edges, edge->opos / 64.0, edge->pos / 64.0,
2321 edge->pos = anchor->
pos +
2322 ( ( edge->opos - anchor->
opos + 16 ) & ~31 );
2324 FT_TRACE5((
"SERIF_LINK2: edge %d (opos=%.2f)"
2325 " snapped to (%.2f)\n",
2326 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2332 if ( edge > edges && edge->pos < edge[-1].pos )
2333 edge->pos = edge[-1].pos;
2335 if ( edge + 1 < edge_limit &&
2337 edge->pos > edge[1].pos )
2338 edge->pos = edge[1].pos;
2345 af_latin2_hints_apply(
FT_UInt glyph_index,
2380#ifdef AF_CONFIG_OPTION_USE_WARPER
2390 af_warper_compute( &warper,
hints, dim, &
scale, &delta );
2391 af_glyph_hints_scale_dim(
hints, dim,
scale, delta );
2422 af_latin2_writing_system_class,
2424 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)