TRS-80 Fonts and Unicode
Rebecca Bettencourt has done a wonderful job creating True Type fonts of the Model I, Model III and Model 4 characters. Go grab them from her site and use them as you like, but do give credit wherever possible.The Fonts
The fonts have all the characters from the original machines plus some extra to make them more conventionally useful. The uppercase Model I font does include lowercase characters but without descenders so you can get the unique look of a Model I partially upgraded to lowercase. And there are some characters that were in the machine but otherwise not accessible.The Model III fonts have characters from two different revisions. The only difference is in the halfwidth Katakana characters which correct some apparent mistakes in shape.
For the Model 4 the original version is mostly the same as the Model III and the "International" version replaces the halfwidth Katakana and some other characters with a broader set of European language characters. It also includes inverse versions of those characters that could be displayed inverted. While the Model 4 was largely compatible with the Model III, the 64 and 32 wide fonts are a bit squished to reflect how they appeared in Model III mode on the Model 4. The 80 and 40 wide fonts have the bottom of their graphics characters chopped off mimicing the original display.
Model | Version | Aspect Ratio | Font File |
---|---|---|---|
I | Original Uppercase | Normal (64 columns) | AnotherMansTreasureMIA64C2X3Y.ttf | Double-Wide (32 columns) | AnotherMansTreasureMIA32C4X3Y.ttf |
1:2 | AnotherMansTreasureMIA2Y.ttf | ||
1:1 | AnotherMansTreasureMIARaw.ttf | ||
Lowercase Mod | Normal (64 columns) | AnotherMansTreasureMIB64C2X3Y.ttf | |
Double-Wide (32 columns) | AnotherMansTreasureMIB32C4X3Y.ttf | ||
1:2 | AnotherMansTreasureMIB2Y.ttf | ||
1:1 | AnotherMansTreasureMIBRaw.ttf | ||
III | Original + Revised | Normal (64 columns) | AnotherMansTreasureMIII64C.ttf | Double-wide (32 columns) | AnotherMansTreasureMIII32C.ttf |
4 | Original | Normal (64 columns) | AnotherMansTreasureM4A64C.ttf |
Double-wide (32 columns) | AnotherMansTreasureM4A32C.ttf | ||
Normal (80 columns) | AnotherMansTreasureM4A80C.ttf | ||
Double-wide (40 columns) | AnotherMansTreasureM4A40C.ttf | ||
1:2 | AnotherMansTreasureM4A2Y.ttf | ||
1:1 | AnotherMansTreasureM4ARaw.ttf | ||
International | Normal (64 columns) | AnotherMansTreasureM4B64C.ttf | |
Double-wide (32 columns) | AnotherMansTreasureM4B32C.ttf | ||
Normal (80 columns) | AnotherMansTreasureM4B80C.ttf | ||
Double-wide (40 columns) | AnotherMansTreasureM4B40C.ttf | ||
1:2 | AnotherMansTreasureM4B2Y.ttf | ||
1:1 | AnotherMansTreasureM4BRaw.ttf |
Basic Usage
Modern browsers can import True Type fonts. Thus I can use them if I want my words to have that old, familiar look or to show a screen shot of "Bee Wary!": Bee Wary! All you need to do is put this in a <STYLE> ... </STYLE> block or a CSS (Cascading Style Sheet).
And then you can change to the TRS-80 font in the usual HTML fashion by adding STYLE="font-family: 'TreasureMIII64C'; font-size: 24;" to any tag.@font-face { font-family: 'TreasureMIII64C'; src: url('AnotherMansTreasureMIII64C.ttf'); }
Translating
Letters and other standard ASCII characters are the same between the TRS-80 and the fonts. Graphics characters (128 - 192) and special characters (0 - 31 and 192 - 255) are another matter. Where possible the fonts use the proper Unicode number for these characters but some special characters and all the graphics characters have no correpsonding Unicode character.For your own use or within a program there's an easy solution. The fonts have all the original TRS-80 characters in-order in the private use area as characters 0xe000 to 0xe0ff. Suppose you have a screen dump from the TRS-80. Simply put 0xe0 after every byte and you'll have a UTF-16 file that will display exactly as it did on the TRS-80. In HTML you can avoid UTF-16 and get at the characters with numeric entities. Suppose we have graphic character 153 (). The private use area starts at 57344 which means character 153 is at 57344 + 153 = 57497. To get that character I can write . Or if you're more comfortable with hexadecimal, note that 153 = 0x99 and use  instead.
However, there are more than 256 characters. The Model III had 320 different characters it could display and the Model 4 had 448 when you account for the inverted versions. And there are even more characters when the various machine versions are considered. Here is the full story on the private use area of the fonts:
- Model I
0xE000 - 0xE01F Hidden characters from the ROM 0xE020 - 0xE07F Usual ASCII chacters 0xE080 - 0xE0BF Graphics characters 0xE0C0 - 0xE0FF Graphics characters repeated - Model III
0xE000 - 0xE0FF Normal characters 0x00 - 0xFF 0xE100 - 0xE13F Original alternate characters 0xC0 - 0xFF (halfwidth katakana) 0xE140 - 0xE17F Revised alternate characters 0xC0 - 0xFF (halfwidth katakana) - Model 4
0xE000 - 0xE0FF Normal characters 0x00 - 0xFF 0xE100 - 0xE13F Original alternate characters 0xC0 - 0xFF (halfwidth katakana or international) 0xE140 - 0xE17F Revised alternate characters 0xC0 - 0xFF (halfwidth katakana or international) 0xE180 - 0xE1FF Inverted form of characters 0x00 - 0x7F
0 |   | ||
1 | £ | £ | £ |
2 | | | | | | |
3 | é | é | é |
4 | Ü | Ü | Ü |
5 | Å | Å | Å |
6 | ¬ | ¬ | ¬ |
7 | ö | ö | ö |
8 | Ø | Ø | Ø |
9 | ù | ù | ù |
10 | ñ | ñ | ñ |
11 | ` | ` | ` |
12 | ā | ā | ā |
13 | |  | n/a |
14 | Ä | Ä | Ä |
15 | Ã | Ã | Ã |
16 | Ñ | Ñ | Ñ |
17 | Ö | Ö | Ö |
18 | Ø | Ø | Ø |
19 | Õ | Õ | Õ |
20 | ß | ß | ß |
21 | ü | ü | ü |
22 | õ | õ | õ |
23 | æ | æ | æ |
24 | ä | ä | ä |
25 | à | à | à |
26 | ȧ | ȧ | ȧ |
27 | |  | n/a |
28 | É | É | É |
29 | Æ | Æ | Æ |
30 | Ç | Ç | Ç |
31 | ˜ | ˜ | ˜ |
32 |   | ||
33 | ! | ! | ! |
34 | " | " | " |
35 | # | # | # |
36 | $ | $ | $ |
37 | % | % | % |
38 | & | & | & |
39 | ' | ' | ' |
40 | ( | ( | ( |
41 | ) | ) | ) |
42 | * | * | * |
43 | + | + | + |
44 | , | , | , |
45 | - | - | - |
46 | . | . | . |
47 | / | / | / |
48 | 0 | 0 | 0 |
49 | 1 | 1 | 1 |
50 | 2 | 2 | 2 |
51 | 3 | 3 | 3 |
52 | 4 | 4 | 4 |
53 | 5 | 5 | 5 |
54 | 6 | 6 | 6 |
55 | 7 | 7 | 7 |
56 | 8 | 8 | 8 |
57 | 9 | 9 | 9 |
58 | : | : | : |
59 | ; | ; | ; |
60 | < | < | < |
61 | = | = | = |
62 | > | > | > |
63 | ? | ? | ? |
64 | @ | @ | @ |
65 | A | A | A |
66 | B | B | B |
67 | C | C | C |
68 | D | D | D |
69 | E | E | E |
70 | F | F | F |
71 | G | G | G |
72 | H | H | H |
73 | I | I | I |
74 | J | J | J |
75 | K | K | K |
76 | L | L | L |
77 | M | M | M |
78 | N | N | N |
79 | O | O | O |
80 | P | P | P |
81 | Q | Q | Q |
82 | R | R | R |
83 | S | S | S |
84 | T | T | T |
85 | U | U | U |
86 | V | V | V |
87 | W | W | W |
88 | X | X | X |
89 | Y | Y | Y |
90 | Z | Z | Z |
91 | [ | [ | [ |
92 | \ | \ | \ |
93 | ] | ] | ] |
94 | ^ | ^ | ^ |
95 | _ | _ | _ |
96 | ` | ` | ` |
97 | a | a | a |
98 | b | b | b |
99 | c | c | c |
100 | d | d | d |
101 | e | e | e |
102 | f | f | f |
103 | g | g | g |
104 | h | h | h |
105 | i | i | i |
106 | j | j | j |
107 | k | k | k |
108 | l | l | l |
109 | m | m | m |
110 | n | n | n |
111 | o | o | o |
112 | p | p | p |
113 | q | q | q |
114 | r | r | r |
115 | s | s | s |
116 | t | t | t |
117 | u | u | u |
118 | v | v | v |
119 | w | w | w |
120 | x | x | x |
121 | y | y | y |
122 | z | z | z |
123 | { | { | { |
124 | | | | | | |
125 | } | } | } |
126 | ~ | ~ | ~ |
127 | ± | ± | ± |
128 | |  | n/a |
129 | |  | n/a |
130 | |  | n/a |
131 | |  | n/a |
132 | |  | n/a |
133 | |  | n/a |
134 | |  | n/a |
135 | |  | n/a |
136 | |  | n/a |
137 | |  | n/a |
138 | |  | n/a |
139 | |  | n/a |
140 | |  | n/a |
141 | |  | n/a |
142 | |  | n/a |
143 | |  | n/a |
144 | |  | n/a |
145 | |  | n/a |
146 | |  | n/a |
147 | |  | n/a |
148 | |  | n/a |
149 | |  | n/a |
150 | |  | n/a |
151 | |  | n/a |
152 | |  | n/a |
153 | |  | n/a |
154 | |  | n/a |
155 | |  | n/a |
156 | |  | n/a |
157 | |  | n/a |
158 | |  | n/a |
159 | |  | n/a |
160 | |  | n/a |
161 | |  | n/a |
162 | |  | n/a |
163 | |  | n/a |
164 | |  | n/a |
165 | |  | n/a |
166 | |  | n/a |
167 | |  | n/a |
168 | |  | n/a |
169 | |  | n/a |
170 | |  | n/a |
171 | |  | n/a |
172 | |  | n/a |
173 | |  | n/a |
174 | |  | n/a |
175 | |  | n/a |
176 | |  | n/a |
177 | |  | n/a |
178 | |  | n/a |
179 | |  | n/a |
180 | |  | n/a |
181 | |  | n/a |
182 | |  | n/a |
183 | |  | n/a |
184 | |  | n/a |
185 | |  | n/a |
186 | |  | n/a |
187 | |  | n/a |
188 | |  | n/a |
189 | |  | n/a |
190 | |  | n/a |
191 | |  | n/a |
192 | ♠ | ♠ | ♠ |
193 | ♥ | ♥ | ♥ |
194 | ♦ | ♦ | ♦ |
195 | ♣ | ♣ | ♣ |
196 | ☺ | ☺ | ☺ |
197 | ☹ | ☹ | ☹ |
198 | ≤ | ≤ | ≤ |
199 | ≥ | ≥ | ≥ |
200 | α | α | α |
201 | β | β | β |
202 | γ | γ | γ |
203 | δ | δ | δ |
204 | ε | ε | ε |
205 | ζ | ζ | ζ |
206 | η | η | η |
207 | θ | θ | θ |
208 | ι | ι | ι |
209 | κ | κ | κ |
210 | λ | λ | λ |
211 | μ | μ | μ |
212 | ν | ν | ν |
213 | ξ | ξ | ξ |
214 | ο | ο | ο |
215 | π | π | π |
216 | ρ | ρ | ρ |
217 | σ | σ | σ |
218 | τ | τ | τ |
219 | υ | υ | υ |
220 | φ | φ | φ |
221 | χ | χ | χ |
222 | ψ | ψ | ψ |
223 | ω | ω | ω |
224 | Ω | Ω | Ω |
225 | √ | √ | √ |
226 | ÷ | ÷ | ÷ |
227 | ∑ | ∑ | ∑ |
228 | ≈ | ≈ | ≈ |
229 | ∆ | ∆ | ∆ |
230 | ⌇ | ⌇ | ⌇ |
231 | ≠ | ≠ | ≠ |
232 | ⌁ | ⌁ | ⌁ |
233 | |  | n/a |
234 | ⍾ | ⍾ | ⍾ |
235 | ∞ | ∞ | ∞ |
236 | ✓ | ✓ | ✓ |
237 | § | § | § |
238 | ⌘ | ⌘ | ⌘ |
239 | © | © | © |
240 | ¤ | ¤ | ¤ |
241 | ¶ | ¶ | ¶ |
242 | ¢ | ¢ | ¢ |
243 | ® | ® | ® |
244 | |  | n/a |
245 | |  | n/a |
246 | |  | n/a |
247 | ℞ | ℞ | ℞ |
248 | ℅ | ℅ | ℅ |
249 | ♂ | ♂ | ♂ |
250 | ♀ | ♀ | ♀ |
251 | |  | n/a |
252 | |  | n/a |
253 | |  | n/a |
254 | |  | n/a |
255 | ⌂ | ⌂ | ⌂ |
192 | ¥ | ¥ | ¥ |
193 | 。 | 。 | 。 |
194 | 「 | 「 | 「 |
195 | 」 | 」 | 」 |
196 | 、 | 、 | 、 |
197 | ・ | ・ | ・ |
198 | ヲ | ヲ | ヲ |
199 | ァ | ァ | ァ |
200 | ィ | ィ | ィ |
201 | ゥ | ゥ | ゥ |
202 | ェ | ェ | ェ |
203 | ォ | ォ | ォ |
204 | ャ | ャ | ャ |
205 | ュ | ュ | ュ |
206 | ョ | ョ | ョ |
207 | ッ | ッ | ッ |
208 | ー | ー | ー |
209 | ア | ア | ア |
210 | イ | イ | イ |
211 | ウ | ウ | ウ |
212 | エ | エ | エ |
213 | オ | オ | オ |
214 | カ | カ | カ |
215 | キ | キ | キ |
216 | ク | ク | ク |
217 | ケ | ケ | ケ |
218 | コ | コ | コ |
219 | サ | サ | サ |
220 | シ | シ | シ |
221 | ス | ス | ス |
222 | セ | セ | セ |
223 | ソ | ソ | ソ |
224 | タ | タ | タ |
225 | チ | チ | チ |
226 | ツ | ツ | ツ |
227 | テ | テ | テ |
228 | ト | ト | ト |
229 | ナ | ナ | ナ |
230 | ニ | ニ | ニ |
231 | ヌ | ヌ | ヌ |
232 | ネ | ネ | ネ |
233 | ノ | ノ | ノ |
234 | ハ | ハ | ハ |
235 | ヒ | ヒ | ヒ |
236 | フ | フ | フ |
237 | ヘ | ヘ | ヘ |
238 | ホ | ホ | ホ |
239 | マ | マ | マ |
240 | ミ | ミ | ミ |
241 | ム | ム | ム |
242 | メ | メ | メ |
243 | モ | モ | モ |
244 | ヤ | ヤ | ヤ |
245 | ユ | ユ | ユ |
246 | ヨ | ヨ | ヨ |
247 | ラ | ラ | ラ |
248 | リ | リ | リ |
249 | ル | ル | ル |
250 | レ | レ | レ |
251 | ロ | ロ | ロ |
252 | ワ | ワ | ワ |
253 | ン | ン | ン |
254 | ゙ | ゙ | ゙ |
255 | ゚ | ゚ | ゚ |
George Phillips, December 24, 2021. george -at- 48k.ca