🛠️🐜 Antkeeper superbuild with dependencies included https://antkeeper.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3136 lines
94 KiB

2 years ago
  1. 2017-09-16 Werner Lemberg <wl@gnu.org>
  2. * Version 2.8.1 released.
  3. =========================
  4. Tag sources with `VER-2-8-1'.
  5. * docs/VERSION.TXT: Add entry for version 2.8.1.
  6. * docs/CHANGES: Updated.
  7. * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
  8. builds/windows/vc2005/index.html,
  9. builds/windows/vc2008/freetype.vcproj,
  10. builds/windows/vc2008/index.html,
  11. builds/windows/vc2010/freetype.vcxproj,
  12. builds/windows/vc2010/index.html,
  13. builds/windows/visualc/freetype.dsp,
  14. builds/windows/visualc/freetype.vcproj,
  15. builds/windows/visualc/index.html,
  16. builds/windows/visualce/freetype.dsp,
  17. builds/windows/visualce/freetype.vcproj,
  18. builds/windows/visualce/index.html,
  19. builds/wince/vc2005-ce/freetype.vcproj,
  20. builds/wince/vc2005-ce/index.html,
  21. builds/wince/vc2008-ce/freetype.vcproj,
  22. builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.
  23. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
  24. * builds/unix/configure.raw (version_info): Set to 21:0:15.
  25. * CMakeLists.txt (VERSION_PATCH): Set to 1.
  26. 2017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
  27. [sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
  28. __builtin_shuffle() was introduced in gcc-4.7. The lowest
  29. gcc to enable vector operation is delayed from 4.6 to 4.7.
  30. * src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
  31. enable the vector operation, to change the lowest gcc version
  32. from 4.6 to 4.7.
  33. 2017-09-13 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
  34. [cache] Fix a possible overflow by signed integer comparison.
  35. Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
  36. issues are found by Behdad Esfahbod and Werner Lemberg.
  37. * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
  38. a subtraction to check higher bit by a bit operation,
  39. and cpp-conditionalize for appropriate systems. Add better
  40. documentation to the comment.
  41. (FTC_ImageCache_LookupScaler): Ditto.
  42. (FTC_SBitCache_Lookup): Ditto.
  43. (FTC_SBitCache_LookupScaler): Ditto.
  44. 2017-09-13 Werner Lemberg <wl@gnu.org>
  45. [autofit] Really fix #41334 (#52000).
  46. * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
  47. `segment->delta' everywhere.
  48. 2017-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
  49. [autofit, sfnt] Fix for `make multi'.
  50. * src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
  51. FT_Get_Advance() in it.
  52. * src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
  53. to use PS_Unicodes in it, also include `ttpost.h' to use
  54. tt_face_get_ps_name() in it.
  55. 2017-09-11 Azzuro <azzuro@team-mediaportal.com>
  56. [build] Improve builds with different MS Visual Studio versions.
  57. * builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
  58. according to the Visual Studio version.
  59. 2017-09-11 Werner Lemberg <wl@gnu.org>
  60. * src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
  61. Reported by Behdad.
  62. 2017-09-09 Werner Lemberg <wl@gnu.org>
  63. [autofit] Improve communication with ftgrid.
  64. * src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
  65. Provide values in font units.
  66. 2017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
  67. [base] Remove a check for resource ID in the resource fork driver.
  68. LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
  69. resource. Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
  70. (1-46), tells that some IDs are reserved and should not be used.
  71. FreeType2 just uses resource ID to sort the fragmented resource.
  72. To accept the marginal fonts, the checking is removed.
  73. * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
  74. validity check, fix a trace message format.
  75. 2017-09-08 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
  76. [sfnt, truetype] Register the tags for marginal fonts.
  77. The first 32bit of standard TrueType variants is 0x00010000,
  78. `OTTO', `ttcf', `true' or `typ1'. 2 marginal dfonts on legacy Mac
  79. OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
  80. starting 0xA5 followed by `kbd' or `lst'. Considering the following
  81. data could be parsed as conventional TrueType fonts, the header
  82. checking is updated to allow these tags. It seems that recent Mac
  83. OS X has already switched to normal TTF for these fonts.
  84. See the discussion at
  85. http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
  86. * include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
  87. tags for Keyboard.dfont and LastResort.dfont.
  88. * src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
  89. starts with TTAG_0xA5kbd or TTAG_0xA5lst.
  90. * src/truetype/ttobjs.c (tt_face_init): Accept the face with the
  91. format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
  92. 2017-09-05 Werner Lemberg <wl@gnu.org>
  93. Fix multiple calls of `FT_Bitmap_Convert'.
  94. The documentation of `FT_Bitmap_Convert' says that multiple calls do
  95. proper reallocation of the target FT_Bitmap object. However, this
  96. failed for the sequence
  97. non-empty bitmap
  98. empty bitmap
  99. non-empty bitmap
  100. Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
  101. buffer if it became too small; it didn't make the buffer smaller.
  102. For an empty bitmap following a non-empty one, only the buffer
  103. dimension got set to zero, without deallocation. If the next call
  104. was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
  105. triggered.
  106. * src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
  107. buffer to the correct size.
  108. * docs/CHANGES: Document it.
  109. 2017-09-05 Werner Lemberg <wl@gnu.org>
  110. [bdf] Fix size and resolution handling.
  111. * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
  112. `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
  113. missing.
  114. * docs/CHANGES: Document it.
  115. 2017-08-25 Alexei Podtelezhnikov <apodtele@gmail.com>
  116. Swap `ALLOC_MULT' arguments (#51833).
  117. * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
  118. * src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
  119. * src/raster/ftrend1.c (ft_raster1_render): Updated.
  120. 2017-08-23 Werner Lemberg <wl@gnu.org>
  121. [sfnt] Fix clang compilation (#51788).
  122. * src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
  123. scalars.
  124. (vector_shuffle): New macro to take care of a different built-in
  125. function name on clang.
  126. 2017-08-22 Werner Lemberg <wl@gnu.org>
  127. [base] Don't zero out allocated memory twice (#51816).
  128. Patch applied from bug report.
  129. * src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
  130. avoid unnecessary overhead.
  131. 2017-08-22 Werner Lemberg <wl@gnu.org>
  132. [truetype] Integer overflow.
  133. Changes triggered by
  134. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
  135. * src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
  136. NEG_LONG.
  137. 2017-08-17 Alexei Podtelezhnikov <apodtele@gmail.com>
  138. [sfnt] Avoid synthetic unicode for symbol fonts with PUA.
  139. Reported as
  140. https://bugs.chromium.org/p/chromium/issues/detail?id=754574
  141. * src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
  142. 2017-08-16 Werner Lemberg <wl@gnu.org>
  143. * src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
  144. 2017-08-15 Behdad Esfahbod <behdad@behdad.org>
  145. [sfnt] Speed up PNG image loading.
  146. This reduces the overhead of `premultiply_data' by 60%.
  147. * src/sfnt/pngshim.c (premultiply_data): Provide code which uses
  148. gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
  149. time.
  150. 2017-08-11 Werner Lemberg <wl@gnu.org>
  151. [sfnt, truetype] Improve handling of missing sbits.
  152. Requested by Behdad.
  153. Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
  154. entries in the bitmap strike(s) for empty glyphs. Instead, they
  155. rely that a space glyph gets created from the font's metrics data.
  156. This commit makes FreeType behave accordingly.
  157. * include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
  158. code.
  159. * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
  160. to make a distinction between a missing bitmap in a composite and a
  161. simple missing bitmap.
  162. * src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
  163. bitmap-only font), synthesize an empty bitmap glyph if metrics are
  164. available.
  165. 2017-08-10 Werner Lemberg <wl@gnu.org>
  166. [base] Minor API improvement for default variation axis setting.
  167. * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
  168. FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
  169. FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
  170. * docs/CHANGES: Updated.
  171. 2017-08-08 Werner Lemberg <wl@gnu.org>
  172. [psnames] Really fix issue #49949.
  173. We now use a separate preprocessor macro to handle both definition
  174. and declaration of the glyph name arrays.
  175. * src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
  176. * src/tools/glnames.py (StringTable::dump,
  177. StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
  178. (dump_encoding): Ditto.
  179. (main): Use `wb' mode for writing the output file, which works on
  180. Windows also.
  181. * src/psnames/pstables.h: Regenerated.
  182. 2017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
  183. [smooth] Harmony LCD rendering.
  184. This is a new technology for LCD-optimized rendering. It capitalizes
  185. on the fact that each color channel grid is shifted by a third of a
  186. pixel. Therefore it is logical to render 3 separate monochrome
  187. bitmaps shifting the outline by 1/3 pixel, and then combine them.
  188. Importantly, the resulting output does not require additional LCD
  189. filtering.
  190. * src/smooth/ftsmooth.c (ft_smooth_render_generic)
  191. [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
  192. rendering.
  193. * include/freetype/ftlcdfil.h, include/freetype/freetype.h,
  194. include/freetype/config/ftoption.h, devel/ftoption.h: Updated
  195. documentation.
  196. 2017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
  197. * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
  198. 2017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
  199. * src/sfnt/ttpost.c (format): Use otspec-compliant versions.
  200. 2017-08-05 Werner Lemberg <wl@gnu.org>
  201. [truetype] Integer overflow.
  202. Reported as
  203. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
  204. * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
  205. 2017-08-05 Werner Lemberg <wl@gnu.org>
  206. [base, truetype] New function `FT_Get_Var_Axis_Flags'.
  207. The reserved `flags' field got a value in OpenType version 1.8.2;
  208. unfortunately, the public `FT_Var_Axis' structure misses the
  209. corresponding element. Since we can't add a new field, we add an
  210. access function.
  211. * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
  212. * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
  213. Updated.
  214. * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
  215. of `mmvar' to hold axis flags.
  216. Fill the axis flags array.
  217. * docs/CHANGES: Updated.
  218. 2017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
  219. [truetype] Fix metrics of B/W hinting in v40 mode.
  220. Phantom points are now saved outside v40 backwards compatibility
  221. mode. This fixes the jumping glyphs when switching between v35 and
  222. v40 monochrome mode.
  223. * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
  224. 2017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
  225. [truetype] Do not set any ClearType flags in v40 monochrome mode.
  226. This fixes weird behavior of instructions that resulted in rendering
  227. differences between v35 and v40 in monochrome mode, e.g., in
  228. `timesbi.ttf'.
  229. * src/truetype/ttinterp.c (Ins_GETINFO)
  230. [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
  231. `subpixel_hinting_lean'.
  232. 2017-08-01 Werner Lemberg <wl@gnu.org>
  233. * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
  234. 2017-08-01 Behdad Esfahbod <behdad@behdad.org>
  235. [truetype] Fix loading of named instances.
  236. * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
  237. while loading the `avar' table.
  238. 2017-08-01 Werner Lemberg <wl@gnu.org>
  239. [sfnt, truetype] Minor adjustments for OpenType 1.8.2.
  240. * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
  241. (tighter) limits.
  242. * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
  243. version explicitly allows all negative values for the number of
  244. contours if we have a composite glyph (this is for better backwards
  245. compatibility I guess), but it still recommends value -1.
  246. 2017-07-26 Werner Lemberg <wl@gnu.org>
  247. [cff] Integer overflow.
  248. Reported as
  249. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
  250. * src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
  251. cf2_glyphpath_curveTo): Use ADD_INT32.
  252. 2017-07-13 Werner Lemberg <wl@gnu.org>
  253. [base] Fix memory leak.
  254. Reported as
  255. https://bugs.chromium.org/p/chromium/issues/detail?id=738362
  256. * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
  257. of error.
  258. 2017-07-12 Werner Lemberg <wl@gnu.org>
  259. [base] Integer overflow.
  260. Reported as
  261. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
  262. * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
  263. FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
  264. 2017-07-12 Werner Lemberg <wl@gnu.org>
  265. * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
  266. Also improve tracing message.
  267. Problem reported as
  268. https://bugs.chromium.org/p/chromium/issues/detail?id=738919
  269. 2017-07-07 Werner Lemberg <wl@gnu.org>
  270. [cff] Integer overflow.
  271. Reported as
  272. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
  273. * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
  274. 2017-07-05 Werner Lemberg <wl@gnu.org>
  275. * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
  276. 2017-07-05 Werner Lemberg <wl@gnu.org>
  277. * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
  278. 2017-07-04 Werner Lemberg <wl@gnu.org>
  279. [truetype] Prevent address overflow (#51365).
  280. * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
  281. 2017-07-03 Alexei Podtelezhnikov <apodtele@gmail.com>
  282. * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
  283. 2017-07-03 Werner Lemberg <wl@gnu.org>
  284. [truetype] Integer overflow.
  285. Reported as
  286. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
  287. * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
  288. 2017-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
  289. * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
  290. 2017-06-28 Ben Wagner <bungeman@google.com>
  291. Avoid Microsoft compiler warnings (#51331).
  292. While clang's sanitizer recommends a cast to unsigned for safe
  293. negation (to handle -INT_MIN), both MSVC and Visualc emit warning
  294. C4146 if an unsigned value gets negated.
  295. * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
  296. src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
  297. subtraction.
  298. 2017-06-27 Werner Lemberg <wl@gnu.org>
  299. * src/cff/cffparse.c (do_fixed): Fix typo.
  300. Spotted by chris <chris@gcjd.org>.
  301. 2017-06-27 Werner Lemberg <wl@gnu.org>
  302. [truetype] Integer overflows.
  303. Reported as
  304. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
  305. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
  306. * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
  307. NEG_LONG.
  308. * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
  309. 2017-06-24 Werner Lemberg <wl@gnu.org>
  310. [truetype] Integer overflows.
  311. Reported as
  312. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
  313. * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
  314. 2017-06-22 Werner Lemberg <wl@gnu.org>
  315. [cff, truetype] Integer overflows.
  316. Reported as
  317. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
  318. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
  319. * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
  320. SUB_INT32.
  321. * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
  322. 2017-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
  323. [sfnt] Synthesize a Unicode charmap if one is missing.
  324. * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
  325. * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
  326. tt_cmap_unicode_done, tt_cmap_unicode_char_index,
  327. tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
  328. synthetic Unicode charmap class.
  329. (tt_get_cmap_info): Make sure the callback is available.
  330. * src/sfnt/sfobjs.c (sfnt_load_face)
  331. [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
  332. synthesize one.
  333. * include/freetype/config/ftoption.h: Document it.
  334. * devel/ftoption.h: Ditto.
  335. 2017-06-20 Tony Theodore <tonyt@logyst.com>
  336. Fix pkg-config in freetype-config for cross-compiling (#51274).
  337. * builds/unix/unix-def.in (PKG_CONFIG): New variable.
  338. (freetype-config): Use it in sed expression.
  339. * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
  340. 2017-06-20 Werner Lemberg <wl@gnu.org>
  341. [cff, truetype] Integer overflows.
  342. Reported as
  343. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
  344. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
  345. * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
  346. * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
  347. 2017-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
  348. [base, smooth] LCD filtering cleanups.
  349. * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
  350. Clean up, start filtering from the bottom-left origin.
  351. * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
  352. 2017-06-16 Werner Lemberg <wl@gnu.org>
  353. [truetype] Integer overflows.
  354. Reported as
  355. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
  356. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
  357. * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
  358. ADD_LONG and SUB_LONG.
  359. 2017-06-15 Werner Lemberg <wl@gnu.org>
  360. [bdf, cff] Integer overflows.
  361. Reported as
  362. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
  363. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
  364. * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
  365. direct code to avoid value negation.
  366. * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
  367. ADD_INT32.
  368. 2017-06-13 Werner Lemberg <wl@gnu.org>
  369. * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
  370. FreeType only sets a default active encoding for Unicode.
  371. 2017-06-13 Werner Lemberg <wl@gnu.org>
  372. [cff, truetype] Integer overflows.
  373. Reported as
  374. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
  375. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
  376. * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
  377. * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
  378. 2017-06-11 Werner Lemberg <wl@gnu.org>
  379. [cff] Integer overflows.
  380. Reported as
  381. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
  382. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
  383. * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
  384. ADD_INT32.
  385. * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
  386. ADD_INT32.
  387. 2017-06-10 Werner Lemberg <wl@gnu.org>
  388. [truetype] Fix TT_Set_Var_Design.
  389. Reported by Nikolaus Waxweiler <madigens@gmail.com>.
  390. * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
  391. case where we have less input coordinates than axes.
  392. 2017-06-10 Werner Lemberg <wl@gnu.org>
  393. * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
  394. Bug introduced 2017-05-28.
  395. 2017-06-09 Werner Lemberg <wl@gnu.org>
  396. [cff, truetype] Integer overflows.
  397. Reported as
  398. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
  399. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
  400. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
  401. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
  402. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
  403. * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
  404. * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
  405. Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
  406. Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
  407. SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
  408. FT_PAD_ROUND_LONG
  409. (Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
  410. (_iup_worker_shift): Use SUB_LONG and ADD_LONG.
  411. 2017-06-09 Werner Lemberg <wl@gnu.org>
  412. Provide more macros for flooring, ceiling, and rounding.
  413. These versions don't produce run-time errors due to integer
  414. overflow.
  415. * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
  416. (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
  417. FT_PIX_CEIL_LONG): New macros.
  418. (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
  419. FT_PIX_CEIL_INT32): New macros.
  420. 2017-06-09 Werner Lemberg <wl@gnu.org>
  421. Remove unused macros.
  422. * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
  423. NEG_INT): Deleted.
  424. 2017-06-09 Werner Lemberg <wl@gnu.org>
  425. */*: Remove `OVERFLOW_' prefix.
  426. This increases readability.
  427. 2017-06-07 Werner Lemberg <wl@gnu.org>
  428. [cff, truetype] Integer overflows.
  429. Reported as
  430. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
  431. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
  432. * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
  433. * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
  434. OVERFLOW_SUB_LONG.
  435. 2017-06-06 Werner Lemberg <wl@gnu.org>
  436. [cff] Integer overflows.
  437. Reported as
  438. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
  439. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
  440. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
  441. * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
  442. * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
  443. branches.
  444. 2017-06-05 Werner Lemberg <wl@gnu.org>
  445. [cff] Integer overflow.
  446. Reported as
  447. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
  448. * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
  449. 2017-06-04 Werner Lemberg <wl@gnu.org>
  450. [cff, truetype] Integer overflows.
  451. Reported as
  452. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
  453. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
  454. * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
  455. * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
  456. OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
  457. 2017-06-03 Werner Lemberg <wl@gnu.org>
  458. [base, cff, truetype] Integer overflows.
  459. Reported as
  460. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
  461. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
  462. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
  463. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
  464. * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
  465. OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
  466. * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
  467. (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
  468. * src/truetype/ttgload.c (compute_glyph_metrics): User
  469. OVERFLOW_SUB_LONG.
  470. * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
  471. Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
  472. Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
  473. OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
  474. 2017-06-03 Werner Lemberg <wl@gnu.org>
  475. * builds/unix/freetype-config.in: Fix pkg-config test (#51162).
  476. Patch directly taken from bug report.
  477. 2017-06-03 Werner Lemberg <wl@gnu.org>
  478. [bdf] Synchronize sanity checks with pcf driver.
  479. Reported as
  480. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
  481. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
  482. * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
  483. Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
  484. RESOLUTION_Y properties.
  485. 2017-06-03 Werner Lemberg <wl@gnu.org>
  486. [cff, truetype] Integer overflows.
  487. Reported as
  488. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
  489. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
  490. * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
  491. * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
  492. (Ins_SUB): Use OVERFLOW_SUB_LONG.
  493. (Ins_NEG): Use NEG_LONG.
  494. 2017-06-03 Werner Lemberg <wl@gnu.org>
  495. ftcalc.h: Avoid left-shift of negative numbers.
  496. Reported as
  497. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
  498. * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
  499. INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
  500. 2017-06-02 Werner Lemberg <wl@gnu.org>
  501. [cff] Even more integer overflows.
  502. Reported as
  503. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
  504. * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
  505. OVERFLOW_ADD_INT32.
  506. 2017-06-02 Werner Lemberg <wl@gnu.org>
  507. [cff] More integer overflows.
  508. Reported as
  509. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
  510. * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
  511. 2017-06-02 Werner Lemberg <wl@gnu.org>
  512. [bdf] Don't left-shift negative numbers.
  513. Reported as
  514. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
  515. * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
  516. 2017-06-02 Werner Lemberg <wl@gnu.org>
  517. [bdf] Fix integer scanning routines.
  518. Reported as
  519. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
  520. * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
  521. Stop scanning if result would overflow.
  522. 2017-06-02 Werner Lemberg <wl@gnu.org>
  523. [cff] Fix integer overflows.
  524. Reported as
  525. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
  526. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
  527. * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
  528. (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
  529. 2017-06-01 Werner Lemberg <wl@gnu.org>
  530. [smooth] Some 32bit integer overflow run-time errors.
  531. * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
  532. OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
  533. [!STANDALONE]: Include FT_INTERNAL_CALC_H.
  534. (gray_render_cubic): Use those macros where appropriate.
  535. 2017-06-01 Werner Lemberg <wl@gnu.org>
  536. * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
  537. 2017-06-01 Werner Lemberg <wl@gnu.org>
  538. [psaux] 32bit integer overflow tun-time errors (#46149).
  539. * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
  540. OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
  541. 2017-06-01 Werner Lemberg <wl@gnu.org>
  542. * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
  543. Problem reported by Marek Kašík <mkasik@redhat.com>.
  544. The problematic font that exceeds the old limit is Padauk-Bold,
  545. version 3.002, containing bytecode generated by a buggy version of
  546. ttfautohint.
  547. 2017-05-31 Werner Lemberg <wl@gnu.org>
  548. [cff] 32bit integer overflow run-time errors 2/2 (#46149).
  549. This commit handles the new engine.
  550. * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
  551. OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
  552. NEG_INT32): New macros.
  553. * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
  554. * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
  555. cf2_hintmap_map, cf2_glyphpath_hintPoint,
  556. cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
  557. cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
  558. OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
  559. NEG_INT32 where appropriate.
  560. * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
  561. cf2_interpT2CharString): Ditto.
  562. Also add some other code where needed to avoid overflow.
  563. 2017-05-30 Werner Lemberg <wl@gnu.org>
  564. [cff] 32bit integer overflow run-time errors 1/2 (#46149).
  565. This commit handles the old engine.
  566. * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
  567. (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
  568. OVERFLOW_SUB_LONG where needed.
  569. * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
  570. (power_ten_limits): New static array.
  571. (do_fixed): Use it to prevent multiplication overflow.
  572. (cff_parser_run): Use OVERFLOW_ADD_LONG.
  573. 2017-05-30 Werner Lemberg <wl@gnu.org>
  574. [psaux] Correctly handle sequences of multiple number signs.
  575. * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
  576. if we encounter more than a single sign.
  577. 2017-05-29 Werner Lemberg <wl@gnu.org>
  578. [pcf] 32bit integer overflow run-time errors (#46149).
  579. * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
  580. `fontAscent' and `fontDescent'.
  581. (pcf_load_font): Add sanity checks for global height.
  582. Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
  583. RESOLUTION_X, and RESOLUTION_Y properties.
  584. 2017-05-29 Werner Lemberg <wl@gnu.org>
  585. Handle some integer overflow run-time errors (#46149, #48979).
  586. This commit (mainly for 32bit CPUs) is the first of a series of
  587. similar commits to handle known integer overflows. Basically, all
  588. of them are harmless, since they affect rendering of glyphs only,
  589. not posing security threats. It is expected that fuzzying will show
  590. up more overflows, to be fixed in due course.
  591. The idea is to mark places where overflows can occur, using macros
  592. that simply cast to unsigned integers, because overflow arithmetic
  593. is well defined in this case. Doing so suppresses run-time errors
  594. of sanitizers without adding computational overhead.
  595. * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
  596. OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
  597. OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
  598. * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
  599. FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
  600. ft_corner_orientation): Use new macros.
  601. * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
  602. 2017-05-28 Werner Lemberg <wl@gnu.org>
  603. * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
  604. This macro is not used.
  605. 2017-05-28 Werner Lemberg <wl@gnu.org>
  606. [cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
  607. The new name better describes what the macro actually does;
  608. additionally, we don't need a trailing `f' for literals (there was
  609. only a single such instance in the code, but this caused a clang
  610. warning because the macro itself uses `double' literals).
  611. * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
  612. src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
  613. 2017-05-28 Werner Lemberg <wl@gnu.org>
  614. Fix negation of INT_MIN and LONG_MIN (#46149).
  615. * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
  616. value, to be used as the result.
  617. (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
  618. FT_Vector_NormLen): Updated.
  619. 2017-05-27 Werner Lemberg <wl@gnu.org>
  620. [truetype] Fix handling of design coordinates (#51127).
  621. * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
  622. coordinates if we have to create the `blends->coord' array.
  623. (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
  624. coordinates if no instance is selected yet.
  625. 2017-05-24 Werner Lemberg <wl@gnu.org>
  626. [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
  627. Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
  628. https://bugzilla.redhat.com/show_bug.cgi?id=1451795
  629. * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
  630. (PCF_Face_Init): Implement it.
  631. 2017-05-20 Nikolaus Waxweiler <madigens@gmail.com>
  632. [truetype] Always use interpreter v35 for B/W rendering (#51051).
  633. * src/truetype/ttgload.c (tt_loader_init)
  634. [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
  635. `subpixel_hinting_lean', `grayscale_cleartype', and
  636. `vertical_lcd_lean' accordingly.
  637. * src/truetype/ttinterp.c (Ins_GETINFO): Updated.
  638. (TT_RunIns): Update `backward_compatibility' flag.
  639. 2017-05-20 Alexei Podtelezhnikov <apodtele@gmail.com>
  640. [smooth] Implement minimal dynamic padding for LCD filtering.
  641. Extra bitmap padding for LCD filtering depends on the filter. The
  642. default 5-tap filter needs 2 extra subpixels. The light 3-tap filter
  643. needs only 1 extra subpixel. This space could be already available
  644. due to rounding. In order to optimize the padding, we now expand
  645. CBox for the given filter weights before rounding.
  646. This change breaks current Skia (and Firefox).
  647. * include/freetype/internal/ftobjs.h (FT_LibraryRec)
  648. [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
  649. * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
  650. FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
  651. * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
  652. LCD padding.
  653. 2017-05-15 Werner Lemberg <wl@gnu.org>
  654. [sfnt] Return proper scaling values for SBIX bitmaps.
  655. Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
  656. * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
  657. 2017-05-15 Werner Lemberg <wl@gnu.org>
  658. [truetype] Fix error handling for embedded bitmaps.
  659. Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
  660. * src/truetype/ttgload.c (TT_Load_Glyph)
  661. [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
  662. scalable.
  663. 2017-05-15 Alexei Podtelezhnikov <apodtele@gmail.com>
  664. [autofit] Make autohint warping NORMAL option.
  665. This moves warping option from LIGHT to NORMAL mode. This makes LIGHT
  666. truly void of hinting in x-direction, with left side bearing never
  667. changed and right side bearing only altered by advance rounding.
  668. Therefore, LIGHT is now ready to return fractional advance. As a
  669. NORMAL option, warping substitutes normal hinting.
  670. * src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
  671. * src/autofit/aflatin.c (af_latin_hints_apply): Updated.
  672. * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
  673. * src/autofit/afloader.c (af_loader_load_glyph): Handle warping
  674. phantom points as normal.
  675. 2017-05-14 Werner Lemberg <wl@gnu.org>
  676. Remove remnants of raster pool.
  677. * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
  678. `raster_pool' and `raster_pool_size' fields.
  679. * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
  680. (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
  681. 2017-05-13 Werner Lemberg <wl@gnu.org>
  682. * Version 2.8 released.
  683. =======================
  684. Tag sources with `VER-2-8'.
  685. * docs/VERSION.TXT: Add entry for version 2.8.
  686. * docs/CHANGES: Updated.
  687. * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
  688. builds/windows/vc2005/index.html,
  689. builds/windows/vc2008/freetype.vcproj,
  690. builds/windows/vc2008/index.html,
  691. builds/windows/vc2010/freetype.vcxproj,
  692. builds/windows/vc2010/index.html,
  693. builds/windows/visualc/freetype.dsp,
  694. builds/windows/visualc/freetype.vcproj,
  695. builds/windows/visualc/index.html,
  696. builds/windows/visualce/freetype.dsp,
  697. builds/windows/visualce/freetype.vcproj,
  698. builds/windows/visualce/index.html,
  699. builds/wince/vc2005-ce/freetype.vcproj,
  700. builds/wince/vc2005-ce/index.html,
  701. builds/wince/vc2008-ce/freetype.vcproj,
  702. builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
  703. * include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
  704. (FREETYPE_PATCH): Set to 0.
  705. * builds/unix/configure.raw (version_info): Set to 20:0:14.
  706. * CMakeLists.txt (VERSION_MINOR): Set to 8.
  707. (VERSION_PATCH): Set to 0.
  708. 2017-05-12 Hin-Tak Leung <htl10@users.sourceforge.net>
  709. Fix `FT_UINT_TO_POINTER' macro for Windows.
  710. * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
  711. include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
  712. Fix definition.
  713. 2017-05-11 Sascha Brawer <sascha@google.com>
  714. Werner Lemberg <wl@gnu.org
  715. [autofit] Add support for Chakma script.
  716. * src/autofit/afblue.dat: Add blue zone data for Chakma.
  717. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  718. * src/autofit/afscript.h: Add Chakma standard character.
  719. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
  720. 2017-05-10 Sascha Brawer <sascha@google.com>
  721. Werner Lemberg <wl@gnu.org
  722. [autofit] Add support for Kayah Li script.
  723. * src/autofit/afblue.dat: Add blue zone data for Kayah Li.
  724. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  725. * src/autofit/afscript.h: Add Kayah Li standard character.
  726. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
  727. 2017-05-10 Sascha Brawer <sascha@google.com>
  728. Werner Lemberg <wl@gnu.org
  729. [autofit] Add support for Bamum script.
  730. * src/autofit/afblue.dat: Add blue zone data for Bamum.
  731. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  732. * src/autofit/afscript.h: Add Bamum standard character.
  733. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
  734. 2017-05-10 Sascha Brawer <sascha@google.com>
  735. Werner Lemberg <wl@gnu.org
  736. [autofit] Add support for Saurashtra script.
  737. * src/autofit/afblue.dat: Add blue zone data for Saurashtra.
  738. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  739. * src/autofit/afscript.h: Add Saurashtra standard character.
  740. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
  741. data.
  742. 2017-05-10 Sascha Brawer <sascha@google.com>
  743. Werner Lemberg <wl@gnu.org
  744. [autofit] Add support for Buhid script.
  745. * src/autofit/afblue.dat: Add blue zone data for Buhid.
  746. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  747. * src/autofit/afscript.h: Add Buhid standard character.
  748. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
  749. 2017-05-08 Sascha Brawer <sascha@google.com>
  750. Werner Lemberg <wl@gnu.org
  751. [autofit] Add support for Shavian script.
  752. * src/autofit/afblue.dat: Add blue zone data for Shavian.
  753. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  754. * src/autofit/afscript.h: Add Shavian standard character.
  755. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
  756. 2017-05-08 Sascha Brawer <sascha@google.com>
  757. Werner Lemberg <wl@gnu.org
  758. [autofit] Add support for Vai script.
  759. * src/autofit/afblue.dat: Add blue zone data for Vai.
  760. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  761. * src/autofit/afscript.h: Add Vai standard character.
  762. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
  763. 2017-05-08 Sascha Brawer <sascha@google.com>
  764. Werner Lemberg <wl@gnu.org
  765. [autofit] Add support for Osmanya script.
  766. * src/autofit/afblue.dat: Add blue zone data for Osmanya.
  767. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  768. * src/autofit/afscript.h: Add Osmanya standard character.
  769. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
  770. 2017-05-08 Sascha Brawer <sascha@google.com>
  771. Werner Lemberg <wl@gnu.org
  772. [autofit] Add support for Coptic script.
  773. * src/autofit/afblue.dat: Add blue zone data for Coptic.
  774. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  775. * src/autofit/afscript.h: Add Coptic standard character.
  776. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
  777. 2017-05-08 Sascha Brawer <sascha@google.com>
  778. Werner Lemberg <wl@gnu.org
  779. [autofit] Add support for Carian script.
  780. * src/autofit/afblue.dat: Add blue zone data for Carian.
  781. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  782. * src/autofit/afscript.h: Add Carian standard character.
  783. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
  784. 2017-05-07 Werner Lemberg <wl@gnu.org>
  785. [truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
  786. Reported by Roy Tam <roytam@gmail.com>.
  787. * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
  788. 2017-05-07 Roy Tam <roytam@gmail.com>
  789. Werner Lemberg <wl@gnu.org>
  790. [truetype] More tricky fonts (mainly from Dynalab).
  791. * src/truetype/ttobjs.c (tt_check_trickyness_family,
  792. tt_check_trickyness_sfnt_ids): Add them.
  793. 2017-05-07 Werner Lemberg <wl@gnu.org>
  794. [truetype] Add tricky font `DLCHayMedium' (from Dynalab).
  795. Reported by Roy Tam <roytam@gmail.com>.
  796. * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
  797. 2017-05-03 Werner Lemberg <wl@gnu.org>
  798. */*: s/backwards compatibility/backward compatibility/.
  799. 2017-05-03 Sascha Brawer <sascha@google.com>
  800. Werner Lemberg <wl@gnu.org
  801. [autofit] Add support for Unified Canadian Syllabics script.
  802. * src/autofit/afblue.dat: Add blue zone data for Unified Canadian
  803. Syllabics.
  804. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  805. * src/autofit/afscript.h: Add Unified Canadian Syllabics standard
  806. character.
  807. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
  808. Canadian Syllabics data.
  809. 2017-05-03 Sascha Brawer <sascha@google.com>
  810. Werner Lemberg <wl@gnu.org>
  811. [autofit] Add blue-zone support for Sundanese script.
  812. This essentially moves the Sundanese script from the `Indic' hinter
  813. to the `Latin' hinter.
  814. * src/autofit/afblue.dat: Add blue zone data for Sundanese.
  815. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  816. * src/autofit/afscript.h: Add Sundanese standard character and move
  817. data out of AF_CONFIG_OPTION_INDIC block.
  818. * src/autofit/afranges.c: Move Sundanese data out of
  819. AF_CONFIG_OPTION_INDIC block.
  820. * src/autofit/afstyles.h: Update Sundanese data; in particular, use
  821. AF_WRITING_SYSTEM_LATIN.
  822. 2017-05-03 Sascha Brawer <sascha@google.com>
  823. Werner Lemberg <wl@gnu.org
  824. [autofit] Add support for Avestan script.
  825. * src/autofit/afblue.dat: Add blue zone data for Avestan.
  826. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  827. * src/autofit/afscript.h: Add Avestan standard character.
  828. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
  829. 2017-05-02 Behdad Esfahbod <behdad@behdad.org>
  830. [truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
  831. When points are not touched by gvar interpolation deltas, FreeType
  832. gave a slightly different result than Apple's CoreText.
  833. The OpenType working group will update the specification to document
  834. the following behaviour: If the two points with deltas to the `left'
  835. and `right' of the untouched point have the same coordinate, then
  836. the inferred delta for the untouched point should be zero.
  837. * src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
  838. behaviour.
  839. 2017-05-02 Werner Lemberg <wl@gnu.org>
  840. [autofit] Remove `slight' auto-hint mode again.
  841. A poll on freetype-devel favoured changes directly applied to
  842. `light'.
  843. * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
  844. FT_RENDER_MODE_SLIGHT): Removed.
  845. * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
  846. (af_latin_hints_init), src/autofit/aflatin2.c
  847. (af_latin2_hints_init): Revert change from 2017-04-22.
  848. * src/autofit/afloader.c (af_loader_load_glyph) Remove references to
  849. FT_RENDER_MODE_SLIGHT.
  850. [AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
  851. unconditionally.
  852. * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
  853. 2017-04-22.
  854. * src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
  855. * src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
  856. 2017-04-22.
  857. * src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
  858. 2017-04-22.
  859. * docs/CHANGES: Updated.
  860. 2017-04-30 Werner Lemberg <wl@gnu.org>
  861. [autofit] Fix metrics computation.
  862. Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
  863. Nikolaus Waxweiler <madigens@gmail.com>.
  864. * src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
  865. auto-hinter metrics. Without this change, multiple size changing
  866. calls for a single face fail.
  867. 2017-04-29 Werner Lemberg <wl@gnu.org>
  868. * src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
  869. Reported by Earnestly <zibeon@googlemail.com> in
  870. https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
  871. 2017-04-27 Werner Lemberg <wl@gnu.org>
  872. Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
  873. * include/freetype/config/ftoption.h
  874. (AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
  875. default.
  876. * src/autofit/afloader.c (af_loader_load_glyph): Use
  877. AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
  878. 2017-04-26 Werner Lemberg <wl@gnu.org>
  879. * include/freetype/freetype.h (FT_Render_Mode): Fix order.
  880. This retains backward compatibility.
  881. Noted by Alexei.
  882. 2017-04-22 Werner Lemberg <wl@gnu.org>
  883. [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
  884. * src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
  885. hold hinted metrics.
  886. Make `metrics' a pointer so that `tt_glyph_load' can easily switch
  887. between metrics.
  888. * src/truetype/ttdriver.c (tt_size_request): Updated.
  889. (tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
  890. used.
  891. * src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
  892. TT_Process_Composite_Component, load_truetype_glyph,
  893. compute_glyph_metrics, TT_Load_Glyph): Updated.
  894. * src/truetype/ttinterp.c (TT_Load_Context): Updated.
  895. * src/truetype/ttobjs.c (tt_size_reset): Updated.
  896. * src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
  897. 2017-04-22 Werner Lemberg <wl@gnu.org>
  898. Add new `slight' auto-hinting mode.
  899. This mode uses fractional advance widths and doesn't scale glyphs
  900. horizontally, only applying vertical scaling and hinting.
  901. At the same time, the behaviour of the `light' auto-hinter gets
  902. restored for backward compatibility: Both vertical and horizontal
  903. scaling is again based on rounded metrics values (this was changed
  904. in a commit from 2017-03-30 as a side effect). To be more precise,
  905. the behaviour is restored for TrueType fonts only; for other font
  906. formats like Type 1, this is a new feature of the `light' hinting
  907. mode.
  908. * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
  909. (FT_RENDER_MODE_SLIGHT): New render mode.
  910. * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
  911. `autohint_mode' and `autohint_metrics' fields.
  912. * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
  913. (af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
  914. Updated.
  915. * src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
  916. `autohint_metrics'.
  917. (af_loader_load_glyph): s/internal/slot_internal/.
  918. Initialize `autohint_metrics' and `autohint_mode' depending on
  919. current auto-hint mode.
  920. Use `autohint_metrics'.
  921. Updated.
  922. * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
  923. * src/base/ftobjs.c (FT_Load_Glyph): Updated.
  924. (FT_New_Size): Allocate `internal' object.
  925. * src/pshinter/pshalgo.c (ps_hints_apply): Updated.
  926. * src/smooth/ftsmooth.c (ft_smooth_render): Updated.
  927. 2017-04-22 Werner Lemberg <wl@gnu.org>
  928. Introduce `FT_Size_InternalRec' structure.
  929. We are going to extend this later on.
  930. * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
  931. structure with a single field `module_data'.
  932. * src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
  933. `FT_Size' structure.
  934. * src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
  935. `size->internal->module_data' instead of `size->internal'.
  936. * src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
  937. (cff_size_init, cff_size_select, cff_size_request): Use
  938. `size->internal->module_data' instead of `size->internal'.
  939. * src/cif/cidobjs.c (cid_size_done, cid_size_init,
  940. cid_size_request): Use `size->internal->module_data' instead of
  941. `size->internal'.
  942. * src/psaux/psobjs.c (t1_builder_ini): Use
  943. `size->internal->module_data' instead of `size->internal'.
  944. * src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
  945. Use `size->internal->module_data' instead of `size->internal'.
  946. 2017-04-21 Alexei Podtelezhnikov <apodtele@gmail.com>
  947. * src/smooth/ftsmooth.h: Remove unused guards and declaration.
  948. 2017-04-16 Hin-Tak Leung <htl10@users.sourceforge.net>
  949. Fix tracing messages.
  950. * src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
  951. FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
  952. correct function name.
  953. 2017-04-08 Sascha Brawer <sascha@google.com>
  954. Werner Lemberg <wl@gnu.org
  955. [autofit] Add support for Old Turkic script.
  956. * src/autofit/afblue.dat: Add blue zone data for Old Turkic.
  957. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  958. * src/autofit/afscript.h: Add Old Turkic standard characters.
  959. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
  960. 2017-04-08 Sascha Brawer <sascha@google.com>
  961. Werner Lemberg <wl@gnu.org
  962. [autofit] Add support for Gothic script.
  963. * src/autofit/afblue.dat: Add blue zone data for Gothic.
  964. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  965. * src/autofit/afscript.h: Add Gothic standard characters.
  966. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
  967. 2017-04-08 Sascha Brawer <sascha@google.com>
  968. Werner Lemberg <wl@gnu.org
  969. [autofit] Add support for Cypriot script.
  970. * src/autofit/afblue.dat: Add blue zone data for Cypriot.
  971. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  972. * src/autofit/afscript.h: Add Cypriot standard characters.
  973. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
  974. 2017-04-08 Sascha Brawer <sascha@google.com>
  975. Werner Lemberg <wl@gnu.org
  976. [autofit] Add support for Deseret script.
  977. * src/autofit/afblue.dat: Add blue zone data for Deseret.
  978. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  979. * src/autofit/afscript.h: Add Deseret standard characters.
  980. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
  981. 2017-04-07 Werner Lemberg <wl@gnu.org>
  982. [autofit] Fix invalid character range description (#50745).
  983. Also reported as
  984. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
  985. * src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
  986. recent commit.
  987. 2017-04-07 Werner Lemberg <wl@gnu.org>
  988. [ftfuzzer] Fix clang warnings.
  989. * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
  990. casts.
  991. 2017-04-06 Sascha Brawer <sascha@google.com>
  992. Werner Lemberg <wl@gnu.org
  993. [autofit] Add support for Lisu script.
  994. * src/autofit/afblue.dat: Add blue zone data for Lisu.
  995. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  996. * src/autofit/afscript.h: Add Lisu standard characters.
  997. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
  998. 2017-04-06 Sascha Brawer <sascha@google.com>
  999. Werner Lemberg <wl@gnu.org
  1000. [autofit] Add support for Osage script.
  1001. * src/autofit/afblue.dat: Add blue zone data for Osage.
  1002. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1003. * src/autofit/afscript.h: Add Osage standard characters.
  1004. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
  1005. 2017-04-06 Sascha Brawer <sascha@google.com>
  1006. Werner Lemberg <wl@gnu.org
  1007. [autofit] Add support for Glagolitic script.
  1008. * src/autofit/afblue.dat: Add blue zone data for Glagolitic.
  1009. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1010. * src/autofit/afscript.h: Add Glagolitic standard characters.
  1011. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
  1012. 2017-04-06 Sascha Brawer <sascha@google.com>
  1013. Werner Lemberg <wl@gnu.org
  1014. [autofit] Add support for Tai Viet script.
  1015. * src/autofit/afblue.dat: Add blue zone data for Tai Viet.
  1016. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1017. * src/autofit/afscript.h: Add Tai Viet standard characters.
  1018. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
  1019. 2017-04-06 Sascha Brawer <sascha@google.com>
  1020. Werner Lemberg <wl@gnu.org
  1021. [autofit] Add support for Tifinagh script.
  1022. * src/autofit/afblue.dat: Add blue zone data for Tifinagh.
  1023. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1024. * src/autofit/afscript.h: Add Tifinagh standard characters.
  1025. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
  1026. 2017-04-06 Sascha Brawer <sascha@google.com>
  1027. Werner Lemberg <wl@gnu.org
  1028. [autofit] Add support for N'Ko script.
  1029. * src/autofit/afblue.dat: Add blue zone data for N'Ko.
  1030. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1031. * src/autofit/afscript.h: Add N'Ko standard characters.
  1032. * src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
  1033. 2017-04-06 Sascha Brawer <sascha@google.com>
  1034. [autofit] Add support for Adlam script.
  1035. * src/autofit/afblue.dat: Add blue zone data for Adlam.
  1036. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1037. * src/autofit/afscript.h: Add Adlam standard characters.
  1038. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
  1039. 2017-04-06 Sascha Brawer <sascha@google.com>
  1040. [autofit] Add support for Ol Chiki script.
  1041. * src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
  1042. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
  1043. * src/autofit/afscript.h: Add Ol Chiki standard character.
  1044. * src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
  1045. 2017-04-03 Werner Lemberg <wl@gnu.org>
  1046. [truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
  1047. Reported as
  1048. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
  1049. * include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
  1050. error code.
  1051. * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
  1052. of these two opcodes in `glyf' bytecode.
  1053. (TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
  1054. in case of error since function tables can no longer be modified
  1055. (due to the changes in `Ins_FDEF' and `Ins_IDEF'). This change can
  1056. enormously speed up handling of broken fonts.
  1057. 2017-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
  1058. [autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
  1059. * src/autofit/aflatin.c (af_latin_hints_init): Updated.
  1060. * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
  1061. 2017-04-01 Werner Lemberg <wl@gnu.org>
  1062. * src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
  1063. Otherwise FT_UINT_TO_POINTER might not be defined.
  1064. Problem reported by Alexei.
  1065. 2017-03-31 Alexei Podtelezhnikov <apodtele@gmail.com>
  1066. [autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
  1067. * include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
  1068. * src/autofit/afcjk.c (af_cjk_hints_init): Updated.
  1069. * src/autofit/aflatin.c (af_latin_hints_init): Ditto.
  1070. * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
  1071. 2017-03-31 Werner Lemberg <wl@gnu.org>
  1072. * src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
  1073. Allow CFFs containing a single font to have an empty font name.
  1074. Problem reported by 張俊芝 <418092625@qq.com> in
  1075. https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
  1076. 2017-03-30 Werner Lemberg <wl@gnu.org>
  1077. * src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
  1078. Requested by Dave Arnold.
  1079. 2017-03-30 Werner Lemberg <wl@gnu.org>
  1080. [truetype] Fix HVAR and VVAR handling (#50678).
  1081. * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
  1082. glyph indices larger than `mapCount' as described in the
  1083. specification.
  1084. 2017-03-30 Werner Lemberg <wl@gnu.org>
  1085. [truetype] Allow linear scaling for unhinted rendering (#50470).
  1086. * src/truetype/ttdriver.c (tt_size_request): Revert change from
  1087. 2011-07-16; the intended metrics fix seems now to be implemented in
  1088. a different way, making the patch unnecessary. Note that this
  1089. change was usually patched out by all major GNU/Linux distributions
  1090. due to heavy side effects.
  1091. * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
  1092. Refer to the metrics of the `TT_Size' object.
  1093. 2017-03-29 Werner Lemberg <wl@gnu.org>
  1094. [truetype] Fix thinko related to PS name of default named instance.
  1095. * src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
  1096. name ID values, not indices into the array of name entries.
  1097. 2017-03-27 Werner Lemberg <wl@gnu.org>
  1098. [cid, truetype] Don't use `index' as a variable name.
  1099. At least on FreeBSD there is a global declaration of `index' in file
  1100. `/usr/include/strings.h'.
  1101. * src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
  1102. appropriate.
  1103. 2017-03-27 Wojciech Mamrak <wmamrak@gmail.com>
  1104. [sfnt] Minor improvement for handling kern tables.
  1105. * src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
  1106. cross-stream kerning tables since we reject format 2 tables later
  1107. on anyways.
  1108. Modify code for limit test...
  1109. (tt_face_get_kerning): ... to avoid a limit test here.
  1110. 2017-03-27 Werner Lemberg <wl@gnu.org>
  1111. [pcf] Fix compiler warnings.
  1112. Reported by Alexander Hedges <ahedges@student.ethz.ch>.
  1113. * src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
  1114. `property_name' with `FT_UNUSED' where necessary.
  1115. 2017-03-26 Werner Lemberg <wl@gnu.org>
  1116. * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
  1117. Reported as
  1118. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
  1119. 2017-03-23 Werner Lemberg <wl@gnu.org>
  1120. [psaux] Better protect `flex' handling.
  1121. Reported as
  1122. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
  1123. * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
  1124. <callothersubr>: Since there is not a single flex operator but a
  1125. series of subroutine calls, malformed fonts can call arbitrary other
  1126. operators after the start of a flex, possibly adding points. For
  1127. this reason we have to check the available number of points before
  1128. inserting a point.
  1129. 2017-03-23 Werner Lemberg <wl@gnu.org>
  1130. [sfnt] Fix check for default named instance.
  1131. * src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
  1132. bytes, not two...
  1133. 2017-03-23 Werner Lemberg <wl@gnu.org>
  1134. Make MM fonts work (again).
  1135. * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
  1136. FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
  1137. return value of `ft_face_get_mvar_service'; instead, check whether a
  1138. service is actually returned.
  1139. 2017-03-20 Werner Lemberg <wl@gnu.org>
  1140. [truetype] Some variable renamings.
  1141. Too much local variables holding different structures were called
  1142. `metrics'.
  1143. * src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
  1144. * src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
  1145. compute_glyph_metrics): s/metrics/incr_metrics/.
  1146. (load_sbit_image): s/metrics/sbit_metrics/.
  1147. * src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
  1148. (tt_size_init_bytecode): s/metrics/tt_metrics/.
  1149. (tt_size_reset): s/metrics/size_metrics/.
  1150. 2017-03-20 Werner Lemberg <wl@gnu.org>
  1151. [sfnt] Don't add instances to non-variation fonts.
  1152. * src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
  1153. 2017-03-20 Werner Lemberg <wl@gnu.org>
  1154. * src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
  1155. 2017-03-18 Werner Lemberg <wl@gnu.org>
  1156. Introduce FT_UINT_TO_POINTER macro (#50560).
  1157. We have to make a separate case for Windows 64's LLP64 data model.
  1158. * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
  1159. include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
  1160. * src/truetype/ttgload.c (load_truetype_glyph): Use it.
  1161. 2017-03-18 Werner Lemberg <wl@gnu.org>
  1162. * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
  1163. The problematic font that exceeds the old limit is Lato-Regular,
  1164. version 2.007, containing bytecode generated by a buggy version of
  1165. ttfautohint.
  1166. 2017-03-18 Werner Lemberg <wl@gnu.org>
  1167. [truetype] Another limitation for bytecode loop count maximum.
  1168. Reported as
  1169. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
  1170. * src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
  1171. by number of glyphs also.
  1172. 2017-03-18 Werner Lemberg <wl@gnu.org>
  1173. [ftfuzzer] Minor improvement.
  1174. * src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
  1175. bitmap strikes are active.
  1176. 2017-03-18 Werner Lemberg <wl@gnu.org>
  1177. Improve `make multi'.
  1178. * src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
  1179. * src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
  1180. * src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
  1181. * src/sfnt/pngshim.c: Guard file with
  1182. TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
  1183. * src/sfnt/ttbdf.c: Avoid empty source file.
  1184. * src/sfnt/ttpost.c: Guard file with
  1185. TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
  1186. * src/sfnt/ttsbit.c: Guard file with
  1187. TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
  1188. * src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
  1189. source file.
  1190. * src/truetype/ttsubpix.c: Guard file with
  1191. TT_USE_BYTECODE_INTERPRETER also.
  1192. * src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
  1193. * src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
  1194. src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
  1195. src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
  1196. src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
  1197. src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
  1198. src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
  1199. entries.
  1200. 2017-03-17 Werner Lemberg <wl@gnu.org>
  1201. Fixes for conditional compilation.
  1202. * src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
  1203. earlier.
  1204. * src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
  1205. TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
  1206. (sfnt_done_face): Protect some code with
  1207. TT_CONFIG_OPTION_GX_VAR_SUPPORT.
  1208. * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
  1209. warning.
  1210. * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
  1211. into TT_USE_BYTECODE_INTERPRETER block.
  1212. (tt_loader_init): Put `error' variable into
  1213. TT_USE_BYTECODE_INTERPRETER block.
  1214. 2017-03-17 Werner Lemberg <wl@gnu.org>
  1215. Fix preprocessor warning.
  1216. * devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
  1217. TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
  1218. value.
  1219. 2017-03-17 Werner Lemberg <wl@gnu.org>
  1220. `make multi' fixes; compiler warnings.
  1221. * src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
  1222. * src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
  1223. FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
  1224. * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
  1225. FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
  1226. (get_win_string, get_apple_string): Initialize `result'.
  1227. 2017-03-17 Dave Arnold <darnold@adobe.com>
  1228. [cff] Fix potential bugs in default NDV for CFF2.
  1229. * src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
  1230. vector when `lenNDV' is zero; don't rely on zero-init.
  1231. Save `lenNDV' as part of cache key even when `lenNDV' is zero.
  1232. 2017-03-17 Dave Arnold <darnold@adobe.com>
  1233. [cff] Fix CFF2 stack allocation.
  1234. * src/cff/cffparse.c (cff_parser_init) add 1 for operator.
  1235. 2017-03-16 Werner Lemberg <wl@gnu.org>
  1236. * src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
  1237. Reported as
  1238. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
  1239. 2017-03-15 Werner Lemberg <wl@gnu.org>
  1240. Remove clang compiler warnings (#50548).
  1241. * include/freetype/internal/tttypes.h (TT_FaceRec): Make
  1242. `var_postscript_prefix_len' unsigned.
  1243. * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
  1244. redundant assignment.
  1245. * src/cff/cffload.c (cff_subfont_load): Add casts.
  1246. * src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
  1247. * src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
  1248. keyword.
  1249. Add casts.
  1250. (fixed2float): Add cast.
  1251. (sfnt_get_var_ps_name): Make `p' always initialized.
  1252. Add casts.
  1253. * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
  1254. 2017-03-15 Werner Lemberg <wl@gnu.org>
  1255. [ftfuzzer] Limit number of tested faces and instances.
  1256. This is inspired by the discussion in and analysis of
  1257. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
  1258. * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
  1259. up to 20 face indices.
  1260. Use only up to 20 instance indices.
  1261. 2017-03-15 Werner Lemberg <wl@gnu.org>
  1262. * src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
  1263. 2017-03-14 Werner Lemberg <wl@gnu.org>
  1264. [sfnt] Implement PS names for font instances [3/3].
  1265. Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
  1266. * include/freetype/internal/tttypes.h (TT_FaceRec): New fields
  1267. `var_postscript_prefix' and `var_postscript_prefix_len'.
  1268. * src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
  1269. (sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
  1270. (get_win_string, get_apple_string): Remove `const' from return
  1271. value.
  1272. (MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
  1273. (hexdigits): New array.
  1274. (sfnt_get_var_ps_name): New function, implementing Adobe TechNote
  1275. 5902 to construct a PS name for a variation font instance.
  1276. (sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
  1277. * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
  1278. * src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
  1279. `face->postscript_name' to trigger recalculation for new instance
  1280. parameters.
  1281. 2017-03-14 Werner Lemberg <wl@gnu.org>
  1282. [sfnt] Implement PS names for font instances [2/3].
  1283. * src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
  1284. New function to find the shortest representation of a 16.16
  1285. fractional number.
  1286. 2017-03-14 Werner Lemberg <wl@gnu.org>
  1287. [sfnt] Implement PS names for font instances [1/3].
  1288. Add 128bit MurmurHash 3 function.
  1289. Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
  1290. * src/sfnt/sfdriver.c (ROTL32): New macro.
  1291. (fmix32, murmur_hash_3_128): New functions.
  1292. 2017-03-13 Werner Lemberg <wl@gnu.org>
  1293. [truetype] Ignore invalid MVAR tags.
  1294. Reported as
  1295. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
  1296. * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
  1297. warning for invalid tags.
  1298. (tt_apply_mvar): Ignore invalid tags.
  1299. 2017-03-12 Werner Lemberg <wl@gnu.org>
  1300. [truetype] Store and use design coordinates also.
  1301. * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
  1302. Add `normalizedcoords' argument.
  1303. * src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
  1304. the design coordinates of the current instance.
  1305. Updated.
  1306. * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
  1307. (tt_set_mm_blend): ... New function.
  1308. Convert data in `normalizedcoords' array to `coords' array on
  1309. demand.
  1310. (TT_Set_Var_Design): Store argument data in `coords' array.
  1311. (TT_Get_Var_Design): Get data from `coords' array.
  1312. (tt_get_var_blend): Updated.
  1313. (tt_done_blend): Updated.
  1314. * src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
  1315. * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
  1316. * src/cff/cffobjs.c (cff_face_init): Updated.
  1317. 2017-03-12 Werner Lemberg <wl@gnu.org>
  1318. src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
  1319. 2017-03-08 Werner Lemberg <wl@gnu.org>
  1320. [sfnt] Another fix for buggy variation fonts.
  1321. Reported as
  1322. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
  1323. * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
  1324. instances to zero for `CFF' fonts table, ensure that there is no
  1325. `CFF2' present also (which gets priority).
  1326. 2017-03-07 Werner Lemberg <wl@gnu.org>
  1327. [sfnt] Improve handling for buggy variation fonts.
  1328. Reported as
  1329. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
  1330. * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
  1331. instances to zero for `CFF' fonts table, ensure that there is no
  1332. `glyf' table present also (which gets priority).
  1333. 2017-03-06 Werner Lemberg <wl@gnu.org>
  1334. [sfnt, truetype] Always provide default instance.
  1335. As documented in the OpenType specification, an entry for the
  1336. default instance may be omitted in the named instance table. In
  1337. particular this means that even if there is no named instance table
  1338. in the font we actually do have a named instance, namely the default
  1339. instance.
  1340. For consistency, we always want the default instance in our list of
  1341. named instances. If it is missing, we try to synthesize it.
  1342. * src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
  1343. instance is in the table of named instances. Otherwise adjust
  1344. number of instances.
  1345. * src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
  1346. (TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
  1347. instances.
  1348. Sythesize a named instance entry if necessary.
  1349. (tt_done_blend): Free `normalized_stylecoords'.
  1350. 2017-03-05 Werner Lemberg <wl@gnu.org>
  1351. [sfnt] Remove redundant code.
  1352. * src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
  1353. `num_instances', which will always succeed.
  1354. 2017-03-04 Werner Lemberg <wl@gnu.org>
  1355. [sfnt] Add `get_name_id' service.
  1356. * include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
  1357. typedef.
  1358. (SFNT_Interface): Add `get_name_id' field.
  1359. (FT_DEFINE_SFNT_INTERFACE): Updated.
  1360. * src/sfnt/sfdriver.c (search_name_id): Rename to...
  1361. (sfnt_get_name_id): ... this.
  1362. (sfnt_get_ps_name, sfnt_interface): Updated.
  1363. 2017-03-04 Werner Lemberg <wl@gnu.org>
  1364. [truetype] Make `TT_Set_MM_Blend' set named instance index.
  1365. * src/truetype/ttgxvar.h (GX_Blend): New array
  1366. `normalized_stylecoords'.
  1367. * src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
  1368. `normalized_stylecoords'.
  1369. (TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
  1370. accordingly.
  1371. 2017-03-02 Werner Lemberg <wl@gnu.org>
  1372. [truetype] Split off designer/normalized conversion routines.
  1373. * src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
  1374. code designer->normalized coordinates to...
  1375. (ft_var_to_normalized): ... New function.
  1376. (TT_Get_Var_Design): Split off conversion code normalized->designer
  1377. coordinates to...
  1378. (ft_var_to_design): ... New function.
  1379. 2017-02-28 Werner Lemberg <wl@gnu.org>
  1380. [sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
  1381. * src/sfnt/sfdriver.c (sfnt_ps_map): New array.
  1382. (sfnt_is_postscript): New function.
  1383. (char_type_func): New typedef.
  1384. (get_win_string, get_apple_string): Add argument to specify
  1385. character checking function.
  1386. Add argument whether argument checking failures should be reported.
  1387. Update callers.
  1388. (search_name_id): Fix return value.
  1389. 2017-02-23 Werner Lemberg <wl@gnu.org>
  1390. [sfnt] Split off another bit of `sfnt_get_ps_name'.
  1391. * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
  1392. functionality into...
  1393. (search_name_id): ... New function.
  1394. 2017-02-23 Werner Lemberg <wl@gnu.org>
  1395. [sfnt] Modularize `sfnt_get_ps_name'.
  1396. * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
  1397. functionality into...
  1398. (IS_WIN, IS_APPLE): ... New macros.
  1399. (get_win_string, get_apple_string): ... New functions.
  1400. 2017-02-23 Werner Lemberg <wl@gnu.org>
  1401. [truetype] Minor improvement.
  1402. * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
  1403. load_truetype_glyph): Remove unnecessary tests.
  1404. 2017-02-23 Werner Lemberg <wl@gnu.org>
  1405. * include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
  1406. For orthogonality with other structure field names.
  1407. Update all users.
  1408. 2017-02-22 Alexei Podtelezhnikov <apodtele@gmail.com>
  1409. * src/smooth/ftgrays.c (gray_hline): Improve code.
  1410. 2017-02-20 Dominik Röttsches <drott@google.com>
  1411. Fix some `ttnameid.h' entries (#50313).
  1412. * include/freetype/ttnameid.h:
  1413. s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
  1414. s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
  1415. 2017-02-20 Werner Lemberg <wl@gnu.org>
  1416. [cff] Finish support for `random' operator.
  1417. * src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
  1418. * src/cff/cffobjs.c: Updated.
  1419. (cff_driver_init): Initialize random seed value.
  1420. * src/cff/cffload.c (cff_random): New function.
  1421. (cff_subfont_load): Add `face' argument.
  1422. Update all callers.
  1423. Initialize random number generator with a proper seed value.
  1424. (cff_font_load): Add `face' argument.
  1425. Update all callers.
  1426. * src/cff/cffload.h: Updated.
  1427. * src/cff/cf2intrp.c (CF2_FIXME): Removed.
  1428. (cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
  1429. * src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
  1430. initialize random seed value.
  1431. <cff_op_random>: Use new random seed framework.
  1432. 2017-02-20 Werner Lemberg <wl@gnu.org>
  1433. [cff] Sanitize `initialRandomSeed'.
  1434. * src/cff/cffload.c (cff_load_private_dict): Make
  1435. `initial_random_seed' value always positive.
  1436. 2017-02-20 Werner Lemberg <wl@gnu.org>
  1437. [cff] Introduce `random-seed' property (2/2).
  1438. * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
  1439. (open_face): Initialize `face->internal->random_seed'.
  1440. (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
  1441. * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
  1442. property.
  1443. 2017-02-20 Werner Lemberg <wl@gnu.org>
  1444. [cff] Introduce `random-seed' property (1/2).
  1445. We need this for support of the `random' operator.
  1446. * include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
  1447. * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
  1448. field `random_seed'.
  1449. * src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
  1450. 2017-02-17 Werner Lemberg <wl@gnu.org>
  1451. Remove clang warnings.
  1452. * src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
  1453. keyword.
  1454. * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
  1455. FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
  1456. Initialize some variables.
  1457. 2017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
  1458. Werner Lemberg <wl@gnu.org>
  1459. Add face property for stem darkening.
  1460. * include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
  1461. macro.
  1462. * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
  1463. `no_stem_darkening' field.
  1464. * src/autofit/afloader.c (af_loader_load_glyph),
  1465. src/autofit/afmodule.c (af_property_set): Updated.
  1466. * src/base/ftobjs.c: Include FT_AUTOHINTER_H.
  1467. (ft_open_face_internal): Updated.
  1468. (FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
  1469. * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
  1470. * src/cff/cffdrivr.c (cff_property_set): Updated.
  1471. 2017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
  1472. Werner Lemberg <wl@gnu.org>
  1473. Add face property for LCD filter weights.
  1474. * include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
  1475. FT_LCD_FILTER_FIVE_TAPS): New macros.
  1476. (FT_LcdFiveTapFilter): New typedef.
  1477. * include/freetype/ftobjs.h (FT_Face_InternalRec)
  1478. [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
  1479. (FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
  1480. (ft_lcd_filter_fir): New prototype.
  1481. (FT_LibraryRec): Updated.
  1482. * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
  1483. (ft_lcd_filter_fir): ... this base function.
  1484. Updated.
  1485. (_ft_lcd_filter_legacy): Updated.
  1486. (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
  1487. * src/base/ftobjs.c (ft_open_face_internal): Updated.
  1488. (FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
  1489. * src/smooth/ftsmooth.c (ft_smooth_render_generic)
  1490. [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
  1491. `FT_Face_Internal'.
  1492. 2017-02-14 Nikolaus Waxweiler <madigens@gmail.com>
  1493. Werner Lemberg <wl@gnu.org>
  1494. Add new function `FT_Face_Properties'.
  1495. This commit provides the framework, to be filled with something
  1496. useful in the next commits.
  1497. * include/freetype/freetype.h (FT_Face_Properties): Declare.
  1498. * src/base/ftobjs.c (FT_Face_Properties): New function.
  1499. 2017-02-13 Werner Lemberg <wl@gnu.org>
  1500. [autofit] Prevent overlapping blue zones.
  1501. Problem reported as
  1502. https://github.com/google/fonts/issues/632
  1503. The font in question (Nunito) has values 705 and 713 for the
  1504. reference and overshoot values, respectively, of the first blue
  1505. zone. Blue zone 2, however, has value 710 for both the reference
  1506. and overshoot. At 12ppem, reference and overshoot of blue zone 0
  1507. becomes 8px, while blue zone 2 becomes 9px.
  1508. A peculiarity of this font is that the tops of isolated vertical
  1509. stems like `N' have a slight overshoot also. The auto-hinter tries
  1510. to find the nearest blue zone using the *original* coordinates. For
  1511. vertical stems, this is value 713. For normal horizontal tops like
  1512. in character `E', this is value 710. Since value 713 is mapped to
  1513. 8px but value 710 to 9px, `N' and similar characters are one pixel
  1514. higher than `E', which looks very bad.
  1515. This commit sanitizes blue zones to avoid such a behaviour.
  1516. * src/autofit/aflatin.c (af_latin_sort_blue): New function.
  1517. (af_latin_metrics_init_blues): Sort blue values and remove overlaps.
  1518. 2017-02-12 Alexei Podtelezhnikov <apodtele@gmail.com>
  1519. * src/smooth/ftgrays.c (gray_sweep): Improve code.
  1520. 2017-02-06 Werner Lemberg <wl@gnu.org>
  1521. [truetype] Implement `VVAR' table support.
  1522. * src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
  1523. (GX_HVVarTable): ...This.
  1524. (GX_Blend): Add fields for `VVAR' table handling.
  1525. Other minor updates.
  1526. * src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
  1527. (ft_var_load_hvvar): ...This.
  1528. Handle VVAR loading also (controlled by an additional parameter).
  1529. (tt_hadvance_adjust): Renamed to...
  1530. (tt_hvadvance_adjust): ...This.
  1531. Handle application of advance height also (controlled by an
  1532. additional parameter).
  1533. (tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
  1534. `tt_hvadvance_adjust'.
  1535. * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
  1536. 2017-02-05 Werner Lemberg <wl@gnu.org>
  1537. [autofit] Use better blue zone characters for lowercase latin.
  1538. The number of lowercase characters for computing the top flat blue
  1539. zone value was too small (in most cases only `x' and `z'). If one
  1540. of the two characters has a large serif, say, it can happen that
  1541. FreeType must select between two different values, having a 50%
  1542. chance to use the wrong one. As a result, rendering at larger PPEM
  1543. values could yield uneven lowercase glyph heights.
  1544. Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
  1545. * src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
  1546. with...
  1547. (AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
  1548. ... New, extended sets.
  1549. (AF_BLUE_STRINGSET_LATN): Updated.
  1550. * src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
  1551. 2017-02-04 Werner Lemberg <wl@gnu.org>
  1552. Make `freetype-config' a wrapper of `pkg-config' if possible.
  1553. Based on ideas taken from
  1554. https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
  1555. https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
  1556. * builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to
  1557. set output variables if program is available.
  1558. * docs/CHANGES, docs/freetype-config.1: Updated.
  1559. 2017-02-04 Werner Lemberg <wl@gnu.org>
  1560. * builds/unix/unix-def.in (freetype-config): Fix permissions.
  1561. 2017-02-03 Werner Lemberg <wl@gnu.org>
  1562. * src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
  1563. 2017-02-03 Werner Lemberg <wl@gnu.org>
  1564. * include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
  1565. Reported by Behdad.
  1566. 2017-02-02 Werner Lemberg <wl@gnu.org>
  1567. [truetype] Fix MVAR post-action handling.
  1568. Reported as
  1569. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
  1570. * src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2. This
  1571. is important to make `tt_size_reset_iterator' (called in
  1572. `tt_apply_mvar') always work.
  1573. 2017-02-02 Werner Lemberg <wl@gnu.org>
  1574. Make compilation with FT_CONFIG_OPTION_PIC work again.
  1575. All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
  1576. * include/freetype/internal/services/svmetric.h
  1577. (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
  1578. * src/autofit/aflatin.c (af_latin_hints_compute_edges,
  1579. af_latin_hint_edges): Provide `globals' variable.
  1580. * src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
  1581. variable.
  1582. * src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
  1583. AF_STYLE_CLASSES_GET): Redefine.
  1584. * src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
  1585. * src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
  1586. * src/cff/cffpic.h (CffModulePIC): Fix typo.
  1587. 2017-01-31 Alexei Podtelezhnikov <apodtele@gmail.com>
  1588. * src/smooth/ftgrays.c (gray_render_scanline): Improve code.
  1589. 2017-01-31 Werner Lemberg <wl@gnu.org>
  1590. [cff] Provide metrics variation service interface (#50196).
  1591. Only now I've got an OTF with an HVAR table for testing...
  1592. The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
  1593. metrics variations interface. However, this didn't work with
  1594. `FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
  1595. * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
  1596. (cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
  1597. metric service functions from the `truetype' module.
  1598. (cff_service_metrics_variations): New service.
  1599. (cff_services): Updated.
  1600. * src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
  1601. [FT_CONFIG_OPTION_PIC]: Synchronize code.
  1602. * src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
  1603. FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
  1604. load the service from the `truetype' module.
  1605. 2017-01-31 Werner Lemberg <wl@gnu.org>
  1606. Add framework to support services with 9 functions.
  1607. * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
  1608. New macro.
  1609. 2017-01-31 Werner Lemberg <wl@gnu.org>
  1610. [base] Fix error handing in MM functions.
  1611. * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
  1612. FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
  1613. Implement it.
  1614. 2017-01-31 Werner Lemberg <wl@gnu.org>
  1615. [truetype] Fix sanity check for `gvar' table (#50184).
  1616. * src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
  1617. variation data for some glyphs.
  1618. 2017-01-31 Werner Lemberg <wl@gnu.org>
  1619. [autofit] Avoid uninitialized jumps (#50191).
  1620. * src/autofit/afcjk.c (af_cjk_metrics_check_digits),
  1621. src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
  1622. `advance'.
  1623. 2017-01-27 Werner Lemberg <wl@gnu.org>
  1624. s/GB2312/PRC/.
  1625. * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
  1626. (FT_ENCODING_GB2312): Deprecated.
  1627. * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
  1628. (TT_MS_ID_GB2312): Deprecated.
  1629. * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
  1630. * docs/CHANGES: Updated.
  1631. 2017-01-26 Werner Lemberg <wl@gnu.org>
  1632. [base] Add `FT_Get_Sfnt_LangTag' function.
  1633. * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
  1634. (FT_Get_Sfnt_LangTag): New declaration.
  1635. * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
  1636. * docs/CHANGES: Updated.
  1637. 2017-01-26 Werner Lemberg <wl@gnu.org>
  1638. [sfnt] Support `name' table format 1.
  1639. * include/freetype/internal/tttypes.h (TT_LangTagRec): New
  1640. structure.
  1641. (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
  1642. * src/sfnt/ttload.c (tt_face_load_name): Add support for language
  1643. tags.
  1644. Reduce array size of name strings in case of invalid entries.
  1645. (tt_face_free_name): Updated.
  1646. * docs/CHANGES: Updated.
  1647. 2017-01-25 Werner Lemberg <wl@gnu.org>
  1648. [sfnt] s/TT_NameEntry/TT_Name/.
  1649. * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
  1650. to...
  1651. (TT_NameRec): This.
  1652. (TT_NameTableRec): Updated.
  1653. * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
  1654. * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
  1655. * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
  1656. tt_name_entry_ascii_from_other): Renamed to...
  1657. (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
  1658. respectively.
  1659. (TT_NameEntry_ConvertFunc): Renamed to...
  1660. (TT_Name_ConvertFunc): This.
  1661. (tt_face_get_name): Updated.
  1662. * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
  1663. Updated.
  1664. 2017-01-24 Werner Lemberg <wl@gnu.org>
  1665. [sfnt] Fix Postscript name service for symbol fonts.
  1666. * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
  1667. entries also.
  1668. 2017-01-24 Werner Lemberg <wl@gnu.org>
  1669. [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
  1670. * include/freetype/ftsnames.h
  1671. (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
  1672. FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
  1673. (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
  1674. FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
  1675. * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
  1676. TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
  1677. (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
  1678. Deprecated.
  1679. * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
  1680. * docs/CHANGES: Updated.
  1681. 2017-01-23 Werner Lemberg <wl@gnu.org>
  1682. [base] Add `FT_Set_Default_Properties' (#49187).
  1683. * include/freetype/ftmodapi.h: Add declaration.
  1684. * src/base/ftinit.c (ft_set_default_properties): Renamed to...
  1685. (FT_Set_Default_Properties): ... this.
  1686. (FT_Init_FreeType): Updated.
  1687. * docs/CHANGES: Updated.
  1688. 2017-01-23 Werner Lemberg <wl@gnu.org>
  1689. [truetype] Minor updates for OpenType 1.8.1.
  1690. * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
  1691. removed from the specification; it is now reserved.
  1692. * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
  1693. (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
  1694. field in the `MVAR' table is now reserved.
  1695. (fvar_fields): Updated.
  1696. 2017-01-23 Werner Lemberg <wl@gnu.org>
  1697. [truetype] Avoid segfault for invalid variation data.
  1698. * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
  1699. `itemCount' is not zero.
  1700. Reported as
  1701. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
  1702. 2017-01-20 Werner Lemberg <wl@gnu.org>
  1703. * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
  1704. 2017-01-17 Werner Lemberg <wl@gnu.org>
  1705. * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
  1706. (TT_APPLE_ID_FULL_UNICODE): New macro.
  1707. (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
  1708. TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
  1709. TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
  1710. TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
  1711. TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
  1712. TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
  1713. TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
  1714. TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
  1715. TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
  1716. TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
  1717. TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
  1718. macros.
  1719. (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
  1720. (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
  1721. TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
  1722. TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
  1723. TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
  1724. TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
  1725. TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
  1726. TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
  1727. TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
  1728. TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
  1729. TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
  1730. TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
  1731. TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
  1732. TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
  1733. TT_MS_LANGID_UIGHUR_PRC): New aliases.
  1734. Remove commented out code.
  1735. (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
  1736. TT_NAME_ID_VARIATIONS_PREFIX): New macros.
  1737. (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
  1738. years), use guarded long macros by default and define short versions
  1739. as aliases for the long ones.
  1740. 2017-01-15 Werner Lemberg <wl@gnu.org>
  1741. * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
  1742. also.
  1743. 2017-01-11 Werner Lemberg <wl@gnu.org>
  1744. * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
  1745. 2017-01-11 Werner Lemberg <wl@gnu.org>
  1746. [truetype] Actually use metrics variation service.
  1747. * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
  1748. (ft_face_get_mvar_service): New auxiliary function to look up
  1749. metrics variation service.
  1750. (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
  1751. FT_Set_Var_Blend_Coordinates): Call metrics variation service.
  1752. * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
  1753. named instances.
  1754. 2017-01-11 Werner Lemberg <wl@gnu.org>
  1755. [truetype] Provide metrics variation service.
  1756. * include/freetype/internal/services/svmetric.h
  1757. (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
  1758. * src/truetype/ttgxvar.c: Include FT_LIST_H.
  1759. (tt_size_reset_iterator): New auxiliary function for...
  1760. (tt_apply_var): New function.
  1761. * src/truetype/ttgxvar.h: Updated.
  1762. * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
  1763. `tt_apply_mvar'.
  1764. * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
  1765. variation service.
  1766. 2017-01-11 Werner Lemberg <wl@gnu.org>
  1767. [truetype] Parse `MVAR' table.
  1768. * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
  1769. (GX_Value, GX_MVarTable): New structures.
  1770. (GX_Blend): Add it.
  1771. * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
  1772. GX_GASP_CASE): New macros.
  1773. (ft_var_get_value_pointer): New auxiliary function to get a pointer
  1774. to a value from various SFNT tables already stored in `TT_Face'.
  1775. (ft_var_load_mvar): New function.
  1776. (TT_Get_MM_Var): Call it.
  1777. (tt_done_blend): Updated.
  1778. 2017-01-11 Werner Lemberg <wl@gnu.org>
  1779. [truetype] More preparations for MVAR support.
  1780. * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
  1781. function only recompute ascender, descender, and height.
  1782. * src/truetype/ttobjs.h: Updated.
  1783. * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
  1784. Updated.
  1785. 2017-01-09 Werner Lemberg <wl@gnu.org>
  1786. [pcf] Disable long family names by default.
  1787. * include/freetype/config/ftoption.h
  1788. (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
  1789. 2017-01-09 Werner Lemberg <wl@gnu.org>
  1790. [pcf] Make long family names configurable.
  1791. The change from 2016-09-29 was too radical (except for people using
  1792. the openSuSE GNU/Linux distribution). To ameliorate the situation,
  1793. PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
  1794. the feature; if set, a new PCF property option
  1795. `no-long-family-names' can be used to switch this feature off.
  1796. * include/freetype/config/ftoption.h, devel/ftoption.h
  1797. (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
  1798. * include/freetype/ftpcfdrv.h: New header file (only containing
  1799. comments currently, used for building the documentation).
  1800. * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
  1801. * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
  1802. * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
  1803. FT_PCF_DRIVER_H.
  1804. (pcf_property_set, pcf_property_get): New functions.
  1805. (pcf_service_properties): New service.
  1806. (pcf_services): Updated.
  1807. (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
  1808. `no_long_family_names'.
  1809. * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
  1810. and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
  1811. * docs/CHANGES: Updated.
  1812. 2017-01-09 Werner Lemberg <wl@gnu.org>
  1813. [pcf] Introduce a driver structure.
  1814. To be filled later on with something useful.
  1815. * src/pcf/pcf.h (PCF_Driver): New structure.
  1816. * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
  1817. functions.
  1818. (pcf_driver_class): Updated.
  1819. 2017-01-08 Werner Lemberg <wl@gnu.org>
  1820. [truetype] Again some GX code shuffling.
  1821. We need this later on for MVAR also.
  1822. * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
  1823. an item store variation delta into...
  1824. (ft_var_get_item_delta): ...new function.
  1825. 2017-01-08 Werner Lemberg <wl@gnu.org>
  1826. [truetype] Adjust font variation flags for MVAR.
  1827. * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
  1828. Remove all flags related to MVAR; replace it with...
  1829. (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
  1830. (TT_Face): Remove `mvar_support' field (which was still unused).
  1831. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1832. [truetype] More GX code shuffling.
  1833. We need this later on for MVAR also.
  1834. * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
  1835. variation store into...
  1836. (ft_var_done_item_variation_store): ...new function.
  1837. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1838. [truetype] More generalization of GX stuff.
  1839. We need this later on for MVAR also.
  1840. * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
  1841. parameters for delta-set index mapping and item variation store.
  1842. (ft_var_load_item_variation_store): Add parameter for item variation
  1843. store.
  1844. s/hvarData/varData/.
  1845. Move allocation of `hvar_table' to...
  1846. (ft_var_load_hvar): ...this function.
  1847. Updated.
  1848. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1849. [truetype] Some GX structure renames for generalization.
  1850. We need this later on for MVAR also.
  1851. * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
  1852. (GX_ItemVarData): ...this.
  1853. (GX_HVarRegion): Renamed to...
  1854. (GX_VarRegion): ...this.
  1855. (GX_HVStore): Renamed to...
  1856. (GX_ItemVarStore): ...this.
  1857. (GX_WidthMap): Renamed to...
  1858. (GX_DeltaSetIdxMap): ...this.
  1859. (GX_HVarTable): Updated.
  1860. * src/truetype/ttgxvar.c: Updated.
  1861. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1862. [truetype] Code shuffling.
  1863. * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
  1864. item variation store and delta set index mapping into...
  1865. (ft_var_load_item_variation_store,
  1866. ft_var_load_delta_set_index_mapping): ...new functions.
  1867. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1868. [truetype] Add HVAR access without advance width map.
  1869. * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
  1870. `offsetToAdvanceWidthMapping' is zero.
  1871. (tt_hadvance_adjust): Implement direct deltaSet access by glyph
  1872. index.
  1873. 2017-01-06 Werner Lemberg <wl@gnu.org>
  1874. [pcf] Revise driver.
  1875. This commit improves tracing and handling of malformed fonts. In
  1876. particular, the changes to `pcf_get_properties' fix
  1877. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
  1878. * src/pcf/pcfread.c (tableNames): Use long names for better
  1879. readability.
  1880. (pcf_read_TOC): Allow at most 9 tables.
  1881. (pcf_get_properties): Allow at most 256 properties.
  1882. Limit strings array length to 256 * (65536 + 1) bytes.
  1883. Better tracing.
  1884. (pcf_get_metric): Trace metric data.
  1885. (pcf_get_metrics): Allow at most 65536 metrics.
  1886. Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
  1887. potential overflow.
  1888. Better tracing.
  1889. (pcf_get_bitmaps): Allow at most 65536 bitmaps.
  1890. Better tracing.
  1891. (pcf_get_encodings, pcf_get_accel): Better tracing.
  1892. * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
  1893. These are now shown by `pcf_get_bitmaps'.
  1894. 2017-01-04 Werner Lemberg <wl@gnu.org>
  1895. * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
  1896. 2017-01-04 Werner Lemberg <wl@gnu.org>
  1897. [cff] More consistency checks for pure CFFs.
  1898. Reported as
  1899. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
  1900. * src/cff/cffload.c (cff_font_load): Check element number and size
  1901. of Name and Top DICT indices.
  1902. 2017-01-04 Werner Lemberg <wl@gnu.org>
  1903. [cff, truetype] Minor tracing improvement.
  1904. * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
  1905. (tt_face_init): Indent first tracing message from SFNT driver.
  1906. 2017-01-03 Werner Lemberg <wl@gnu.org>
  1907. [truetype] Various minor fixes.
  1908. * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
  1909. size only if we do native hinting.
  1910. (TT_Load_Glyph): Trace returned error code.
  1911. * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
  1912. returned error code.
  1913. (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
  1914. invalid.
  1915. 2017-01-03 Werner Lemberg <wl@gnu.org>
  1916. [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
  1917. These tables are optional.
  1918. * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
  1919. 2017-01-03 Werner Lemberg <wl@gnu.org>
  1920. * src/cff/cffparse.c (cff_parse_num): Simplify.
  1921. 2017-01-03 Werner Lemberg <wl@gnu.org>
  1922. Various fixes for clang's undefined behaviour sanitizer.
  1923. * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
  1924. (cff_blend_doBlend): Don't left-shift negative numbers.
  1925. Handle 5-byte numbers byte by byte to avoid alignment issues.
  1926. * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
  1927. byte to avoid alignment issues.
  1928. * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
  1929. subrs.
  1930. * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
  1931. * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
  1932. definition of `ft_get_adobe_glyph_index'.
  1933. * src/psnames/pstables.h: Regenerated.
  1934. * src/psnames/psmodule.c: Include `pstables.h' twice to get both
  1935. declaration and definition.
  1936. * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
  1937. casting.
  1938. 2017-01-01 Werner Lemberg <wl@gnu.org>
  1939. [cff] Handle multiple `blend' operators in a row correctly.
  1940. Reported as
  1941. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
  1942. * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
  1943. pointers into `subFont->blend_stack' after reallocation.
  1944. 2017-01-01 Werner Lemberg <wl@gnu.org>
  1945. [sfnt] Return correct number of named instances for TTCs.
  1946. Without this patch, requesting information for face index N returned
  1947. the data for face index N+1 (or index 0).
  1948. * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
  1949. for negative `face_instance_index' values.
  1950. 2016-12-31 Werner Lemberg <wl@gnu.org>
  1951. */*: Use hex numbers for errors in tracing messages.
  1952. 2016-12-31 Werner Lemberg <wl@gnu.org>
  1953. [truetype] Check axis count in HVAR table.
  1954. Reported as
  1955. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
  1956. * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
  1957. (ft_var_load_avar): Fix tracing message.
  1958. ----------------------------------------------------------------------------
  1959. Copyright (C) 2016-2022 by
  1960. David Turner, Robert Wilhelm, and Werner Lemberg.
  1961. This file is part of the FreeType project, and may only be used, modified,
  1962. and distributed under the terms of the FreeType project license,
  1963. LICENSE.TXT. By continuing to use, modify, or distribute this file you
  1964. indicate that you have read the license and understand and accept it
  1965. fully.
  1966. Local Variables:
  1967. version-control: never
  1968. coding: utf-8
  1969. End: