I do a lot of work with fonts, and when I tell people this they often seem surprised – surely there can’t be that much to them!
Written language is a complex thing
The English language, when written, proceeds from left to right along the page, and then moves down on to the next line. While we have 26 letters, we have two versions of each – upper, and lower case. Broadly speaking, we use upper case letters at the starts of sentences and proper nouns, and for the entirety of acronyms. Because these rules are a little so content aware, this can’t easily be done by a computer – but that’s not a problem really, since we’re comfortable enough just hitting shift and doing it ourselves.
Here’s a question, though – would you be so comfortable doing that if there were 3 versions of each character, and you had to change 2 characters to alternate forms for each word? Well, in Arabic writing, each character has a different form depending on whether it’s at the start, at the end, or somewhere in the middle of a word. It’s much easier to build the functionality to do this automatically into fonts than expect users to do it themselves!
But here’s another thing about Arabic: it’s written from Right to Left. That doesn’t sound like much of a complication – just flip some values in the font, right? – until you realise that sometimes people will want to use characters from both the Arabic alphabet AND the Latin alphabet in the same text. The font has to know which bits of the same line should be written from right to left, and which should be written from left to right, and where all the bits should go – no simple task.
Here’s a few more complications:
- Ligatures – sometimes you’ll want a pair of letters to appear differently. A good example of this is “œ” and “oe“.
- Glyph variants – Sᴏᴍᴇᴛɪᴍᴇs ᴘᴇᴏᴘʟᴇ ᴡᴀɴᴛ ᴛᴏ ᴜsᴇ sᴍᴀʟʟ ᴄᴀᴘɪᴛᴀʟ ʟᴇᴛᴛᴇʀs, ᴏʀ ᴏᴛʜᴇʀ ᴠᴀʀɪᴀᴛɪᴏɴs ᴏɴ ᴛʜᴇ sᴛᴀɴᴅᴀʀᴅ ɢʟʏᴘʜs.
- Accents – While it’s easy to be blasé about accents – after all, we don’t use them in English! – it’s also quite naïve.
- Vertical writing systems – Chinese can be written either Left to Right and Top to Bottom or Top to Bottom and Right to Left.
- Symbols – Currencies, religions, genders, music, maths, and smilies are have symbols which are often found in fonts. Sometimes fonts will even make up new ones!
Legacy support
Digital fonts have been around for a while now. Type 1 fonts were introduced nearly 30 years ago now, but the latest big font specifications – WOFF, EOT and OpenType – can all contain Type 1c data. (Type 1c is a compacted form of Type 1.) Some font technology has disappeared (you don’t see many Type 3 fonts these days, and Adobe had a format called ‘Original Composite Fonts’ which has vanished completely, but most font technology has never truly gone away.
You can’t copyright a typeface in the U.S.
This might sound like an unrelated fact, but stick with me. According to a 1976 report by the House of Representatives:
“The Committee does not regard the design of typeface, as thus defined, to be a copyrightable “pictorial, graphic, or sculptural work” within the meaning of this bill and the application of the dividing line in section 101.”
So if a typeface isn’t copyrightable, why not make the font file itself copyrightable?
Unlike typefaces, Software IS copyrightable, so one solution was to make sure that font files qualify as software. To this end, Type 1 works by writing a small program to draw the glyph which is then executed by an interpreter. TrueType outlines are a more simple data structure, but the fonts will usually also contain a set of hinting routines, which as you can clearly see in our video of one glyph being hinted are definitely programs.
Both systems are perhaps more complex than they could be, but the key thing is that their existence makes the files containing the fonts copyrightable, even if the typefaces they display are not.
Our software libraries allow you to
Convert PDF files to HTML |
Use PDF Forms in a web browser |
Convert PDF Documents to an image |
Work with PDF Documents in Java |
Read and write HEIC and other Image formats in Java |