freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [ft] Glitchy stroker output


From: Stephan T. Lavavej
Subject: RE: [ft] Glitchy stroker output
Date: Wed, 17 Sep 2008 01:40:29 -0700

Actually, I decided to take a closer look at the border outline. I massively
simplified the repro, transforming it into plain old C, and made it print
out the core and border outlines as well as the core and border spans.

http://stl.nuwen.net/pub/freetype/repro3.c

Note that I've switched to obtaining only the outside border, with
FT_Glyph_StrokeBorder(&myglyph, mystroker, 0, 1), in order to simplify the
output.

For convenience, I've included the full output at the end of this mail.


The border spans are still mangled, as you can observe from the output:

coverage 254 | y   5 | x [-27, -27]
coverage 255 | y   5 | x [-26,  20]
coverage 253 | y   5 | x [ 21,  21]

This extends to the x=21 pixel, just like before, which isn't far enough.
The border outline actually extends to the x=48 pixel:

points[0] = (48, 5) on the curve
points[1] = (48, 13) second-order control
points[2] = (45, 19) on the curve
points[3] = (42, 26) second-order control
points[4] = (37, 32) on the curve

I do observe some differences between the core outline and the border
outline; namely, the core outline has different tags (with undocumented bits
set) and different flags, and a different arrangement of control points -
two second-order control points between each pair of on-the-curve points.  I
don't know if any of these differences are significant.

If there's anything else that I can do to help, please let me know.

Thanks,
Stephan T. Lavavej

[BEGIN]
n_contours = 1
n_points = 12
points[0] = (18, 5) UNKNOWN(9)
points[1] = (18, 2) second-order control
points[2] = (13, -2) second-order control
points[3] = (10, -2) UNKNOWN(17)
points[4] = (7, -2) second-order control
points[5] = (3, 2) second-order control
points[6] = (3, 5) UNKNOWN(9)
points[7] = (3, 8) second-order control
points[8] = (7, 13) second-order control
points[9] = (10, 13) UNKNOWN(17)
points[10] = (13, 13) second-order control
points[11] = (18, 8) second-order control
contours[0] = 11
flags = 8
coverage   4 | y  -2 | x [  6,   6]
coverage  94 | y  -2 | x [  7,   7]
coverage 186 | y  -2 | x [  8,   8]
coverage 237 | y  -2 | x [  9,   9]
coverage 253 | y  -2 | x [ 10,  10]
coverage 237 | y  -2 | x [ 11,  11]
coverage 187 | y  -2 | x [ 12,  12]
coverage  97 | y  -2 | x [ 13,  13]
coverage   4 | y  -2 | x [ 14,  14]
coverage  34 | y  -1 | x [  5,   5]
coverage 206 | y  -1 | x [  6,   6]
coverage 255 | y  -1 | x [  7,  13]
coverage 208 | y  -1 | x [ 14,  14]
coverage  34 | y  -1 | x [ 15,  15]
coverage  33 | y   0 | x [  4,   4]
coverage 230 | y   0 | x [  5,   5]
coverage 255 | y   0 | x [  6,  14]
coverage 230 | y   0 | x [ 15,  15]
coverage  32 | y   0 | x [ 16,  16]
coverage   3 | y   1 | x [  3,   3]
coverage 204 | y   1 | x [  4,   4]
coverage 255 | y   1 | x [  5,  15]
coverage 200 | y   1 | x [ 16,  16]
coverage   2 | y   1 | x [ 17,  17]
coverage  94 | y   2 | x [  3,   3]
coverage 255 | y   2 | x [  4,  16]
coverage  88 | y   2 | x [ 17,  17]
coverage 187 | y   3 | x [  3,   3]
coverage 255 | y   3 | x [  4,  16]
coverage 181 | y   3 | x [ 17,  17]
coverage 238 | y   4 | x [  3,   3]
coverage 255 | y   4 | x [  4,  16]
coverage 235 | y   4 | x [ 17,  17]
coverage 253 | y   5 | x [  3,   3]
coverage 255 | y   5 | x [  4,  16]
coverage 252 | y   5 | x [ 17,  17]
coverage 237 | y   6 | x [  3,   3]
coverage 255 | y   6 | x [  4,  16]
coverage 238 | y   6 | x [ 17,  17]
coverage 187 | y   7 | x [  3,   3]
coverage 255 | y   7 | x [  4,  16]
coverage 189 | y   7 | x [ 17,  17]
coverage  98 | y   8 | x [  3,   3]
coverage 255 | y   8 | x [  4,  16]
coverage  99 | y   8 | x [ 17,  17]
coverage   5 | y   9 | x [  3,   3]
coverage 214 | y   9 | x [  4,   4]
coverage 255 | y   9 | x [  5,  15]
coverage 211 | y   9 | x [ 16,  16]
coverage   5 | y   9 | x [ 17,  17]
coverage  44 | y  10 | x [  4,   4]
coverage 240 | y  10 | x [  5,   5]
coverage 255 | y  10 | x [  6,  14]
coverage 235 | y  10 | x [ 15,  15]
coverage  39 | y  10 | x [ 16,  16]
coverage  48 | y  11 | x [  5,   5]
coverage 221 | y  11 | x [  6,   6]
coverage 255 | y  11 | x [  7,  13]
coverage 210 | y  11 | x [ 14,  14]
coverage  38 | y  11 | x [ 15,  15]
coverage   9 | y  12 | x [  6,   6]
coverage 107 | y  12 | x [  7,   7]
coverage 192 | y  12 | x [  8,   8]
coverage 238 | y  12 | x [  9,   9]
coverage 253 | y  12 | x [ 10,  10]
coverage 237 | y  12 | x [ 11,  11]
coverage 187 | y  12 | x [ 12,  12]
coverage  97 | y  12 | x [ 13,  13]
coverage   4 | y  12 | x [ 14,  14]
-----
n_contours = 1
n_points = 37
points[0] = (48, 5) on the curve
points[1] = (48, 13) second-order control
points[2] = (45, 19) on the curve
points[3] = (42, 26) second-order control
points[4] = (37, 32) on the curve
points[5] = (36, 32) third-order control
points[6] = (36, 32) third-order control
points[7] = (36, 32) on the curve
points[8] = (31, 37) second-order control
points[9] = (24, 40) on the curve
points[10] = (18, 43) second-order control
points[11] = (10, 43) on the curve
points[12] = (2, 43) second-order control
points[13] = (-4, 40) on the curve
points[14] = (-11, 37) second-order control
points[15] = (-16, 31) on the curve
points[16] = (-16, 31) on the curve
points[17] = (-21, 26) second-order control
points[18] = (-24, 19) on the curve
points[19] = (-27, 12) second-order control
points[20] = (-27, 5) on the curve
points[21] = (-27, -2) second-order control
points[22] = (-24, -9) on the curve
points[23] = (-21, -15) second-order control
points[24] = (-16, -20) on the curve
points[25] = (-16, -20) on the curve
points[26] = (-10, -26) second-order control
points[27] = (-4, -29) on the curve
points[28] = (2, -32) second-order control
points[29] = (10, -32) on the curve
points[30] = (18, -32) second-order control
points[31] = (25, -29) on the curve
points[32] = (32, -26) second-order control
points[33] = (37, -20) on the curve
points[34] = (42, -15) second-order control
points[35] = (45, -8) on the curve
points[36] = (48, -1) second-order control
contours[0] = 36
flags = 1
coverage   1 | y -32 | x [  1,   1]
coverage  34 | y -32 | x [  2,   2]
coverage  86 | y -32 | x [  3,   3]
coverage 125 | y -32 | x [  4,   4]
coverage 163 | y -32 | x [  5,   5]
coverage 200 | y -32 | x [  6,   6]
coverage 219 | y -32 | x [  7,   7]
coverage 232 | y -32 | x [  8,   8]
coverage 244 | y -32 | x [  9,   9]
coverage 253 | y -32 | x [ 10,  10]
coverage 244 | y -32 | x [ 11,  11]
coverage 232 | y -32 | x [ 12,  12]
coverage 220 | y -32 | x [ 13,  13]
coverage 203 | y -32 | x [ 14,  14]
coverage 166 | y -32 | x [ 15,  15]
coverage 129 | y -32 | x [ 16,  16]
coverage  91 | y -32 | x [ 17,  17]
coverage  41 | y -32 | x [ 18,  18]
coverage   1 | y -32 | x [ 19,  19]
coverage  13 | y -31 | x [ -2,  -2]
coverage  91 | y -31 | x [ -1,  -1]
coverage 159 | y -31 | x [  0,   0]
coverage 225 | y -31 | x [  1,   1]
coverage 255 | y -31 | x [  2,  18]
coverage 231 | y -31 | x [ 19,  19]
coverage 166 | y -31 | x [ 20,  20]
coverage  58 | y -31 | x [ 21,  21]
coverage   3 | y -30 | x [ -5,  -5]
coverage  71 | y -30 | x [ -4,  -4]
coverage 164 | y -30 | x [ -3,  -3]
coverage 246 | y -30 | x [ -2,  -2]
coverage 255 | y -30 | x [ -1,  20]
coverage 130 | y -30 | x [ 21,  21]
coverage   5 | y -29 | x [ -7,  -7]
coverage  96 | y -29 | x [ -6,  -6]
coverage 218 | y -29 | x [ -5,  -5]
coverage 255 | y -29 | x [ -4,  20]
coverage 126 | y -29 | x [ 21,  21]
coverage   2 | y -28 | x [ -9,  -9]
coverage  98 | y -28 | x [ -8,  -8]
coverage 224 | y -28 | x [ -7,  -7]
coverage 255 | y -28 | x [ -6,  20]
coverage 134 | y -28 | x [ 21,  21]
coverage  47 | y -27 | x [-10, -10]
coverage 198 | y -27 | x [ -9,  -9]
coverage 255 | y -27 | x [ -8,  20]
coverage 126 | y -27 | x [ 21,  21]
coverage   6 | y -26 | x [-12, -12]
coverage 138 | y -26 | x [-11, -11]
coverage 253 | y -26 | x [-10, -10]
coverage 255 | y -26 | x [ -9,  20]
coverage 125 | y -26 | x [ 21,  21]
coverage  30 | y -25 | x [-13, -13]
coverage 200 | y -25 | x [-12, -12]
coverage 255 | y -25 | x [-11,  20]
coverage 124 | y -25 | x [ 21,  21]
coverage  71 | y -24 | x [-14, -14]
coverage 237 | y -24 | x [-13, -13]
coverage 255 | y -24 | x [-12,  20]
coverage 140 | y -24 | x [ 21,  21]
coverage  92 | y -23 | x [-15, -15]
coverage 252 | y -23 | x [-14, -14]
coverage 255 | y -23 | x [-13,  20]
coverage 133 | y -23 | x [ 21,  21]
coverage 112 | y -22 | x [-16, -16]
coverage 255 | y -22 | x [-15,  20]
coverage 133 | y -22 | x [ 21,  21]
coverage 117 | y -21 | x [-17, -17]
coverage 255 | y -21 | x [-16,  20]
coverage 131 | y -21 | x [ 21,  21]
coverage  95 | y -20 | x [-18, -18]
coverage 255 | y -20 | x [-17,  20]
coverage 115 | y -20 | x [ 21,  21]
coverage  74 | y -19 | x [-19, -19]
coverage 252 | y -19 | x [-18, -18]
coverage 255 | y -19 | x [-17,  20]
coverage 120 | y -19 | x [ 21,  21]
coverage  33 | y -18 | x [-20, -20]
coverage 240 | y -18 | x [-19, -19]
coverage 255 | y -18 | x [-18,  20]
coverage 118 | y -18 | x [ 21,  21]
coverage   6 | y -17 | x [-21, -21]
coverage 202 | y -17 | x [-20, -20]
coverage 255 | y -17 | x [-19,  20]
coverage 150 | y -17 | x [ 21,  21]
coverage 140 | y -16 | x [-21, -21]
coverage 255 | y -16 | x [-20,  20]
coverage 130 | y -16 | x [ 21,  21]
coverage  50 | y -15 | x [-22, -22]
coverage 253 | y -15 | x [-21, -21]
coverage 255 | y -15 | x [-20,  20]
coverage  93 | y -15 | x [ 21,  21]
coverage   2 | y -14 | x [-23, -23]
coverage 200 | y -14 | x [-22, -22]
coverage 255 | y -14 | x [-21,  20]
coverage 170 | y -14 | x [ 21,  21]
coverage 100 | y -13 | x [-23, -23]
coverage 255 | y -13 | x [-22,  20]
coverage  91 | y -13 | x [ 21,  21]
coverage   6 | y -12 | x [-24, -24]
coverage 227 | y -12 | x [-23, -23]
coverage 255 | y -12 | x [-22,  20]
coverage 161 | y -12 | x [ 21,  21]
coverage  98 | y -11 | x [-24, -24]
coverage 255 | y -11 | x [-23,  20]
coverage  90 | y -11 | x [ 21,  21]
coverage   3 | y -10 | x [-25, -25]
coverage 218 | y -10 | x [-24, -24]
coverage 255 | y -10 | x [-23,  20]
coverage 183 | y -10 | x [ 21,  21]
coverage  72 | y  -9 | x [-25, -25]
coverage 255 | y  -9 | x [-24,  20]
coverage  63 | y  -9 | x [ 21,  21]
coverage 165 | y  -8 | x [-25, -25]
coverage 255 | y  -8 | x [-24,  20]
coverage 155 | y  -8 | x [ 21,  21]
coverage  13 | y  -7 | x [-26, -26]
coverage 246 | y  -7 | x [-25, -25]
coverage 255 | y  -7 | x [-24,  20]
coverage 143 | y  -7 | x [ 21,  21]
coverage  90 | y  -6 | x [-26, -26]
coverage 255 | y  -6 | x [-25,  20]
coverage  83 | y  -6 | x [ 21,  21]
coverage 159 | y  -5 | x [-26, -26]
coverage 255 | y  -5 | x [-25,  20]
coverage 154 | y  -5 | x [ 21,  21]
coverage 224 | y  -4 | x [-26, -26]
coverage 255 | y  -4 | x [-25,  20]
coverage 218 | y  -4 | x [ 21,  21]
coverage  33 | y  -3 | x [-27, -27]
coverage 255 | y  -3 | x [-26,  20]
coverage  50 | y  -3 | x [ 21,  21]
coverage  86 | y  -2 | x [-27, -27]
coverage 255 | y  -2 | x [-26,  20]
coverage  83 | y  -2 | x [ 21,  21]
coverage 124 | y  -1 | x [-27, -27]
coverage 255 | y  -1 | x [-26,  20]
coverage 121 | y  -1 | x [ 21,  21]
coverage 163 | y   0 | x [-27, -27]
coverage 255 | y   0 | x [-26,  20]
coverage 159 | y   0 | x [ 21,  21]
coverage 200 | y   1 | x [-27, -27]
coverage 255 | y   1 | x [-26,  20]
coverage 197 | y   1 | x [ 21,  21]
coverage 219 | y   2 | x [-27, -27]
coverage 255 | y   2 | x [-26,  20]
coverage 218 | y   2 | x [ 21,  21]
coverage 232 | y   3 | x [-27, -27]
coverage 255 | y   3 | x [-26,  20]
coverage 230 | y   3 | x [ 21,  21]
coverage 245 | y   4 | x [-27, -27]
coverage 255 | y   4 | x [-26,  20]
coverage 243 | y   4 | x [ 21,  21]
coverage 254 | y   5 | x [-27, -27]
coverage 255 | y   5 | x [-26,  20]
coverage 253 | y   5 | x [ 21,  21]
coverage 245 | y   6 | x [-27, -27]
coverage 255 | y   6 | x [-26,  20]
coverage 244 | y   6 | x [ 21,  21]
coverage 233 | y   7 | x [-27, -27]
coverage 255 | y   7 | x [-26,  20]
coverage 232 | y   7 | x [ 21,  21]
coverage 221 | y   8 | x [-27, -27]
coverage 255 | y   8 | x [-26,  20]
coverage 220 | y   8 | x [ 21,  21]
coverage 198 | y   9 | x [-27, -27]
coverage 255 | y   9 | x [-26,  20]
coverage 202 | y   9 | x [ 21,  21]
coverage 163 | y  10 | x [-27, -27]
coverage 255 | y  10 | x [-26,  20]
coverage 166 | y  10 | x [ 21,  21]
coverage 128 | y  11 | x [-27, -27]
coverage 255 | y  11 | x [-26,  20]
coverage 129 | y  11 | x [ 21,  21]
coverage  89 | y  12 | x [-27, -27]
coverage 255 | y  12 | x [-26,  20]
coverage  92 | y  12 | x [ 21,  21]
coverage  31 | y  13 | x [-27, -27]
coverage 255 | y  13 | x [-26,  20]
coverage  40 | y  13 | x [ 21,  21]
coverage   1 | y  14 | x [-27, -27]
coverage 227 | y  14 | x [-26, -26]
coverage 255 | y  14 | x [-25,  20]
coverage 204 | y  14 | x [ 21,  21]
coverage 167 | y  15 | x [-26, -26]
coverage 255 | y  15 | x [-25,  20]
coverage 166 | y  15 | x [ 21,  21]
coverage  90 | y  16 | x [-26, -26]
coverage 255 | y  16 | x [-25,  20]
coverage  97 | y  16 | x [ 21,  21]
coverage  13 | y  17 | x [-26, -26]
coverage 248 | y  17 | x [-25, -25]
coverage 255 | y  17 | x [-24,  20]
coverage 120 | y  17 | x [ 21,  21]
coverage 174 | y  18 | x [-25, -25]
coverage 255 | y  18 | x [-24,  20]
coverage 167 | y  18 | x [ 21,  21]
coverage  78 | y  19 | x [-25, -25]
coverage 255 | y  19 | x [-24,  20]
coverage  73 | y  19 | x [ 21,  21]
coverage   2 | y  20 | x [-25, -25]
coverage 217 | y  20 | x [-24, -24]
coverage 255 | y  20 | x [-23,  20]
coverage 173 | y  20 | x [ 21,  21]
coverage 102 | y  21 | x [-24, -24]
coverage 255 | y  21 | x [-23,  20]
coverage  97 | y  21 | x [ 21,  21]
coverage   9 | y  22 | x [-24, -24]
coverage 231 | y  22 | x [-23, -23]
coverage 255 | y  22 | x [-22,  20]
coverage 156 | y  22 | x [ 21,  21]
coverage  97 | y  23 | x [-23, -23]
coverage 255 | y  23 | x [-22,  20]
coverage 101 | y  23 | x [ 21,  21]
coverage   2 | y  24 | x [-23, -23]
coverage 206 | y  24 | x [-22, -22]
coverage 255 | y  24 | x [-21,  20]
coverage 164 | y  24 | x [ 21,  21]
coverage  61 | y  25 | x [-22, -22]
coverage 255 | y  25 | x [-21,  20]
coverage  95 | y  25 | x [ 21,  21]
coverage 143 | y  26 | x [-21, -21]
coverage 255 | y  26 | x [-20,  20]
coverage 145 | y  26 | x [ 21,  21]
coverage   8 | y  27 | x [-21, -21]
coverage 210 | y  27 | x [-20, -20]
coverage 255 | y  27 | x [-19,  20]
coverage 144 | y  27 | x [ 21,  21]
coverage  45 | y  28 | x [-20, -20]
coverage 246 | y  28 | x [-19, -19]
coverage 255 | y  28 | x [-18,  20]
coverage 121 | y  28 | x [ 21,  21]
coverage  80 | y  29 | x [-19, -19]
coverage 254 | y  29 | x [-18, -18]
coverage 255 | y  29 | x [-17,  20]
coverage 119 | y  29 | x [ 21,  21]
coverage 114 | y  30 | x [-18, -18]
coverage 255 | y  30 | x [-17,  20]
coverage 118 | y  30 | x [ 21,  21]
coverage   1 | y  31 | x [-18, -18]
coverage 140 | y  31 | x [-17, -17]
coverage 255 | y  31 | x [-16,  20]
coverage 127 | y  31 | x [ 21,  21]
coverage   1 | y  32 | x [-17, -17]
coverage 131 | y  32 | x [-16, -16]
coverage 255 | y  32 | x [-15,  20]
coverage 131 | y  32 | x [ 21,  21]
coverage 121 | y  33 | x [-15, -15]
coverage 255 | y  33 | x [-14,  20]
coverage 138 | y  33 | x [ 21,  21]
coverage  91 | y  34 | x [-14, -14]
coverage 246 | y  34 | x [-13, -13]
coverage 255 | y  34 | x [-12,  20]
coverage 137 | y  34 | x [ 21,  21]
coverage  45 | y  35 | x [-13, -13]
coverage 218 | y  35 | x [-12, -12]
coverage 255 | y  35 | x [-11,  20]
coverage 125 | y  35 | x [ 21,  21]
coverage  15 | y  36 | x [-12, -12]
coverage 160 | y  36 | x [-11, -11]
coverage 255 | y  36 | x [-10,  20]
coverage 123 | y  36 | x [ 21,  21]
coverage  64 | y  37 | x [-10, -10]
coverage 215 | y  37 | x [ -9,  -9]
coverage 255 | y  37 | x [ -8,  20]
coverage 130 | y  37 | x [ 21,  21]
coverage   6 | y  38 | x [ -9,  -9]
coverage 116 | y  38 | x [ -8,  -8]
coverage 233 | y  38 | x [ -7,  -7]
coverage 255 | y  38 | x [ -6,  20]
coverage 133 | y  38 | x [ 21,  21]
coverage  10 | y  39 | x [ -7,  -7]
coverage 109 | y  39 | x [ -6,  -6]
coverage 227 | y  39 | x [ -5,  -5]
coverage 255 | y  39 | x [ -4,  20]
coverage 125 | y  39 | x [ 21,  21]
coverage   6 | y  40 | x [ -5,  -5]
coverage  81 | y  40 | x [ -4,  -4]
coverage 172 | y  40 | x [ -3,  -3]
coverage 249 | y  40 | x [ -2,  -2]
coverage 255 | y  40 | x [ -1,  20]
coverage 133 | y  40 | x [ 21,  21]
coverage  16 | y  41 | x [ -2,  -2]
coverage  96 | y  41 | x [ -1,  -1]
coverage 163 | y  41 | x [  0,   0]
coverage 228 | y  41 | x [  1,   1]
coverage 255 | y  41 | x [  2,  18]
coverage 224 | y  41 | x [ 19,  19]
coverage 159 | y  41 | x [ 20,  20]
coverage  56 | y  41 | x [ 21,  21]
coverage   1 | y  42 | x [  1,   1]
coverage  35 | y  42 | x [  2,   2]
coverage  88 | y  42 | x [  3,   3]
coverage 125 | y  42 | x [  4,   4]
coverage 163 | y  42 | x [  5,   5]
coverage 200 | y  42 | x [  6,   6]
coverage 218 | y  42 | x [  7,   7]
coverage 231 | y  42 | x [  8,   8]
coverage 243 | y  42 | x [  9,   9]
coverage 253 | y  42 | x [ 10,  10]
coverage 243 | y  42 | x [ 11,  11]
coverage 231 | y  42 | x [ 12,  12]
coverage 219 | y  42 | x [ 13,  13]
coverage 199 | y  42 | x [ 14,  14]
coverage 162 | y  42 | x [ 15,  15]
coverage 124 | y  42 | x [ 16,  16]
coverage  87 | y  42 | x [ 17,  17]
coverage  32 | y  42 | x [ 18,  18]
[END]





reply via email to

[Prev in Thread] Current Thread [Next in Thread]