lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Double G clef, tenor G clef, varpercussion clef and varC clef (issue


From: lemzwerg
Subject: Re: Double G clef, tenor G clef, varpercussion clef and varC clef (issue 47840043)
Date: Sat, 18 Jan 2014 06:12:16 +0000

First of all: Looking at clefs.tenorG, patch set 5 compared to patch
set 4 has a side effect: It reduces the height of the glyph's top.  Is
this intentional?  I guess it's not, so please fix this.

Compiling with

  mf2pt1 --rounding=0.0001 feta20.mf

The script returns the following errors (from a self-compiled fontforge
binary based on the git repository, identifying itself as
9-Dec-2013-ML-TtfDb-D):

  Internal Error (overlap) in clefs.tenorG:
    monotonic is both needed and unneeded
    (378,988,152,446)->(232,924,31,5377).
    x=371,416 (prev=287,662)
  Internal Error (overlap) in clefs.tenorG:
    monotonic is both needed and unneeded
    (378,988,152,446)->(232,924,31,5377).
    x=359,647 (prev=287,662)
  Internal Error (overlap) in clefs.tenorG:
    Humph. This monotonic leads nowhere
    (401,125,-82,4102)->(357,086,151,324).
  Internal Error (overlap) in clefs.tenorG:
    Closing contour with unneeded path
  Internal Error (overlap) in clefs.tenorG:
    couldn't find a needed exit from an intersection

This is a bug in FontForge; I guess I've reported about 10 similar
issues to the original author.  However, such bugs are hard to find and
to fix, I was told, and I doubt that the current development team has
enough expertise to correct that at all, or within a short time frame
(the original author has retired, unfortunately).  My solution to
previous problems with FontForge's outline overlap remover was to
simplify the topology of the problematic Emmentaler glyph.

Looking at the glyph without overlaps removed (created with a call to
`FONTFORGE=foo ./mf2pt1 ...'), I see that the horizontal line starting
in point 1''' almost exactly crosses two other outlines in a single
point, and this near-intersection point of three outlines is only given
implicitly so that mf2pt1 doesn't convert it to a real PostScript point.
 Due to rounding issues – even if FontForge is compiled with double
precision – this might lead to the current FontForge problem.

I see two solutions:

  1. Make this intersection point of three outlines a real point, which
should be then part of all three METAFONT paths.

  2. Slightly shift up the horizontal lines starting at points 1''' and
8''' to avoid this triple intersection point completely.

One of the two solutions should work, I expect.



https://codereview.appspot.com/47840043/diff/80001/mf/feta-clefs.mf
File mf/feta-clefs.mf (right):

https://codereview.appspot.com/47840043/diff/80001/mf/feta-clefs.mf#newcode531
mf/feta-clefs.mf:531: -- z108
Whitespace...

https://codereview.appspot.com/47840043/diff/80001/mf/feta-clefs.mf#newcode563
mf/feta-clefs.mf:563: forsuffixes e := l,,r:
Wrong indentation.

https://codereview.appspot.com/47840043/diff/80001/mf/feta-clefs.mf#newcode575
mf/feta-clefs.mf:575: .. z210e{down_}
Wrong indentation (this is, missing vertical alignment to `z221e').

https://codereview.appspot.com/47840043/diff/80001/mf/feta-clefs.mf#newcode613
mf/feta-clefs.mf:613: pair ne_beam_dir,nw_dist;
Wrong indentation.

https://codereview.appspot.com/47840043/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]