Update hex editor fonts to Mark Simonson V2.0 font for Atari

This commit is contained in:
peterdell 2019-01-03 00:02:22 +01:00
parent 7faf50d737
commit a5783a8f65
5 changed files with 19 additions and 361 deletions

Binary file not shown.

View File

@ -1,342 +0,0 @@
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf600
{\fonttbl\f0\fmodern\fcharset0 Courier;\f1\fswiss\fcharset0 ArialMT;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}
{\*\expandedcolortbl;\csgray\c100000;\csgenericrgb\c0\c0\c100000;}
\vieww12000\viewh15840\viewkind0
\deftab720
\pard\pardeftab720\partightenfactor0
\f0\fs24 \cf2 Atari Classic TrueType Fonts \cf0 \
\f1\fs16 (Windows Version 1.2)\
Created by Mark Simonson (v.1.0-1998, v.1.1-2001, v.1.2-2016)\
marksim@bitstream.net\
Website: Mac/Atari Fusion--Atari Home Computer Resources for Mac Users\
http://www2.bitstream.net/~marksim/atarimac/\
Macintosh version also available.\
\
With these fonts installed, you can view and print Atari text files in any text editor that allows you to change fonts (WordPad, for example). Tip: In order to get the correct line breaks, you will need to change the ATASCII return character (155) to the DOS LF character. (In the Character Map accessory, the ATASCII return is the blank character that comes just before the inverse up-arrow.)\
\
There are three different fonts.
\b Atari Classic Chunky
\b0 is a pixel-for-pixel copy of the original ATASCII character set.
\b Atari Classic Smooth
\b0 interprets the pixel aliasing (stair steps) as diagonal lines.
\b Atari Classic Extrasmooth
\b0 refines this idea further with the addition of curves.
\b Smooth
\b0 and
\b Extrasmooth
\b0 were designed for better appearance and legibility at larger sizes and on print-outs. Use the one that looks best to you.\
\
These fonts will tend to look uneven at font sizes that do not correspond to the 8-by-8 pixel grid that the characters are based on. Because Windows assumes 96ppi screen resolution, they will look best in a font size that is a multiple of 6 (i.e., 6pt, 12pt, 18pt, etc.). (In Windows, 6 points = 8 pixels.)\
\
The Atari Classic TrueType fonts duplicate the ATASCII character set on a low-level basis. Unlike a normal Windows font, ATASCII utilizes all character codes from $00 to $FF (0 to 255). The lower half are normal characters; the upper half are inverse versions of the lower half. The basic ASCII characters ($00 to $7F) correspond fairly closely except for the first 32, which don't normally contain characters in a Windows font.\
\
Due to differences between the way Windows and the Atari use character codes, not all characters will display properly in Windows. In fact, some characters will not display at all (though they do exist in the font). Unfortunately, this is due to certain character codes being reserved in Windows and there doesn't appear to be any way to work around it. The character codes affected are: $00-$1F (0-31), $7F-$81 (127-129), $8D-$90 (141-144), $9D (157), and $9F (158).\
\
Not all characters can be typed from the keyboard. You can however copy characters as needed from this document (see tables below). The Character Map desk accessory can help also.\
\
\b ATASCII CHARACTER SET TABLES\
\b0 \
In order to see the ATASCII character set with these tables, the Atari Classic TrueType fonts must be installed. Characters that are not displayed properly are due to character code usage differences between ATASCII and Windows (see above).\
\
\
\b TABLE 1: ATASCII Character Dump Block\
\b0 \
All characters (ATASCII $00 thru $FF) 16 characters per\
line.\
\
\
\f0\fs12  \
\page \
\
\
!"#$%&'()*+,-./\
0123456789:;<=>?\
@ABCDEFGHIJKLMNO\
PQRSTUVWXYZ[\\]^_\
`abcdefghijklmno\
pqrstuvwxyz\{|\}~\
\
\'95\'96\'97\
\'a0\'a1\'a2\'a3\'a4\'a5\'a6\'a7\'a8\'a9\'aa\'ab\'ac\'ad\'ae\'af\
\'b0\'b1\'b2\'b3\'b4\'b5\'b6\'b7\'b8\'b9\'ba\'bb\'bc\'bd\'be\'bf\
\'c0\'c1\'c2\'c3\'c4\'c5\'c6\'c7\'c8\'c9\'ca\'cb\'cc\'cd\'ce\'cf\
\'d0\'d1\'d2\'d3\'d4\'d5\'d6\'d7\'d8\'d9\'da\'db\'dc\'dd\'de\'df\
\'e0\'e1\'e2\'e3\'e4\'e5\'e6\'e7\'e8\'e9\'ea\'eb\'ec\'ed\'ee\'ef\
\'f0\'f1\'f2\'f3\'f4\'f5\'f6\'f7\'f8\'f9\'fa\'fb\'fc\'fd\'fe\'ff\
\f1\fs16 \
\
\b TABLE 2: ATASCII Character Dump List\
\b0 \
All characters (ATASCII $00 thru $FF) one character per\
line with hexadecimal value indicated on the left.\
\
\f0\fs12 00= \
01=\
02=\
03=\
04=\
05=\
06=\
07=\
08=\
09= \
0A=\
\
0B= \
0C=\page \
0D=\
0E=\
0F=\
10=\
11=\
12=\
13=\
14=\
15=\
16=\
17=\
18=\
19=\
1A=\
1B=\
1C=\
1D=\
1E=\
1F=\
20= \
21=!\
22="\
23=#\
24=$\
25=%\
26=&\
27='\
28=(\
29=)\
2A=*\
2B=+\
2C=,\
2D=-\
2E=.\
2F=/\
30=0\
31=1\
32=2\
33=3\
34=4\
35=5\
36=6\
37=7\
38=8\
39=9\
3A=:\
3B=;\
3C=<\
3D==\
3E=>\
3F=?\
40=@\
41=A\
42=B\
43=C\
44=D\
45=E\
46=F\
47=G\
48=H\
49=I\
4A=J\
4B=K\
4C=L\
4D=M\
4E=N\
4F=O\
50=P\
51=Q\
52=R\
53=S\
54=T\
55=U\
56=V\
57=W\
58=X\
59=Y\
5A=Z\
5B=[\
5C=\\\
5D=]\
5E=^\
5F=_\
60=`\
61=a\
62=b\
63=c\
64=d\
65=e\
66=f\
67=g\
68=h\
69=i\
6A=j\
6B=k\
6C=l\
6D=m\
6E=n\
6F=o\
70=p\
71=q\
72=r\
73=s\
74=t\
75=u\
76=v\
77=w\
78=x\
79=y\
7A=z\
7B=\{\
7C=|\
7D=\}\
7E=~\
7F=\
80=\'80\
\
82=\'82\
83=\'83\
84=\'84\
85=\'85\
86=\'86\
87=\'87\
88=\'88\
89=\'89\
8A=\'8a\
8B=\'8b\
8C=\'8c\
\
8E=\'8e\
\
\
91='\
92='\
93="\
94="\
95=\'95\
96=\'96\
97=\'97\
98=\'98\
99=\'99\
9A=\'9a\
9B= \
9C=\'9c\
\
9E=\'9e\
9F=\'9f\
A0=\'a0\
A1=\'a1\
A2=\'a2\
A3=\'a3\
A4=\'a4\
A5=\'a5\
A6=\'a6\
A7=\'a7\
A8=\'a8\
A9=\'a9\
AA=\'aa\
AB=\'ab\
AC=\'ac\
AD=\'ad\
AE=\'ae\
AF=\'af\
B0=\'b0\
B1=\'b1\
B2=\'b2\
B3=\'b3\
B4=\'b4\
B5=\'b5\
B6=\'b6\
B7=\'b7\
B8=\'b8\
B9=\'b9\
BA=\'ba\
BB=\'bb\
BC=\'bc\
BD=\'bd\
BE=\'be\
BF=\'bf\
C0=\'c0\
C1=\'c1\
C2=\'c2\
C3=\'c3\
C4=\'c4\
C5=\'c5\
C6=\'c6\
C7=\'c7\
C8=\'c8\
C9=\'c9\
CA=\'ca\
CB=\'cb\
CC=\'cc\
CD=\'cd\
CE=\'ce\
CF=\'cf\
D0=\'d0\
D1=\'d1\
D2=\'d2\
D3=\'d3\
D4=\'d4\
D5=\'d5\
D6=\'d6\
D7=\'d7\
D8=\'d8\
D9=\'d9\
DA=\'da\
DB=\'db\
DC=\'dc\
DD=\'dd\
DE=\'de\
DF=\'df\
E0=\'e0\
E1=\'e1\
E2=\'e2\
E3=\'e3\
E4=\'e4\
E5=\'e5\
E6=\'e6\
E7=\'e7\
E8=\'e8\
E9=\'e9\
EA=\'ea\
EB=\'eb\
EC=\'ec\
ED=\'ed\
EE=\'ee\
EF=\'ef\
F0=\'f0\
F1=\'f1\
F2=\'f2\
F3=\'f3\
F4=\'f4\
F5=\'f5\
F6=\'f6\
F7=\'f7\
F8=\'f8\
F9=\'f9\
FA=\'fa\
FB=\'fb\
FC=\'fc\
FD=\'fd\
FE=\'fe\
FF=\'ff\
}

View File

@ -50,13 +50,15 @@ enum HexEditorCharacterSet {
// http://www2.bitstream.net/~marksim/atarimac
private final static String ATARI_FONT_PATH = "fonts/atari8/AtariClassic-Regular.ttf";
private final static String ATARI_FONT_NAME = "Atari Classic";
private final static String ATARI_INT_FONT_PATH = "fonts/atari8/AtariClassicInt-Regular.ttf";
private final static String ATARI_INT_FONT_NAME = "Atari Classic Int";
private final static int ATARI_FONT_SIZE = 6;
private final static int ATARI_FONT_BASE = 0xe000;
private final static int ATARI_INT_FONT_BASE = 0xe100;
private final static String C64_FONT_PATH = "fonts/c64/C64Classic-Regular.ttf";
private final static String C64_FONT_NAME = "C64 Classic";
private final static int C64_FONT_SIZE = 6;
private final static int C64_UPPER_FONT_BASE = 0x0100;
private final static int C64_LOWER_FONT_BASE = 0x0200;
private static Map<HexEditorCharacterSet, Data> instanceMap;
private static Map<String, Font> fontMap;
@ -109,39 +111,37 @@ enum HexEditorCharacterSet {
fontPath = ATARI_FONT_PATH;
fontName = ATARI_FONT_NAME;
fontSize = ATARI_FONT_SIZE;
result.setIdentityMapping();
result.setIdentityMapping(ATARI_FONT_BASE);
break;
case ATARI_ATASCII_SCREEN_CODE:
fontPath = ATARI_FONT_PATH;
fontName = ATARI_FONT_NAME;
fontSize = ATARI_FONT_SIZE;
result.setAtariScreenCodeMapping();
result.setAtariScreenCodeMapping(ATARI_FONT_BASE);
break;
case ATARI_INTERNATIONAL:
fontPath = ATARI_INT_FONT_PATH;
fontName = ATARI_INT_FONT_NAME;
fontPath = ATARI_FONT_PATH;
fontName = ATARI_FONT_NAME;
fontSize = ATARI_FONT_SIZE;
result.setIdentityMapping();
result.setIdentityMapping(ATARI_INT_FONT_BASE);
break;
case ATARI_INTERNATIONAL_SCREEN_CODE:
fontPath = ATARI_INT_FONT_PATH;
fontName = ATARI_INT_FONT_NAME;
fontPath = ATARI_FONT_PATH;
fontName = ATARI_FONT_NAME;
fontSize = ATARI_FONT_SIZE;
result.setAtariScreenCodeMapping();
result.setAtariScreenCodeMapping(ATARI_INT_FONT_BASE);
break;
case C64_PETSCII_UPPER_CASE:
fontPath = C64_FONT_PATH;
fontName = C64_FONT_NAME;
fontSize = C64_FONT_SIZE;
result.setIdentityMapping();
result.setIdentityMapping(C64_UPPER_FONT_BASE);
break;
case C64_PETSCII_LOWER_CASE:
fontPath = C64_FONT_PATH;
fontName = C64_FONT_NAME;
fontSize = C64_FONT_SIZE;
for (int i = 0; i < 256; i++) {
result.characterMapping[i] = (char) (0x200 + i);
}
result.setIdentityMapping(C64_LOWER_FONT_BASE);
break;
default:
throw new IllegalArgumentException("Unsupported font type " + type + ".");
@ -196,13 +196,13 @@ enum HexEditorCharacterSet {
return result;
}
private void setIdentityMapping() {
private void setIdentityMapping(int base) {
for (int i = 0; i < 256; i++) {
characterMapping[i] = (char) (0x100 + i);
characterMapping[i] = (char) (base + i);
}
}
private void setAtariScreenCodeMapping() {
private void setAtariScreenCodeMapping(int base) {
for (int i = 0; i < 256; i++) {
int charValue = i & 0x7f;
if (charValue < 0x40) {
@ -210,10 +210,10 @@ enum HexEditorCharacterSet {
} else if (charValue < 0x60) {
charValue = charValue - 0x40;
}
if (i > 0x80) {
if (i >= 0x80) {
charValue |= 0x80;
}
characterMapping[i] = (char) (0x100 + charValue);
characterMapping[i] = (char) (base + charValue);
}
}