Skip to content

Add inter-intersection measurements to the measure tool.#5

Merged
khaledhosny merged 2 commits intofontforge:masterfrom
jhps:measure-tool-intersections
Aug 17, 2012
Merged

Add inter-intersection measurements to the measure tool.#5
khaledhosny merged 2 commits intofontforge:masterfrom
jhps:measure-tool-intersections

Conversation

@jhps
Copy link
Copy Markdown
Contributor

@jhps jhps commented Aug 16, 2012

Decorates the measure line with measurements between intersections of selected spline.
This is based on some Inkscape work: http://understandingfonts.com/blog/2011/06/felipes-measuring-tool/
Along the measure tool line it places intersection dots at intersections with the current layer, places measurements of inter-intersection lengths between the intersections, and notes the lengths and the distance between the first and last intersection in the small measure tool window.

@khaledhosny
Copy link
Copy Markdown
Contributor

Can you elaborate please about this new functionality, how to test it, or even some screenshot showing the difference than we have now etc.

@davelab6
Copy link
Copy Markdown
Member

This new functionality is visible when you use the measure tool to measure the distance between two splines. For example if you have a 'n' there are 2 vertical stems and therefore 3 inter-distances to measure: the width of the left stem, the width of the counter form, and the width of the right stem. With this new measuring tool you can quickly see these widths, because each intersection of the measuring line with a glyph line is counted. If the measure tool doesn't intersect with any glyph splines, its functionality is not altered. I tested this and it works very well! :)

@khaledhosny
Copy link
Copy Markdown
Contributor

OK, I still don't understand any of the numbers I see, and there is always two lines starting with [0] and [1] even if I don’t cross any outlines, so can we please get documentation for the new functionality in the relevant section of the manual?
http://fontforge.org/charview.html#ruler

@davelab6
Copy link
Copy Markdown
Member

I have added documentation for this, commit 45c367f, but I wont merge any code pull requests as I can't review the code :)

@jhps
Copy link
Copy Markdown
Contributor Author

jhps commented Aug 16, 2012

Getting rid of the code duplication with the knife function would be nice, but a bit involved and may not be a good idea.
One would also be tempted to disentangle the spline cutting from the (mouse) event handling....

khaledhosny added a commit that referenced this pull request Aug 17, 2012
Add inter-intersection measurements to the measure tool.
@khaledhosny khaledhosny merged commit af60df4 into fontforge:master Aug 17, 2012
@khaledhosny
Copy link
Copy Markdown
Contributor

OK, not a top priority, but it would be nice to have.

khaledhosny added a commit that referenced this pull request Aug 27, 2012
I don't know why it is crshing now (may be the resources?) as this code have
been like that since the dawn of time.

Traceback:

  0xb78289b0 in check_image_buffers (gdisp=0x84d5c78, neww=<optimized out>, newh=7, is_bitmap=0) at gimagexdraw.c:1705
  1705	    if ( width > gdisp->gg.iwidth || depth!=gdisp->gg.img->depth ) {
  (gdb) bt
  #0  0xb78289b0 in check_image_buffers (gdisp=0x84d5c78, neww=<optimized out>, newh=7, is_bitmap=0) at gimagexdraw.c:1705
  #1  0xb782b595 in gximage_to_ximage (image=0x8527ff0, src=0xbfffa0a0, gw=<optimized out>) at gimagexdraw.c:1778
  #2  0xb782e8c2 in _GXDraw_Image (_w=0x9bf4bb0, image=<optimized out>, src=0xbfffa0a0, x=8250, y=7) at gimagexdraw.c:1981
  #3  0xb7807a98 in GDrawDrawScaledImage (w=0x9bf4bb0, img=0x8527ff0, x=8250, y=7) at gdraw.c:488
  #4  0xb781b513 in GListMarkDraw (pixmap=0x9bf4bb0, x=8250, y=1, height=19, state=gs_enabled) at ggadgets.c:482
  #5  0xb788c493 in GMatrixEdit_SubExpose (gme=0x9bd9448, pixmap=0x9bf4bb0, event=0xbfffa400) at gmatrixedit.c:1691
  #6  0xb788c6b1 in matrixeditsub_e_h (gw=0x9bf4bb0, event=0xbfffa400) at gmatrixedit.c:1723
  #7  0xb78040da in _GWidget_Container_eh (gw=0x9bd9178, event=0xbfffa400) at gcontainer.c:269
  #8  0xb7878001 in dispatchEvent (gdisp=0x84d5c78, event=0xbfffa5ec) at gxdraw.c:3959
  #9  0xb7878162 in GXDrawProcessOneEvent (gdisp=0x84d5c78) at gxdraw.c:3991
  #10 0xb7808606 in GDrawProcessOneEvent (gdisp=0x84d5c78) at gdraw.c:748
  #11 0x080c77ff in ContextChainEdit (sf=0x9aa3c68, fpst=0x8ad982c, gfi=0x9afbfc0, newname=0x0, layer=1) at contextchain.c:3207
  #12 0x0818f14a in _LookupSubtableContents (sf=0x9aa3c68, sub=0x8a9d43c, sd=0x0, def_layer=1) at lookupui.c:5531
  #13 0x0813138d in LookupSubtableContents (gfi=0x9afbfc0, isgpos=0) at fontinfo.c:5941
  #14 0x08136a16 in LookupMouse (gfi=0x9afbfc0, isgpos=0, event=0xbfffe930) at fontinfo.c:7336
  #15 0x08136ccc in lookups_e_h (gw=0x9b98230, event=0xbfffe930, isgpos=0) at fontinfo.c:7380
  #16 0x08136d78 in gsublookups_e_h (gw=0x9b98230, event=0xbfffe930) at fontinfo.c:7399
  #17 0xb788f3b0 in drawable_e_h (pixmap=0x9b98230, event=0xbfffe930) at gdrawable.c:219
  #18 0xb78048a7 in _GWidget_Container_eh (gw=0x9b98230, event=0xbfffe930) at gcontainer.c:393
  #19 0xb7878001 in dispatchEvent (gdisp=0x84d5c78, event=0xbfffeb1c) at gxdraw.c:3959
  #20 0xb7878480 in GXDrawEventLoop (gd=0x84d5c78) at gxdraw.c:4058
  #21 0xb78086c1 in GDrawEventLoop (gdisp=0x84d5c78) at gdraw.c:766
  #22 0x0822457c in main (argc=1, argv=0xbffff134) at startui.c:1501
@JoesCat JoesCat mentioned this pull request Feb 13, 2013
7 tasks
@coolwanglu coolwanglu mentioned this pull request Mar 5, 2013
@vernnobile vernnobile mentioned this pull request Sep 11, 2013
@etunni etunni mentioned this pull request Nov 18, 2013
@ghost ghost mentioned this pull request Sep 10, 2016
@serval2412 serval2412 mentioned this pull request Apr 6, 2019
10 tasks
@pnemade pnemade mentioned this pull request Feb 14, 2020
8 tasks
Omnikron13 pushed a commit to Omnikron13/fontforge that referenced this pull request May 31, 2022
==10627==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00010e2239c1 at pc 0x000111258c3d bp 0x7ffee286c210 sp 0x7ffee286b988
WRITE of size 4 at 0x00010e2239c1 thread T0
    #0 0x111258c3c in scanf_common(void*, int, bool, char const*, __va_list_tag*) (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x27c3c)
    #1 0x111258d6d in wrap_vsscanf (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x27d6d)
    #2 0x11125902c in wrap_sscanf (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x2802c)
    fontforge#3 0x10de70b21 in PrefsUI_LoadPrefs prefs.c:1230
    fontforge#4 0x10e02e0ce in fontforge_main startui.c:1109
    fontforge#5 0x10d654b11 in main main.c:33
    fontforge#6 0x7fff62d7b3d4 in start (libdyld.dylib:x86_64+0x163d4)

0x00010e2239c1 is located 63 bytes to the left of global variable 'fvhintingneededcol' defined in '../fontforgeexe/fontview.c:123:14' (0x10e223a00) of size 4
0x00010e2239c1 is located 0 bytes to the right of global variable 'warn_script_unsaved' defined in '../fontforgeexe/fontview.c:83:6' (0x10e2239c0) of size 1
SUMMARY: AddressSanitizer: global-buffer-overflow (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x27c3c) in scanf_common(void*, int, bool, char const*, __va_list_tag*)

warn_script_unsaved is declared as bool, but prefs.c:1230 casts its
pointer to int *, leading the issue above. Prefs of type pr_bool should
be int as well, FontForge is pre-C99 and does not know bool.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants