Werner Lemberg pushed to branch master at FreeType / FreeType
Commits:
-
5aa2a5c3
by Werner Lemberg at 2022-01-07T06:41:36+01:00
-
b5c2172f
by Werner Lemberg at 2022-01-07T06:53:44+01:00
5 changed files:
- src/autofit/afcjk.c
- src/autofit/afhints.c
- src/autofit/aflatin.c
- src/pshinter/pshalgo.c
- src/sfnt/ttsbit.c
Changes:
... | ... | @@ -843,7 +843,7 @@ |
843 | 843 |
{
|
844 | 844 |
AF_AxisHints axis = &hints->axis[dim];
|
845 | 845 |
AF_Segment segments = axis->segments;
|
846 |
- AF_Segment segment_limit = segments + axis->num_segments;
|
|
846 |
+ AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments );
|
|
847 | 847 |
AF_Direction major_dir = axis->major_dir;
|
848 | 848 |
AF_Segment seg1, seg2;
|
849 | 849 |
FT_Pos len_threshold;
|
... | ... | @@ -1005,7 +1005,7 @@ |
1005 | 1005 |
AF_CJKAxis laxis = &((AF_CJKMetrics)hints->metrics)->axis[dim];
|
1006 | 1006 |
|
1007 | 1007 |
AF_Segment segments = axis->segments;
|
1008 |
- AF_Segment segment_limit = segments + axis->num_segments;
|
|
1008 |
+ AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments );
|
|
1009 | 1009 |
AF_Segment seg;
|
1010 | 1010 |
|
1011 | 1011 |
FT_Fixed scale;
|
... | ... | @@ -1153,7 +1153,7 @@ |
1153 | 1153 |
*/
|
1154 | 1154 |
{
|
1155 | 1155 |
AF_Edge edges = axis->edges;
|
1156 |
- AF_Edge edge_limit = edges + axis->num_edges;
|
|
1156 |
+ AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges );
|
|
1157 | 1157 |
AF_Edge edge;
|
1158 | 1158 |
|
1159 | 1159 |
|
... | ... | @@ -1291,7 +1291,7 @@ |
1291 | 1291 |
{
|
1292 | 1292 |
AF_AxisHints axis = &hints->axis[dim];
|
1293 | 1293 |
AF_Edge edge = axis->edges;
|
1294 |
- AF_Edge edge_limit = edge + axis->num_edges;
|
|
1294 |
+ AF_Edge edge_limit = FT_OFFSET( edge, axis->num_edges );
|
|
1295 | 1295 |
AF_CJKAxis cjk = &metrics->axis[dim];
|
1296 | 1296 |
FT_Fixed scale = cjk->scale;
|
1297 | 1297 |
FT_Pos best_dist0; /* initial threshold */
|
... | ... | @@ -1798,7 +1798,7 @@ |
1798 | 1798 |
{
|
1799 | 1799 |
AF_AxisHints axis = &hints->axis[dim];
|
1800 | 1800 |
AF_Edge edges = axis->edges;
|
1801 |
- AF_Edge edge_limit = edges + axis->num_edges;
|
|
1801 |
+ AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges );
|
|
1802 | 1802 |
FT_PtrDist n_edges;
|
1803 | 1803 |
AF_Edge edge;
|
1804 | 1804 |
AF_Edge anchor = NULL;
|
... | ... | @@ -2177,7 +2177,7 @@ |
2177 | 2177 |
{
|
2178 | 2178 |
AF_AxisHints axis = & hints->axis[dim];
|
2179 | 2179 |
AF_Edge edges = axis->edges;
|
2180 |
- AF_Edge edge_limit = edges + axis->num_edges;
|
|
2180 |
+ AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges );
|
|
2181 | 2181 |
AF_Edge edge;
|
2182 | 2182 |
FT_Bool snapping;
|
2183 | 2183 |
|
... | ... | @@ -1316,7 +1316,7 @@ |
1316 | 1316 |
{
|
1317 | 1317 |
AF_AxisHints axis = & hints->axis[dim];
|
1318 | 1318 |
AF_Segment segments = axis->segments;
|
1319 |
- AF_Segment segment_limit = segments + axis->num_segments;
|
|
1319 |
+ AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments );
|
|
1320 | 1320 |
AF_Segment seg;
|
1321 | 1321 |
|
1322 | 1322 |
|
... | ... | @@ -1393,7 +1393,7 @@ |
1393 | 1393 |
AF_Point point_limit = points + hints->num_points;
|
1394 | 1394 |
AF_AxisHints axis = &hints->axis[dim];
|
1395 | 1395 |
AF_Edge edges = axis->edges;
|
1396 |
- AF_Edge edge_limit = edges + axis->num_edges;
|
|
1396 |
+ AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges );
|
|
1397 | 1397 |
FT_UInt touch_flag;
|
1398 | 1398 |
|
1399 | 1399 |
|
... | ... | @@ -200,7 +200,7 @@ |
200 | 200 |
(AF_Dimension)dim );
|
201 | 201 |
|
202 | 202 |
seg = axhints->segments;
|
203 |
- limit = seg + axhints->num_segments;
|
|
203 |
+ limit = FT_OFFSET( seg, axhints->num_segments );
|
|
204 | 204 |
|
205 | 205 |
for ( ; seg < limit; seg++ )
|
206 | 206 |
{
|
... | ... | @@ -1989,7 +1989,7 @@ |
1989 | 1989 |
{
|
1990 | 1990 |
AF_AxisHints axis = &hints->axis[dim];
|
1991 | 1991 |
AF_Segment segments = axis->segments;
|
1992 |
- AF_Segment segment_limit = segments + axis->num_segments;
|
|
1992 |
+ AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments );
|
|
1993 | 1993 |
FT_Pos len_threshold, len_score, dist_score, max_width;
|
1994 | 1994 |
AF_Segment seg1, seg2;
|
1995 | 1995 |
|
... | ... | @@ -2134,7 +2134,7 @@ |
2134 | 2134 |
FT_Bool top_to_bottom_hinting = 0;
|
2135 | 2135 |
|
2136 | 2136 |
AF_Segment segments = axis->segments;
|
2137 |
- AF_Segment segment_limit = segments + axis->num_segments;
|
|
2137 |
+ AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments );
|
|
2138 | 2138 |
AF_Segment seg;
|
2139 | 2139 |
|
2140 | 2140 |
#if 0
|
... | ... | @@ -2500,7 +2500,7 @@ |
2500 | 2500 |
{
|
2501 | 2501 |
AF_AxisHints axis = &hints->axis[AF_DIMENSION_VERT];
|
2502 | 2502 |
AF_Edge edge = axis->edges;
|
2503 |
- AF_Edge edge_limit = edge + axis->num_edges;
|
|
2503 |
+ AF_Edge edge_limit = FT_OFFSET( edge, axis->num_edges );
|
|
2504 | 2504 |
AF_LatinAxis latin = &metrics->axis[AF_DIMENSION_VERT];
|
2505 | 2505 |
FT_Fixed scale = latin->scale;
|
2506 | 2506 |
|
... | ... | @@ -2993,7 +2993,7 @@ |
2993 | 2993 |
{
|
2994 | 2994 |
AF_AxisHints axis = &hints->axis[dim];
|
2995 | 2995 |
AF_Edge edges = axis->edges;
|
2996 |
- AF_Edge edge_limit = edges + axis->num_edges;
|
|
2996 |
+ AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges );
|
|
2997 | 2997 |
FT_PtrDist n_edges;
|
2998 | 2998 |
AF_Edge edge;
|
2999 | 2999 |
AF_Edge anchor = NULL;
|
... | ... | @@ -188,7 +188,7 @@ |
188 | 188 |
goto Exit;
|
189 | 189 |
|
190 | 190 |
table->max_hints = count;
|
191 |
- table->sort_global = table->sort + count;
|
|
191 |
+ table->sort_global = FT_OFFSET( table->sort, count );
|
|
192 | 192 |
table->num_hints = 0;
|
193 | 193 |
table->num_zones = 0;
|
194 | 194 |
table->zone = NULL;
|
... | ... | @@ -730,6 +730,9 @@ |
730 | 730 |
pitch = bitmap->pitch;
|
731 | 731 |
line = bitmap->buffer;
|
732 | 732 |
|
733 |
+ if ( !line )
|
|
734 |
+ goto Exit;
|
|
735 |
+ |
|
733 | 736 |
width = decoder->metrics->width;
|
734 | 737 |
height = decoder->metrics->height;
|
735 | 738 |
|