Text is for reading by humans.
QR codes are for reading by computers.
I wondered if it would be possible to have images that could be read by both humans and computers.
I am experimenting with trying to produce images that are in some ways similar to QR codes yet in many ways different from QR codes such that they could be read by both humans and computers.
I have produced a font to support this experimentation.
Here is the current version.
I have used the font at a 36 point size in the Microsoft Paint program so as to produce the following images. The corner structures are produced using [] for three of them and () for one of them. The horizontal clock pulses are produced using h and the vertical clock pulses using v. An unused cell is filled using a g, which produces a symbol similar to a Greek capital Gamma.
The experimental system started with the idea to encode a sequence of one or more Unicode characters. A Unicode character is indicated by a u followed by a sequence of 1 or more hexadecimal characters.
As each cell that carries data information is 3 cell units wide and 7 cell units tall, with each glyph all in one black piece and filling the width and the height of the cell and there always being a black cell unit in the top left corner of the cell, there were some problems in depicting characters uniquely. Thus the designs for hexadecimal B, using key b with the font, and hexadecimal D, using key d with the font are somewhat unusual. The glyph for B needed to be clearly distinguishable from the glyphs for 6 and 8. The glyph for D needed to have a black cell unit in the top left corner of the cell.
The examples shown have no error checking facilities. I am researching on that using a sequence starting by keying s. I want to have a system that is good yet easy for an end user to calculate when producing a design for an interface code using basic facilities.
Although intended originally as a way to input single characters or short sequences of characters, the system has facilities, started by keying n, for encoding values for base 10 numbers and complex numbers, quaternions and matrices of each of them.
I am experimenting with encoding a virtual world in the system as well.
At the moment of writing this article there is no decoder for a computer to read the interface codes.
William Overington
12 March 2013
Interface Code Font

 Top Typographer
 Posts: 1997
 Joined: Tue Sep 14, 2004 6:41 pm
 Location: Worcestershire, England
 Contact:
Re: Interface Code Font
The experimental system started with the idea to encode a sequence of one or more Unicode characters. A Unicode character is indicated by a u followed by a sequence of 1 or more hexadecimal characters.
Although intended originally as a way to input single characters or short sequences of characters, the system has facilities, started by keying n, for encoding values for base 10 numbers and complex numbers, quaternions and matrices of each of them.
Here are my ideas for the encoding system.
An n followed by one or more digits encodes a whole number.
For example n73 encodes 73
An n followed by a hyphen and then one or more digits encodes a negative whole number.
For example n73 encodes 73
An n followed by optionally a hyphen and then one or more digits with one full stop amongst them encodes a floating point number.
For example, n7.321 encodes 7.321
For example, n7.321 encodes 7.321
In order to produce a complex number, use a colon between the two parts.
For example, n2.3:5.9 encodes 2.3 +5.9i
In order to produce a quaternion, use a colon to separate each part from the next.
For example, n1.3:2.5:7.8:0.9 encodes 1.3 +2.5i 7.8j +0.9k
In order to produce a sequence of items, use a comma to separate each item from the next.
For example, n3,7.2,5.9 encodes 3, 7.2, 5.9
A semicolon is used to convert a sequence to a matrix and also to separate rows of a matrix.
For example, n3,7.2,5.9; encodes the one row three column matrix (3, 7.2, 5.9)
For example, n3,5;7,9 encodes the two row two column matrix
(3 5)
(7 9)
Please note that the round parentheses on each line is not the usual way to represent a matrix, it is just the best available indication in this display.
The glyphs in this font that represent hyphen, full stop, comma, colon and semicolon are somewhat unusual as each cell that carries data information is 3 cell units wide and 7 cell units tall, with each glyph all in one black piece and filling the width and the height of the cell and there always being a black cell unit in the top left corner of the cell.
As the quaternion feature could be used for encoding rotations so that a mobile device could scan the interface code and then rotate a virtual object in a display, there is an additional feature for encoding numbers.
In any place where digits and a decimal point is used, one may use instead a p followed by one hexadecimal character to indicate the numerical value of one of the expressions in the following list.
p0 sine of 0 degrees
p1 sine of 7.5 degrees
p2 sine of 15 degrees
p3 sine of 22.5 degrees
p4 sine of 30 degrees
p5 sine of 37.5 degrees
p6 sine of 45 degrees
p7 sine of 52.5 degrees
p8 sine of 60 degrees
p9 sine of 67.5 degrees
pa sine of 75 degrees
pb sine of 82.5 degrees
pc sine of 90 degrees
As it is the numerical value that is indicated not the expression, a two character sequence starting with p can also be used to indicte the value of a cosine of some angles.
A hyphen can be used before the p to indicate a negative value.
William Overington
27 March 2013
Although intended originally as a way to input single characters or short sequences of characters, the system has facilities, started by keying n, for encoding values for base 10 numbers and complex numbers, quaternions and matrices of each of them.
Here are my ideas for the encoding system.
An n followed by one or more digits encodes a whole number.
For example n73 encodes 73
An n followed by a hyphen and then one or more digits encodes a negative whole number.
For example n73 encodes 73
An n followed by optionally a hyphen and then one or more digits with one full stop amongst them encodes a floating point number.
For example, n7.321 encodes 7.321
For example, n7.321 encodes 7.321
In order to produce a complex number, use a colon between the two parts.
For example, n2.3:5.9 encodes 2.3 +5.9i
In order to produce a quaternion, use a colon to separate each part from the next.
For example, n1.3:2.5:7.8:0.9 encodes 1.3 +2.5i 7.8j +0.9k
In order to produce a sequence of items, use a comma to separate each item from the next.
For example, n3,7.2,5.9 encodes 3, 7.2, 5.9
A semicolon is used to convert a sequence to a matrix and also to separate rows of a matrix.
For example, n3,7.2,5.9; encodes the one row three column matrix (3, 7.2, 5.9)
For example, n3,5;7,9 encodes the two row two column matrix
(3 5)
(7 9)
Please note that the round parentheses on each line is not the usual way to represent a matrix, it is just the best available indication in this display.
The glyphs in this font that represent hyphen, full stop, comma, colon and semicolon are somewhat unusual as each cell that carries data information is 3 cell units wide and 7 cell units tall, with each glyph all in one black piece and filling the width and the height of the cell and there always being a black cell unit in the top left corner of the cell.
As the quaternion feature could be used for encoding rotations so that a mobile device could scan the interface code and then rotate a virtual object in a display, there is an additional feature for encoding numbers.
In any place where digits and a decimal point is used, one may use instead a p followed by one hexadecimal character to indicate the numerical value of one of the expressions in the following list.
p0 sine of 0 degrees
p1 sine of 7.5 degrees
p2 sine of 15 degrees
p3 sine of 22.5 degrees
p4 sine of 30 degrees
p5 sine of 37.5 degrees
p6 sine of 45 degrees
p7 sine of 52.5 degrees
p8 sine of 60 degrees
p9 sine of 67.5 degrees
pa sine of 75 degrees
pb sine of 82.5 degrees
pc sine of 90 degrees
As it is the numerical value that is indicated not the expression, a two character sequence starting with p can also be used to indicte the value of a cosine of some angles.
A hyphen can be used before the p to indicate a negative value.
William Overington
27 March 2013

 Top Typographer
 Posts: 1997
 Joined: Tue Sep 14, 2004 6:41 pm
 Location: Worcestershire, England
 Contact:
Re: Interface Code Font
Some readers might like to know of my experiments with encoding a virtual world in the system.William wrote: I am experimenting with encoding a virtual world in the system as well.
At present I am thinking of the virtual world being expressed as a twodimensional display of symbols, something like a map.
Here are the codes and what the glyphs are supposed to represent.
% pathway
lowercase o broadleaf tree
lowercase l coniferous tree
lowercase j grass
lowercase w flower
^ feature
open wavy bracket 2 metre wall
close wavy bracket 2 storey building wall
tilde roof
lowercase m entrance and pathway
vertical line cylinder.
exclamation mark sphere
It might be that the ^ needs to be followed by a number to indicate which type of feature.
I am thinking that each use of the pathway symbol could be like an area with at its centre a node point in a Google street view simulation.
A link to the particular Google street view simulation that I have had in mind when thinking about the design of this system is as follows.
http://maps.google.com/?ll=47.10274,0.3 ... 23,,0,5.09
The link is to the car park so that those readers who would like the pleasure of exploring this particular Google street view simulation as if they have just arrived in the car park may do so.
A virtual world encoded using the interface code system is not of that detail but is designed with the idea thar scanning the code could produce a simulation with the same general structure as a Google street view simulation but instead of photographs would have almost cartoonlike automatically constructed images, the automatically constructed images being constructed from the information in the interface code.
The cylinder and sphere are included so that a simplified virtual world could be constructed during experimentation if so desired.
For example, the following.
[]hhhh[]
gv%%%%%%
gvlo%ljw
[]gggg()
That text was used to produce the following image using the font at 36 point in Microsoft Paint.
William Overington
4 April 2013

 Top Typographer
 Posts: 1997
 Joined: Tue Sep 14, 2004 6:41 pm
 Location: Worcestershire, England
 Contact:
Re: Interface Code Font
Here is another image in case some readers would like to try to imagine the virtual world that is encoded within it.
William Overington
4 April 2013
William Overington
4 April 2013

 Top Typographer
 Posts: 1997
 Joined: Tue Sep 14, 2004 6:41 pm
 Location: Worcestershire, England
 Contact:
Re: Interface Code Font
The system includes a symbol that can be followed by a digit to give the meaning to a computer system of "please disregard the contents of this number of cell positions".
This enables an image to be placed within an interface code without affecting how a computer would analyse an image of that interface code.
The symbol can be keyed using an r with this font.
William Overington
5 April 2013
This enables an image to be placed within an interface code without affecting how a computer would analyse an image of that interface code.
The symbol can be keyed using an r with this font.
William Overington
5 April 2013