Standard Squeak Font Encodings

Richard A. O'Keefe ok at hermes.otago.ac.nz
Tue Feb 1 23:54:15 UTC 2000


-Bert- wrote
	I'd vote for switching to ISO Latin-1 because it is one of the
	best-documented encodings (it's almost impossible to find a Mac encoding
	chart on the web). Besides, codes from 128 to 159 are "free" so we can put
	special characters there.
	
Codes 128..159 are only "sort of" free.  The ISO 6429 standard defines a
whole lot of so-called "C1 controls", and guess where they go?
In particular, the whole CR, LF, CRLF mess is (belatedly) solved by the
NEw-Line (NEL) code, 16r85 (actually, if you read the original papers
about ASCII in the CACM, you discover that LF *was* intended to serve as
NL if you wanted an NL character).

You can also find out about these control characters in ECMA 48, which
has the advantage of being free.  Here's a list I typed up some years ago.
	
/* The C0 controls */

#define NUL	'\000'	/* ^@ null character */
#define SOH	'\001'	/* ^A Start Of Heading, start of message */
#define STX	'\002'	/* ^B Start Of Text, end of address */
#define	ETX	'\003'	/* ^C End of TeXt, end of message */
#define EOT	'\004'	/* ^D End Of Transmission */
#define	ENQ	'\005'	/* ^E ENQuiry "who are you" */
#define ACK	'\006'	/* ^F (positive) ACKnowledge */
#define	BEL	'\007'	/* ^G ring the BELl */
#define	BS	'\010'	/* ^H BackSpace */
#define	HT	'\011'	/* ^I character (Horizontal) Tab */
#define	TAB	'\011'	/* ^I an unofficial name for HT */
#define	LF	'\012'	/* ^J Line Feed (does not imply cr) */
#define	VT	'\013'	/* ^K line (Vertical) Tab */
#define	FF	'\014'	/* ^L Form Feed (new page starts AFTER this) */
#define	CR	'\015'	/* ^M Carriage Return */
#define	SO	'\016'	/* ^N Shift Out; select alternate character set */
#define	SI	'\017'	/* ^O Shift In; select ASCII again */
#define	DLE	'\020'	/* ^P Data Link Escape */
#define	DC1	'\021'	/* ^Q Device Control 1 */
#define XON	'\021'	/* ^Q transmitter on, resume output */
#define	DC2	'\022'	/* ^R Device Control 2 (auxiliary on) */
#define	DC3	'\023'	/* ^S Device Control 3 */
#define	XOFF	'\023'	/* ^S transmitter off, suspend output */
#define	DC4	'\024'	/* ^T Device Control 4 (auxiliary off) */
#define	NAK	'\025'	/* ^U Negative AcKnowledge (signal error) */
#define	SYN	'\026'	/* ^V SYNchronous idle */
#define	ETB	'\027'	/* ^W End of Transmission Block, logical end of medium */
#define	CAN	'\030'	/* ^X CANcel */
#define	EM	'\031'	/* ^Y End of Medium */
#define	SUB	'\032'	/* ^Z SUBstitute */
#define	ESC	'\033'	/* ^[ ESCape */
#define	FS	'\034'	/* ^\ File Separator */
#define IS4	'\034'	/* ^\ Information Separator 4 */
#define	GS	'\035'	/* ^] Group Separator */
#define IS3	'\035'	/& ^] Information Separator 3 */
#define	RS	'\036'	/* ^^ Record Separator */
#define IS2	'\036'	/* ^^ Information Separator 2 */
#define	US	'\037'	/* ^_ Unit Separator */
#define IS1	'\037'	/* ^_ Information Separator 1 */
#define	SP	'\040'	/*    SPace */
#define	DEL	'\177'	/* ^? DELete, rubout */

/*  Here are the C1 controls from ECMA 48  */

#define PAD	'\200'	/* PADding character */
#define HOP	'\201'	/* High Order Preset */
#define BPH	'\202'	/* Break Permitted Here */
#define NBH	'\203'	/* No Break Here */
#define IND	'\204'	/* INDex */
#define NEL	'\205'	/* NExt Line */
#define SSA	'\206'	/* Start of Selected Area */
#define ESA	'\207'	/* End of Selected Area */
#define HTS	'\210'	/* character (Horizontal) Tabulation Set */
#define HTJ	'\211'	/* character Tabulation with Justification */
#define VTS	'\212'	/* line (Vertical) Tabulation Set */
#define PLD	'\213'	/* Partial Line forward (Down) */
#define PLU	'\214'	/* Partial Line backward (Up) */
#define RI	'\215'	/* Reverse line feed (Index) */
#define SS2	'\216'	/* Single Shift 2 */
#define SS3	'\217'	/* Single Shift 3 */
#define DCS	'\220'	/* Device Control String */
#define PU1	'\221'	/* Private Use 1 */
#define PU2	'\222'	/* Private Use 2 */
#define STS	'\223'	/* Set Transmit State */
#define CCH	'\224'	/* Cancel CHaracter */
#define MW	'\225'	/* Message Waiting */
#define SPA	'\226'	/* Start of guarded (Protected) Area */
#define EPA	'\227'	/* End of guarded (Protected) Area */
#define SOS	'\230'	/* Start Of String */
#define SGCI	'\231'	/* Single Graphic Character Introducer */
#define SCI	'\232'	/* Single Character Introducer */
#define CSI	'\233'	/* Control Sequence Introducer */
#define ST	'\234'	/* String Terminator */
#define OSC	'\235'	/* Operating System Command */
#define PM	'\236'	/* Privacy Message */
#define APC	'\237'	/* Application Program Command */
#define NBS	'\240'	/* No-Break Space */





More information about the Squeak-dev mailing list