PageRenderTime 72ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 1ms

/htdocs/oldchangelog.html

https://bitbucket.org/sortsmill/sortsmill-tools
HTML | 9713 lines | 8104 code | 1606 blank | 3 comment | 0 complexity | c47053390f6c3ff3ae2659190a9bd4b7 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta name="generator" content=
  6. "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org" />
  7. <!-- Created with AOLpress/2.0 -->
  8. <!-- AP: Created on: 16-Sep-2001 -->
  9. <!-- AP: Last modified: 29-Apr-2010 -->
  10. <title>Older changes to FontForge</title>
  11. <link rel="icon" href="fftype16.png" />
  12. <link rel="stylesheet" type="text/css" href="FontForge.css" />
  13. <style type="text/css">
  14. /*<![CDATA[*/
  15. p.c3 {text-align: center}
  16. span.c2 {color: red}
  17. p.c1 {text-align: right}
  18. /*]]>*/
  19. </style>
  20. </head>
  21. <body>
  22. <div id="in">
  23. <table align="right">
  24. <tr>
  25. <td>
  26. <blockquote id="lit">
  27. <b><small>CHAPLAIN:</small></b><br />
  28. &nbsp;It was very interesting; I was dreaming I
  29. stood<br />
  30. &nbsp;On Jacob's ladder, waiting for the gates to
  31. open.<br />
  32. &nbsp;And the ladder was made entirely of diminished
  33. sevenths.<br />
  34. &nbsp;I was surprised, but not put out. Nothing<br />
  35. &nbsp;Is altogether what we suppose it to be.
  36. <p class="c1"><i>The Lady's not for Burning</i><br />
  37. Christopher Fry</p>
  38. </blockquote>
  39. </td>
  40. </tr>
  41. </table>
  42. <p><a href="changelog.html">Current changes</a><br />
  43. <a href="pfaeditchangelog.html">Changes to PfaEdit (predecessor
  44. to FontForge)</a><br />
  45. Changes to the <a href="sfdchangelog.html">sfd format</a>.</p>
  46. <ul>
  47. <li>24-August-2008
  48. <ul>
  49. <li>
  50. <table align="left">
  51. <tr>
  52. <td><img src="FF32.png" width="32" height=
  53. "32" /></td>
  54. <td><img src="FFsfd32.png" width="32" height=
  55. "32" /></td>
  56. </tr>
  57. </table>
  58. <p>Changes to create a stub Mac application. Add an
  59. apple event handler to fontforge so that it will notice
  60. when the finder wants it to open files. Add icons, etc.
  61. so it will look like a mac app.</p>
  62. </li>
  63. <li>Make it possible to drag and drop lookups
  64. <ul>
  65. <li>from one font info window to another<br />
  66. &nbsp; &nbsp; (copy lookups from one font to
  67. another)</li>
  68. <li>within a font info window<br />
  69. &nbsp; &nbsp; (reorder lookups)</li>
  70. </ul>
  71. </li>
  72. <li>Layers can now be marked as either background or
  73. foreground.
  74. <ul>
  75. <li>Foreground layers may be generated into
  76. fonts</li>
  77. <li>Background layers may contain images. Pasting
  78. into an empty glyph in a background layer will not
  79. set the width. Splines in background layers do not
  80. make a glyph worth outputting.</li>
  81. </ul>
  82. </li>
  83. <li>Add a color picker so users can select glyph label
  84. colors other than red, cyan, green, etc.</li>
  85. <li>Memory problems with references, introduced recently,
  86. have been fixed.</li>
  87. <li>I hope I'm now getting keysyms right for non-latin
  88. menu short cuts.</li>
  89. <li>Typo in background layer patch could cause a crash in
  90. fonts with many layers.</li>
  91. <li>Werner wants an $iscid variable to determine whether
  92. a font is a cid-keyed font or not.</li>
  93. <li>add font.iscid to python too.</li>
  94. <li>python font.cid* variables didn't work, fix
  95. them.</li>
  96. <li>Add $haspython variable to normal scripting so I can
  97. detect if python is available.</li>
  98. <li>When pasting a reference into an order2 layer, ff
  99. would sometimes miss the fact that the instructions were
  100. out of date.</li>
  101. <li>Replace with references had the same problem.</li>
  102. <li>In scripting, instructions did not get checked for
  103. up-to-dateness</li>
  104. <li>In the charview, unlink ref only worked on the
  105. foreground layer.</li>
  106. <li>Patch by Barry (fixed up by me) to fix up open
  107. charviews when a layer is added.</li>
  108. <li>Barry points out that Contour.round and Layer.round
  109. are supposed to have an optional argument, but instead
  110. have a required arg.</li>
  111. <li>Just as pasting references screws up instructions, so
  112. does replace with reference. Do the same thing that we
  113. just did to rplref.</li>
  114. <li>When scripting without a UI, the char changed routine
  115. did not check to see if it should clear the instructions
  116. on a change. It now does.</li>
  117. <li>Setting device table adjustments from the accent pane
  118. of the Math dlg didn't work.</li>
  119. <li>File-&gt;Revert File (from the UI) didn't work.</li>
  120. <li>If a contextual chaining pos/sub in a sfd file
  121. referred to a non-existant lookup we would insert a NULL
  122. lookup into a rule. This would cause almost anything that
  123. used that lookup to crash. Now, simply remove the
  124. sequence/lookup info.</li>
  125. <li>When importing lookups we might import a lookup twice
  126. if it were nested.</li>
  127. <li>When generating bitmaps automatically from a script
  128. it was possible that the freetype library got initialized
  129. too late and we'd pass a NULL pointer to FT_Memory_Face
  130. -- and things would crash.</li>
  131. <li>In a quadratic layer of a glyph, when selecting an
  132. on-curve point and trying to make it interpolated, if
  133. that point had no control points then behavior was
  134. odd.</li>
  135. <li>didn't create an input context for top level window
  136. char and font views. This meant could only use ASCII in
  137. menus if the focus were in the top level window (in the
  138. scroll bars, or the menu bar.</li>
  139. <li>Typo in the code to display side bearings in the
  140. charview.</li>
  141. <li>FontForge assumed that all anchor classes for a given
  142. subtable were in sequence, but Panov has a font where an
  143. anchor class for a different subtable appears in the
  144. middle of a list of classes for the desired subtable.
  145. Result was garbage output, and View-&gt;Show Att
  146. crashed.</li>
  147. <li>View-&gt;Next/Prev [Def] &amp; Find In Font View
  148. don't work in charviews when there are tabs active.</li>
  149. <li>R. Sander points out that if you select an ordered
  150. set of lookups in one font and import them into another
  151. they become disordered. Not good.</li>
  152. <li>When pasting into a charview we only set the width if
  153. there was nothing in foreground. When pasting into the
  154. fontview we always set the width because we were clearing
  155. the foreground before we pasted (unless we did paste into
  156. -- then we didn't set the width).
  157. <p>With layers that should all change. We should only
  158. set the width if there is nothing in any of the
  159. potential foreground layers. Don't count the background
  160. layers or the grid psuedo layer. Don't count open
  161. contours (might be a secondary guide line layer or
  162. something). If we're going to clear a layer before
  163. pasting (normal behavior in fontview) then don't count
  164. the layer cleared.</p>
  165. </li>
  166. <li>Add several different behavior patterms for the
  167. metrics view. Users complain that the current
  168. multi-functional window is confusing and would prefer a
  169. view which only does kerning, or only sets the advance
  170. widths, etc.</li>
  171. <li>Due to a typo, merging two splinesets at a curve
  172. point generally left the point marked with default
  173. adjustment enabled on its control points.</li>
  174. <li>Another layers problem. Only in the foreground layer
  175. could anchor points be moved.</li>
  176. <li>Python glyph.unlinkReference command didn't
  177. work.</li>
  178. <li>My intent was that ligature carets positioned at 0
  179. didn't count (0 isn't meaningful -- a ligature with a
  180. zero-width first component?) but that only got
  181. implemented for 'lcar' table not for 'GDEF'. So fix that.
  182. <p>Also allow the user to specify exactly how many
  183. ligature carets s/he wants rather than just setting a
  184. minimum bound.</p>
  185. <p>Also 'lcar' (Apple) output was broken.</p>
  186. <p>Also neither AAT nor OpenType supports negative lig
  187. carets, so if the user drags a lig caret line negative,
  188. have it stick at 0.</p>
  189. </li>
  190. <li>Moving ligature carets always marked for an undo in
  191. the foreground layer. Register the movement in the layer
  192. in which it happens.</li>
  193. <li>When placing an accent glyph about which we know
  194. nothing, assume it should be centered on top.</li>
  195. <li>Change sfd.c so that it will treat the sequence
  196. "backslash newline" as no characters on input (er, except
  197. in ASCII85 input). And so that it thinks it can parse
  198. version 4 or the sfd format.
  199. <p>We don't generate version 4 yet, and we won't for a
  200. while. Version 4 will include the ability to insert
  201. backslash newline into long lines. This is so we can
  202. conform to the internet requirements of fewer than 990
  203. bytes on a line. And the delay is so that people don't
  204. scream at me for making an incompatible change to the
  205. format -- if I give the parser time to perculate
  206. through the user community, with luck no one will even
  207. notice -- especially as long lines are rare.</p>
  208. </li>
  209. <li>Selections/Clipboard didn't work in textfields on
  210. 64bit intel. There seems to be a bug in the 64bit Xlib
  211. which doesn't transfer 32 bit quantities properly. I was
  212. passing unicode strings as 32bit UCS4, but UTF8 will work
  213. just fine instead.</li>
  214. <li>Add the ability to clear all device tables associated
  215. with a kerning by classes table. (Needed because of a bug
  216. which introduced garbage).</li>
  217. <li>We didn't think we could read in a kerning subtable
  218. (class or pair) with device tables, so we converted them
  219. to pst data. We can read them in in optimized form and we
  220. should do so.</li>
  221. <li>Alexej points out that if a glyph has
  222. "instructions_out_of_date" set on it, then setting the
  223. instructions via a script should clear the bit -- but
  224. didn't.</li>
  225. <li>Werner points out that if a type2 charstring
  226. contained a sequence &lt;num&gt; endchar then ff would
  227. set the width of the charater even if the the width had
  228. already been set. Width can only be set on first stack
  229. clearing operation, any extra params on subsequent calls
  230. get ignored.
  231. <p>Actually it's worse than that, the spec says that if
  232. there are too many things on the stack then start
  233. parsing the stack from the unexpected end.</p>
  234. <p>Adobe have admitted that the obvious reading of
  235. their spec is incorrect (they can't quite bring
  236. themselves to say the spec is wrong). So revert some of
  237. the way we were parsing type2 charstrings.</p>
  238. </li>
  239. <li>Barry complains that when building ff does not apply
  240. the ".cap" suffix when using inverted breve.</li>
  241. <li>Valgrind finds a bug in drawing non-BMP characters in
  242. the metrics view.</li>
  243. <li>Alexej would like to be able to manipulate
  244. non-unicode glyphs with the text field of the metrics
  245. view. The textfield used to map all non-unicode code
  246. points to 0xfffd, but if the font doesn't make use of the
  247. supplementary private use areas (planes 15&amp;16) then
  248. create a mapping from the font into these areas so that
  249. we can represent non-unicode glyphs as funky private use
  250. glyphs.
  251. <p>(Only do this if font doesn't use these areas).</p>
  252. </li>
  253. <li>Alexej points out that in non-foreground quadratic
  254. fonts the "Points-&gt;Dont Interpolate" command doesn't
  255. do anything.
  256. <p>Fix a couple of other foreground specific things
  257. too.</p>
  258. </li>
  259. <li>Barry points out that setting a glyph's anchorPoints
  260. from python does not mark a glyph as changed nor force an
  261. update.</li>
  262. <li>Autoinstructor: large patch from Alexey:
  263. <ul>
  264. <li>handlles conflicting H/V stems much better;</li>
  265. <li>tries to place HStems between blues better;</li>
  266. <li>adds optional apparatus for instructing
  267. serifs;</li>
  268. <li>relies on generic point-to-stem snapping routines
  269. from stemdb.c;</li>
  270. <li>needs FPGM changed (older FF's glyph programs
  271. should still work, but FPGMs need updating!).</li>
  272. </ul>
  273. </li>
  274. <li>If the user has opened a backup sfd file (one that
  275. ends in .sfd~) and does a save on it, then pop up a save
  276. as dlg instead of blindly saving it. Saving it back to
  277. the backup is probably wrong, yet saving it onto the
  278. non-backup version without prompting the user is
  279. questionable.</li>
  280. <li>glyph.appendAccents didn't mark the glyph as changed
  281. nor did it force an update.</li>
  282. <li>Barry wants a way to control the use_my_metrics bit
  283. of a reference from python.<br />
  284. Give him a hack<br />
  285. glyph.useRefsMetrics(name[,set])</li>
  286. <li>Add a glyph.appendAccent() command.</li>
  287. <li>Ralf from end-if.de points out that when trying to
  288. change the kerning between two glyphs which have a kern
  289. class setting of 0, then ff keeps asking the same
  290. question several times before a non-zero value is
  291. entered. (once when the field is clicked in, once when a
  292. minus sign is typed, and once more when a number is
  293. entered).</li>
  294. <li>The python stuff won't compile under cygwin because
  295. it used pointers to stuff in shared libraries as
  296. initializers of static variables. It seems windows can't
  297. handle that. This patch should provide a work
  298. around.</li>
  299. <li>Add a font.importLookups (from another font) function
  300. to python scripting.</li>
  301. <li>When joining two splinesets (during glyph editing) we
  302. didn't pay attention to any user settings for the control
  303. points, and we'd just always refigure default control
  304. points. Now use user specified directions when
  305. possible.</li>
  306. <li>Add a problem (Find Problems) which will look through
  307. all glyphs for those with both contours and references,
  308. and which will create a new glyph to contain the contours
  309. and make a reference to it in the original.
  310. <p>Do something similar for bad transformation matrices
  311. (those with members 2 or more (or less than -2)).</p>
  312. </li>
  313. <li>Importing a kerning class from one font to another
  314. (and perhaps merging fonts) could cause memory problems
  315. if the number of second classes were bigger than the
  316. number of first classes.</li>
  317. <li>Retain sizes of bitmap and metrics views. People seem
  318. to like this even if I don't.</li>
  319. <li>Still problems with the guide lines layer
  320. <ol>
  321. <li>Displaying a point read bad memory (probably
  322. harmless, might cause visual artifacts).</li>
  323. <li>Edit-&gt;Undo in guide layer trampled
  324. memory.</li>
  325. </ol>
  326. </li>
  327. <li>Find Problems would occasionally pop up a blank
  328. problem dlg.</li>
  329. <li>Only show points of inflection in the active
  330. layer.</li>
  331. <li>If a glyph window were displaying something other
  332. than the foreground layer then changes in that window
  333. would not be reflected in dependant glyph windows (a
  334. change to tilde didn't show in atilde) nor in the
  335. fontview.</li>
  336. <li>In a cubic glyph with references, turning on point
  337. numbering did not renumber the references. They seem to
  338. be numbered for TrueType. Not sure where that comes
  339. from.</li>
  340. <li>Alexey points out that after deleting the active
  341. layer, ff does not update the internal bitmap font it
  342. used to display glyphs in the font view.</li>
  343. <li>Make "-lang ff" work for "-lang=ff", it's more
  344. consistent with the rest of the arguments.</li>
  345. <li>Add a -unique argument which means that FF checks to
  346. see if another fontforge is running on the current
  347. screen. If no other fontforge exists things proceed
  348. normally, but if there is another, then we send it our
  349. arguments and ask it to open them, and then we exit.</li>
  350. <li>Make the OFLib dialog have an option to download a
  351. preview when you click on a line (rather than requiring
  352. you press the [Preview] button for each).</li>
  353. <li>The BitmapsAvail and BitmapsRegen scripting functions
  354. were broken by the layers patch (they generated bitmaps
  355. of whatever was in the background layer).</li>
  356. <li>Put in some checks to warn the user when a 'kern'
  357. table subtable uses more than 10920 pairs.</li>
  358. <li>Give the user one of those "This operation cannot be
  359. undone" warnings when deleting a layer in Font Info.
  360. (Similar warning about instructions if user changes last
  361. quadratic layer(s) to cubic without deleting any).</li>
  362. <li>When deleting the last quadratic layer, delete the tt
  363. instructions also.</li>
  364. <li>When deleting a layer from a font, ff very carefully
  365. went through all open glyph views to make sure none was
  366. looking at the layer being deleted (and fixing them up if
  367. they were) -- but it totally ignored the font views.
  368. Their layers needed to be updated too. And the metrics
  369. views.</li>
  370. <li>The Import menu item in Font Info-&gt;Lookups popup
  371. menu was always enabled. It should not have been.</li>
  372. <li>Add menu items in Font Info-&gt;Lookups (popup menu)
  373. to do a global add/remove language from a specified
  374. script in all selected lookups.</li>
  375. <li>Get Info (maybe a few other things) didn't work on a
  376. selected reference which wasn't in the foreground
  377. layer.</li>
  378. <li>Copy/Paste of references only worked well in
  379. foreground layer.</li>
  380. <li>Only in the foreground layer was it possible to
  381. select a reference by clicking on it.</li>
  382. <li>Snapping to blues was broken due to a typo in the
  383. code.</li>
  384. <li>Still were a number of places where behavior depended
  385. on the spline order in the foreground layer:
  386. <ul>
  387. <li>Could only debug a glyph if the foreground layer
  388. were quadratic</li>
  389. <li>Show gridfit used some point numbers from the
  390. foreground layer and some from the layer being
  391. shown.</li>
  392. <li>Gridfit didn't change when changing layers.</li>
  393. </ul>
  394. </li>
  395. <li>Peter Lunicks points out that a tooltip in the prefs
  396. dlg actually was for a different preference item.</li>
  397. </ul>
  398. </li>
  399. <li>20-July-2008
  400. <ul>
  401. <li>Updated Russian UI</li>
  402. <li>Updated Simplified Chinese UI</li>
  403. <li>Small Caps dialog greatly rewritten and merged into
  404. the sub/superscript dialog and a new change glyph
  405. dialog.</li>
  406. <li>Alexey Kryukov makes Small Caps and friends deal with
  407. diagonal stems.</li>
  408. <li>Update the upload mechanism to OFLib to send a
  409. preview image, license text (if specified in our
  410. database) and fontlog (again, if in our database).
  411. Currently OFLib throws away both the license info and the
  412. fontlog, but I hope they will fix that in time.</li>
  413. <li>Add a dialog to browse fonts on the OFLib.</li>
  414. <li>Fix some bugs in feature file generation of
  415. contextual chaining lookups which refer to marks. Note
  416. these are not supported in the spec. This is a FontForge
  417. only extension.</li>
  418. <li>If a script contain no default language features (but
  419. did contain some languages) then ff produced a garbage
  420. script table for GPOS/GSUB.</li>
  421. <li>A number of Dialogs still did not autosize themselves
  422. for different languages Create Hints, Kern (Anchor) Pair,
  423. Review Hints.</li>
  424. <li>Still places where ff uses the foreground layer
  425. rather than the current layer to determine if a glyph is
  426. quadratic.</li>
  427. <li>On systems using different font metrics, the debug
  428. pane looks bad with the buttons partly covered by the
  429. instruction pane. If the font is large, and the cvt dlg
  430. empty, then I'm told ff complains.</li>
  431. <li>Barry points out that Add Encoding Slots scrolls to
  432. the wrong place.</li>
  433. <li>Adding glyphs in compacted encodings caused
  434. problems.</li>
  435. <li>When the user resizes the outline glyph window,
  436. retain that size and use it for the default size of
  437. subsequent invocations of the window.</li>
  438. <li>It used to be that whenever ff opened an sfd file
  439. then all subsequent new fonts (or fonts opened from real
  440. font files) would be displayed in windows the same size
  441. as the one requested in the sfd file. Only set the window
  442. size preference when the user explicitly changes it, not
  443. upon openning something with a different setting.</li>
  444. <li>In a CID-keyed font, when opening an empty CID slot,
  445. ff could trample memory.</li>
  446. <li>BlueFuzz support for autohinter and metafont.</li>
  447. <li>Add some checks to make sure that we can survive bad
  448. font data without crashing.</li>
  449. <li>When trying to change kerning between the last two
  450. glyphs in the metrics view using the text field (rather
  451. than dragging the line) then the textfield would change,
  452. but the kerning would not.</li>
  453. <li>In the metrics view, give the user several options
  454. about the grid (which shows the advance widths of the
  455. glyphs)
  456. <ul>
  457. <li>hidden</li>
  458. <li>fully displayed</li>
  459. <li>small lines at the top and bottom of the
  460. pane</li>
  461. <li>fully displayed except when the user is adjusting
  462. kerning or the advance width, etc. When adjusting
  463. grid vanishes until user releases the mouse
  464. button.</li>
  465. </ul>
  466. <p>(setting is sticky).</p>
  467. </li>
  468. <li>Allow the user to customize the colors in the metrics
  469. view.</li>
  470. <li>In the metrics view (or in the print display dlg)
  471. when glyphs are overlapping (e asier to see when glyphs
  472. are large) then the places where one glyph ends and
  473. another begins often have a faint halo of lighter pixels.
  474. Try to improve things and make these joins be more
  475. uniform in color.</li>
  476. <li>Add minimal support for alpha channels (treat them as
  477. a bitmask for transparent).</li>
  478. <li>I find it really hard to believe that this is an
  479. error, but I have a second hand report that MicroSoft
  480. claims that it is. To me making it erroneous is pointless
  481. and annoying, but I don't write the spec.<br />
  482. Add to Find Problems and Validate a check to see that if
  483. a base glyph (or mark) contains an anchor point in one
  484. anchor class in a lookup subtable, then it must have
  485. anchor points for ALL anchor classes in that
  486. subtable.</li>
  487. <li>Fontimage would crash if asked to process a font with
  488. glyphs not in BMP. Make fontimage better about fonts
  489. which contain no standard scripts (Apostolos's Phaistos
  490. font).</li>
  491. <li>A few tweaks to make stemdb.c usable for resizing
  492. glyphs and stem control.</li>
  493. <li>When importing lookups into a font, append the
  494. fontname to the lookup name only if there is already a
  495. lookup in the new font with the original name.</li>
  496. <li>Empty glyphs containing a "." in the name could cause
  497. ff to crash when doing or checking to see if it could do
  498. a build accented.</li>
  499. <li>Gasp editing was broken (still) from the change to
  500. the cleartype stuff.</li>
  501. <li>Andrey P. would like to see a reference's bounding
  502. box in the Element-&gt;Get Info dlg for the
  503. reference.</li>
  504. <li>Revert glyph had some stray memory references.</li>
  505. <li>Add two proposed language tags for IPA use (one for
  506. IPA and one for Americanist).</li>
  507. <li>In an empty python layer layer.boundingBox should
  508. return a tuple of 4 zeros, instead it returned a tuple of
  509. 2 zeros and 2 random garbage values.</li>
  510. <li>Validate dlg's scrollbar was broken, and you couldn't
  511. drag the thumb up to the top (you could get it to the top
  512. by other ways).</li>
  513. <li>Add a revalidate all menu item to the window to force
  514. a reevaluation of the entire font.</li>
  515. <li>Add ability to import graphics from a page of a pdf
  516. file.</li>
  517. <li>Python interface does not categorize points.</li>
  518. <li>The (python) psMat.skew command skewed vertically,
  519. rather than horizontally and by the wrong amoung.</li>
  520. <li>When doing a font sample from a script which did not
  521. set the page width/height explicitly, then ff would use a
  522. size of 0 for each. All text drawn was out of the imaging
  523. area, lines were too short (as well as invisible), too
  524. many pages (all blank).</li>
  525. <li>Barry points out that "print" is a python keyword. So
  526. font.print() doesn't work. Call it printSample()
  527. instead.</li>
  528. <li>Freetype now (or in the next release, 2.3.7) supports
  529. dropout modes, which means fontforge must do a bit of
  530. work when generating rasters for the debugger.</li>
  531. <li>Move some logic out of fontimage.pe and into
  532. fontforge to make a default string for a font image more
  533. widely available.</li>
  534. <li>When saving an image fromt the print dlg, the top
  535. line was off the top of the image.</li>
  536. <li>Interpolated points need not be on integral
  537. boundaries, but ff was checking for them. Different
  538. problems in validator and find problems, but both
  539. wrong.</li>
  540. <li>In the point near hint check (find problems), ff was
  541. leaving the hint selected.</li>
  542. <li>Fix some rounding errors in spline/line
  543. intersection.</li>
  544. <li>in Font Info, after user pressed [OK] FF set the
  545. state of the subscript superscript default checkbox to
  546. the panose default checkbox by mistake. This means if the
  547. user defined panose and not sub/super garbage would
  548. appear in the OS/2 sub/super fields.</li>
  549. <li>fontimage didn't get the script right, so features
  550. weren't applied properly.</li>
  551. <li>More work on conflicting stems.</li>
  552. <li>Pressing [Done] in the print dialog would right to a
  553. random address on the stack. Depending on what was going
  554. on when this was done it could cause a crash.</li>
  555. <li>Fix an uninitialized variable introduced by the last
  556. change to order2 conversion.</li>
  557. <li>Add the ability to open an archive and peek inside it
  558. for fonts. Useful if we want to open stuff from the open
  559. font library which is often packaged in zip files.</li>
  560. <li>Add a new validation check to see if a glyph has
  561. non-integral coordinates. Only an error in TrueType (and
  562. can't happen when fontlinting a truetype file, but could
  563. happen on an sfd file). Add some logic to ask user if
  564. they intend to generate truetype in cases where we aren't
  565. sure.</li>
  566. <li>Add a preference which allows people to change the
  567. pixmap dir -- and do what we can to reload images from
  568. the new dir. Some old windows may not be updated, but new
  569. ones should reflect the new stuff.</li>
  570. <li>When ff changed the name of a glyph, it fixed up all
  571. the tabs in charviews to the new name -- but in neglected
  572. to refresh them. So they still showed on the screen with
  573. the old name (until something forced a refresh).</li>
  574. <li>The Anchor Class dialog (which lists all anchor
  575. classes of a subtable) only let you create an Anchor
  576. Control dialog for the first anchor class.</li>
  577. <li>Guard (harder) against generating pathological
  578. results when converting cubic to quadratic splines.</li>
  579. <li>If we had a spline which almost doubled back on
  580. itself, sufficiently so that the spline intersector found
  581. lots of really close points, which it called
  582. intersections, but not sufficiently so that our collinear
  583. detector caught it, then we'd generate a ton of
  584. intersections, overflow certain arrays, and trash the
  585. stack. =&gt; ff would crash. I didn't think this could
  586. happen, until someone provided a test case, so put in
  587. guards against this.</li>
  588. <li>provide python access to
  589. <blockquote>
  590. glyph.altuni
  591. </blockquote>
  592. <p>either None, or a tuple of tuples, one sub-tuple for
  593. each alternate. each sub-tuple is (alternate-unicode,
  594. variation selector (or -1), reserved for future=0
  595. now).</p>
  596. </li>
  597. <li>Trying to build dieresis with "PreferSpacingAccents"
  598. set meant that we tried to build it out of itself, and
  599. crashed.</li>
  600. <li>Also fix so that 0x22EF (ellipsis variant) is built
  601. out of centered dot in a spacing mode, while Ldot uses it
  602. in a non-spacing mode.</li>
  603. <li>Merge fonts broken again. This time references didn't
  604. work.</li>
  605. <li>Provide a mechanism for loading image files to make
  606. menu item icons (instead of expecting the images to live
  607. in memory inside of fontforge). Then provide a bunch of
  608. these icons so the menus will look more interesting.
  609. <p>Provide some icons</p>
  610. <p>Also update the install procedure to put them in the
  611. right place.</p>
  612. <p>Preference item containing a directory from which to
  613. read icon files</p>
  614. </li>
  615. <li>FF crashed when opening CID keyed fonts with
  616. compact_on_open set.</li>
  617. <li>If fontforge got an end of file in the middle of
  618. reading a (corrupt) cff font, then ff would sit there
  619. reading endlessly and ignoring the error.</li>
  620. <li>Off by one error in drawing the large "pixel"
  621. rectangles that show grid fit generated.</li>
  622. <li>Werner points out that my instruction glosses are out
  623. of date:
  624. <ol>
  625. <li>Was following Apple's docs for SCANTYPE, not MS.
  626. MS has a number of new values.</li>
  627. <li>Was using an old convention for accessing PPEM
  628. which broke after freetype 2.3.5</li>
  629. <li>Added the FreeType return for GETINFO.</li>
  630. </ol>
  631. </li>
  632. <li>Featurefile patch from Barry.</li>
  633. <li>I used to think that the max glyph instruction length
  634. field of 'maxp' refered to fpgm and prep. I thought this
  635. because there was a footnote (which I now see was for a
  636. different field) saying the field also applied to fpgm
  637. and prep.</li>
  638. </ul>
  639. </li>
  640. <li>07-June-2008
  641. <ul>
  642. <li>New Russian translation of the UI</li>
  643. <li>Sometimes FF didn't set the message locale directory
  644. properly.</li>
  645. <li>Since FF will crash if you load a feature file when
  646. the Font Info window is open for that font, close the
  647. Font Info window when loading a feature file.</li>
  648. <li>New <a href="Styles.html#Italic">dialog</a> to help
  649. users convert an upright font into an italic one.</li>
  650. <li>New <a href="Styles.html#Smallcaps">dialog</a> to
  651. help users create small caps glyphs.</li>
  652. <li>New <a href="Styles.html#SubSuper">dialog</a> to help
  653. users create subscript/superscript glyphs.</li>
  654. <li>And matching python commands: font.italicize(),
  655. font.addSmallCaps(), layer.stemControl()</li>
  656. <li>Make it clear that the transform dlg from the
  657. fontview will move the width of a glyph by default, and
  658. provide a checkbox so the user can turn this off.</li>
  659. <li>Fix various bugs in argument handling of
  660. fontforge.askChoices</li>
  661. <li>Change font.removeGlyph to accept a single string
  662. argument to remove the glyph with that name.</li>
  663. <li>FF didn't like decimal points in the metrics view l/r
  664. bearing fields -- even though it would put them there
  665. itself.</li>
  666. <li>Metrics windows weren't being remetricked after a
  667. feature file was loaded (nor an afm file for that
  668. matter). Nor were they remetricked after lookups changed
  669. in fontinfo.</li>
  670. <li>Add to python
  671. <ul>
  672. <li>font.revert()</li>
  673. <li>font.revertFromBackup()</li>
  674. <li>font.buildOrReplaceAALTFeatures()</li>
  675. </ul>
  676. </li>
  677. <li>Changing a glyph's width from a python script didn't
  678. update the metrics window.</li>
  679. <li>Adding two languages in the same script to a lookup
  680. in a feature file didn't work.</li>
  681. <li>It wasn't possible to rename an anchor class (at
  682. least not by the obvious method through the dlg).
  683. Attempting to delete an anchor class popped up an error
  684. message which didn't provide all its own arguments and so
  685. could crash on some systems.</li>
  686. <li>Better error recovery in feature file parsing.</li>
  687. <li>Werner points out that since I allow the user to see
  688. points in references transformed to their ultimate
  689. position, I should also transform the raster.</li>
  690. <li>Patch by Barry to fix kerning classes (ie. figuring
  691. out WHAT glyphs go into a class).</li>
  692. <li>When parsing a feature file which used a default
  693. languagesystem setup, ff only used the most recent
  694. script.</li>
  695. <li>If a lookup contained no data (no subtables, or empty
  696. subtables) then when generating a feature file ff would
  697. output stuff to declare a lookup, but when there was no
  698. content that frame could not be parsed as it would be
  699. impossible to figure out the lookup type. Try to avoid
  700. that.</li>
  701. <li>FF did not put contextual lookups on all the lists
  702. they needed to be on when loading them from a feature
  703. file.</li>
  704. <li>Sometimes the Open Font dlg opened with the files
  705. shifted left so the first characters of the name were
  706. outside the window.</li>
  707. <li>Patch from Barry Schwartz. "include" syntax in
  708. feature files didn't work.</li>
  709. <li>Sort button in the lookups pane of font info didn't
  710. refresh the window after it finished (so things looked
  711. unsorted even after pressing it).</li>
  712. <li>When doing a Build Accented on dotted glyphname
  713. (agrave.sc, etc.) the accent was positioned using anchors
  714. in the undotted base glyph (a rather than a.sc).</li>
  715. <li>Fix various problems with tt debugging.</li>
  716. <li>The XUID and UniqueID fields of a PostScript font are
  717. deprecated, yet FF has continued to output them by
  718. default. Make it so FF no longer does so.</li>
  719. <li>When outputing an sfd file, ff would sometimes output
  720. a truetype spline as a line if it had a collinear
  721. control-point. I thought I'd taken care of that, but
  722. here's another case which needed fixing.</li>
  723. <li>Typo when loading the underline position field from a
  724. 'post' table. I was subtracting half the underline width.
  725. I should have been adding it instead. (Why did adobe use
  726. a different definition of the same concept in two places?
  727. GRRR).</li>
  728. <li>It wasn't possible to make the foreground layer
  729. invisible.</li>
  730. <li>When the file chooser bookmark list got too long ff
  731. would crash.</li>
  732. <li>I wasn't doing the obvious checks to the sfnt header
  733. in font lint. So now:
  734. <ol>
  735. <li>Check that there are no duplicate table
  736. entries</li>
  737. <li>Check that there are no overlapping tables</li>
  738. <li>Check that no tables extend beyond the end of
  739. file</li>
  740. <li>Check that the file's checksum is correct</li>
  741. <li>Check that each table's checksum is correct</li>
  742. <li>Check that the number of tables is reasonable and
  743. that the binary search header is consistent with the
  744. number of tables.</li>
  745. <li>Check that required tables are present</li>
  746. <li>Check that certain fixed length tables have the
  747. correct length.</li>
  748. </ol>
  749. </li>
  750. <li>Werner would like to be able to debug (truetype
  751. instructions) when using non-square pixels (x_ppem !=
  752. y_ppem).</li>
  753. <li>Barry wants to be able to close a tab. Add a menu
  754. item.</li>
  755. <li>When a glyph's name changed, I did not update the
  756. names in any tabs in the charviews -- so those tabs would
  757. stop working after the change.</li>
  758. <li>Scrollbar in points debug window wasn't set
  759. right.</li>
  760. <li>A. Panov provides a patch. Prefs was losing
  761. bookmarks.</li>
  762. <li>the new release of volt reveals some new opentype
  763. tags.</li>
  764. <li>If we have a glyph named "agrave.sc" or "eacute.sc"
  765. then FF will now let you build this as an accented
  766. character. It will remove the suffix from then name, and
  767. look up the components of the bare glyph. Then for the
  768. first component it will search for a glyph named "a.sc"
  769. and insert it. For the accents it will use "grave.sc" if
  770. present, and "grave" if it is not.</li>
  771. <li>FF wasn't handling a FontMatrix in the top dict of a
  772. cid font.</li>
  773. <li>Trying to filter for fig files in the Import dlg
  774. caused a crash.</li>
  775. <li>Check for bad OS/2 versions (that is, versions
  776. windows will reject) when loading a font.<br />
  777. Connect validation's "Points too far" with Find Problem's
  778. version.<br />
  779. Make fontlint aware of the new validation states.<br />
  780. When generating a font we complained about bad os/2
  781. version only if they asked for a validation. Move it
  782. somewhere more prominant.</li>
  783. <li>Add two new problems to find
  784. <ol>
  785. <li>Points too far apart</li>
  786. <li>Bitmap advance width different from scaled
  787. outline advance widths</li>
  788. </ol>
  789. <p>(also boxify the Find Problems dlg).</p>
  790. </li>
  791. <li>Add a new validation state: Test that points aren't
  792. too far appart (must be within 32767 of each other or we
  793. can't output them).</li>
  794. <li>Try a little harder to get some of the obscure code
  795. pages right in the OS/2 table.</li>
  796. <li>Was getting the first glyph index of OS/2 wrong for
  797. OTF fonts.</li>
  798. <li>If an sfnt contains embedded bitmaps, and if those
  799. bitmaps contain a glyph whose advance width is different
  800. from that expected by scaling the horizontal advance of
  801. the vector data, then windows will only get the correct
  802. metrics if the "Instructions modify width" bit is set in
  803. the 'head'.flags field.</li>
  804. <li>If the "changedsincelasthinted" bit got set on a
  805. glyph by the unlink/remove overlap flag on a glyph during
  806. font saving, then the glyph did not get restored to its
  807. original state.</li>
  808. <li>Doing an Undo in the Guidelines layer didn't work,
  809. usually crashed.</li>
  810. <li>Validate didn't work on CID keyed fonts.</li>
  811. </ul>
  812. </li>
  813. <li>29-Apr-2008
  814. <ul>
  815. <li>Validate didn't work in CID keyed fonts.</li>
  816. <li>Pierre Hanser wants an X Resource
  817. (fontforge.CharView.Rulers.FontSize) to specify the font
  818. size of text displayed in the info line and the rulers. I
  819. have applied his patch, but have made no effort to insure
  820. that text will fit in the space allowed for it.</li>
  821. <li>Hmm. Freetype seems to dislike rasterizing some
  822. complex outlines at large pixelsizes in black and white,
  823. but seems fine with doing them in greyscale.</li>
  824. <li>When opening a ttc file (and posting a dlg which
  825. lists all the fonts in the file) try to find a fontname
  826. in the current locale. We used to look first for English
  827. and then anything. Now try: First current locale, then
  828. english, then anything.</li>
  829. <li>Make the Open Font dlg (and similar file chooser
  830. dlgs) be customizable, and store that info in prefs.
  831. Specifically control whether directories are displayed in
  832. alphabetical order among other files, before normal
  833. files, or in a separate pane.
  834. <p>Also add a bookmark (and back/forward)
  835. mechanism.</p>
  836. </li>
  837. <li>Add support for opening a font from http &amp; ftp
  838. URLs. Can browse ftp URLs, and save fonts back to
  839. ftp.<br />
  840. <code>$ fontforge
  841. http://openfontlibrary.org/people/Nasenbaer/Nasenbaer_-_Widelands.ttf</code></li>
  842. <li>The validation patch broke the save mac family
  843. dialog, and then the upload to open font library broke it
  844. further.</li>
  845. <li>When doing expand stroke, it is possible to have two
  846. points so close together that there is no data on the
  847. curve in between the two. If this happens
  848. ApproximateFromPointsSlopes can't do a good job. So be
  849. careful of this case.</li>
  850. <li>Layers change introduced a potential crash in the
  851. Embolden command.</li>
  852. <li>fontimage didn't draw the first line.<br />
  853. Add a cgi front end to <a href=
  854. "fontimage.html">fontimage</a> so now it is possible to
  855. get a font sample of any font on my website.</li>
  856. <li>In the Display dlg, if you changed the font, or the
  857. point size without selecting something, then that change
  858. would vanish instantly. Fix that.
  859. <p>Also, was a crash bug when mixing a font with a
  860. baseline table and a font without one (in the disply
  861. dlg).</p>
  862. </li>
  863. <li>Add a command to insert text into a glyph.
  864. (<code>Element-&gt;Insert Text Outlines)</code> It adds
  865. the text outlines directly (instead of a draw command
  866. using another font) because most fonts can't include text
  867. drawing in their glyphs. Also include a Bind to Path
  868. variant.</li>
  869. <li>GLyph lists in kerning classes (in show att) were
  870. displayed as ligatures.</li>
  871. <li>Upgrade to unicode 5.1</li>
  872. <li>If an sfd file were saved with spiros active, and
  873. then loaded into a version of fontforge without libspiro,
  874. then bad things would happen. Whenever we check that
  875. spiros are active also check that they can be active, and
  876. add some warnings for the user to let him/her know that
  877. spiros aren't available.</li>
  878. <li>Add a tile pattern command (if --enable-tile-path)
  879. this allows the user to replicate any given pattern in
  880. another glyph.
  881. <p>This could be used to produce a grid of guidelines,
  882. or, in conjunction with
  883. <code>Element-&gt;Overlap-&gt;Intersec</code>t it could
  884. provide a poor man's "Pattern Fill" (Since Pattern
  885. fills are only available in type3 fonts this sort of
  886. makes them work for any font type).</p>
  887. </li>
  888. </ul>
  889. </li>
  890. <li>30-Mar-2008
  891. <ul>
  892. <li>Add support for the OpenType 'BASE' table, and to a
  893. lesser extent for Apple's 'bsln' table.
  894. <p>Add python scripting (font.horizontalBaseline,
  895. font.verticalBaseline) too.</p>
  896. <p>Add support under Show ATT.</p>
  897. <p>Remove the old vertical origin field.</p>
  898. </li>
  899. <li>Add the ability to create a dummy 'DSIG' table (one
  900. containing no signatures) so that Windows will show an
  901. opentype icon for a font with extension 'ttf'</li>
  902. <li>Add support for gradient and pattern fills to type3
  903. fonts (only if <code>./configure --enable-type3</code> is
  904. specified, of course.
  905. <p>Also add support for cliping paths</p>
  906. <p>Make fonts containing images work in pdf output.</p>
  907. </li>
  908. <li>Bump the sfd version number. This should have
  909. happened in the last release, but I didn't realize it was
  910. needed then, thus there will be sfd files with an
  911. incorrect version number (2) when it should be 3. However
  912. that should not cause the current parser problems.</li>
  913. <li>New Greek translation from Apostolos</li>
  914. <li>Updated Polish translation from Michal</li>
  915. <li>Apostolos points out that compiling on systems
  916. without freetype (Solaris boxes) was broken after last
  917. months layers patch.</li>
  918. <li>Werner suggested various improvements to Show ATT:
  919. <ul>
  920. <li>Lookups should be sorted</li>
  921. <li>Glyph images should be drawn in more cases
  922. (before, just for substitutions)</li>
  923. </ul>
  924. </li>
  925. <li>Patch from Alexey, for better handling conflicts
  926. between diagonal and H/V stems.</li>
  927. <li>Do a more consistent job of handlong curved stem
  928. segments. Also collect point data for off-curve points
  929. too (may be useful in future for TTF hinting).</li>
  930. <li>Last month I put in a patch to make sure the lsb as
  931. stored in the 'hmtx' table was really the glyph's lsb if
  932. bit 1 of the head.flags field were set. Unfortunately I
  933. read in the lsb as an unsigned number which shifted
  934. negative lsbs off to around 65535. FF sometimes refused
  935. to rasterize them. Of course when the font was generated
  936. they got truncated back to negatives in the output.</li>
  937. <li>Add a preference item so that fonts will be
  938. automagically compacted when they are opened.</li>
  939. <li>Add a new preference item (SeekCharacter) to allow
  940. users to control which character will be displayed when
  941. opening a new font. Normally FontForge displays 'A', but
  942. that's a bit latin-alphabet-centric.</li>
  943. <li>If palettes were not docked, then a complicated
  944. series of events could lead to a crash after closing a
  945. TilePath (Math kerning, Gradient Fill, etc.) dialog.</li>
  946. <li>Was not outputting the %%LanguageLevel DSC
  947. comment.</li>
  948. <li>Generating a CID-keyed otf font was broken by the
  949. layers patch. (Only the background layer

Large files files are truncated, but you can click here to view the full file