#   6.2.1 page 60

62
#fb

1959
#aiei

3,500
#c1ejj

8.93
#h4ic

.7
#4g

0.7
#j4g

8,93
#h1ic

,7
#1g

0,7
#j1g

par. 4.2.2
p>4 #d4b4b

4 500 000
#d"ejj"jjj

##The temperature of the universe was 100,000,000,000,000,000,000,000,000,000,000°C.
##,! temp}ature ( ! univ}se 0 #ajj1jjj1jjj1jjj1jjj1jjj1" jjj1jjj1jjj1jjj1jjj~j,c4

##The temperature of the universe was  100 000 000 000 000 000 000 000 000 000 000°C
##,! temp}ature ( ! univ}se 0 #ajj"jjj"jjj"jjj"jjj"jjj"" jjj"jjj"jjj"jjj"jjj~j,c4

⅜
#c/h

5⅜
#e#c/h

#   6.3.1 page 61

7:30 a.m.
#g3#cj a4m4

10:12:2009
#aj3#ab3#bjji

9-10
#i-#aj

1914–18
#aiad,-#ah

2.5-5
#b4e-#e

8-cab fleet
#h-cab fleet

The score was 4–3
,! score 0 #d,-#c

7−5 = 2
#g"-#e "7 #b

2-½
#b-#a/b

¼-½ tsp
#a/d-#a/b tsp

6¼–6½
#f#a/d,-#f#a/b

1/4 cup
#a_/#d cup

model 09/52
model #ji_/#eb

on call 24/7
on call #bd_/#g

7(2)
#g"<#b">

7(b)
#g"<b">

4–7
#d,-#g

4..7
#d44g

~under
 ++
4567
#d_1#ef_'#g

#   6.4.1 page 61

Piano Sonata No.16 in C major is K.545.
,piano ,sonata ,no4#af 9 ;,c major is ,k4#ede4

⅜ = .375
#c/h "7 #4cge

#   6.5.2 page 62

32
#cb

3b
#c;b

3B
#c,b

3m
#cm

4.2
#d4b

4.b
#d4;b

4.B
#d4,b

4.m
#d4m

report3.doc
report#c4;doc

report3.xls
report#c4xls

#   require super/subscripting
… in the Second World War² 1939–1945.³
444 9 ! ,second ,_w ,w>;9#b #aici,-#aide49#c

#   6.5.3 page 62

houses4lease
h|ses#dlease

He came 4th in the race.
,he came #dth 9 ! race4

#   6.5.4 page 63

If you go 1st–will I go 2nd?
,if y g #ast,-w ,i g #bnd8

I have a 6-CD boxed set.
,i h a #f-;,,cd box$ set4

There are 3 beds in this 4-bed ward.
,"! >e #c b$s 9 ? #d-b$ w>d4

in 1970–about March
9 #aigj,-ab ,m>*

3-dimensional
#c-dim5.nal

3-D
#c-;,d

The 6-can pack–under seat 6-c.
,! #f-c pack,-"u s1t #f-;c4

only 4–more please
only #d,-m pl1se

4-m
#d-;m

20-yr period
#bj-;yr p}iod

20yr period
#bjyr p}iod

#   6.6.1 page 64

population: 3 245 000
popula;n3 #c"bde"jjj

ISBN: 978 1 55468 513 4
,,isbn3 #igh"a"eedfh"eac"d

phone: (61) 3 1234 5678
ph"o3 "<#fa"> #c"abcd"efgh

date: 1947 08 31
date3 #aidg"jh"ca

time: 16 00
"t3 #af"jj

#   6.7.1 page 64

7/11/59
#g_/#aa_/#ei

7.11.59
#g4aa4ei

1960's
#aifj's

'70s and '80s
'#gjs & '#hjs

10:30 a.m.
#aj3#cj a4m4

10.30 am
#aj4cj am

$8.75
`s#h4ge

£8.75
`l#h4ge

R8,75
,r#h1ge

$1,500.00
`s#a1ejj4jj

€1.500,00
`e#a4ejj1jj

2nd
#bnd

2d
#b;d

#   [premier]
1er
#a;er

M4G 3E8
,m#d,g #c,e#h

W1N 9LF
,w#a,n #i,,lf

N12 7BT
,n#ab #g,,bt

(416) 486-2500
"<#daf"> #dhf-#bejj

For a taxi call 13-cabs.
,= a taxi call #ac-cabs4

telephone 1300-vision
teleph"o #acjj-vi.n

1-800-SLEEP88
#a-#hjj-,,sleep#hh

ISBN 0-14-300414-X
,,isbn #j-#ad-#cjjdad-;,x


~end

#   6.10.5 page 66
The temperature of the universe was
100,000,000,000,000,000,000,000,000,000,000°C.
,! temp]ature ( ! univ]se 0 #ajj1jjj1jjj1jjj1jjj1jjj1" jjj1jjj1jjj1jjj1jjj^j,c4
[or when print uses spaces:]
The temperature of the universe was
100 000 000 000 000 000 000 000 000 000 000°C.
,! temp}ature ( ! univ]se 0 #ajj"jjj"jjj"jjj"jjj"jjj"" jjj"jjj"jjj"jjj"jjj^j,c4

