---

** [issues:#5806] Tweak mf files to avoid FontForge internal overlap error**

**Status:** New
**Created:** Fri Feb 28, 2020 07:57 PM UTC by Torsten Hämmerle
**Last Updated:** Fri Feb 28, 2020 07:57 PM UTC
**Owner:** Torsten Hämmerle
**Attachments:**

- 
[internal-error-overlap-log.txt](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/internal-error-overlap-log.txt)
 (15.9 kB; text/plain)


#Overlapping mf paths
In some cases, overlapping mf paths will cause errors in FontForge processing, 
even if the resulting glyphs seem to be OK.
Currently, we have **142 error messages** being produced during make, which is 
quite annoying..
Please find the corresponding log extract attached.

**Remedy:**  Slightly adapt mf code (where needed), keeping the resulting glyph 
outline unchanged, but avoid problematic  crossing angles for FontForge.
* slight path adaptions inside overlapping areas (not affecting the resulting 
glyph outline at all!)
* In some cases (braces, arowheads, segno/turns) now using one single outline 
rather than combinng two overlapping ones (with the exact same result).

##FontForge issue
This has been a pain in the neck for many years now, but it doesn't seem to be 
easy to fix in FontForge, though.  Werner has created a (FontForge) issue: 
[https://github.com/fontforge/fontforge/issues/4184](https://github.com/fontforge/fontforge/issues/4184).

Nevertheless, it'd probably be a good idea to make our mf files a bit easier to 
handle.

##Changes to mf files
The mf files have only been changed where needed, using all the original mf 
control points and directions, keeping the *resulting*  character outline 
unaltered.
**I'll attach PFB files of feta11.pfb and feta.braces-a.pfb** so that Werner 
(and others, of course) can have a look at the final FontForge output.

#### Overview: Internal Error (overlap) in [...]

The errors are being caused by just a few glyphs in just a couple of mf files.  
Most of the time, there fixing one macro will fix all the glyphs using that 
macro.

#####feta-arrowheads.mf -> Internal Error (overlap) in arrowheads.*
* macro **set_arrow_path**: now one single outline.  Fixes glyphs **open.01, 
open.0M1, open.11, open.1M1**
##### feta-scripts.mf -> Internal Error (overlap) in scripts.*
* macro **draw_turn**: "ploops" removed, now one single outline.  Fixes glyphs 
**reverseturn, turn, slashturn**
*  char def **"segno"**: similar case as in draw_turn. Fixes glyph **segno**
##### feta-timesignatures.mf -> Internal Error (overlap) in timesig.*
* macro **draw_C**: smooth .. instead of straight -- within overlapping area.  
Fixes glyphs **C44, C22**
##### feta-clefs.mf -> Internal Error (overlap) in clefs.*
* macro **draw_gclef**:  Fixes glyphs **G, GG, tenorG**
* macro **draw_tab_B**:  Starting angle of one stroke in lower handwriting 
style "B" of "TAB" slightly changed (invisible difference).  Fixes glyph **tab**
##### feta-braces.mf -> Internal Error (overlap) in brace*
* macro **draw_brace**:  Even simplified a bit and now drawing one single 
outline without any overlaps.

#### Examle: two overlaping outline -> single outline

In many symmetric cases, such as arrowheads braces, the glyphs had been 
constructed by separately drawing half and a mirrored version of itself, thus 
creating an overlap that *might* be problematic for FontForge.

**Original mf code (with overlap)**
~~~~
   fill path;
   fill path yscaled -1;
~~~~
  
**New mf code (one single outline)**
After determining the intersection point and using the appropriate subpath 
only, we are able to draw one single cyclic outine by joining one half part and 
its reversed/mirrored counterpart:
Using subpaths helps keeping the exact original control points and slopes, thus 
keeping the resulting glyph exactly identical to the original glyph..
~~~~
   fill path
      .. reverse path yscaled -1
      .. cycle;
~~~~


---

Sent from sourceforge.net because [email protected] is 
subscribed to https://sourceforge.net/p/testlilyissues/issues/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/testlilyissues/admin/issues/options.  Or, if this is 
a mailing list, you can unsubscribe from the mailing list.
_______________________________________________
Testlilyissues-auto mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/testlilyissues-auto
  • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development

Reply via email to