Patch formatted against current master attached.
(This time with a reasonably stripped-down commit message)
**Please push it for me.**

Thanks,
Torsten


Attachments:

- 
[0001-Issue-5806-Tweak-mf-files-to-avoid-FontForge-interna.patch](https://sourceforge.net/p/testlilyissues/issues/_discuss/thread/2c19181bf0/c7da/d5f0/attachment/0001-Issue-5806-Tweak-mf-files-to-avoid-FontForge-interna.patch)
 (24.7 kB; text/x-patch)


---

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

**Status:** Started
**Created:** Fri Feb 28, 2020 07:57 PM UTC by Torsten Hämmerle
**Last Updated:** Thu Mar 05, 2020 06:31 AM UTC
**Owner:** Torsten Hämmerle
**Attachments:**

- 
[feta-alphabet11.pfb](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/feta-alphabet11.pfb)
 (12.6 kB; application/x-font-type1)
- 
[feta-braces-a.pfb](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/feta-braces-a.pfb)
 (24.8 kB; application/x-font-type1)
- 
[feta11.pfb](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/feta11.pfb)
 (53.8 kB; application/x-font-type1)
- 
[internal-error-overlap-log.txt](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/internal-error-overlap-log.txt)
 (41.5 kB; text/plain)
- 
[parmesan11.pfb](https://sourceforge.net/p/testlilyissues/issues/5806/attachment/parmesan11.pfb)
 (39.4 kB; application/x-font-type1)


[https://codereview.appspot.com/571780043](https://codereview.appspot.com/571780043)
#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 **352 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-numbers.mf -> Internal Error (overlap) in two, seven
* Character defintions "two" and "seven" chnged.  Fixes glyphs **two, seven**
##### 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.
##### parmesan-clefs.mf -> Internal Error (overlap) in clefs.*
* macro **draw_neomensural_c_clef**:  Fixes glyphs **neomensural.c, 
neomensural.c_change**
* macro **draw_petrucci_c_clef**:  Fixes glyphs **petrucci.c1, c2, c2_change, 
c3, c3_change, c4, c5, c5_change**
##### parmesan-rests.mf -> Internal Error (overlap) in rests.*
* char def "2neomensural" changed:  Fixes glyph **rests.2neomensural**

#### 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

Reply via email to