Hacker News new | past | comments | ask | show | jobs | submit login
History of the broken vertical bar, being the ¦ form of | (reddit.com)
152 points by lelf on Aug 9, 2019 | hide | past | favorite | 61 comments

For anybody who has used a Vt52, H19, or similar terminal, there is no mystery. Before we had bitmap graphics, we had fill-in forms with ASCII graphics. A vertical line made with solid bars looked uneven, but the gap in the bar was the same height as the gap between a bar and the one above or below it, so it made a pleasing vertical dashed line to match the horizontal lines of actual hyphens and equal signs.

Nowadays, of course, if you want a line, you draw a line, so the gap no longer has a purpose.

I don’t get it. Why did the line look uneven?

    +-----+      +-----+
    |     |      ¦     ¦
    |     |  VS  ¦     ¦
    |     |      ¦     ¦
    +-----+      +-----+
Your font rendering mileage may vary.

Whoa, sweet Dwarf Fortress graphics pack ;)

Fun fact: DF contains a CP437-to-Unicode mapping function, to let the text-mode output work on modern terminals.

It's still all CP437 internally.

That was in the 80s and had a large number of box drawing characters.

There is a proposal to add some of the old missing box drawing characters to Unicode, in a section called "Graphics for Legacy Computing":


They have been implemented recently in the Pragmata Pro font I use, which seems to just keep adding glyphs


Unicode still contains a large number of box drawing characters. Some are broken into three, or even four parts.


I remember copying a random maze generator from a magazine that used a lot of these on a C64, fun times!

I always hated the Windows product key font which you'd have to type in to register Windows. The B looked like 8 and the D looked like O.

I'd have to break out a magnifying glass to figure it out.

That font seems to be popular for serial numbers and any other use case where the user has to type in a series of characters.

I call it the IH8USRS font.

It's interesting that codes for the Nintendo eShop have certain similar looking characters blocked off even in the keyboard you use to input. That way there's no question even if it's a zero or the letter O for example.

The Windows product keys are encoded in base24 using the alphabet BCDFGHJKMPQRTVWXY2346789, no doubt chosen to avoid ambiguities (e.g. 5 and S, 1 and I, O and 0), but unfortunately the B and 8 confusion remains.

Interesting. I've not thought about this before, but it seems at first glance a rather inconsistent set.

Resolved by removing both: O and 0; I and 1 and L (l); S and 5.

Resolved by removing the letter: Z and 2; A and 4.

Not resolved: B and 8; G and 6.

I wonder if it was just a quick idea someone had, or if there is some research behind it.

Why did they remove E? Can't easily be confused with 3, I think.

Maybe they removed the vowels so that a randomly generated key doesn’t have any unexpected words in it?

Too bad this was not written near the keys.

Or, well, I don't know if it would be very useful to write there either. At least not on that font.

Thanks for the neologism! Regardless of which font it is rendered in, it is clear from the context that the third character is the number 8 and not the letter B.

I saw a custom license plate a few months ago that was A8C0EF6 which, if not reading carefully, looked just like ABCDEFG

Gotta love how much this write-up refers to the serifs on the lowercase L, but is rendered in a font (on Windows at least) that entirely omits those serifs.

Most sans-serif fonts poorly distinguish between "I" and "l", I've found. (This led to my dad thinking that artificial intelligence was called "Al", as in "Albert".)

This is why I prefer a fixed width font when it can be ambiguous. They don't typically have the ambiguities between "l" (lower case "L") and "I" (upper case "i") or even the number "1", similarly between the letter "O" and number "0".

Personally, when handwriting, I got in the habit of striking a hyphen through the number "7" to disambuate against a possible number "1". Likewise, I'd strike through the letter "Z" to disambiguate from the number "2", and a diagonal strike through the number "0" to differentiate from the letter "O".

My handwriting is terrible, and it has saved me a lot of grief over the years, but especially in my engineering courses in college.

7 and Z have far less disruptive fixes.

For 7, just make the top long and the slash slanty. Don't do that for 1.

For Z, give the top a very slight curve, and optionally do the same for the bottom. That is, bend the middle of the line in toward the center of the letter. It might be enough to just imagine doing this, so that you don't end up with a curve going the other way. Give the 2 a proper curve instead of a sharp corner, and it will look different.

That's fine but the reason I use the extra bits is to try and make a character unambiguous for a reader who does not know my handwriting habits. In the case of Z I do both - your suggestion and put a bar across it. 2 gets a small loop at the bottom left.

Or (for 7) as in [0]

>in Japan, Korea and Taiwan 7 is written as ① in the illustration to the right. [1]

[0] https://en.wikipedia.org/wiki/7#Evolution_of_the_glyph

[1] https://en.wikipedia.org/wiki/7#/media/File:Sevens.svg

This is what I do I still use German/engineering Sevens and Zed's - it was that I was taught at 19 when I started work.

Same, I use crossed 7 and z, but I think of them as French (which was my first foreign language at school), and started using them in A-level maths (UK).

> Personally, when handwriting, I got in the habit of striking a hyphen through the number "7" to disambuate against a possible number "1". Likewise, I'd strike through the letter "Z" to disambiguate from the number "2", and a diagonal strike through the number "0" to differentiate from the letter "O".

My handwriting also makes it hard to distinguish q from 9 in a situation where the baseline isn't clear.

I like and use your solutions, but the problem is that, if the reader doesn't know about them and doesn't have the other candidates to compare, a '1', a '2', or an 'O' has no visible mark to indicate that it's not a '7', a 'Z', or an '0'—that is, they are identified by missing, not additional, information. (I don't know any good solution, though.)

Surprisingly, in my experience, most people pick up on it with no explanation. Ive only had to explain it to a handful of people and to each, once. My handwriting is awful and has only gotten worse due to nuerigical issues. I look at my writing from my college notebooks versus current, and comparatively, my college writing is legible and I'm now producing chicken scratch that only I can decipher.

Sure! I agree that, if I saw your O side-by-side-with your 0, or even your 0 by itself, I would instantly understand. My point is just that, if I saw your O by itself and hadn't seen any of your handwriting before, I wouldn't know "aha, this is an O because it doesn't have a distinguishing mark", since I wouldn't know that your 0 does have a distinguishing mark.

Similarly, but I dot my zeros to distinguish them from the null / empty-set symbol ∅ (and from the Scandinavian Ø).

I don't know if that's actually traditionally true of fixed-width fonts. Courier, for example, is pretty bad, and widely used by people who aren't using a fixed-width font because they're programming.

Traditionally you'd use a lower-case ell for a numeral one, since there was no numeral one on your keyboard. Nor was there a separate zero. All of this "different characters for different uses" nonsense is for that newfangled electronic stuff.

"I had to code a database using just ones and zeroes."

"Oh, you had ones? We had to use the letter ell."

I’ve adopted all of these as well. Doing statistics in my undergrad, not understanding what you or someone else wrote was just the worst. The change of style just became an obvious necessity.

My fantasy company would promote their wonderful new Al method of doing X, where X is just done by some guy named Al.

Investor: OH wow is that a Neural Network you guys are building?

You: Yeah, Al here is our resident Network engineer. Go ahead and ask him a question.

Investor: So do you use any kind of drop-out or just as-is?

Al: Yeah, we don't have too much packet-los-

You: OK Moving along...

Just say you trained a bunch of neural nets. https://xkcd.com/2173/

Are you the son of Scott Bakula?

I never consciously realized, but I actually prefer the broken bar. No reason, just nostalgia, I suppose.

I might hunt for a contemporary programming font that renders the pipe so.

I suddenly realized what made reading old Linux books feel so nostalgic - in at least one of the books I still have, the terminal commands were all printed using broken bars for pipe, etc. You really don’t see that nowadays, but I remember it from text-based browsing, horizontal nav bars often used bar/pipe characters to separate links, and still probably do in footers and dusty corners...

> horizontal nav bars often used bar/pipe characters to separate links, and still probably do in footers and dusty corners...

You mean like in the HN footer?

If you really want to feel oldschool, try writing crosses through your zeroes as well (to distinguish them from O's).

I do, when writing by hand (and only in the job), but I'm not feeling about the crossed 0 in a computer font the same way as about the broken pipe.

Or even older school, use a capitol P for a question mark.

Or if you were fancy, a P with a / through it.

Is that a rudimentary typewriter thing?


Unicode killed it. They introduced a non-ASCII broken bar, and they made the ASCII bar explicitly non-broken. Fonts created in the Unicode era follow Unicode.

I will never forgive Unicode for this abomination.

By defining Unicode mappings, they also replaced the β in MS-DOS fonts with a ß. Evidently they like Germans more than they like Greeks and mathematics.

This too is an abomination. Old documents are now screwed up.

> Unicode killed it. They introduced a non-ASCII broken bar, and they made the ASCII bar explicitly non-broken. ... I will never forgive Unicode for this abomination.

I'm more upset that they allowed implementers to put lettuce on the bagel unicode emoji. Bagels are for carbs, fat, and salt, lettuce has no place. An abomination.

Who gets to decide about those kinds of things? (Also, cheese on Google’s burgers....)

Is it the implementation’s choice so long as it resembles the description?

Yes, Unicode specifically does not standardize the look of a glyph.

although i never used such a font, i thought the broken bar was appropriate for the shell pipe function because the gap is the space for the data to pass through.

That seems like a weird mnemonic—in that case the bulk of the pipe is obstructing, not permitting, the flow of data.

That's what a pipe does though. If liquid had its way, it would fall straight down. Pipes force it in another direction.

well, i wasn't actually looking at it as a pipe but a filter, which is how some programs process the data coming through (grep for example)

Visually a double horizontal line from the line drawing block might be best.

that looks like an = sign which would be confusing but also, many uses for pipes are as filters. a filter is a flat surface where something passes from one side to another. the pipe symbolizes that filter (even though the actual filter is the program behind it, so yeah, both metaphors kid of work. either the pipe connects two programs, or it invokes a filter which is named after the pipe symbol)

The broken bar feels more like real programming.

Excuse me, now I need to do some FontForge work.

In 2008-9 I had a Neo Freerunner, an early (Linux) smartphone. I also used | in my passwords. Some of the soft keyboards included only a ¦, in the | spot—indicating that the programmer/UI-designer believed them interchangeable. (That is, the character I got on a keyboard by pressing shift-backslash was | even though it was rendered as ¦ on the keyboard silkscreen, but on the smartphone it was ¦ on the key and in the typed text.) This made my log-ins fail in many contexts, and took some inspired thinking to figure out the problem. That was how I first learned the two are not just different glyphs for the same character.

Funny, I was building a system that needed a way to namespace CSS classes (so I could suck in HTML from different sources and assemble it into one document) and I found that class names can contain most of the ISO-LATIN-1 characters and I chose to use the broken vertical bar to separate namespaces from short names because hardly anyone uses it.

From the linked page in the blog of the late Michael Kaplan:

>I'd go look for it but I don't want to move off this page.

The dark days of not having browser tabs...

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact