I made a font based on my handwriting
sachachua.com
sachachua.com
If I made a font based on my handwriting, it could be considered a type of one-way encryption.
What a silly thing to tell people is "women's work". I wasn't born until 1990, but even in the 80's weren't personal computers a pretty common thing (e.g. the Apple ][, the Commodore 64, Amiga)? I wonder why a guy learning to type wouldn't appear useful to people?
One of our mates had such a poor handwriting that we used to joke our grades were getting hit because teachers were exhausted after reading his answers. Same guy used to get frequent letters from his parents saying they could not understand what he wrote in the previous letter :)
My print handwriting is pretty bad, and when I was in grade school in the 90s they were still trying to teach cursive, and my cursive is impressively illegible. My teacher told me that I'm "too smart" to be not work in a high-paying desk job, and that no one will hire me unless I have readable handwriting.
I know she meant well and I'm not in any way trying to speak ill of her since I think she was actually a really good teacher, but I seriously cannot imagine being declined for any job (other than calligrapher) because of handwriting, even in the 90s. My response to her was that I can type really fast and that typing will almost always be easier to read than virtually anyone's handwriting.
When I took calculus in high school, I initially did my work by hand, but pretty early on I learned how to use MathType with OpenOffice, and then eventually LaTeX. After I turned in one assignment that was typed out and subsequently turned in one that was handwritten, my teacher politely asked me if I could type out all my assignments since he had to occasionally bring his wife in the room to read my handwriting.
-----------
Nowadays I still do write down notes by hand with a fountain pen, but the nice thing about notes is that I'm the only one that needs to be able to read them. If I do almost literally anything that I expect people to read, I type it out, either in Markdown, LaTeX, or TLA+ (depending on the domain and how much math needs to be involved, of course).
In the past decade or two, I've used a pen for precisely 3 types of thing; greeting cards, signing documents and pub quizzes.
Calligraphic letterforms of the time use this basic form called a “minnum” (possibly not the correct spelling), possibly so called because the word “minimum” can be written in lowercase using them exclusively. I think you know where I might be going here.
At one point, she went to her advisor for help, and he says in his broad, Scottish accent “Diane, count yer minna!” We all got a kick out of it.
Edit: minimum -> minnum
So I'm a hacker now, right?
https://raw.githubusercontent.com/sachac/sachac-hand/master/...
The point (and the difference to just thoroughly commenting your code) is that you have one source file that equally serves as the basis for generating the actual program as well as its documentation. The link above shows the raw file, github renders it nicely if you go to the main page of the repository.
Being able to see the code that generates certain tables in my older documentation really helps me to more quickly remember and use stuff I did months or years ago.
Example: The command to get a list of S3 buckets that have a particular attribute set. The command to do that might not make much sense by itself (say in a history grep) but with extra text describing what and why, I understand it faster.
Although it is nice also to show off my Emacs setup during a screen share to a couple dozen people who don't know what it is. They treat the org-mode headlines, rearranging, todo items, schedules, etc, as some sort of magic. Org-babel with the results in a simple table kinda blew their minds. The number of project managers who want "my emacs setup" created for themselves was kinda funny, since they're all normally so focused on Microsoft Project or Jira.
Basically, tables rock, especially when you can use rectangle commands to copy and paste kerning values between classes you have to split up, and generating a test webpage programmatically is fun too. :D
Thinking about it, is Jupyter Notebooks (and the like) a form of literate programming?
Thinking even more about it, I think I actually used (or tried to) literate programming in a course about Machine Learning using R and – if I remember correctly – LaTeX to generate the actual application and a PDF.
Here's an example emacs configuration:
(use-package jupyter
:after org
:config
(org-babel-do-load-languages 'org-babel-load-languages '((jupyter . t)))
;; default args for jupyter-python
(setq org-babel-default-header-args:jupyter-python
'((:results . "replace")
(:async . "yes")
(:session . "py")
(:kernel . "python3"))))
After that, you could execute jupyter code block (Org Babel): #+begin_src jupyter-python
1+1
#+end_src
#+RESULTS:
: 2
You can use latex in org-mode, generate pictures, get nice git diff, export it to pdf, etc.Essentially a good implementation of Python code blocks would reimplement half of Jupyter anyway.
We don’t use the term “literate programming” much anymore, the concept of “reproducible reports” resonates much more with R users. But the experience is much the same.
(Disclosure: employed at RStudio)
It sounds silly, but when there’s a lot of work do in terms of writing the literature part, and then adding the actual code part, I’m much happier with vim than I am with the browser based editor.
(This is for producing literate programs for the purpose of teaching others, not for my own benefit.)
Most of my Jupyter notebooks are just code, but I've got some with long Latex mathematical derivations of formulas that appear in the code. I would actually like to be able to have that kind of thing in comments within the code itself. I don't do literate programming really though.
In Org Mode, you get all the syntax highlightings and keybindings for whatever language's mode if you do literate programming with it.
What you won't get are things like being able to integrate your compilation failures, etc. As an example, if you write something that fails to compile, Emacs will not quickly be able to take you to the line that caused the failure. Similarly, things like linting, etc typically break.
Frustratingly, if you get an exception (e.g. "KeyError" in Python), it will not show the result of any print statements, so debugging is a bit painful.
I'm sure someone can solve these problems, but I don't know that anyone has.
https://github.com/jingtaozf/literate-clojure
but ran into this
https://github.com/polymode/poly-org/issues/20
Either some IDE like functionality doesn't work or syntax highlighting doesn't work after you go through additional complexity compared to simply starting a project.
From what I've read, the technology exists to build a font that would be a pretty convincing handwriting alternative. It would take a lot of effort, as it would n involve several glyph alternatives for each character, several variations of dozens of ligatures (joined glyphs) and randomness for selection. You could even do variants like slightly different spacing/sizing/positioning (no one writes perfectly straight).
Probably part of the issue is use case. Personal handwriting is kind of neat for a headline or call-out on a blog or something, but I wouldn't necessarily want to read a whole long post that way. I'm not really sure where else it would be useful - students trying to cheat on a "handwriting required" assignment, if that's even still a thing?
As far as I (vaguely) know, alternates aren't intended to produce true randomness. So instead I would throw in sheer quantity of alternate glyphs, to put identical ones further apart and shuffle other ones more.
With the method from the posted article, producing the characters doesn't seem to take much effort. And the characters there aren't joined, so no need for traditional ligatures. Lastly, with a large number of alternates, kerning would add a lot of work—but then again, you don't really kern when writing with a pen, do you?
In metal typesetting, a font is exactly a collection of metal blocks (which embody glyphs of a given design, size, and thickness). But on a computer, a font is a piece of software that renders text in a given typeface — simulating a pen moving along curves with varying parameters is entirely feasible. Not at all a bad starting point.
Style alone seems like a fun reason.
Thank you! This answers one of my questions. But what about procedural generation — a new glyph every time, e.g. an interpolation of multiple prototypical shapes as described in that SE answer … something something eigenspace?
I know PostScript is Turing complete and thus assume a PS font can pull this off; does this extend to OpenType? Apparently yes: OpenType is pretty much a superset of PS (and TrueType, of course). Just searched the web for “opentype turing complete” and the second result led right back to HN[0]:
> OpenType is technically Turing Complete, however the usual way is to just cycle through letter form variations. — danielvf
So this answers my other question? Hold up, check this out: Another answer from that SE post you linked mentions the Beowolf [sic] font[1].
> FF Beowolf came about at the end of the dark and murky 1980s when Just van Rossum and Erik van Blokland found a way to hack PostScript fonts. When printed, each point in each letter on the page would move randomly, giving the letters a shaken, distraught appearance.
> […]
> while it worked fine (if a tad slow) through most of the 1990s, FF Beowolf was eventually barred from performing its PostScript magic: pesky things like printer drivers and operating systems learned to ignore the aberrations. FF Beowolf seemed destined to end up a mere memory. OpenType technology brought new hope, cutting new pathways in the type-tech continuum, which would eventually lead to a new generation of random fonts. Purists and typographic philosophers will be quick to point out that these OT fonts do not actually alter their shape in the printer as their forebearers did. Instead they make use of a kind of pre-programmed randomness: each glyph in each font (except R20) has ten alternate forms and a massive Faustian brain to control the mayhem.
What a rabbit hole! In this case, it seems we're back to “several variations”, but I still don't know whether full-on procedural generation is generally workable with OpenType. Does more modern technology's “ignorance” of “the aberrations” have to do with caching of glyph shapes? Is the Turing completeness curtailed to protect against DoS, decompression/logic bombs?
By the way, the type specimen on the FF Beowolf page I linked features an amusingly à propos quote:
> Im Rausch schreiben, nüchtern gegenlesen.
Write intoxicated, proofread sober.
> It would take a lot of effort, as it would n involve several glyph alternatives for each character, several variations of dozens of ligatures (joined glyphs) and randomness for selection.
Agreed, it's a silly amount of work — if you did it the brute force way. Which is exactly why I'm interested in smart procedural generation. You mentioned that such a style wouldn't be appropriate for running text, so infinite variability isn't important (and use cases where it would be important can be rather questionable).
However, even a curt headline often contains multiple Es or Ts or other Aoin Shrdlus[2]. And because the more appropriate use cases tend to involve above-average font sizes, word wrapping can conspire to place identical glyphs in close proximity. I think one wouldn't have to be a huge typography nerd to find one's suspension of disbelief in the pretense of hand lettering kind of shattered in the countenance of such a similitude. Not to mention homogeneous digraphs.
Having just a few alternate forms of each character totally solves that; no need for ligatures. But a font that gets by on just one prototype for each glyph would be even more efficient (less labour intensive).
[0] https://news.ycombinator.com/item?id=16376485
I think it’s because I like the curly-top “a” but habitually do the cursive-friendly “a”
edit: speaking of cursive friendly a’s I was doing a thing when carrying a paper note book for a few months, not too long ago, where’d I’d ask a friend or relative or maybe a stranger to write a-z in lowercase cursive. I probably collected 50+ of these
It collected both skilled and struggling to recall contributions. Certainly the oldest had the sleekest cursive
Little other things popped up, like the correct “b” and an incorrect “b” was fairly common to see
These days, it occurs to me that with some kind of deep learning, you could probably take a couple dozen pages of someone's cursive, and turn it into a font with thousands of ligatures and variants that would be virtually entirely convincing.
https://www.calligraphr.com/en/
Albeit it's not entirely free (pricewise or otherwise). I still think your second idea is better, where a learning algorithm "captures" handwriting and generates a font or more text with the same style. I can only imagine the implications in authenticity and forgery, though.
Now recently few years ago I came across an app where you draw each letter on mobile; then it sends all data to its server & you get the font. It worked for few months, I made few variations of my handwriting, then its server stopped responding.
Now I have another font where few glyphs of my signatures (few variations), my logo, my initials are as font; & I use it to sign checks or forms or such.
Microsoft has an app that lets you do this with a Windows tablet:
https://www.microsoft.com/en-us/p/microsoft-font-maker/9n920...
I used it to create a font from my handwriting that I've used extensively, and creating the font took maybe 15 minutes.
Why not start one just right now?[0]
There seems something more than a little sordid about linking to one's own stuff on HN in that way.
Great! Would be really useful.
Correct. I only posted link to Sacha Chua's blog pages, but has no any relation to posted content.
> 2014-02-24: Want it without letting me know your e-mail address? You can snag the PDF from Slideshare.[0] (You'll have to manually check for updates, though.)
[0] http://www.slideshare.net/sachac/2014-0214-a-noexcuses-guide...
edit: Just discovered https://pages.sachachua.com/sharing/ - thanks so much for putting that online.
The only comparable thing I've seen (and not so similar) is Cosma Shalizi's bactra.org - the Notebooks section is amazing, and a lot of his Reviews are great.
He used to have pencil hanging on a string in his office. It was labeled "word processor".
Ironically enough, Dijkstra's algorithm is perhaps least of his accomplishments.
EDIT: thanks FrenchyJiby, mkl. Wasn't aware
[1]: http://lucacardelli.name/indexArtifacts.html [2]: http://lucacardelli.name/Artifacts/Fonts/Pc/dijkstra.ttf
It would be neat if it referred to relative paths within the repo even nicer if it if evaluating it installed needed python libraries locally so you could clone it. Open it in emacs. Modify. Eval buffer.
Regarding kerning the only thing I think is really off is r followed by e example Here its not as noticeable with a smallish font but becomes more noticeable in a larger headline or title. I'm using it as the font for org headlines.
The local lib stuff is so that you can get aglfn.txt into the right place for the python library. I'll see if that can be given a path. If so, I can include it in files/.
For example consider just "vo" vs "io". The end of "v" ends horizontally near the top. "i" end at the bottom. So the line that starts "o" has to begin at different positions.
Most fonts solve this by starting a discontinuous "o" always at the bottom. But this looks ugly.
And that's jut two letter combinations...
It's supposed to be for archiving your kid's handwriting at different ages of their life but who says that has to stop at adulthood! :-)
It gave me an error looking at the site on my phone but worked if I clicked thru the error, not sure how safe that is but to each their own.
A quick google finds these
(i.e. the title of the post above this post is a question answered by the title of this post).
That would be nice to create fonts that look more like real handwriting.