|
|
|
@ -72,13 +72,9 @@ FT_BEGIN_HEADER |
|
|
|
|
* `af_{cjk,latin,...}_hints_compute_segments' are the functions to |
|
|
|
|
* find segments in an outline. |
|
|
|
|
* |
|
|
|
|
* A segment is a series of consecutive points that are approximately |
|
|
|
|
* aligned along a coordinate axis. The analysis to do so is specific |
|
|
|
|
* to a writing system. |
|
|
|
|
* |
|
|
|
|
* A segment must have at least two points, except in the case of |
|
|
|
|
* `fake' segments that are generated to hint metrics appropriately, |
|
|
|
|
* and which consist of a single point. |
|
|
|
|
* A segment is a series of at least two consecutive points that are |
|
|
|
|
* approximately aligned along a coordinate axis. The analysis to do |
|
|
|
|
* so is specific to a writing system. |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* Edges |
|
|
|
@ -148,7 +144,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* Serifs are detected by `af_{cjk,latin,...}_hint_edges'. |
|
|
|
|
* |
|
|
|
|
* In comparison to a stem, a serif (as handled by the auto-hinter |
|
|
|
|
* module which takes care of the `latin' writing system) has |
|
|
|
|
* module that takes care of the `latin' writing system) has |
|
|
|
|
* |
|
|
|
|
* best segment_1 = segment_2 && best segment_2 != segment_1 |
|
|
|
|
* |
|
|
|
@ -178,19 +174,19 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Strong Points |
|
|
|
|
* |
|
|
|
|
* Experience has shown that points which are not part of an edge need |
|
|
|
|
* to be interpolated linearly between their two closest edges, even if |
|
|
|
|
* these are not part of the contour of those particular points. |
|
|
|
|
* Typical candidates for this are |
|
|
|
|
* Experience has shown that points not part of an edge need to be |
|
|
|
|
* interpolated linearly between their two closest edges, even if these |
|
|
|
|
* are not part of the contour of those particular points. Typical |
|
|
|
|
* candidates for this are |
|
|
|
|
* |
|
|
|
|
* - angle points (i.e., points where the `in' and `out' direction |
|
|
|
|
* differ greatly) |
|
|
|
|
* |
|
|
|
|
* - inflection points (i.e., where the `in' and `out' angles are the |
|
|
|
|
* same, but the curvature changes sign) [currently, such points |
|
|
|
|
* aren't handled in the auto-hinter] |
|
|
|
|
* aren't handled specially in the auto-hinter] |
|
|
|
|
* |
|
|
|
|
* `af_glyph_hints_align_strong_points' is the function which takes |
|
|
|
|
* `af_glyph_hints_align_strong_points' is the function that takes |
|
|
|
|
* care of such situations; it is equivalent to the TrueType `IP' |
|
|
|
|
* hinting instruction. |
|
|
|
|
* |
|
|
|
@ -220,23 +216,12 @@ FT_BEGIN_HEADER |
|
|
|
|
AF_FLAG_CUBIC = 1 << 1, |
|
|
|
|
AF_FLAG_CONTROL = AF_FLAG_CONIC | AF_FLAG_CUBIC, |
|
|
|
|
|
|
|
|
|
/* point extremum flags */ |
|
|
|
|
AF_FLAG_EXTREMA_X = 1 << 2, |
|
|
|
|
AF_FLAG_EXTREMA_Y = 1 << 3, |
|
|
|
|
|
|
|
|
|
/* point roundness flags */ |
|
|
|
|
AF_FLAG_ROUND_X = 1 << 4, |
|
|
|
|
AF_FLAG_ROUND_Y = 1 << 5, |
|
|
|
|
|
|
|
|
|
/* point touch flags */ |
|
|
|
|
AF_FLAG_TOUCH_X = 1 << 6, |
|
|
|
|
AF_FLAG_TOUCH_Y = 1 << 7, |
|
|
|
|
AF_FLAG_TOUCH_X = 1 << 2, |
|
|
|
|
AF_FLAG_TOUCH_Y = 1 << 3, |
|
|
|
|
|
|
|
|
|
/* candidates for weak interpolation have this flag set */ |
|
|
|
|
AF_FLAG_WEAK_INTERPOLATION = 1 << 8, |
|
|
|
|
|
|
|
|
|
/* all inflection points in the outline have this flag set */ |
|
|
|
|
AF_FLAG_INFLECTION = 1 << 9 |
|
|
|
|
AF_FLAG_WEAK_INTERPOLATION = 1 << 4 |
|
|
|
|
|
|
|
|
|
} AF_Flags; |
|
|
|
|
|
|
|
|
|