Merge lp:~jincreator/ubuntu/trusty/freetype/lp1310017 into lp:ubuntu/trusty/freetype
- Trusty (14.04)
- lp1310017
- Merge into trusty
Proposed by
Jinkyu Yi
Status: | Merged |
---|---|
Merge reported by: | Brian Murray |
Merged at revision: | not available |
Proposed branch: | lp:~jincreator/ubuntu/trusty/freetype/lp1310017 |
Merge into: | lp:ubuntu/trusty/freetype |
Diff against target: |
613 lines (+593/-0) 3 files modified
debian/changelog (+7/-0) debian/patches-freetype/fix-incorrect-korean-fonts-rendering.patch (+585/-0) debian/patches-freetype/series (+1/-0) |
To merge this branch: | bzr merge lp:~jincreator/ubuntu/trusty/freetype/lp1310017 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Brian Murray | Approve | ||
Review via email: mp+217358@code.launchpad.net |
Commit message
Description of the change
Fix LP: #1310017
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2014-03-13 12:47:17 +0000 | |||
3 | +++ debian/changelog 2014-04-27 15:33:25 +0000 | |||
4 | @@ -1,3 +1,10 @@ | |||
5 | 1 | freetype (2.5.2-1ubuntu3) trusty; urgency=medium | ||
6 | 2 | |||
7 | 3 | * Fix incorrect Korean Fonts rendering. (LP: #1310017) | ||
8 | 4 | - debian/patches-freetype/fix-incorrect-korean-fonts-rendering.patch | ||
9 | 5 | |||
10 | 6 | -- Jinkyu Yi <jincreator@Jincreator.net> Sun, 27 Apr 2014 22:05:39 +0900 | ||
11 | 7 | |||
12 | 1 | freetype (2.5.2-1ubuntu2) trusty; urgency=medium | 8 | freetype (2.5.2-1ubuntu2) trusty; urgency=medium |
13 | 2 | 9 | ||
14 | 3 | * SECURITY UPDATE: denial of service and possible code execution in | 10 | * SECURITY UPDATE: denial of service and possible code execution in |
15 | 4 | 11 | ||
16 | === added file 'debian/patches-freetype/fix-incorrect-korean-fonts-rendering.patch' | |||
17 | --- debian/patches-freetype/fix-incorrect-korean-fonts-rendering.patch 1970-01-01 00:00:00 +0000 | |||
18 | +++ debian/patches-freetype/fix-incorrect-korean-fonts-rendering.patch 2014-04-27 15:33:25 +0000 | |||
19 | @@ -0,0 +1,585 @@ | |||
20 | 1 | Description: Fix incorrect Korean fonts rendering | ||
21 | 2 | From: Werner Lemberg <wl@gnu.org> | ||
22 | 3 | Origin: http://git.savannah.gnu.org/cgit/freetype/freetype2.git/patch/?id=98e510ee94e552e9e9f80891aa87b2b472d0f276 | ||
23 | 4 | Bug: https://savannah.nongnu.org/bugs/?42148 | ||
24 | 5 | Bug-Ubuntu: https://launchpad.net/bugs/1310017 | ||
25 | 6 | |||
26 | 7 | --- a/ChangeLog | ||
27 | 8 | +++ b/ChangeLog | ||
28 | 9 | @@ -1,3 +1,46 @@ | ||
29 | 10 | +2014-04-20 Werner Lemberg <wl@gnu.org> | ||
30 | 11 | + | ||
31 | 12 | + [autofit] Fix Savannah bug #42148. | ||
32 | 13 | + | ||
33 | 14 | + The adaptation of the cjk auto-hinter module to blue stringsets in | ||
34 | 15 | + 2013-08-25 had three severe bugs. Mea culpa. | ||
35 | 16 | + | ||
36 | 17 | + 1. Contrary to the latin auto-hinter, characters for reference and | ||
37 | 18 | + overshoot values of a blue zone are specified separately. Due to | ||
38 | 19 | + the screwed-up change it didn't work at all. | ||
39 | 20 | + | ||
40 | 21 | + 2. A boolean comparison was erroneously replaced with a cast, | ||
41 | 22 | + causing invalid results with the `^' operator later on. The | ||
42 | 23 | + visual artifact caused by this problem is the topic of the bug | ||
43 | 24 | + report. | ||
44 | 25 | + | ||
45 | 26 | + 3. Two flag values were inverted, causing incorrect assignment of | ||
46 | 27 | + reference and overshoot values. | ||
47 | 28 | + | ||
48 | 29 | + * src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new | ||
49 | 30 | + syntax to have both reference and overshoot characters in a single | ||
50 | 31 | + string. This is error #1. | ||
51 | 32 | + Add extensive comments. | ||
52 | 33 | + | ||
53 | 34 | + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no | ||
54 | 35 | + longer used. | ||
55 | 36 | + (AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values. | ||
56 | 37 | + This is error #3. | ||
57 | 38 | + | ||
58 | 39 | + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. | ||
59 | 40 | + | ||
60 | 41 | + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1. | ||
61 | 42 | + Use character `|' to separate characters for reference and overshoot | ||
62 | 43 | + values. | ||
63 | 44 | + Improve tracing messages, synchronizing them with the latin | ||
64 | 45 | + auto-hinter. | ||
65 | 46 | + (af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'. | ||
66 | 47 | + This is error #2. | ||
67 | 48 | + (af_cjk_align_linked_edge): Add tracing message. | ||
68 | 49 | + | ||
69 | 50 | + * src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer | ||
70 | 51 | + used. | ||
71 | 52 | + | ||
72 | 53 | 2013-12-08 Werner Lemberg <wl@gnu.org> | ||
73 | 54 | |||
74 | 55 | * Version 2.5.2 released. | ||
75 | 56 | --- a/src/autofit/afblue.c | ||
76 | 57 | +++ b/src/autofit/afblue.c | ||
77 | 58 | @@ -64,8 +64,7 @@ | ||
78 | 59 | '\xE4', '\xBB', '\x96', '\xE4', '\xBB', '\xAC', '\xE4', '\xBD', '\xA0', '\xE4', '\xBE', '\x86', '\xE5', '\x80', '\x91', '\xE5', '\x88', '\xB0', '\xE5', '\x92', '\x8C', '\xE5', '\x9C', '\xB0', /* 他们你來們到和地 */ | ||
79 | 60 | '\xE5', '\xAF', '\xB9', '\xE5', '\xB0', '\x8D', '\xE5', '\xB0', '\xB1', '\xE5', '\xB8', '\xAD', '\xE6', '\x88', '\x91', '\xE6', '\x97', '\xB6', '\xE6', '\x99', '\x82', '\xE6', '\x9C', '\x83', /* 对對就席我时時會 */ | ||
80 | 61 | '\xE6', '\x9D', '\xA5', '\xE7', '\x82', '\xBA', '\xE8', '\x83', '\xBD', '\xE8', '\x88', '\xB0', '\xE8', '\xAA', '\xAA', '\xE8', '\xAF', '\xB4', '\xE8', '\xBF', '\x99', '\xE9', '\x80', '\x99', /* 来為能舰說说这這 */ | ||
81 | 62 | - '\xE9', '\xBD', '\x8A', /* 齊 */ | ||
82 | 63 | - '\0', | ||
83 | 64 | + '\xE9', '\xBD', '\x8A', '|', /* 齊 | */ | ||
84 | 65 | '\xE5', '\x86', '\x9B', '\xE5', '\x90', '\x8C', '\xE5', '\xB7', '\xB2', '\xE6', '\x84', '\xBF', '\xE6', '\x97', '\xA2', '\xE6', '\x98', '\x9F', '\xE6', '\x98', '\xAF', '\xE6', '\x99', '\xAF', /* 军同已愿既星是景 */ | ||
85 | 66 | '\xE6', '\xB0', '\x91', '\xE7', '\x85', '\xA7', '\xE7', '\x8E', '\xB0', '\xE7', '\x8F', '\xBE', '\xE7', '\x90', '\x86', '\xE7', '\x94', '\xA8', '\xE7', '\xBD', '\xAE', '\xE8', '\xA6', '\x81', /* 民照现現理用置要 */ | ||
86 | 67 | '\xE8', '\xBB', '\x8D', '\xE9', '\x82', '\xA3', '\xE9', '\x85', '\x8D', '\xE9', '\x87', '\x8C', '\xE9', '\x96', '\x8B', '\xE9', '\x9B', '\xB7', '\xE9', '\x9C', '\xB2', '\xE9', '\x9D', '\xA2', /* 軍那配里開雷露面 */ | ||
87 | 68 | @@ -74,8 +73,7 @@ | ||
88 | 69 | '\xE4', '\xB8', '\xAA', '\xE4', '\xB8', '\xBA', '\xE4', '\xBA', '\xBA', '\xE4', '\xBB', '\x96', '\xE4', '\xBB', '\xA5', '\xE4', '\xBB', '\xAC', '\xE4', '\xBD', '\xA0', '\xE4', '\xBE', '\x86', /* 个为人他以们你來 */ | ||
89 | 70 | '\xE5', '\x80', '\x8B', '\xE5', '\x80', '\x91', '\xE5', '\x88', '\xB0', '\xE5', '\x92', '\x8C', '\xE5', '\xA4', '\xA7', '\xE5', '\xAF', '\xB9', '\xE5', '\xB0', '\x8D', '\xE5', '\xB0', '\xB1', /* 個們到和大对對就 */ | ||
90 | 71 | '\xE6', '\x88', '\x91', '\xE6', '\x97', '\xB6', '\xE6', '\x99', '\x82', '\xE6', '\x9C', '\x89', '\xE6', '\x9D', '\xA5', '\xE7', '\x82', '\xBA', '\xE8', '\xA6', '\x81', '\xE8', '\xAA', '\xAA', /* 我时時有来為要說 */ | ||
91 | 72 | - '\xE8', '\xAF', '\xB4', /* 说 */ | ||
92 | 73 | - '\0', | ||
93 | 74 | + '\xE8', '\xAF', '\xB4', '|', /* 说 | */ | ||
94 | 75 | '\xE4', '\xB8', '\xBB', '\xE4', '\xBA', '\x9B', '\xE5', '\x9B', '\xA0', '\xE5', '\xAE', '\x83', '\xE6', '\x83', '\xB3', '\xE6', '\x84', '\x8F', '\xE7', '\x90', '\x86', '\xE7', '\x94', '\x9F', /* 主些因它想意理生 */ | ||
95 | 76 | '\xE7', '\x95', '\xB6', '\xE7', '\x9C', '\x8B', '\xE7', '\x9D', '\x80', '\xE7', '\xBD', '\xAE', '\xE8', '\x80', '\x85', '\xE8', '\x87', '\xAA', '\xE8', '\x91', '\x97', '\xE8', '\xA3', '\xA1', /* 當看着置者自著裡 */ | ||
96 | 77 | '\xE8', '\xBF', '\x87', '\xE8', '\xBF', '\x98', '\xE8', '\xBF', '\x9B', '\xE9', '\x80', '\xB2', '\xE9', '\x81', '\x8E', '\xE9', '\x81', '\x93', '\xE9', '\x82', '\x84', '\xE9', '\x87', '\x8C', /* 过还进進過道還里 */ | ||
97 | 78 | @@ -85,8 +83,7 @@ | ||
98 | 79 | '\xE4', '\xBA', '\x9B', '\xE4', '\xBB', '\xAC', '\xE4', '\xBD', '\xA0', '\xE4', '\xBE', '\x86', '\xE5', '\x80', '\x91', '\xE5', '\x88', '\xB0', '\xE5', '\x92', '\x8C', '\xE5', '\x9C', '\xB0', /* 些们你來們到和地 */ | ||
99 | 80 | '\xE5', '\xA5', '\xB9', '\xE5', '\xB0', '\x86', '\xE5', '\xB0', '\x87', '\xE5', '\xB0', '\xB1', '\xE5', '\xB9', '\xB4', '\xE5', '\xBE', '\x97', '\xE6', '\x83', '\x85', '\xE6', '\x9C', '\x80', /* 她将將就年得情最 */ | ||
100 | 81 | '\xE6', '\xA0', '\xB7', '\xE6', '\xA8', '\xA3', '\xE7', '\x90', '\x86', '\xE8', '\x83', '\xBD', '\xE8', '\xAA', '\xAA', '\xE8', '\xAF', '\xB4', '\xE8', '\xBF', '\x99', '\xE9', '\x80', '\x99', /* 样樣理能說说这這 */ | ||
101 | 82 | - '\xE9', '\x80', '\x9A', /* 通 */ | ||
102 | 83 | - '\0', | ||
103 | 84 | + '\xE9', '\x80', '\x9A', '|', /* 通 | */ | ||
104 | 85 | '\xE5', '\x8D', '\xB3', '\xE5', '\x90', '\x97', '\xE5', '\x90', '\xA7', '\xE5', '\x90', '\xAC', '\xE5', '\x91', '\xA2', '\xE5', '\x93', '\x81', '\xE5', '\x93', '\x8D', '\xE5', '\x97', '\x8E', /* 即吗吧听呢品响嗎 */ | ||
105 | 86 | '\xE5', '\xB8', '\x88', '\xE5', '\xB8', '\xAB', '\xE6', '\x94', '\xB6', '\xE6', '\x96', '\xAD', '\xE6', '\x96', '\xB7', '\xE6', '\x98', '\x8E', '\xE7', '\x9C', '\xBC', '\xE9', '\x96', '\x93', /* 师師收断斷明眼間 */ | ||
106 | 87 | '\xE9', '\x97', '\xB4', '\xE9', '\x99', '\x85', '\xE9', '\x99', '\x88', '\xE9', '\x99', '\x90', '\xE9', '\x99', '\xA4', '\xE9', '\x99', '\xB3', '\xE9', '\x9A', '\x8F', '\xE9', '\x9A', '\x9B', /* 间际陈限除陳随際 */ | ||
107 | 88 | @@ -95,8 +92,7 @@ | ||
108 | 89 | '\xE4', '\xBA', '\x8B', '\xE5', '\x89', '\x8D', '\xE5', '\xAD', '\xB8', '\xE5', '\xB0', '\x86', '\xE5', '\xB0', '\x87', '\xE6', '\x83', '\x85', '\xE6', '\x83', '\xB3', '\xE6', '\x88', '\x96', /* 事前學将將情想或 */ | ||
109 | 90 | '\xE6', '\x94', '\xBF', '\xE6', '\x96', '\xAF', '\xE6', '\x96', '\xB0', '\xE6', '\xA0', '\xB7', '\xE6', '\xA8', '\xA3', '\xE6', '\xB0', '\x91', '\xE6', '\xB2', '\x92', '\xE6', '\xB2', '\xA1', /* 政斯新样樣民沒没 */ | ||
110 | 91 | '\xE7', '\x84', '\xB6', '\xE7', '\x89', '\xB9', '\xE7', '\x8E', '\xB0', '\xE7', '\x8F', '\xBE', '\xE7', '\x90', '\x83', '\xE7', '\xAC', '\xAC', '\xE7', '\xB6', '\x93', '\xE8', '\xB0', '\x81', /* 然特现現球第經谁 */ | ||
111 | 92 | - '\xE8', '\xB5', '\xB7', /* 起 */ | ||
112 | 93 | - '\0', | ||
113 | 94 | + '\xE8', '\xB5', '\xB7', '|', /* 起 | */ | ||
114 | 95 | '\xE4', '\xBE', '\x8B', '\xE5', '\x88', '\xA5', '\xE5', '\x88', '\xAB', '\xE5', '\x88', '\xB6', '\xE5', '\x8A', '\xA8', '\xE5', '\x8B', '\x95', '\xE5', '\x90', '\x97', '\xE5', '\x97', '\x8E', /* 例別别制动動吗嗎 */ | ||
115 | 96 | '\xE5', '\xA2', '\x9E', '\xE6', '\x8C', '\x87', '\xE6', '\x98', '\x8E', '\xE6', '\x9C', '\x9D', '\xE6', '\x9C', '\x9F', '\xE6', '\x9E', '\x84', '\xE7', '\x89', '\xA9', '\xE7', '\xA1', '\xAE', /* 增指明朝期构物确 */ | ||
116 | 97 | '\xE7', '\xA7', '\x8D', '\xE8', '\xAA', '\xBF', '\xE8', '\xB0', '\x83', '\xE8', '\xB2', '\xBB', '\xE8', '\xB4', '\xB9', '\xE9', '\x82', '\xA3', '\xE9', '\x83', '\xBD', '\xE9', '\x96', '\x93', /* 种調调費费那都間 */ | ||
117 | 98 | @@ -142,22 +138,14 @@ | ||
118 | 99 | { AF_BLUE_STRING_HEBREW_DESCENDER, 0 }, | ||
119 | 100 | { AF_BLUE_STRING_MAX, 0 }, | ||
120 | 101 | #ifdef AF_CONFIG_OPTION_CJK | ||
121 | 102 | - { AF_BLUE_STRING_CJK_TOP_FILL, AF_BLUE_PROPERTY_CJK_TOP | | ||
122 | 103 | - AF_BLUE_PROPERTY_CJK_FILL }, | ||
123 | 104 | - { AF_BLUE_STRING_CJK_TOP_UNFILL, AF_BLUE_PROPERTY_CJK_TOP }, | ||
124 | 105 | - { AF_BLUE_STRING_CJK_BOTTOM_FILL, AF_BLUE_PROPERTY_CJK_FILL }, | ||
125 | 106 | - { AF_BLUE_STRING_CJK_BOTTOM_UNFILL, 0 }, | ||
126 | 107 | + { AF_BLUE_STRING_CJK_TOP, AF_BLUE_PROPERTY_CJK_TOP }, | ||
127 | 108 | + { AF_BLUE_STRING_CJK_BOTTOM, 0 }, | ||
128 | 109 | #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT | ||
129 | 110 | - { AF_BLUE_STRING_CJK_LEFT_FILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
130 | 111 | - AF_BLUE_PROPERTY_CJK_FILL }, | ||
131 | 112 | - { AF_BLUE_STRING_CJK_LEFT_UNFILL, AF_BLUE_PROPERTY_CJK_HORIZ }, | ||
132 | 113 | - { AF_BLUE_STRING_CJK_RIGHT_FILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
133 | 114 | - AF_BLUE_PROPERTY_CJK_RIGHT | | ||
134 | 115 | - AF_BLUE_PROPERTY_CJK_FILL }, | ||
135 | 116 | - { AF_BLUE_STRING_CJK_RIGHT_UNFILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
136 | 117 | - AF_BLUE_PROPERTY_CJK_RIGHT }, | ||
137 | 118 | + { AF_BLUE_STRING_CJK_LEFT, AF_BLUE_PROPERTY_CJK_HORIZ }, | ||
138 | 119 | + { AF_BLUE_STRING_CJK_RIGHT, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
139 | 120 | + AF_BLUE_PROPERTY_CJK_RIGHT }, | ||
140 | 121 | #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ | ||
141 | 122 | - { AF_BLUE_STRING_MAX, 0 }, | ||
142 | 123 | + { AF_BLUE_STRING_MAX, 0 }, | ||
143 | 124 | #endif /* AF_CONFIG_OPTION_CJK */ | ||
144 | 125 | |||
145 | 126 | }; | ||
146 | 127 | --- a/src/autofit/afblue.dat | ||
147 | 128 | +++ b/src/autofit/afblue.dat | ||
148 | 129 | @@ -2,7 +2,7 @@ | ||
149 | 130 | // | ||
150 | 131 | // Auto-fitter data for blue strings. | ||
151 | 132 | // | ||
152 | 133 | -// Copyright 2013 by | ||
153 | 134 | +// Copyright 2013, 2014 by | ||
154 | 135 | // David Turner, Robert Wilhelm, and Werner Lemberg. | ||
155 | 136 | // | ||
156 | 137 | // This file is part of the FreeType project, and may only be used, | ||
157 | 138 | @@ -63,6 +63,8 @@ | ||
158 | 139 | // characters, not bytes. | ||
159 | 140 | |||
160 | 141 | |||
161 | 142 | +// The blue zone string data, to be used in the blue stringsets below. | ||
162 | 143 | + | ||
163 | 144 | AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN: | ||
164 | 145 | |||
165 | 146 | AF_BLUE_STRING_LATIN_CAPITAL_TOP | ||
166 | 147 | @@ -105,22 +107,20 @@ | ||
167 | 148 | |||
168 | 149 | #ifdef AF_CONFIG_OPTION_CJK | ||
169 | 150 | |||
170 | 151 | - AF_BLUE_STRING_CJK_TOP_FILL | ||
171 | 152 | + AF_BLUE_STRING_CJK_TOP | ||
172 | 153 | "他们你來們到和地" | ||
173 | 154 | "对對就席我时時會" | ||
174 | 155 | "来為能舰說说这這" | ||
175 | 156 | - "齊" | ||
176 | 157 | - AF_BLUE_STRING_CJK_TOP_UNFILL | ||
177 | 158 | + "齊 |" | ||
178 | 159 | "军同已愿既星是景" | ||
179 | 160 | "民照现現理用置要" | ||
180 | 161 | "軍那配里開雷露面" | ||
181 | 162 | "顾" | ||
182 | 163 | - AF_BLUE_STRING_CJK_BOTTOM_FILL | ||
183 | 164 | + AF_BLUE_STRING_CJK_BOTTOM | ||
184 | 165 | "个为人他以们你來" | ||
185 | 166 | "個們到和大对對就" | ||
186 | 167 | "我时時有来為要說" | ||
187 | 168 | - "说" | ||
188 | 169 | - AF_BLUE_STRING_CJK_BOTTOM_UNFILL | ||
189 | 170 | + "说 |" | ||
190 | 171 | "主些因它想意理生" | ||
191 | 172 | "當看着置者自著裡" | ||
192 | 173 | "过还进進過道還里" | ||
193 | 174 | @@ -128,22 +128,20 @@ | ||
194 | 175 | |||
195 | 176 | #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT | ||
196 | 177 | |||
197 | 178 | - AF_BLUE_STRING_CJK_LEFT_FILL | ||
198 | 179 | + AF_BLUE_STRING_CJK_LEFT | ||
199 | 180 | "些们你來們到和地" | ||
200 | 181 | "她将將就年得情最" | ||
201 | 182 | "样樣理能說说这這" | ||
202 | 183 | - "通" | ||
203 | 184 | - AF_BLUE_STRING_CJK_LEFT_UNFILL | ||
204 | 185 | + "通 |" | ||
205 | 186 | "即吗吧听呢品响嗎" | ||
206 | 187 | "师師收断斷明眼間" | ||
207 | 188 | "间际陈限除陳随際" | ||
208 | 189 | "隨" | ||
209 | 190 | - AF_BLUE_STRING_CJK_RIGHT_FILL | ||
210 | 191 | + AF_BLUE_STRING_CJK_RIGHT | ||
211 | 192 | "事前學将將情想或" | ||
212 | 193 | "政斯新样樣民沒没" | ||
213 | 194 | "然特现現球第經谁" | ||
214 | 195 | - "起" | ||
215 | 196 | - AF_BLUE_STRING_CJK_RIGHT_UNFILL | ||
216 | 197 | + "起 |" | ||
217 | 198 | "例別别制动動吗嗎" | ||
218 | 199 | "增指明朝期构物确" | ||
219 | 200 | "种調调費费那都間" | ||
220 | 201 | @@ -154,6 +152,79 @@ | ||
221 | 202 | #endif /* AF_CONFIG_OPTION_CJK */ | ||
222 | 203 | |||
223 | 204 | |||
224 | 205 | +// The blue zone stringsets, as used in the script styles, cf. `afstyles.h'. | ||
225 | 206 | +// | ||
226 | 207 | +// The AF_BLUE_PROPERTY_XXX flags are defined in `afblue.h'; here some | ||
227 | 208 | +// explanations. | ||
228 | 209 | +// | ||
229 | 210 | +// A blue zone in general is defined by a reference and an overshoot line. | ||
230 | 211 | +// During the hinting process, all coordinate values between those two lines | ||
231 | 212 | +// are set equal to the reference value, provided that the blue zone is not | ||
232 | 213 | +// wider than 0.75 pixels (otherwise the blue zone gets ignored). All | ||
233 | 214 | +// entries must have `AF_BLUE_STRING_MAX' as the final line. | ||
234 | 215 | +// | ||
235 | 216 | +// | ||
236 | 217 | +// latin auto-hinter | ||
237 | 218 | +// ----------------- | ||
238 | 219 | +// | ||
239 | 220 | +// Characters in a blue string are automatically classified as having a flat | ||
240 | 221 | +// (reference) or a round (overshoot) extremum. The blue zone is then set | ||
241 | 222 | +// up by the mean values of all flat extrema and all round extrema, | ||
242 | 223 | +// respectively. Only horizontal blue zones (i.e., adjusting vertical | ||
243 | 224 | +// coordinate values) are supported. | ||
244 | 225 | +// | ||
245 | 226 | +// For the latin auto-hinter, the overshoot should be larger than the | ||
246 | 227 | +// reference for top zones, and vice versa for bottom zones. | ||
247 | 228 | +// | ||
248 | 229 | +// LATIN_TOP | ||
249 | 230 | +// Take the maximum flat and round coordinate values of the blue string | ||
250 | 231 | +// characters. If not set, take the minimum values. | ||
251 | 232 | +// | ||
252 | 233 | +// LATIN_X_HEIGHT | ||
253 | 234 | +// Scale all glyphs vertically from the corresponding script to make the | ||
254 | 235 | +// reference line of this blue zone align on the grid. The scaling | ||
255 | 236 | +// takes place before all other blue zones get aligned to the grid. | ||
256 | 237 | +// Only one blue character string of a script style can have this flag. | ||
257 | 238 | +// | ||
258 | 239 | +// LATIN_LONG | ||
259 | 240 | +// Apply an additional constraint for blue zone values: Don't | ||
260 | 241 | +// necessarily use the extremum as-is but a segment of the topmost (or | ||
261 | 242 | +// bottommost) contour that is longer than a heuristic threshold, and | ||
262 | 243 | +// which is not too far away vertically from the real extremum. This | ||
263 | 244 | +// ensures that small bumps in the outline are ignored (for example, the | ||
264 | 245 | +// `vertical serifs' found in many Hebrew glyph designs). | ||
265 | 246 | +// | ||
266 | 247 | +// The segment must be at least EM/25 font units long, and the distance | ||
267 | 248 | +// to the extremum must be smaller than EM/4. | ||
268 | 249 | +// | ||
269 | 250 | +// | ||
270 | 251 | +// cjk auto-hinter | ||
271 | 252 | +// --------------- | ||
272 | 253 | +// | ||
273 | 254 | +// Characters in a blue string are *not* automatically classified. Instead, | ||
274 | 255 | +// first come the characters used for the overshoot value, then the | ||
275 | 256 | +// character `|', then the characters used for the reference value. The | ||
276 | 257 | +// blue zone is then set up by the mean values of all reference values and | ||
277 | 258 | +// all overshoot values, respectively. Both horizontal and vertical blue | ||
278 | 259 | +// zones (i.e., adjusting vertical and horizontal coordinate values, | ||
279 | 260 | +// respectively) are supported. | ||
280 | 261 | +// | ||
281 | 262 | +// For the cjk auto-hinter, the overshoot should be smaller than the | ||
282 | 263 | +// reference for top zones, and vice versa for bottom zones. | ||
283 | 264 | +// | ||
284 | 265 | +// CJK_TOP | ||
285 | 266 | +// Take the maximum flat and round coordinate values of the blue string | ||
286 | 267 | +// characters. If not set, take the minimum values. | ||
287 | 268 | +// | ||
288 | 269 | +// CJK_RIGHT | ||
289 | 270 | +// A synonym for CJK_TOP. If CJK_HORIZ is set, this flag indicates the | ||
290 | 271 | +// right blue zone, taking horizontal maximum values. | ||
291 | 272 | +// | ||
292 | 273 | +// CJK_HORIZ | ||
293 | 274 | +// Define a blue zone for horizontal hinting (i.e., vertical blue | ||
294 | 275 | +// zones). If not set, this is a blue zone for vertical hinting. | ||
295 | 276 | + | ||
296 | 277 | + | ||
297 | 278 | AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN: | ||
298 | 279 | |||
299 | 280 | AF_BLUE_STRINGSET_LATN | ||
300 | 281 | @@ -195,22 +266,14 @@ | ||
301 | 282 | #ifdef AF_CONFIG_OPTION_CJK | ||
302 | 283 | |||
303 | 284 | AF_BLUE_STRINGSET_HANI | ||
304 | 285 | - { AF_BLUE_STRING_CJK_TOP_FILL, AF_BLUE_PROPERTY_CJK_TOP | | ||
305 | 286 | - AF_BLUE_PROPERTY_CJK_FILL } | ||
306 | 287 | - { AF_BLUE_STRING_CJK_TOP_UNFILL, AF_BLUE_PROPERTY_CJK_TOP } | ||
307 | 288 | - { AF_BLUE_STRING_CJK_BOTTOM_FILL, AF_BLUE_PROPERTY_CJK_FILL } | ||
308 | 289 | - { AF_BLUE_STRING_CJK_BOTTOM_UNFILL, 0 } | ||
309 | 290 | + { AF_BLUE_STRING_CJK_TOP, AF_BLUE_PROPERTY_CJK_TOP } | ||
310 | 291 | + { AF_BLUE_STRING_CJK_BOTTOM, 0 } | ||
311 | 292 | #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT | ||
312 | 293 | - { AF_BLUE_STRING_CJK_LEFT_FILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
313 | 294 | - AF_BLUE_PROPERTY_CJK_FILL } | ||
314 | 295 | - { AF_BLUE_STRING_CJK_LEFT_UNFILL, AF_BLUE_PROPERTY_CJK_HORIZ } | ||
315 | 296 | - { AF_BLUE_STRING_CJK_RIGHT_FILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
316 | 297 | - AF_BLUE_PROPERTY_CJK_RIGHT | | ||
317 | 298 | - AF_BLUE_PROPERTY_CJK_FILL } | ||
318 | 299 | - { AF_BLUE_STRING_CJK_RIGHT_UNFILL, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
319 | 300 | - AF_BLUE_PROPERTY_CJK_RIGHT } | ||
320 | 301 | + { AF_BLUE_STRING_CJK_LEFT, AF_BLUE_PROPERTY_CJK_HORIZ } | ||
321 | 302 | + { AF_BLUE_STRING_CJK_RIGHT, AF_BLUE_PROPERTY_CJK_HORIZ | | ||
322 | 303 | + AF_BLUE_PROPERTY_CJK_RIGHT } | ||
323 | 304 | #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ | ||
324 | 305 | - { AF_BLUE_STRING_MAX, 0 } | ||
325 | 306 | + { AF_BLUE_STRING_MAX, 0 } | ||
326 | 307 | |||
327 | 308 | #endif /* AF_CONFIG_OPTION_CJK */ | ||
328 | 309 | |||
329 | 310 | --- a/src/autofit/afblue.h | ||
330 | 311 | +++ b/src/autofit/afblue.h | ||
331 | 312 | @@ -7,7 +7,7 @@ | ||
332 | 313 | /* */ | ||
333 | 314 | /* Auto-fitter data for blue strings (specification). */ | ||
334 | 315 | /* */ | ||
335 | 316 | -/* Copyright 2013 by */ | ||
336 | 317 | +/* Copyright 2013, 2014 by */ | ||
337 | 318 | /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | ||
338 | 319 | /* */ | ||
339 | 320 | /* This file is part of the FreeType project, and may only be used, */ | ||
340 | 321 | @@ -67,7 +67,7 @@ | ||
341 | 322 | /* At the bottommost level, we define strings for finding blue zones. */ | ||
342 | 323 | |||
343 | 324 | |||
344 | 325 | -#define AF_BLUE_STRING_MAX_LEN 25 | ||
345 | 326 | +#define AF_BLUE_STRING_MAX_LEN 52 | ||
346 | 327 | |||
347 | 328 | /* The AF_Blue_String enumeration values are offsets into the */ | ||
348 | 329 | /* `af_blue_strings' array. */ | ||
349 | 330 | @@ -93,17 +93,13 @@ | ||
350 | 331 | AF_BLUE_STRING_HEBREW_DESCENDER = 203, | ||
351 | 332 | af_blue_1_1 = 213, | ||
352 | 333 | #ifdef AF_CONFIG_OPTION_CJK | ||
353 | 334 | - AF_BLUE_STRING_CJK_TOP_FILL = af_blue_1_1 + 1, | ||
354 | 335 | - AF_BLUE_STRING_CJK_TOP_UNFILL = af_blue_1_1 + 77, | ||
355 | 336 | - AF_BLUE_STRING_CJK_BOTTOM_FILL = af_blue_1_1 + 153, | ||
356 | 337 | - AF_BLUE_STRING_CJK_BOTTOM_UNFILL = af_blue_1_1 + 229, | ||
357 | 338 | - af_blue_1_1_1 = af_blue_1_1 + 304, | ||
358 | 339 | + AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1, | ||
359 | 340 | + AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 154, | ||
360 | 341 | + af_blue_1_1_1 = af_blue_1_1 + 306, | ||
361 | 342 | #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT | ||
362 | 343 | - AF_BLUE_STRING_CJK_LEFT_FILL = af_blue_1_1_1 + 1, | ||
363 | 344 | - AF_BLUE_STRING_CJK_LEFT_UNFILL = af_blue_1_1_1 + 77, | ||
364 | 345 | - AF_BLUE_STRING_CJK_RIGHT_FILL = af_blue_1_1_1 + 153, | ||
365 | 346 | - AF_BLUE_STRING_CJK_RIGHT_UNFILL = af_blue_1_1_1 + 229, | ||
366 | 347 | - af_blue_1_2_1 = af_blue_1_1_1 + 304, | ||
367 | 348 | + AF_BLUE_STRING_CJK_LEFT = af_blue_1_1_1 + 1, | ||
368 | 349 | + AF_BLUE_STRING_CJK_RIGHT = af_blue_1_1_1 + 154, | ||
369 | 350 | + af_blue_1_2_1 = af_blue_1_1_1 + 306, | ||
370 | 351 | #else | ||
371 | 352 | af_blue_1_2_1 = af_blue_1_1_1 + 0, | ||
372 | 353 | #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ | ||
373 | 354 | @@ -140,13 +136,12 @@ | ||
374 | 355 | #define AF_BLUE_PROPERTY_LATIN_X_HEIGHT ( 1 << 1 ) | ||
375 | 356 | #define AF_BLUE_PROPERTY_LATIN_LONG ( 1 << 2 ) | ||
376 | 357 | |||
377 | 358 | -#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1 << 0 ) | ||
378 | 359 | -#define AF_BLUE_PROPERTY_CJK_TOP ( 1 << 1 ) | ||
379 | 360 | -#define AF_BLUE_PROPERTY_CJK_FILL ( 1 << 2 ) | ||
380 | 361 | +#define AF_BLUE_PROPERTY_CJK_TOP ( 1 << 0 ) | ||
381 | 362 | +#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1 << 1 ) | ||
382 | 363 | #define AF_BLUE_PROPERTY_CJK_RIGHT AF_BLUE_PROPERTY_CJK_TOP | ||
383 | 364 | |||
384 | 365 | |||
385 | 366 | -#define AF_BLUE_STRINGSET_MAX_LEN 9 | ||
386 | 367 | +#define AF_BLUE_STRINGSET_MAX_LEN 7 | ||
387 | 368 | |||
388 | 369 | /* The AF_Blue_Stringset enumeration values are offsets into the */ | ||
389 | 370 | /* `af_blue_stringsets' array. */ | ||
390 | 371 | @@ -160,9 +155,9 @@ | ||
391 | 372 | af_blue_2_1 = 24, | ||
392 | 373 | #ifdef AF_CONFIG_OPTION_CJK | ||
393 | 374 | AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0, | ||
394 | 375 | - af_blue_2_1_1 = af_blue_2_1 + 4, | ||
395 | 376 | + af_blue_2_1_1 = af_blue_2_1 + 2, | ||
396 | 377 | #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT | ||
397 | 378 | - af_blue_2_2_1 = af_blue_2_1_1 + 4, | ||
398 | 379 | + af_blue_2_2_1 = af_blue_2_1_1 + 2, | ||
399 | 380 | #else | ||
400 | 381 | af_blue_2_2_1 = af_blue_2_1_1 + 0, | ||
401 | 382 | #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ | ||
402 | 383 | --- a/src/autofit/afblue.hin | ||
403 | 384 | +++ b/src/autofit/afblue.hin | ||
404 | 385 | @@ -4,7 +4,7 @@ | ||
405 | 386 | /* */ | ||
406 | 387 | /* Auto-fitter data for blue strings (specification). */ | ||
407 | 388 | /* */ | ||
408 | 389 | -/* Copyright 2013 by */ | ||
409 | 390 | +/* Copyright 2013, 2014 by */ | ||
410 | 391 | /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | ||
411 | 392 | /* */ | ||
412 | 393 | /* This file is part of the FreeType project, and may only be used, */ | ||
413 | 394 | @@ -100,9 +100,8 @@ | ||
414 | 395 | #define AF_BLUE_PROPERTY_LATIN_X_HEIGHT ( 1 << 1 ) | ||
415 | 396 | #define AF_BLUE_PROPERTY_LATIN_LONG ( 1 << 2 ) | ||
416 | 397 | |||
417 | 398 | -#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1 << 0 ) | ||
418 | 399 | -#define AF_BLUE_PROPERTY_CJK_TOP ( 1 << 1 ) | ||
419 | 400 | -#define AF_BLUE_PROPERTY_CJK_FILL ( 1 << 2 ) | ||
420 | 401 | +#define AF_BLUE_PROPERTY_CJK_TOP ( 1 << 0 ) | ||
421 | 402 | +#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1 << 1 ) | ||
422 | 403 | #define AF_BLUE_PROPERTY_CJK_RIGHT AF_BLUE_PROPERTY_CJK_TOP | ||
423 | 404 | |||
424 | 405 | |||
425 | 406 | --- a/src/autofit/afcjk.c | ||
426 | 407 | +++ b/src/autofit/afcjk.c | ||
427 | 408 | @@ -221,6 +221,8 @@ | ||
428 | 409 | FT_Int num_fills; | ||
429 | 410 | FT_Int num_flats; | ||
430 | 411 | |||
431 | 412 | + FT_Bool fill; | ||
432 | 413 | + | ||
433 | 414 | AF_CJKBlue blue; | ||
434 | 415 | FT_Error error; | ||
435 | 416 | AF_CJKAxis axis; | ||
436 | 417 | @@ -229,22 +231,6 @@ | ||
437 | 418 | AF_Blue_Stringset bss = metrics->root.script_class->blue_stringset; | ||
438 | 419 | const AF_Blue_StringRec* bs = &af_blue_stringsets[bss]; | ||
439 | 420 | |||
440 | 421 | -#ifdef FT_DEBUG_LEVEL_TRACE | ||
441 | 422 | - FT_String* cjk_blue_name[4] = | ||
442 | 423 | - { | ||
443 | 424 | - (FT_String*)"bottom", /* -- , -- */ | ||
444 | 425 | - (FT_String*)"top", /* -- , TOP */ | ||
445 | 426 | - (FT_String*)"left", /* HORIZ, -- */ | ||
446 | 427 | - (FT_String*)"right" /* HORIZ, TOP */ | ||
447 | 428 | - }; | ||
448 | 429 | - | ||
449 | 430 | - FT_String* cjk_blue_type_name[2] = | ||
450 | 431 | - { | ||
451 | 432 | - (FT_String*)"unfilled", /* -- */ | ||
452 | 433 | - (FT_String*)"filled" /* FILL */ | ||
453 | 434 | - }; | ||
454 | 435 | -#endif | ||
455 | 436 | - | ||
456 | 437 | |||
457 | 438 | /* we walk over the blue character strings as specified in the */ | ||
458 | 439 | /* script's entry in the `af_blue_stringset' array, computing its */ | ||
459 | 440 | @@ -266,15 +252,29 @@ | ||
460 | 441 | else | ||
461 | 442 | axis = &metrics->axis[AF_DIMENSION_VERT]; | ||
462 | 443 | |||
463 | 444 | - FT_TRACE5(( "blue zone %d:\n", axis->blue_count )); | ||
464 | 445 | +#ifdef FT_DEBUG_LEVEL_TRACE | ||
465 | 446 | + { | ||
466 | 447 | + FT_String* cjk_blue_name[4] = | ||
467 | 448 | + { | ||
468 | 449 | + (FT_String*)"bottom", /* -- , -- */ | ||
469 | 450 | + (FT_String*)"top", /* -- , TOP */ | ||
470 | 451 | + (FT_String*)"left", /* HORIZ, -- */ | ||
471 | 452 | + (FT_String*)"right" /* HORIZ, TOP */ | ||
472 | 453 | + }; | ||
473 | 454 | + | ||
474 | 455 | + | ||
475 | 456 | + FT_TRACE5(( "blue zone %d (%s):\n", | ||
476 | 457 | + axis->blue_count, | ||
477 | 458 | + cjk_blue_name[AF_CJK_IS_HORIZ_BLUE( bs ) | | ||
478 | 459 | + AF_CJK_IS_TOP_BLUE( bs ) ] )); | ||
479 | 460 | + } | ||
480 | 461 | +#endif /* FT_DEBUG_LEVEL_TRACE */ | ||
481 | 462 | |||
482 | 463 | num_fills = 0; | ||
483 | 464 | num_flats = 0; | ||
484 | 465 | |||
485 | 466 | - FT_TRACE5(( " cjk blue %s/%s\n", | ||
486 | 467 | - cjk_blue_name[AF_CJK_IS_HORIZ_BLUE( bs ) | | ||
487 | 468 | - AF_CJK_IS_TOP_BLUE( bs ) ], | ||
488 | 469 | - cjk_blue_type_name[!!AF_CJK_IS_FILLED_BLUE( bs )] )); | ||
489 | 470 | + fill = 1; /* start with characters that define fill values */ | ||
490 | 471 | + FT_TRACE5(( " [overshoot values]\n" )); | ||
491 | 472 | |||
492 | 473 | while ( *p ) | ||
493 | 474 | { | ||
494 | 475 | @@ -287,6 +287,14 @@ | ||
495 | 476 | |||
496 | 477 | GET_UTF8_CHAR( ch, p ); | ||
497 | 478 | |||
498 | 479 | + /* switch to characters that define flat values */ | ||
499 | 480 | + if ( ch == '|' ) | ||
500 | 481 | + { | ||
501 | 482 | + fill = 0; | ||
502 | 483 | + FT_TRACE5(( " [reference values]\n" )); | ||
503 | 484 | + continue; | ||
504 | 485 | + } | ||
505 | 486 | + | ||
506 | 487 | /* load the character in the face -- skip unknown or empty ones */ | ||
507 | 488 | glyph_index = FT_Get_Char_Index( face, ch ); | ||
508 | 489 | if ( glyph_index == 0 ) | ||
509 | 490 | @@ -374,7 +382,7 @@ | ||
510 | 491 | FT_TRACE5(( " U+%04lX: best_pos = %5ld\n", ch, best_pos )); | ||
511 | 492 | } | ||
512 | 493 | |||
513 | 494 | - if ( AF_CJK_IS_FILLED_BLUE( bs ) ) | ||
514 | 495 | + if ( fill ) | ||
515 | 496 | fills[num_fills++] = best_pos; | ||
516 | 497 | else | ||
517 | 498 | flats[num_flats++] = best_pos; | ||
518 | 499 | @@ -386,15 +394,15 @@ | ||
519 | 500 | * we couldn't find a single glyph to compute this blue zone, | ||
520 | 501 | * we will simply ignore it then | ||
521 | 502 | */ | ||
522 | 503 | - FT_TRACE5(( " empty\n" )); | ||
523 | 504 | + FT_TRACE5(( " empty\n" )); | ||
524 | 505 | continue; | ||
525 | 506 | } | ||
526 | 507 | |||
527 | 508 | - /* we have computed the contents of the `fill' and `flats' tables, */ | ||
528 | 509 | - /* now determine the reference position of the blue zone -- */ | ||
529 | 510 | - /* we simply take the median value after a simple sort */ | ||
530 | 511 | - af_sort_pos( num_flats, flats ); | ||
531 | 512 | + /* we have computed the contents of the `fill' and `flats' tables, */ | ||
532 | 513 | + /* now determine the reference and overshoot position of the blue -- */ | ||
533 | 514 | + /* we simply take the median value after a simple sort */ | ||
534 | 515 | af_sort_pos( num_fills, fills ); | ||
535 | 516 | + af_sort_pos( num_flats, flats ); | ||
536 | 517 | |||
537 | 518 | blue = &axis->blues[axis->blue_count]; | ||
538 | 519 | blue_ref = &blue->ref.org; | ||
539 | 520 | @@ -433,7 +441,7 @@ | ||
540 | 521 | *blue_ref = | ||
541 | 522 | *blue_shoot = ( shoot + ref ) / 2; | ||
542 | 523 | |||
543 | 524 | - FT_TRACE5(( " [overshoot smaller than reference," | ||
544 | 525 | + FT_TRACE5(( " [reference smaller than overshoot," | ||
545 | 526 | " taking mean value]\n" )); | ||
546 | 527 | } | ||
547 | 528 | } | ||
548 | 529 | @@ -1186,8 +1194,10 @@ | ||
549 | 530 | /* zone, check for left edges */ | ||
550 | 531 | /* */ | ||
551 | 532 | /* of course, that's for TrueType */ | ||
552 | 533 | - is_top_right_blue = FT_BOOL( blue->flags & AF_CJK_BLUE_TOP ); | ||
553 | 534 | - is_major_dir = FT_BOOL( edge->dir == axis->major_dir ); | ||
554 | 535 | + is_top_right_blue = | ||
555 | 536 | + (FT_Byte)( ( blue->flags & AF_CJK_BLUE_TOP ) != 0 ); | ||
556 | 537 | + is_major_dir = | ||
557 | 538 | + FT_BOOL( edge->dir == axis->major_dir ); | ||
558 | 539 | |||
559 | 540 | /* if it is a top zone, the edge must be against the major */ | ||
560 | 541 | /* direction; if it is a bottom zone, it must be in the major */ | ||
561 | 542 | @@ -1484,6 +1494,12 @@ | ||
562 | 543 | |||
563 | 544 | |||
564 | 545 | stem_edge->pos = base_edge->pos + fitted_width; | ||
565 | 546 | + | ||
566 | 547 | + FT_TRACE5(( " CJKLINK: edge %d @%d (opos=%.2f) linked to %.2f," | ||
567 | 548 | + " dist was %.2f, now %.2f\n", | ||
568 | 549 | + stem_edge - hints->axis[dim].edges, stem_edge->fpos, | ||
569 | 550 | + stem_edge->opos / 64.0, stem_edge->pos / 64.0, | ||
570 | 551 | + dist / 64.0, fitted_width / 64.0 )); | ||
571 | 552 | } | ||
572 | 553 | |||
573 | 554 | |||
574 | 555 | --- a/src/autofit/afcjk.h | ||
575 | 556 | +++ b/src/autofit/afcjk.h | ||
576 | 557 | @@ -4,7 +4,7 @@ | ||
577 | 558 | /* */ | ||
578 | 559 | /* Auto-fitter hinting routines for CJK script (specification). */ | ||
579 | 560 | /* */ | ||
580 | 561 | -/* Copyright 2006, 2007, 2011-2013 by */ | ||
581 | 562 | +/* Copyright 2006, 2007, 2011-2014 by */ | ||
582 | 563 | /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | ||
583 | 564 | /* */ | ||
584 | 565 | /* This file is part of the FreeType project, and may only be used, */ | ||
585 | 566 | @@ -55,8 +55,6 @@ | ||
586 | 567 | ( (b)->properties & AF_BLUE_PROPERTY_CJK_TOP ) | ||
587 | 568 | #define AF_CJK_IS_HORIZ_BLUE( b ) \ | ||
588 | 569 | ( (b)->properties & AF_BLUE_PROPERTY_CJK_HORIZ ) | ||
589 | 570 | -#define AF_CJK_IS_FILLED_BLUE( b ) \ | ||
590 | 571 | - ( (b)->properties & AF_BLUE_PROPERTY_CJK_FILL ) | ||
591 | 572 | #define AF_CJK_IS_RIGHT_BLUE AF_CJK_IS_TOP_BLUE | ||
592 | 573 | |||
593 | 574 | #define AF_CJK_MAX_WIDTHS 16 | ||
594 | 575 | --- a/src/autofit/aflatin.c | ||
595 | 576 | +++ b/src/autofit/aflatin.c | ||
596 | 577 | @@ -2099,7 +2099,7 @@ | ||
597 | 578 | |||
598 | 579 | FT_TRACE5(( " LINK: edge %d (opos=%.2f) linked to %.2f," | ||
599 | 580 | " dist was %.2f, now %.2f\n", | ||
600 | 581 | - stem_edge-hints->axis[dim].edges, stem_edge->opos / 64.0, | ||
601 | 582 | + stem_edge - hints->axis[dim].edges, stem_edge->opos / 64.0, | ||
602 | 583 | stem_edge->pos / 64.0, dist / 64.0, fitted_width / 64.0 )); | ||
603 | 584 | } | ||
604 | 585 | |||
605 | 0 | 586 | ||
606 | === modified file 'debian/patches-freetype/series' | |||
607 | --- debian/patches-freetype/series 2014-03-13 12:47:17 +0000 | |||
608 | +++ debian/patches-freetype/series 2014-04-27 15:33:25 +0000 | |||
609 | @@ -4,3 +4,4 @@ | |||
610 | 4 | revert_scalable_fonts_metric.patch | 4 | revert_scalable_fonts_metric.patch |
611 | 5 | CVE-2014-2240.patch | 5 | CVE-2014-2240.patch |
612 | 6 | CVE-2014-2241.patch | 6 | CVE-2014-2241.patch |
613 | 7 | fix-incorrect-korean-fonts-rendering.patch |
I've uploaded this for review by an Ubuntu SRU team member. Thanks for working this!