What a wonderful adventure! My favorite of all the recent HN posts.
This is the true spirit of hacking:
> So, this stumped me for a while. I decided I needed to get to know fonts better, so I built a simple web app to view the lines, curves and control points present in the fonts I had. On this basis, I started to consider the ways the features (vertices, curves, stems, serifs etc) might be matched up between fonts. However, this was a rabbit hole I might never get to the bottom of - particularly when considering some of the more unusual varieties of font. Perhaps there was a simpler idea that was evading me.
Of course, now what I'd like to see is the source code to generate the "average" font on a different machine. It would be interesting (for me at least!) to see the average font from a font designer's machine - or someone who collects different monospaced fonts - or my own machine.
I suppose it's not so much "source code" as it is a bunch of manual steps - but would be interesting to know more about those steps, maybe even enough to repeat them.
His final solution (500 equidistant points per glyph) is very clever though visually, it results in putting unnecessary emphasis in areas of variability. For example, look at the bottom of uppercase 'Q' or the middle of lowercase 'f' - notice how it appears to be a thick knot instead of being the same width as the rest of the letter. This is most certainly because averaging the perimeter points ends up enlarging the enclosed area. The more darts you throw at a dartboard, the larger the area you will cover. While he mentions that he solved the issue of excess variability (lowercase 'g') by selecting a subset of similarly styled glyphs, I don't think he did anything to shrink the knots.
Off the top of my head, one thing that could help solve the knot problem is treat the serifs and sans-serifs as two different subsets and make two Average typefaces. Additionally, he could calculate 'average distance to X nearest points in reverse direction'. By that I mean, a point on a curve pointing down should look at all the points that point up (meaning they are on the other side of the filled polygon or hole), and find the 5-10 closest points and take the average. This could tell you how thick the line or hole is at that point. Then use this as the weight to come up with a weighted average of all the other parameters for each point.
All-in-all, this is a fantastic project and the weeks and months of independent research is time well spent. Hacking for fun is wonderful.
There are also slabs and semi-serifs. Additionally there are also rounded varieties of respective primary designs, so I think his solution is probably Ok. The resulting font is surprisingly good as is.
This is really interesting. I think the result is very attractive and readable. Yet it's also difficult to recall. It reminds me of a face built of averages (http://www.uni-regensburg.de/Fakultaeten/phil_Fak_II/Psychol...) - attractive, but somehow lacking in character.
Oddly enough (bringing us full-circle back to fonts) that was one of the key design parameters for the ubiquitous Helvetica, the intention being that the font itself has no character so simply carries the message of the content without imparting any extraneous "meaning" (i.e. the font was designed to be as much "function" and as little "form" as possible).
It should be possible to develop technology to describe "eigenfonts" and automatically average them. Also, there is technology that can in-between outlines with different numbers of points.
The best part of this post was the dawning realisation about 2/3 of the way through the page that an actual font resulted from the experiment, and the page was displayed in it.
It's a really attractive font, actually. Regular enough that it coheres as a font, but just irregular enough to evoke the output of old movable-type printing presses.
Aside from some unfortunate smudginess here and there the end result is surprisingly good. It reminds me of 17th century texts I've seen: fairly wide, by modern standards, spaces between individual characters, and rounded serifs.
Are you allowed to copy intellectual property like fonts, perform a function like averaging on the intellectual property, and distribute the result of the function performed on the intellectual property?
The USA offers no copyright protection whatsoever for typeface designs. The only thing that can be copyrighted is the outline data of a particular typeface file. Those are considered to be like a "program" for generating a specific output. If I like the design of a typeface, I can make one that looks just like it from scratch, and sell it.[1] There are more exotic ways to protect fonts, such as "design patents", but these are rarely used.
So, in this case, he analyzes the original outlines, and produces new outlines, and then produces a derivative work based on many such derived outlines. I think a judge would just laugh it out of court.
If not, I think it would probably fall under fair use in the USA, specifically the "amount and substantiality" clause. The most relevant precedent might be visual collages. [2]
But, I don't believe algorithmic averaging has ever been tested as a derivative work. Personally I'd argue that "average" artworks are more like facts about the world, but I doubt a judge would be sympathetic.
Jason Salavon started doing similar artworks with photos more than a decade ago, for instance in "Every Playboy Centerfold: the Decades"[3] and many artists have done similar things since then. I once asked him if he'd ever had any legal issues, since I was doing a similar experiment, but he never replied to that.
As I understand it, a font is a bit special, copyright wise. You only need to change it in very minor details to call it a completeley new font. See Arial vs. Helvetica.
That's right, if I recall correctly. You can't copyright a font. You can rip off an existing font and create a new one that looks strikingly similar, even visually identical. However, if you do that by reverse-engineering the font (e.g. extract the bezier curve out of the TTF) then it is illegal. There is a court case where Adobe (?) sued some ripoff (and won), with the argument that while you cannot copyright the font, the "program" that implements the font is still copyrightable. IANAL and my wordings and details may not be 100% correct, so please feel free to correct me.
On the other hand, I wonder... if I take an existing font. Print it to a very high resolution PNG (not vector graphic so all Bezier curves are lost), and use some font creation software that recreate the font by doing an approximation... whether this is still consider a copyright infringement. Just curious...
On the contrary; change is the word you must avoid at all costs. Change almost implies that there also is an unchanged part, and that would run the risk of copyright infringement (if the remaining part is small, it might be fair use). What you can do is design a font that is extremely similar to an existing one. And that is different (unique?) for font designs; for instance, you would have a hard time getting away with designing a cartoon character from scratch that is extremely similar to Mickey Mouse.
Arial isn't Helvetica tweaked. It's a fairly similar font squashed so that it's metrically compatible (i.e. you can swap one for the other and if you squint from a distance it'll mostly look the same as the characters have the same dimensions).
There's an interesting story behind Arial; it was developed as part of a PostScript clone back in the days of Adobe's tight control over the Type 1 specification. Microsoft then threw gasoline on the Arial fire by bundling it into Windows 3.1, purportedly to save licensing costs.
Usually the topic of fair use is rather subjective, and even the four guidelines (roughly: is it transformative? what's the nature of the work, is it for-profit or not? how much of the original is used?) are subject to interpretation. This, however, looks like a strong case of fair use.
I wonder what if you did that and refused to disclose which works you have chosen? (assuming you used something which has stronger copyright protections than fonts)
It's interesting to see how lower-case g is the only letter left that is commonly expressed in fonts two ways, single- and double-story; one flipped left and one right.
Looking at the first average rendering, you can see that it isn't clearly defined like all of the other letters. It also has two very different versions in the serif and sans-serif fonts linked at the bottom.
I wonder if one of the gs will eventually be lost, similar how it's so rare to see an "a" represented in a font as a single-story "ɑ".
I would love to see a professional designer "clean these up" -- use the exact same dimensions and curves, but standardize the stroke widths, curves, etc.
Then I wonder -- would this become the most legible, anonymous font of all time? The serif version could be spectacular for body copy that lets the content speak for itself.
Also, I imagine this could be a fantastic font to "design on top of" -- by overlaying your own designs, you can immediately see what is most distinctive about your own design.
IANAL but according to Wikipedia[1], typeface (and rasterization of the typeface) is not copyrightable although the font file do:
> Under U.S. law, typefaces and the characters they contain are considered to be utilitarian objects whose utility outweighs any merit that may exist in protecting their creative elements. As such, typefaces are exempt from copyright protection in the United States. However, this finding was limited in Adobe Systems, Inc. v. Southern Software, Inc., wherein it was held that scalable computer fonts, i.e., the instructions necessary to render a typeface, constitute a "computer program" for the purposes of copyright law and hence are subject to protection. Hence the computer file(s) associated with a scalable font will generally be protected even though the specific design of the characters is not. Furthermore, a rasterized representation (e.g. bitmap) of the characters in a scalable font is not protected by copyright in the United States.
According to this, the author will have to create his font by directly modifying the original font file to make it a derived work. Since his font is created from rasterized representation, the resulting font file is not considered a derived work. But again, IANAL.
Interesting, but by that reasoning, couldn't I legally copy any font (and have it legally be my own work) simply be rasterizing it at a sufficiently large size and then vectorizing the result?
That's more or less how contemporary font clones are made. Rasterize, use auto-tracing software to produce new font curves, done. You can't directly copy any embedded programs from the original, such as hinting or kerning code, though. Kerning often ends up being tweaked manually (though with enough samples you could infer it from the original output), and then for quick-n-dirty clones hinting is just left to your font engine's autohinting algorithms.
There's a bit of angst about this in typography forums, and social pressure among typophiles and some subset of designers to avoid using "ripoff" fonts.
It would be an interesting project, if nothing else simply as a statement about copyright, to write a program that automates this process and automatically rips a font file this way. By producing samples with characters placed at different fractional positions, you should even be able to infer the hinting information without directly reading it.
That's a shame. Often it's hard for people to hear any idea without thinking that the person who is presenting it is advocating it. Frankly, I don't know if you were or not, but I think it is an interesting idea and, to me, an indication of how bizarre copyright has become.
I think the results are really interesting, for my money it puts me in mind of very old style printed text due to the letter shaping. It immediately feels, well, 'familiar' due to the way it appears.
Not sure if I'd use it for a project, but it's interesting none the less.
Nice.. I had the same idea bored at work using canvas/js a while back (windows XP, so should work with windows versions..). Cool he followed through and made a font with it!
I don't know a lot about web design. Can someone explain to me how my browser rendered that page with the new Averiá font, even though I don't have this font installed? Can web pages include an external font library or something?
Yeah. There's two ways to do it, of which this page uses the latter:
- CSS3's new font-face extension, supported by newer browsers, allows specifying custom fonts to be loaded for a page
- Cufon, a JavaScript program which runs in your browser, can download and render the fonts, replacing each word with a generated image (works in some older browsers too)
The 'o' in 'computer' at the start of the third line of that page seems a little taller than the other letters. Other than that, seems interesting. I'd prefer to see a sans-serif version, though.
This splits the whole page up into 1-character <span>s, and randomizes the font on each one every 100ms. The result is surprisingly readable-- and not at all guaranteed not to crash your browser, I don't recommend trying it on any page more complex than the HN frontpage.
Argh!!! This is precisely the problem when you give developers a designers' problems. It is not possible to engineer your way around every problem.
In this specific case, the font is blurry, unattractive, and lacking any character. It looks like someone tried to autotraced a photocopied fax of a carbon copy.
It's an interesting experiment to be sure – but this is not, in anyway, a solution to … anything.
The author doesn't imply that it's attractive or useful, just that it's the average of all the fonts on this system. He even jokes that the name meaning "mechanical breakdown or damage" is somehow appropriate.
This is, in some ways, the solution to... visualizing the average of all the fonts on this system.
(Although, I think the result is attractive. Probably not very readable, or useful other than for some sort of logotype. Almost makes me think of letters made out of the balls in world of goo.)
This is the true spirit of hacking:
> So, this stumped me for a while. I decided I needed to get to know fonts better, so I built a simple web app to view the lines, curves and control points present in the fonts I had. On this basis, I started to consider the ways the features (vertices, curves, stems, serifs etc) might be matched up between fonts. However, this was a rabbit hole I might never get to the bottom of - particularly when considering some of the more unusual varieties of font. Perhaps there was a simpler idea that was evading me.
Of course, now what I'd like to see is the source code to generate the "average" font on a different machine. It would be interesting (for me at least!) to see the average font from a font designer's machine - or someone who collects different monospaced fonts - or my own machine.
I suppose it's not so much "source code" as it is a bunch of manual steps - but would be interesting to know more about those steps, maybe even enough to repeat them.