
Show HN: Choosing font combinations with deep learning - Jack000
https://github.com/Jack000/fontjoy
======
ams6110
Tangentially, I've been trying to identify a font. I have a small example as a
jpeg image. I tried
[https://www.myfonts.com/WhatTheFont/](https://www.myfonts.com/WhatTheFont/)
without finding an exact match. Are there other good resources for doing this?

~~~
Jack000
I suspect the tough part of whatthefont isn't so much the visual search but
having a large database of labelled fonts.

There are other services that does this but personally I've always heard good
things about whatthefont.

------
intoverflow2
Interesting, but not all design is about harmony.

I'd be more interested in examples where ML could create combinations that
shouldn't work together but work. Think like some of the more experimental
stuff coming out of the Bloomberg Business Week design team

~~~
danso
That raises an interesting debate about the boundary between experimental-but-
brilliant and experimental-but-awful, and whether machine learning can
meaningfully discern the difference and (ideally) provide the former. Because
much of it is just taste and tastemaking; Bloomberg features, when posted
here, often spark comment threads about how ugly or distracting the design is.
Usually the majority of commenters side with the designers' apparent intent,
but that's because Bloomberg is a relatively well-known/respected
organization. Like modern art, experimental design's appeal is inextricably
linked to the creator's credentials, e.g. " _No one who gets paid that much
would do such a crazy thing out of ignorance!_ ".

So what would machine learning bring to the mix? I would prefer a heuristics-
based analysis. That is, filter out the most popular combinations, and filter
out combinations that are linked to "failed" designs (how you measure "failed"
would be subjective of course). Then manually select, as a designer, from the
uncommon but yet-unhated combinations left over.

~~~
Declanomous
One of my biggest complaints about things 'curated' via ML is that you are
only introduced to things that are relatively similar. It's like trying to
find new music by looking at the top 10 songs on the Billboard Chart.

Basically ML sucks at curating novelty.

------
LeonidBugaev
I wonder, is it possible to generate fonts based on this algorithm, for
character sets which are not included into the original font.

For example, I have English font, and want exactly same but with Hindy or
Cyrillic characters. Any tips on how to implement it?

~~~
Jack000
there's another project that does this:
[https://erikbern.com/2016/01/21/analyzing-50k-fonts-using-
de...](https://erikbern.com/2016/01/21/analyzing-50k-fonts-using-deep-neural-
networks.html)

the results are a bit blurry but as the author notes the next step is to use a
better loss function. A GAN loss or GAN+L1 ala pix2pix should dramatically
improve results.

------
justswim
This is pretty awesome. I've been working on my side project Mixfont
([https://www.mixfont.com](https://www.mixfont.com)) which is a similar sort
of font generator. Your pairings are a lot nicer than those on Mixfont though
... would love to learn more about how you did that.

~~~
Jack000
it uses VGG16 to extract font features, then compares those features to figure
out the best contrast between fonts.

feel free to use the vectors in the Github.

------
rubatuga
Although a title with deep learning in it makes me roll my eyes nowadays, I
really should be more open to the ideas behind them. The font pairings at the
end of the article look very nice!

~~~
throwanem
I'm looking forward to "Choosing lunch with deep learning", trained on a
curated selection of Instagram posts.

~~~
gjm11
Perhaps this is what you want:
[https://www.ibmchefwatson.com/](https://www.ibmchefwatson.com/)

~~~
throwanem
Getting tired of living on the worldline where every time I think I'm making a
joke, I turn out not to be.

------
usaphp
Honestly most of the results are really poor. I would recommend using
[https://www.typewolf.com](https://www.typewolf.com) instead.

------
accountyaccount
This does an alright job most of the time (7/10 options are decent). That's
impressive.

