Home | History | Annotate | Download | only in autofit

Lines Matching refs:edge

724         /* we are already on an edge, try to locate its start */
758 /* we are just leaving an edge; record a new segment! */
1004 /* to find an edge in our table that corresponds to its position. */
1006 /* If no edge is found, we create and insert a new edge in the */
1007 /* sorted table. Otherwise, we simply add the segment to the edge's */
1009 /* edge's properties. */
1011 /* Note that the edges table is sorted along the segment/edge */
1039 /* look for an edge corresponding to the segment */
1042 AF_Edge edge = axis->edges + ee;
1046 dist = seg->pos - edge->fpos;
1050 if ( dist < edge_distance_threshold && edge->dir == seg->dir )
1052 found = edge;
1059 AF_Edge edge;
1062 /* insert a new edge in the list and */
1066 memory, &edge );
1070 /* add the segment to the new edge's list */
1071 FT_ZERO( edge );
1073 edge->first = seg;
1074 edge->last = seg;
1075 edge->fpos = seg->pos;
1076 edge->dir = seg->dir;
1077 edge->opos = edge->pos = FT_MulFix( seg->pos, scale );
1082 /* if an edge was found, simply add the segment to the edge's */
1093 /* Good, we will now compute each edge's properties according to */
1096 /* - edge's main direction */
1097 /* - stem edge, serif edge or both (which defaults to stem then) */
1098 /* - rounded edge, straight or both (which defaults to straight) */
1099 /* - link for edge */
1103 /* first of all, set the `edge' field in each segment -- this is */
1104 edge links */
1107 * Note that removing this loop and setting the `edge' field of each
1114 AF_Edge edge;
1117 for ( edge = edges; edge < edge_limit; edge++ )
1119 seg = edge->first;
1123 seg->edge = edge;
1126 } while ( seg != edge->first );
1129 /* now, compute each edge properties */
1130 for ( edge = edges; edge < edge_limit; edge++ )
1138 seg = edge->first;
1160 seg->serif->edge &&
1161 seg->serif->edge != edge );
1163 if ( ( seg->link && seg->link->edge != NULL ) || is_serif )
1169 edge2 = edge->link;
1175 edge2 = edge->serif;
1184 edge_delta = edge->fpos - edge2->fpos;
1193 edge2 = seg2->edge;
1196 edge2 = seg2->edge;
1200 edge->serif = edge2;
1204 edge->link = edge2;
1209 } while ( seg != edge->first );
1212 edge->flags = AF_EDGE_NORMAL;
1215 edge->flags |= AF_EDGE_ROUND;
1218 /* set the edge's main direction */
1219 edge->dir = AF_DIR_NONE;
1222 edge->dir = (FT_Char)up_dir;
1225 edge->dir = (FT_Char)-up_dir;
1228 edge->dir = 0; /* both up and down! */
1235 if ( edge->serif && edge->link )
1236 edge->serif = 0;
1268 AF_Edge edge = axis->edges;
1269 AF_Edge edge_limit = edge + axis->num_edges;
1277 /* for each horizontal edge search the blue zone which is closest */
1278 for ( ; edge < edge_limit; edge++ )
1306 is_major_dir = FT_BOOL( edge->dir == axis->major_dir );
1308 /* if it is a top zone, the edge must be against the major */
1317 dist = edge->fpos - blue->ref.org;
1328 /* now, compare it to the overshoot position if the edge is */
1329 /* rounded, and if the edge is over the reference position of a */
1331 if ( edge->flags & AF_EDGE_ROUND && dist != 0 )
1333 FT_Bool is_under_ref = FT_BOOL( edge->fpos < blue->ref.org );
1339 dist = edge->fpos - blue->shoot.org;
1355 edge->blue_edge = best_blue;
1652 /* align one stem edge relative to the previous stem edge */
1670 AF_LOG(( "LINK: edge %d (opos=%.2f) linked to (%.2f), "
1707 AF_Edge edge;
1717 for ( edge = edges; edge < edge_limit; edge++ )
1723 if ( edge->flags & AF_EDGE_DONE )
1726 blue = edge->blue_edge;
1728 edge2 = edge->link;
1732 edge1 = edge;
1738 edge2 = edge;
1744 AF_LOG(( "BLUE: edge %d (opos=%.2f) snapped to (%.2f), "
1759 anchor = edge;
1765 for ( edge = edges; edge < edge_limit; edge++ )
1770 if ( edge->flags & AF_EDGE_DONE )
1774 edge2 = edge->link;
1786 AF_LOG(( "ASSERTION FAILED for edge %d\n", edge2-edges ));
1788 af_latin_align_linked_edge( hints, dim, edge2, edge );
1789 edge->flags |= AF_EDGE_DONE;
1799 org_len = edge2->opos - edge->opos;
1802 (AF_Edge_Flags)edge->flags,
1814 org_center = edge->opos + ( org_len >> 1 );
1831 edge->pos = cur_pos1 - cur_len / 2;
1832 edge2->pos = edge->pos + cur_len;
1835 edge->pos = FT_PIX_ROUND( edge->opos );
1837 AF_LOG(( "ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f) "
1839 edge-edges, edge->opos / 64.0,
1841 edge->pos / 64.0, edge2->pos / 64.0 ));
1842 anchor = edge;
1844 edge->flags |= AF_EDGE_DONE;
1846 af_latin_align_linked_edge( hints, dim, edge, edge2 );
1854 org_pos = anchor->pos + ( edge->opos - anchor->opos );
1855 org_len = edge2->opos - edge->opos;
1860 (AF_Edge_Flags)edge->flags,
1864 edge->pos = edge2->pos - cur_len;
1894 edge->pos = cur_pos1 - cur_len / 2;
1899 edge-edges, edge->opos / 64.0,
1901 edge->pos / 64.0, edge2->pos / 64.0 ));
1905 org_pos = anchor->pos + ( edge->opos - anchor->opos );
1906 org_len = edge2->opos - edge->opos;
1911 (AF_Edge_Flags)edge->flags,
1924 edge->pos = ( delta1 < delta2 ) ? cur_pos1 : cur_pos2;
1925 edge2->pos = edge->pos + cur_len;
1929 edge-edges, edge->opos / 64.0,
1931 edge->pos / 64.0, edge2->pos / 64.0 ));
1934 edge->flags |= AF_EDGE_DONE;
1937 if ( edge > edges && edge->pos < edge[-1].pos )
1940 edge-edges, edge->pos / 64.0, edge[-1].pos / 64.0 ));
1941 edge->pos = edge[-1].pos;
2014 for ( edge = edges; edge < edge_limit; edge++ )
2019 if ( edge->flags & AF_EDGE_DONE )
2024 if ( edge->serif )
2026 delta = edge->serif->opos - edge->opos;
2033 af_latin_align_serif_edge( hints, edge->serif, edge );
2034 AF_LOG(( "SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f) "
2036 edge-edges, edge->opos / 64.0,
2037 edge->serif - edges, edge->serif->opos / 64.0,
2038 edge->pos / 64.0 ));
2042 AF_LOG(( "SERIF_ANCHOR: edge %d (opos=%.2f) snapped to (%.2f)\n",
2043 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2044 edge->pos = FT_PIX_ROUND( edge->opos );
2045 anchor = edge;
2052 for ( before = edge - 1; before >= edges; before-- )
2056 for ( after = edge + 1; after < edge_limit; after++ )
2060 if ( before >= edges && before < edge &&
2061 after < edge_limit && after > edge )
2064 edge->pos = before->pos;
2066 edge->pos = before->pos +
2067 FT_MulDiv( edge->opos - before->opos,
2070 AF_LOG(( "SERIF_LINK1: edge %d (opos=%.2f) snapped to (%.2f) "
2072 edge-edges, edge->opos / 64.0,
2073 edge->pos / 64.0, before - edges,
2078 edge->pos = anchor->pos +
2079 ( ( edge->opos - anchor->opos + 16 ) & ~31 );
2080 AF_LOG(( "SERIF_LINK2: edge %d (opos=%.2f) snapped to (%.2f)\n",
2081 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2085 edge->flags |= AF_EDGE_DONE;
2087 if ( edge > edges && edge->pos < edge[-1].pos )
2088 edge->pos = edge[-1].pos;
2090 if ( edge + 1 < edge_limit &&
2091 edge[1].flags & AF_EDGE_DONE &&
2092 edge->pos > edge[1].pos )
2093 edge->pos = edge[1].pos;