$ od -c -N 50000 [Indigo]<Spruce>12>sources>sprucedir.sr!1 0000000 / / S p r u c e D i r . S r - 0000020 l a s t m o d i f i e d : 0000040 J a n u a r y 2 8 , 1 9 0000060 8 1 \r \r / / D I R ( P 0000100 r e s s a n d f o n t f i 0000120 l e d i r e c t o r y p r o 0000140 c e s s i n g ) \r / / e r 0000160 r o r s 6 0 0 \r g e t " S p 0000200 r u c e . d " \r g e t " S p r 0000220 u c e F i l e s . d " \r g e t 0000240 " P r e s s F i l e . d " \r g e 0000260 t " S t r e a m s . d " \r / / 0000300 o u t g o i n g p r o c e d 0000320 u r e s \r e x t e r n a l \r \t [ 0000340 \r \t O p e n U p \r \t O p e n F o 0000360 r F o n t s \r \t C l o s e D o w 0000400 n \r \t P r e s s D i r e c t o r 0000420 i e s \r \t F E E n t e r \r \t F E 0000440 E n t e r L i t e r a l \r \t F o 0000460 n t P a s s \r \t U s e E n t r y 0000500 \t / / f i n d s f o n t s 0000520 e t , f o n t v a l u e c 0000540 o r r e s p o n d i n g t o 0000560 i n d e x \r \t ] \r / / i n c o 0000600 m i n g p r o c e d u r e s \r 0000620 e x t e r n a l \r \t [ \r / / S P 0000640 R U C E \0 \r \0 \n \0 ( 001 223 200 \0 \0 006 0000660 \r P r o g r a m . S t y l e \0 \r 0000700 200 201 \f 001 200 201 \b 001 \0 3 004 4 322 y 302 276 0000720 322 325 303 y 323 220 \0 \0 @ 302 \0 300 3 302 4 0000740 \0 y 302 215 \0 230 302 276 \0 324 307 A 001 v 303 y 0000760 001 220 001 244 \0 \0 \n \0 004 6 302 \0 344 340 355 353 0001000 \r \t S p r u c e E r r o r \r \t S 0001020 p r u c e C o n d i t i o n \r \t 0001040 D b l S h i f t \r \t F S G e t X 0001060 \r \t F S P u t \r \r / / P A R T S 0001100 \r \t S e t P a r t B o u n d s \r 0001120 \t G e t P o s i t i o n i n P a 0001140 r t \r \t S e t P o s i t i o n i 0001160 n P a r t \r \t S e t B y t e P o 0001200 s i t i o n i n P a r t \r \t S k 0001220 i p i n P a r t \r \r / / W I N D 0001240 O W , F I L E S \r \t G e t S p r 0001260 u c e P a g e \r \t P u t S p r u 0001300 c e P a g e \r \t W i n d o w C r 0001320 e a t e S t r e a m \r \t W i n d 0001340 o w C l o s e \r \t W i n d o w G 0001360 e t P o s i t i o n \r \t W i n d 0001400 o w S e t P o s i t i o n \r \t W 0001420 i n d o w R e a d B l o c k \r \t 0001440 W i n d o w W r i t e B l o c k 0001460 \t \r \t W i n d o w R e a d \r \t W 0001500 i n d o w W r i t e \r \t W i n d 0001520 o w F l u s h \r \t F i l e L e n 0001540 g \r \t I n i t S p r u c e F i l 0001560 e \r \t R e s e t S p r u c e F i 0001600 l e \r \r / / C U R S O R \r \t C u 0001620 r s o r C h a r \r \t C u r s o r 0001640 D i g i t \r \r / / O S \r \t Z e r 0001660 o \r \t M o v e B l o c k \r \r / / 0001700 S P R U C E M L \r \t D o u b l e 0001720 A d d ; D o u b l e S u b ; 0001740 D o u b l e C o p ; M \0 \0 @ 0001760 \0 \0 001 354 377 220 \0 \0 002 6 302 \0 366 366 370 366 0002000 u l D i v \r \t M u l F u l l \r \r 0002020 \t D i s a b l e C o m m e n t s 0002040 \r \t F i l l I n N a m e s \r \t U 0002060 g t \r \t ] \r / / i n c o m i n 0002100 g s t a t i c s \r e x t e r n 0002120 a l \r \t [ \r \t C a p a b i l i t 0002140 i e s \r \t R e s o l u t i o n S 0002160 ; R e s o l u t i o n B \r \t F 0002200 o n t F i l e ; B a n d F i l 0002220 e \r \t F o n t W i n d o w ; B 0002240 a n d W i n d o w \r \t D P z e r 0002260 o \r \t L o g o F o n t \r \t b r e 0002300 a k P a g e \r \t L a n d s c a p 0002320 e D e v i c e \r \t S p r u c e Z 0002340 o n e \r \t ] \r / / i n t e r n 0002360 a l s t a t i c s \r s t a t i 0002400 c \r \t [ \r \t b e s t B r e a k F 0002420 o n t \r \t ] \r / / F i l e - w 0002440 i d e s t r u c t u r e a n 0002460 d m a n i f e s t d e c l a 0002500 r a t i o n s . \r / / D e f i 0002520 n i t i o n s f o r r e a d 0002540 i n g f o n t f i l e s ( 0002560 s e e F o n t F o r m a t s ) 0002600 \r \r s t r u c t u r e I X H 0002620 : \r [ \r \t T y p e \t b i t 4 0002640 \r \t L e n g t h \t b i t 1 2 \r 0002660 ] \r \r s t r u c t u r e I X 0002700 N : \r [ \r \t @ I X H \r \t C o 0002720 d e 302 6 322 J 302 347 322 373 303 027 323 I \0 0002740 \0 @ \0 \0 302 6 \0 J 302 347 \0 373 303 027 307 I 0002760 001 201 001 322 375 220 \0 \0 \t } 302 \0 351 351 361 357 0003000 \t w o r d \r \t N a m e \t w o r d 0003020 1 0 \r ] \r \r s t r u c t u r 0003040 e I X : \r [ \r \t @ I X H \t 0003060 \t \t \t / / H e a d e r , t y p 0003100 e = I X T y p e C h a r s 0003120 o r I X T y p e O r b i t C h 0003140 a r s \r \t f a m \t b y t e \t \t \t 0003160 \t / / F a m i l y n u m b e r 0003200 \r \t f a c e \t b y t e \t \t \t \t / 0003220 / F a c e c o d e \r \t b c \t b 0003240 y t e \t \t \t \t / / F i r s t c 0003260 h a r n u m b e r \r \t e c \t b 0003300 y t e \t \t \t \t / / a n d l a 0003320 s t \r \t s i z \t w o r d \t \t \t \t 0003340 / / S i z e i n m i c r o 0003360 n s \r \t r o t a t i o n w o r 0003400 d \t \t \t / / R o t a t i o n 0003420 i n m i n u t e s \r \t s a \t w 0003440 o r d 2 \t \t \t / / S t a r t 0003460 i n g p o s i t i o n i n 0003500 f i l e \r \t l e n \t w o r d 2 0003520 \t \t \t / / a n d l e n g t h 0003540 \r \t r e s o l u t i o n x \t w o 0003560 r d \t \t / / 1 0 * n u m b e 0003600 r o f b i t s / i n c h \r \t 0003620 r e s o l u t i o n y \t w o r d 0003640 \r ] \r \r s t r u c t u r e I 0003660 X M : \r [ \r \t @ I X H \t \t \t 0003700 \t / \0 \0 @ \0 \0 306 3 \0 d 306 q \0 200 0003720 306 217 \0 232 306 247 \0 272 306 307 \0 322 306 340 \0 362 0003740 307 004 001 032 307 ( 001 D 307 S 001 ` 307 t 001 216 0003760 307 301 001 302 377 I \0 \0 \a } 302 \0 341 341 343 341 0004000 / H e a d e r , t y p e = 0004020 I X T y p e M u l t i C h a r s 0004040 \r \t f a m \t b y t e \t \t \t \t / / 0004060 F a m i l y n u m b e r \r \t f 0004100 a c e \t b y t e \t \t \t \t / / F a 0004120 c e c o d e \r \t b c \t b y t e 0004140 \t \t \t \t / / F i r s t c h a r 0004160 n u m b e r \r \t e c \t b y t e 0004200 \t \t \t \t / / a n d l a s t \r 0004220 \t s i z \t w o r d \t \t \t \t / / 0004240 S i z e i n m i c r o n s \r 0004260 \t r o t a t i o n w o r d \t \t 0004300 \t / / R o t a t i o n i n 0004320 m i n u t e s \r \t r e s o l u t 0004340 i o n x \t w o r d \t \t / / 1 0 0004360 * n u m b e r o f b i t s 0004400 / i n c h \r \t r e s o l u t i o 0004420 n y \t w o r d \r \t n u m S e g s 0004440 w o r d \t \t \t / / n u m b e 0004460 r o f c h a r a c t e r w 0004500 i d t h s e g m e n t s ( 1 0004520 s t c o n t a i n s r a s t 0004540 e r s ) \r \t s e g s ^ 1 , 4 : 0004560 [ \t \t \t \t / / M a x 4 \r \t \t 0004600 s a w o r d 2 \t \t \t / / s 0004620 t a r t i n g p o s i t i o n 0004640 i n f i l e \r \t \t l e n w 0004660 o r d 2 \t \t \t / / a n d l 0004700 \0 \0 @ 306 \0 \0 306 . \0 = 306 L \0 W 0004720 306 d \0 w 306 204 \0 217 306 235 \0 257 306 301 \0 327 0004740 306 353 001 005 307 ( 001 d 307 u 001 } 307 214 001 251 0004760 307 270 001 300 375 I \0 \0 005 } 302 \0 340 340 342 340 0005000 e n g t h \r \t \t d a t e w o r 0005020 d 2 = \t \t / / d a t e a 0005040 f t e r w h i c h t h e s e 0005060 w i d t h s a r e n o l 0005100 o n g e r v a l i d \r \t \t 0005120 [ d a t e 0 w o r d ; d a 0005140 t e 1 w o r d ] \r \t \t ] \r 0005160 ] \r m a n i f e s t [ \r / / I 0005200 X H t y p e s \r \t I X T y p e 0005220 E n d = 0 \r \t I X T y p e N a m 0005240 e = 1 \r \t I X T y p e C h a r s 0005260 = 3 \r \t I X T y p e O r b i t C 0005300 h a r s = 5 \r \t I X T y p e 0005320 M u l t i C h a r s = 6 \r \r 0005340 / / l e n g t h t o a l l o 0005360 c a t e \r \t I X L M a x = ( s 0005400 i z e I X M ) / 1 6 \r \r \t H I 0005420 1 1 7 4 = # 1 0 4 5 1 7 r 0005440 s h i f t 1 \t \t / / 1 0 4 0005460 5 1 7 , , 6 5 2 0 0 i s J a 0005500 n u a r y 1 , 1 9 7 4 ( f 0005520 o r r a n g e t e s t ) \r \t 0005540 H I 1 2 3 1 8 9 = # 1 2 3 5 0005560 4 6 r s h i f t 1 \t / / 0005600 1 2 3 5 4 6 , , 1 1 3 4 0 0 i 0005620 s D e c e m b e r 3 1 , 1 0005640 9 8 9 \r ] \r \r m a n i f e s t 0005660 [ \t \t \t \t \t \t / / B u f f 0005700 e r s t r a t e g y v a l u 0005720 e s f \0 \0 @ 306 \0 \0 005 306 027 \0 K 0005740 306 } \0 211 306 340 \0 365 307 * 001 ^ 307 } 001 243 0005760 307 271 001 324 373 I \0 \0 003 } 302 \0 352 352 354 352 0006000 o r f i l e s m a n a g e d 0006020 h e r e \r \t n b f P r e s s F 0006040 i l e = 1 0 \t \t \t / / ~ 0006060 ~ M 3 1 o n l y , f o r 0006100 n o w ! ! n b f . . . i s 0006120 " n u m b e r o f b u f f e 0006140 r s f o r . . . " \r \t n c b 0006160 P r e s s F i l e = 8 \t \t 0006200 \t / / n c b . . . i s " n 0006220 u m b e r o f c b s f o r 0006240 . . . " \r \t n a h E L = - 0006260 3 \t \t \t \t / / n a h . . . 0006300 i s " n u m b e r o f p a 0006320 g e s t o s t a y a h e a 0006340 d f o r . . . " \r \t n a h D 0006360 L = 5 \r \r \t n b f F o n t F 0006400 i l e = 6 \r \t n c b F o n t 0006420 F i l e = 5 \r \t n a h F o n 0006440 t W i n d o w = 5 \r \r \t n b 0006460 f B a n d F i l e = 1 0 \r \t 0006500 n c b B a n d F i l e = 5 \r 0006520 \t n a h B a n d W i n d o w = 0006540 4 / / o u t p u t a h e 0006560 a d v a l u e \r \t ] \r \r / / 0006600 P r o c e d u r e s \r l e t O 0006620 p e n U p ( p D o c ) b e \r [ 0006640 \r \t l e t P r e s s F i l e = 0006660 p D o c > > D o c G . P r e s s 0006700 F i l e \r \t Z e r o ( l 303 } 323 213 0006720 \0 \0 @ 306 \0 \0 026 306 , \0 k 306 201 \0 246 0006740 306 266 \0 352 307 c 001 x 303 } 001 213 353 217 303 225 0006760 001 233 001 314 371 I \0 \0 026 _ 302 \0 346 346 352 350 0007000 v p D o c > > D o c G . n F o 0007020 n t L o a d s , l e n D o c G - 0007040 ( o f f s e t D o c G . n F o 0007060 n t L o a d s / 1 6 ) ) \r \t I n 0007100 i t S p r u c e F i l e ( P r e 0007120 s s F i l e , n b f P r e s s 0007140 F i l e , n c b P r e s s F i 0007160 l e ) \r \t p D o c > > D o c G . 0007200 E L = W i n d o w C r e a t e S 0007220 t r e a m ( P r e s s F i l e , 0007240 k s T y p e R e a d O n l y , 0007260 w o r d I t e m , n a h E L 0007300 ) \r \t p D o c > > D o c G . D L 0007320 = W i n d o w C r e a t e S t r 0007340 e a m ( P r e s s F i l e , k 0007360 s T y p e R e a d O n l y , w 0007400 o r d I t e m , n a h D L ) \r 0007420 \t I n i t S p r u c e F i l e ( 0007440 F o n t F i l e , n b f F o n 0007460 t F i l e , n c b F o n t F i 0007500 l e ) \r \t F o n t W i n d o w = 0007520 W i n d o w C r e a t e S t r e 0007540 a m ( F o n t F i l e , k s T 0007560 y p e R e a d O n l y , w o r 0007600 d I t e m , n a h F o n t W i 0007620 n d o w ) \r \t I n i t S p r u c 0007640 e F i l e ( B a n d F i l e , 0007660 n b f B a n d F i l e , n c b 0007700 B a n d F i l e ) \r \t P u t S p 0007720 r u c e P a g e ( B a n d F i l 0007740 e , G e t S p r u c e \0 \0 @ 0007760 \0 \0 001 354 377 213 \0 \0 024 _ 302 \0 366 366 370 366 0010000 P a g e ( B a n d F i l e , 1 0010020 , n b f B a n d F i l e , f 0010040 a l s e ) ) \r \t B a n d W i n d 0010060 o w = W i n d o w C r e a t e S 0010100 t r e a m ( B a n d F i l e , 0010120 k s T y p e W r i t e B e f o r 0010140 e R e a d , w o r d I t e m , 0010160 n a h B a n d W i n d o w ) \r 0010200 ] \r \r a n d O p e n F o r F o 0010220 n t s ( p D o c ) b e \r [ \r \t 0010240 l e t P r e s s F i l e = 0010260 p D o c > > D o c G . P r e s s 0010300 F i l e \r \t W i n d o w C l o s 0010320 e ( p D o c > > D o c G . E L ) 0010340 \r \t W i n d o w C l o s e ( p D 0010360 o c > > D o c G . D L ) \r ] \r \r 0010400 a n d C l o s e D o w n ( p D 0010420 o c ) b e \r [ \r \t D i s a b l 0010440 e C o m m e n t s ( ) \r \t W i n 0010460 d o w C l o s e ( F o n t W i n 0010500 d o w ) \r \t R e s e t S p r u c 0010520 e F i l e ( F o n t F i l e ) \r 0010540 \t W i n d o w C l o s e ( B a n 0010560 d W i n d o w ) \r \t R e s e t S 0010600 p r u c e F i l e ( B a n d F i 0010620 l e ) \r \t R e s e t S p r u c e 0010640 F i l e ( p D o c > > D o c G . 0010660 P r e s s F i l e ) \r ] \r \r a n 0010700 d P r e s s D i r e c t o r i 0010720 e s ( p D o c ) b \0 \0 @ \0 \0 0010740 352 207 302 223 \0 231 353 004 303 \r 001 023 353 302 303 322 0010760 001 330 001 332 375 213 \0 \0 022 _ 302 \0 355 355 357 355 0011000 e \r [ \r \t C u r s o r C h a r ( 0011020 $ D ) \r \r / / D O C U 0011040 M E N T D I R E C T 0011060 O R Y \r \r \t C u r s o r D i g i 0011100 t ( 0 ) \r \t l e t P r e s s F 0011120 i l e = p D o c > > D o c G . P 0011140 r e s s F i l e \r \t l e t f i 0011160 l e C o d e = P r e s s F i 0011200 l e > > S P r u c e F i l e . f 0011220 i l e C o d e \r \t l e t E L = 0011240 p D o c > > D o c G . E L \r \r \t 0011260 l e t D o c D i r = n i l 0011300 \r \t / / F i l l i n c r e 0011320 a t o r , f i l e n a m e , 0011340 d a t e - - s e t u p 0011360 D o c D i r \r \t l e t c o d e 0011400 = F i l l I n N a m e s ( E 0011420 L , p D o c , 0 , l v D 0011440 o c D i r ) \r \t i f c o d e 0011460 t h e n \r \t \t [ \r \t \t l e t h 0011500 o s t = p D o c > > D o c G 0011520 . F i l e H o s t \r \t \t S p r u 0011540 c e C o n d i t i o n ( c o d e 0011560 , E C F i l e T e r m i n a t 0011600 e , f i l e C o d e , h o s 0011620 t r s h i f t 8 , h o s t 0011640 & # 3 7 7 ) \r \t \t ] \r \t l e t 0011660 P r e s s L e n g t h = v e 0011700 c 1 \r \t F i l e L e n g ( P r 0011720 e s s F i l e , P r e s s L e 0011740 n g t h \0 \0 @ \0 \0 306 025 \0 4 306 301 0011760 \0 367 001 344 373 213 \0 \0 020 _ 302 \0 362 362 364 362 0012000 , w o r d I t e m ) \r \t D o u 0012020 b l e S u b ( P r e s s L e n g 0012040 t h , t a b l e [ 0 ; P r 0012060 e s s R e c o r d S i z e ] ) 0012100 \r \t D b l S h i f t ( P r e s s 0012120 L e n g t h , L o g P r e s s 0012140 R e c o r d S i z e ) \r \t i f 0012160 P r e s s L e n g t h ! 0 t h 0012200 e n S p r u c e C o n d i t i 0012220 o n ( 6 0 1 , E C F i l e T e 0012240 r m i n a t e , f i l e C o d 0012260 e ) \r \t l e t n P r e s s R e 0012300 c s = P r e s s L e n g t h ! 1 0012320 + 1 \r \t u n l e s s D o c D i 0012340 r > > D D V . n R e c s e q 0012360 n P r e s s R e c s t h e n 0012400 S p r u c e C o n d i t i o n ( 0012420 6 0 3 , E C F i l e T e r m i 0012440 n a t e , f i l e C o d e ) \r 0012460 \t l e t n P a r t s = D o c D 0012500 i r > > D D V . n P a r t s \r \t 0012520 u n l e s s n P a r t s * ( s 0012540 i z e P E / 1 6 ) l e \r \t \t 0012560 D o c D i r > > D D V . p d R e 0012600 c s * P r e s s R e c o r d S i 0012620 z e t h e n \r \t \t \t S p r u c 0012640 e C o n d i t i o n ( 6 0 4 , 0012660 E C F i l e T e r m i n a t e , 0012700 f i l e C o d e ) \r \t \r \t l e 0012720 t f i r s t C o p y = D o c D 0012740 i r > > D D V . f C o p \0 \0 @ 0012760 \0 \0 001 354 371 213 \0 \0 016 _ 302 \0 366 366 370 366 0013000 y \r \t l e t l a s t C o p y = 0013020 D o c D i r > > D D V . l C o p 0013040 y \r \r / / P A R T D 0013060 I R E C T O R Y \r \r \t C u r s o 0013100 r D i g i t ( ) \r / / F i n d 0013120 t h e f o n t p a r t a n 0013140 d c o u n t " p a g e s " 0013160 i n t h e d o c u m e n t . 0013200 \r \t S e t P a r t B o u n d s ( 0013220 E L , D o c D i r > > D D V . 0013240 p d S t a r t , D o c D i r > 0013260 > D D V . p d R e c s ) \r \t S e 0013300 t P o s i t i o n i n P a r t ( 0013320 E L , D P z e r o ) \t \t \t / / 0013340 S t a r t r e a d i n g p a 0013360 r t s h e r e \r \t W i n d o w 0013400 G e t P o s i t i o n ( E L , 0013420 l v p D o c > > D o c G . p a 0013440 r t S t a r t ) \t \t / / F o r 0013460 l a t e r r e f e r e n c e \r 0013500 \r \t l e t F o n t P a r t = v 0013520 e c s i z e P E / 1 6 \t \t / 0013540 / T o h o l d f o n t p a 0013560 r t g o o d i e s \r \t l e t 0013600 f o n t f o u n d = f a l s e \r 0013620 \t l e t n P a g e s = 0 \r \t l 0013640 e t t h i s P a g e = 0 \r \t f 0013660 o r i = 1 t o n P a r t s 0013700 d o \r \t \t [ \r \t \t l e t P a 0013720 r t = v e c s \0 \0 @ \0 \0 306 # 0013740 \0 9 306 I \0 201 306 336 \0 370 307 * 001 ? 307 _ 0013760 001 z 001 330 367 213 \0 \0 \f _ 302 \0 354 354 356 354 0014000 i z e P E / 1 6 \r \t \t W i n d 0014020 o w R e a d B l o c k ( E L , 0014040 P a r t , s i z e P E / 1 6 0014060 ) \r \t \t i f P a r t > > P E . 0014100 T y p e e q P E T y p e F o 0014120 n t t h e n \t / / F o n t p 0014140 a r t \r \t \t \t [ \r \t \t \t M o v e 0014160 B l o c k ( F o n t P a r t , 0014200 P a r t , s i z e P E / 1 6 0014220 ) \r \t \t \t f o n t f o u n d = t 0014240 r u e \r \t \t \t ] \r \t \t i f P a 0014260 r t > > P E . T y p e e q P 0014300 E T y p e P a g e t h e n \t / 0014320 / P a g e p a r t ( i g n o 0014340 r e o t h e r p a r t s ) \r 0014360 \t \t \t [ \r \t \t \t t h i s P a g e 0014400 = t h i s P a g e + 1 \r \t \t \t i 0014420 f t h i s P a g e g e p D 0014440 o c > > D o c G . U s e r P a g 0014460 e S t a r t & \r \t \t \t t 0014500 h i s P a g e l e p D o c > 0014520 > D o c G . U s e r P a g e E n 0014540 d t h e n \r \t \t \t \t n P a g e 0014560 s = n P a g e s + 1 \r \t \t \t ] \r 0014600 \t \t ] \r \t u n l e s s f o n t 0014620 f o u n d t h e n S p r u c 0014640 e C o n d i t i o n ( 6 0 5 , 0014660 E C F i l e T e r m i n a t e , 0014700 f i l e C o d e ) \r \r \t i f 0014720 p D o c > > D o c G . n C o p i 0014740 e s e \0 \0 @ \0 \0 306 X \0 c 306 317 0014760 \0 357 001 344 365 213 \0 \0 \n _ 302 \0 362 362 364 362 0015000 q 0 t h e n \r \t \t p D o c > 0015020 > D o c G . n C o p i e s = l a 0015040 s t C o p y - f i r s t C o p y 0015060 + 1 \r \t i f ( p D o c > > D o 0015100 c G . n C o p i e s < 0 ) 0015120 % ( p D o c > > D o c G . n 0015140 C o p i e s > 1 0 0 0 ) t h 0015160 e n S p r u c e C o n d i t i 0015200 o n ( 6 0 7 , E C F i l e T e 0015220 r m i n a t e , f i l e C o d 0015240 e ) \r \t i f p D o c > > D o c 0015260 G . d u p l e x d o \r \t \t [ \r 0015300 \t \t l e t n S h e e t s = 0015320 n P a g e s / 2 \r \t \t t e s t 0015340 n S h e e t s > 3 0 0 t h 0015360 e n [ p D o c > > D o c G . 0015400 d u p l e x = f a l s e ; 0015420 S p r u c e C o n d i t i o n ( 0015440 6 2 5 , E C W a r n i n g ) 0015460 ] \r \t \t o r i f n S h e e t 0015500 s * ( p D o c > > D o c G . n C 0015520 o p i e s ) > 3 0 0 d o [ 0015540 S p r u c e C o n d i t i o n 0015560 ( 6 2 6 , E C W a r n i n g ) 0015600 ; p D o c > > D o c G . n C o 0015620 p i e s = 3 0 0 / n S h e e 0015640 t s ] \r \t \t ] \r \t i f b r e 0015660 a k P a g e t h e n n P a g 0015700 e s = n P a g e s + ( ( C a p a 0015720 b i l i t i e s & m P i m F i l 0015740 e s ) e q 0 ? 1 , \0 \0 @ 0015760 \0 \0 001 354 363 213 \0 \0 \b _ 302 \0 366 366 370 366 0016000 ( C a p a b i l i t i e s & 0016020 m B l a c k H o u s i n g ) 0016040 e q 0 ? 3 , 4 ) \r \t p D o 0016060 c > > D o c G . n P a g e s = n 0016100 P a g e s \r \t p D o c > > D o c 0016120 G . n F o n t L o a d s = 0 \r \t 0016140 p D o c > > D o c G . n P a r t 0016160 s = n P a r t s \r \r \t c o m p i 0016200 l e i f R e p o r t S w t h 0016220 e n \r \t \t [ \r \t \t R e p o r t > 0016240 > R E P . n P a g e s = n P a g 0016260 e s \r \t \t R e p o r t > > R E P 0016300 . n C o p i e s = l a s t C o p 0016320 y - f i r s t C o p y + 1 \r \t \t 0016340 ] \r \r \t F S P u t ( D o c D i r 0016360 ) \t \t / / N o n e e d f o r 0016400 t h i s a n y m o r e \r \r 0016420 / / F O N T D I R 0016440 E C T O R Y \r \r \t C u r s o r D 0016460 i g i t ( ) \r \t S e t P a r t B 0016500 o u n d s ( E L , F o n t P a 0016520 r t > > P E . p S t a r t , F 0016540 o n t P a r t > > P E . p R e c 0016560 s ) \r \t S e t P o s i t i o n i 0016600 n P a r t ( E L , D P z e r o 0016620 ) \r \r / / G o t h r o u g h 0016640 d i r e c t o r y , e n t e 0016660 r i n g f o n t s i n t h 0016700 e f o n t L i s t ( F N ' s 0016720 ) \r / / t h a t a r e r e 0016740 q u \0 \0 @ \0 \0 306 363 001 016 307 020 001 ' 0016760 307 223 001 342 361 213 \0 \0 006 _ 302 \0 361 361 363 361 0017000 e s t e d i n t h e P r e 0017020 s s f i l e . \r \t b e s t B r 0017040 e a k F o n t = 0 \r \t l e t v 0017060 = v e c F E l e n \r [ f e \r \t 0017100 l e t l e n = W i n d o w R e 0017120 a d ( E L ) \r \t i f l e n n 0017140 e F E l e n t h e n \r \t \t [ 0017160 \t \t \t \t / / C a n n o t p r o 0017200 c e s s t h e s e f o n t 0017220 e n t r i e s \r \t \t i f l e n 0017240 e q 0 t h e n b r e a k 0017260 \r \t \t S p r u c e C o n d i t i 0017300 o n ( 6 0 9 , E C W a r n i n 0017320 g ) \r \t \t f o r i = 2 t o 0017340 F E l e n d o W i n d o w R 0017360 e a d ( E L ) \r \t \t l o o p \r \t 0017400 \t ] \r \t v ! 0 = l e n \r \t W i n 0017420 d o w R e a d B l o c k ( E L , 0017440 v + 1 , l e n - 1 ) \r \t l e 0017460 t b a d = f a l s e \r \t i f 0017500 v > > F E . s o u r c e n e 0017520 v > > F E . d e s t m t h e n 0017540 b a d = t r u e \r \t i f v > 0017560 > F E . s e t g r 6 3 % 0017600 v > > F E . f n o g r 1 5 0017620 t h e n b a d = t r u e \r \t t 0017640 e s t b a d t h e n \r \t \t [ 0017660 \r \t \t S p r u c e C o n d i t i 0017700 o n ( 6 0 6 , E C F i l e T e 0017720 r m i n a t e , f i l e C o d 0017740 e ) \r \t \t l \0 \0 @ 306 \0 \0 031 306 t 0017760 \0 230 001 346 357 213 \0 \0 004 _ 302 \0 363 363 365 363 0020000 o o p \r \t \t ] o r F E E n t 0020020 e r ( p D o c , v ) \r ] f e 0020040 r e p e a t \r \t t e s t b e s 0020060 t B r e a k F o n t e q 0 0020100 t h e n \r \t \t F E E n t e r L i 0020120 t e r a l ( p D o c , " H e l 0020140 v e t i c a " , 1 2 , 0 , 0020160 6 4 , 0 ) \r \t \t o r F E E n 0020200 t e r L i t e r a l ( p D o c , 0020220 l v b e s t B r e a k F o n 0020240 t > > F N . n a m e , \r \t \t \t - 0020260 b e s t B r e a k F o n t > > F 0020300 N . s i z , b e s t B r e a k 0020320 F o n t > > F N . f a c e , 6 0020340 4 , 0 ) \r \t l e t f e = v e 0020360 c s i z e F E / 1 6 \r \t M o 0020400 v e B l o c k ( f e , L o g o 0020420 F o n t , s i z e F E / 1 6 0020440 ) \r \t F E E n t e r ( p D o c , 0020460 f e ) \r \t / / A l t o R e 0020500 s o l u t i o n D o t s \r \t / 0020520 / ~ ~ e x p e n s i v e i 0020540 f n o t n e e d e d - - 0020560 i s t h e r e a w a y t 0020600 o w a i t ? \r \t / / ~ ~ L 0020620 a n d s c a p e m o d e o n 0020640 l y , f o r n o w - - s 0020660 i z e - 3 2 f o r P o r t 0020700 r a i t \r \t F E E n t e r L i t 0020720 e r a l ( p D o c , " D o t s 0020740 " , ( L a n d \0 \0 @ \0 \0 307 5 0020760 001 305 001 350 355 213 \0 \0 002 _ 302 \0 364 364 366 364 0021000 s c a p e D e v i c e ? - 2 5 0021020 6 , - 3 2 ) , 0 , 6 4 , 0021040 2 ) \r \r / / F O N T 0021060 B O O K s c a n \r \t C 0021100 u r s o r D i g i t ( ) \r \t F o 0021120 n t P a s s ( p D o c ) \r ] \r / 0021140 / R o u t i n e s f o r p l 0021160 a c i n g e n t r i e s i n 0021200 f o n t L i s t ( F N ' s ) 0021220 f r o m P r e s s f i l e 0021240 f o n t e n t r i e s . \r a 0021260 n d F E E n t e r ( p D o c , 0021300 f e ) b e \r [ \r \t t e s t 0021320 f e > > F E . s i z g r 0 0021340 t h e n f e > > F E . s i z = 0021360 M u l D i v ( f e > > F E . s i 0021400 z , 6 3 5 , 1 8 ) / / * 0021420 2 5 4 0 / 7 2 \r \t \t o r f e > 0021440 > F E . s i z = - f e > > F E . 0021460 s i z \r \t u n l e s s L a n d 0021500 s c a p e D e v i c e d o f 0021520 e > > F E . r o t n = f e > 0021540 > F E . r o t n + 9 0 * 6 0 0021560 / / r o t a t e 9 0 \r \r \t 0021600 l e t p = p D o c > > D o c G 0021620 . f o n t L i s t \r \t l e t f 0021640 o u n d = f a l s e \r \t w h i l 0021660 e p n e 0 d o \r \t \t [ \r 0021700 \t \t l e t d i f = f e > > F E 0021720 . s i z - p > > F N 302 _ 322 257 \0 0021740 \0 @ \0 \0 306 $ \0 > 302 _ \0 257 352 263 302 272 0021760 \0 304 001 332 353 213 \0 \0 \n 241 302 \0 355 355 361 357 0022000 . s i z \r \t \t i f d i f g e 0022020 - 2 & d i f l e 2 & 0022040 \r \t \t S t r E q ( l v f e 0022060 > > F E . f a m , l v p > > 0022100 F N . n a m e ) & \r \t \t f 0022120 e > > F E . r o t n e q p > 0022140 > F N . r o t a t i o n & \r \t 0022160 \t f e > > F E . f a c e e 0022200 q p > > F N . f a c e t h e 0022220 n \r \t \t \t [ \t \t \t / / F o u n d 0022240 i t ! \r \t \t \t f o u n d = t r 0022260 u e ; b r e a k \r \t \t \t ] \r \t 0022300 \t p = p > > F N . n e x t \r \t \t 0022320 ] \r \r / / I f w e g e t h 0022340 e r e , i t i s n e c e s 0022360 s a r y t o i n s e r t a 0022400 b a n d ( s i c ) n e w 0022420 e n t r y \r \t u n l e s s f o 0022440 u n d t h e n \r \t \t [ \r \t \t p 0022460 = F S G e t X ( s i z e F N / 0022500 1 6 , S p r u c e Z o n e , 0022520 0 ) \r \t \t p > > F N . n e x t = 0022540 p D o c > > D o c G . f o n t L 0022560 i s t ; p D o c > > D o c G . 0022600 f o n t L i s t = p \r \t \t p > > 0022620 F N . f a c e = f e > > F E . f 0022640 a c e \r \t \t p > > F N . s i z = 0022660 f e > > F E . s i z \r \t \t p > > 0022700 F N . r o t a t i o n = f e > > 0022720 F E . r o t n \r \t \t c o m p i l 0022740 e i f s i z e \0 \0 @ \0 \0 342 323 0022760 001 026 001 350 376 257 \0 \0 \b 241 302 \0 364 364 366 364 0023000 F E . f a m / 1 6 n e 1 0 0023020 % s i z e F N . n a m e / 0023040 1 6 n e 1 0 t h e n [ 0023060 f o o = n i l ] \r \t \t M o v e 0023100 B l o c k ( l v p > > F N . n 0023120 a m e , l v f e > > F E . f 0023140 a m , 1 0 ) \r \t \t i f D e f 0023160 a u l t F o n t N a m e ( l v 0023200 p > > F N . n a m e ) & \r \t \t 0023220 p > > F N . s i z g r 3 0023240 5 0 & p > > F N . s i z l 0023260 s 5 0 0 & \r \t \t ( b e s 0023300 t B r e a k F o n t e q 0 0023320 % p > > F N . s i z g r b 0023340 e s t B r e a k F o n t > > F N 0023360 . s i z ) \r \t \t \t t h e n b e 0023400 s t B r e a k F o n t = p \r \t \t 0023420 ] \r \r \t l e t u = p > > F N . 0023440 p r e s s U s e s + 1 \r \t p > > 0023460 F N . p r e s s U s e s = u \r \t 0023500 l e t u s e = U s e E n t 0023520 r y ( p , u ) \r \t u s e > > F 0023540 N U s e . u S e t = f e > > F E 0023560 . s e t \r \t u s e > > F N U s e 0023600 . u F o n t = f e > > F E . f n 0023620 o \r ] \r \r / / E n t e r a 0023640 f o n t l i t e r a l l y f 0023660 r o m n a m e a n d s i z 0023700 e . T h i s i s n e c e 0023720 s s a r y \r / / t o g e t 0023740 b r e a k - p a g e \0 \0 @ \0 \0 0023760 343 225 001 352 374 257 \0 \0 006 241 302 \0 365 365 367 365 0024000 f o n t s ( f o n t s e t 0024020 6 4 ) . \r \r a n d F E E n t e 0024040 r L i t e r a l ( p D o c , n 0024060 a m , s i z , f a c e , s 0024100 e t , f o n t ) b e \r [ \r \t 0024120 l e t f e = v e c s i z e 0024140 F E / 1 6 \r \t f e > > F E . s e 0024160 t = s e t ; f e > > F E . f n 0024200 o = f o n t \r \t M o v e B l o c 0024220 k ( l v f e > > F E . f a m , 0024240 n a m , s i z e F E . f a 0024260 m / 1 6 ) \r \t f e > > F E . f a 0024300 c e = f a c e \r \t f e > > F E . 0024320 s i z = s i z \r \t f e > > F E . 0024340 r o t n = 0 \r \t F E E n t e r ( 0024360 p D o c , f e ) \r ] \r \r a n d 0024400 U s e E n t r y ( f n , i n 0024420 d e x ) = v a l o f \r \t [ \r 0024440 \t / / i n d e x a s s u m e 0024460 d p o s i t i v e \r \t / / y 0024500 i e l d s p o i n t e r t o 0024520 i n d e x ' t h s e t / f o 0024540 n t p a i r , g e n e r a t 0024560 i n g n e w b l o c k s i 0024600 f n e c e s s a r y \r \t i n d 0024620 e x = i n d e x - 1 \r \t 0024640 l e t c u r U s e = l v 0024660 f n > > F N . u s e L i s t \r \t 0024700 f o r i = 0 t o i n d 0024720 e x r s h i f t l n \0 \0 @ 0024740 342 \0 \0 025 352 032 302 ( \0 I 353 001 001 \t 343 0024760 001 214 001 334 372 257 \0 \0 004 241 302 \0 356 356 360 356 0025000 M a x P r e s s U s e s d o 0025020 / / a l w a y s h a p p e n 0025040 s a t l e a s t o n c e \r 0025060 \t \t [ \r \t \t l e t n e x t U s 0025100 e = @ c u r U s e \r \t \t u n 0025120 l e s s n e x t U s e d o \r 0025140 \t \t [ \r \t \t n e 0025160 x t U s e = F S G e t X ( s 0025200 i z e U S e B l o c k / 1 6 ) 0025220 \r \t \t n e x t U s e ! 0 0025240 = 0 \r \t \t @ c u r U 0025260 s e = n e x t U s e \r \t \t 0025300 ] \r \t \t c u r U s e = 0025320 n e x t U s e \r \t \t ] \r \t r e s 0025340 u l t i s l v c u r U s e > 0025360 > U S e B l o c k . f n U s e ^ 0025400 ( ( i n d e x & m a s k M a x P 0025420 r e s s U s e s ) + 1 ) \r \t ] \r 0025440 \r / / R e c o g n i z e a 0025460 d e f a u l t f o n t n a m 0025500 e \r \r a n d D e f a u l t F o 0025520 n t N a m e ( n ) = S t r E 0025540 q ( n , " H e l v e t i c a " 0025560 ) % S t r E q ( n , " T i m e 0025600 s R o m a n " ) \r \r / / C o m 0025620 p a r e t w o s t r i n g s 0025640 , i g n o r i n g c a s e \r 0025660 \r a n d S t r E q ( a , b ) 0025700 = v a l o f \r [ \r \t i f a 0025720 > > S T R . l e n g t h \0 \0 @ 0025740 \0 \0 343 ! 001 B 353 G 001 V 343 212 001 260 353 265 0025760 001 272 001 334 370 257 \0 \0 002 241 302 \0 356 356 360 356 0026000 n e b > > S T R . l e n g t 0026020 h t h e n r e s u l t i s 0026040 f a l s e \r \t f o r i = 1 t 0026060 o a > > S T R . l e n g t h 0026100 d o \r \t \t i f ( ( a > > S T R 0026120 . c h a r ^ i x o r b > > S 0026140 T R . c h a r ^ i ) & ( n o t 0026160 # 4 0 ) ) n e 0 t h e n 0026200 r e s u l t i s f a l s e \r 0026220 \t r e s u l t i s t r u e \r ] 0026240 \r / / F O N T p a s 0026260 s : s c a n t h e f o n t 0026300 d i r e c t o r y , l o o k 0026320 i n g f o r t h i n g s . \r 0026340 a n d F o n t P a s s ( p D o 0026360 c ) b e \r [ \r / / F i r s t , 0026400 l o o k u p a l l e n t 0026420 i r e s i n t h e f o n t 0026440 f i l e \r \t A s s i g n F r o 0026460 m F o n t F i l e ( p D o c ) \r 0026500 \r / / N o w , s o r t f o n 0026520 t L i s t b y a s c e n d i 0026540 n g a d d r e s s i n t h 0026560 e f o n t f i l e \r / / T 0026600 h i s i s i n t e n d e d 0026620 t o c u t d o w n o n f 0026640 i l e t h r a s h i n g . \r \t 0026660 l e t c h a n g e s = n i l \r 0026700 \t [ \r \t c h a n g e s = f a l s 0026720 e \r \t l e t p 302 241 322 340 \0 \0 @ 0026740 \0 \0 302 241 \0 340 352 344 \0 354 342 370 001 & 343 A 0026760 001 257 001 330 366 257 \0 \0 ! ) 302 \0 354 354 360 356 0027000 r e v = ( l v p D o c > > D o 0027020 c G . f o n t L i s t ) - o f f 0027040 s e t F N . n e x t \r \t \t [ \r 0027060 \t \t l e t p = p r e v > > F N 0027100 . n e x t \r \t \t l e t n = p > 0027120 > F N . n e x t \r \t \t i f p 0027140 e q 0 % n e q 0 t h 0027160 e n b r e a k \r \t \t l e t a 0027200 = v e c 2 \r \t \t D o u b l e C 0027220 o p ( a , l v n > > F N . s 0027240 a ) \r \t \t D o u b l e S u b ( a 0027260 , l v p > > F N . s a ) \r \t 0027300 \t i f a ! 0 l s 0 t h e 0027320 n \r \t \t \t [ \t \t \t \t / / E x c h 0027340 a n g e p , n \r \t \t \t p > > F 0027360 N . n e x t = n > > F N . n e x 0027400 t \r \t \t \t n > > F N . n e x t = 0027420 p \r \t \t \t p r e v > > F N . n e 0027440 x t = n \r \t \t \t p = n \r \t \t \t c 0027460 h a n g e s = t r u e \r \t \t \t ] 0027500 \r \t \t i f a ! 0 e q 0 & 0027520 a ! 1 e q 0 t h e n \r \t 0027540 \t \t [ \t \t \t \t / / A s s i g n e 0027560 d t o s a m e f o n t i 0027600 n f o n t f i l e : m e r 0027620 g e \r \t \t \t f o r i = 1 t o 0027640 n > > F N . p r e s s U s e s 0027660 d o \r \t \t \t \t [ \r \t \t \t \t l e 0027700 t c = p > > F N . p r e s s U 0027720 s e s + 1 \r \t \t \t \t p > > F N . 0027740 p r e s s U s e \0 \0 @ \0 \0 343 g 0027760 001 222 001 350 376 340 \0 \0 037 ) 302 \0 364 364 366 364 0030000 s = c \r \t \t \t \t l e t u P , 0030020 u N = U s e E n t r y ( p , 0030040 c ) , U s e E n t r y ( n , 0030060 i ) \r \t \t \t \t u P > > F N U s 0030100 e . u S e t = u N > > F N U s e 0030120 . u S e t \r \t \t \t \t u P > > F N 0030140 U s e . u F o n t = u N > > F N 0030160 U s e . u F o n t \r \t \t \t \t ] \r 0030200 \t \t \t p > > F N . n e x t = n > 0030220 > F N . n e x t \t / / R e m o v 0030240 e f r o m l i s t \r \t \t \t l 0030260 e t u = n > > F N . u s e 0030300 L i s t \r \t \t \t w h i l e u 0030320 d o [ l e t n e x t U = 0030340 @ u ; F S P u t ( u ) ; u 0030360 = n e x t U ] \r \t \t \t F S 0030400 P u t ( n ) \r \t \t \t p = p r e v 0030420 \t \t \t / / L o o k a g a i n \r 0030440 \t \t \t ] \r \t \t p r e v = p \r \t \t 0030460 ] r e p e a t \r \t ] r e p e 0030500 a t u n t i l c h a n g e s 0030520 e q f a l s e \r \r / / A s s i 0030540 g n I C C ' s f o r a l l 0030560 f o n t s \r \t l e t I C C b 0030600 a s e = 0 \r \t l e t p = p D o 0030620 c > > D o c G . f o n t L i s t 0030640 \r \t w h i l e p n e 0 d 0030660 o \r \t \t [ \r \t \t p > > F N . I C 0030700 C O f f s e t = I C C b a s e \r 0030720 \t \t I C C b a s e = I C C b a s 0030740 e + p > \0 \0 @ \0 \0 342 231 \0 254 343 Z 0030760 001 w 001 344 374 340 \0 \0 035 ) 302 \0 362 362 364 362 0031000 > F N . e c - p > > F N . b c + 0031020 1 \r \t \t p = p > > F N . n e x t 0031040 \r \t \t ] \r \t p D o c > > D o c G 0031060 . I C C t o t a l = I C C b a s 0031100 e \r ] \r \r a n d A s s i g n F 0031120 r o m F o n t F i l e ( p D o c 0031140 ) b e \r [ \r \t W i n d o w S e 0031160 t P o s i t i o n ( F o n t W i 0031200 n d o w , D P z e r o ) \r \t l 0031220 e t v = v e c I X L M a x \r 0031240 \t / / r a n g e c h e c k 0031260 f o r P r e s s f i l e d 0031300 a t e - - i f n o t b e 0031320 t w e e n 1 9 7 4 a n d 1 0031340 9 8 9 , s e t t o 1 - 1 - 0031360 0 1 \r \t l e t h i D a t e = 0031400 p D o c > > D o c G . d a t e 0031420 0 r s h i f t 1 / / a p 0031440 p r o x . d a y s s i n c e 0031460 1 9 0 1 \r \t u n l e s s H I 0031500 1 1 7 4 l e h i D a t e & 0031520 h i D a t e l e H I 1 2 3 0031540 1 8 9 d o Z e r o ( l v p 0031560 D o c > > D o c G . d a t e , 0031600 2 ) \r \t h i D a t e = p D o 0031620 c > > D o c G . d a t e 0 \r \t l 0031640 e t f a m i l y N a m e s = 0031660 F S G e t X ( 2 5 6 , S p r 0031700 u c e Z o n e , 0 ) \r \t l e t 0031720 w a r n i n g I s s u e d = 0031740 \0 \0 @ \0 \0 352 I \0 [ 342 240 \0 363 343 033 0031760 001 5 001 340 372 340 \0 \0 033 ) 302 \0 360 360 362 360 0032000 f a l s e \r \r [ r e \r \t v ! 0 0032020 = W i n d o w R e a d ( F o n t 0032040 W i n d o w ) \r \t W i n d o w R 0032060 e a d B l o c k ( F o n t W i n 0032100 d o w , v + 1 , v > > I X H 0032120 . L e n g t h - 1 ) \r \t l e t 0032140 t y p = v > > I X H . T y p e \r 0032160 \t s w i t c h o n t y p i n 0032200 t o \r \t [ \r \t c a s e I X 0032220 T y p e E n d : b r e a k \r \t 0032240 c a s e I X T y p e N a m e 0032260 : \r \t \t [ \r \t \t l e t c o d e 0032300 = v > > I X N . C o d e \r \t 0032320 \t l e t p = p D o c > > D o c 0032340 G . f o n t L i s t \r \t \t w h i 0032360 l e p n e 0 d o \r \t \t \t 0032400 [ \r \t \t \t i f S t r E q ( l v 0032420 p > > F N . n a m e , l v 0032440 v > > I X N . N a m e ) % \r \t 0032460 \t \t ( p > > F N . m a t c 0032500 h e q 0 & D e f a u l t 0032520 F o n t N a m e ( l v v > > I 0032540 X N . N a m e ) ) t h e n \r \t 0032560 \t \t \t [ \r \t \t \t \t p > > F N . m 0032600 a t c h = 1 \r \t \t \t \t p > > F N 0032620 . f a m = c o d e \r \t \t \t \t ] \r 0032640 \t \t \t p = p > > F N . n e x t \r 0032660 \t \t \t ] \r \t \t i f c o d e > 0032700 2 5 5 t h e n S p r u c 0032720 e E r r o r ( 6 2 1 ) / / 0032740 q u i t i f S p r u \0 \0 @ 0032760 \0 \0 001 354 370 340 \0 \0 031 ) 302 \0 366 366 370 366 0033000 c e . F o n t s t o o b i g 0033020 \r \t \t l e t n = F S G e t 0033040 X ( 1 0 ) \r \t \t M o v e B l o c 0033060 k ( n , l v v > > I X N . N 0033100 a m e , 1 0 ) \r \t \t f a m i l 0033120 y N a m e s ! c o d e = n \r 0033140 \t \t e n d c a s e \r \t \t ] \r \t 0033160 c a s e I X T y p e C h a r s 0033200 : \r \t \t u n l e s s w a r n i 0033220 n g I s s u e d d o S p r u 0033240 c e C o n d i t i o n ( 6 2 0 , 0033260 E C W a r n i n g ) \r \t \t w a 0033300 r n i n g I s s u e d = t r 0033320 u e \r \t c a s e I X T y p e 0033340 O r b i t C h a r s : \r \t c a 0033360 s e I X T y p e M u l t i C h 0033400 a r s : \r \t [ \r \t l 0033420 e t p = p D o c > > D o c G . 0033440 f o n t L i s t \r \t w h i 0033460 l e p n e 0 d o \r \t 0033500 [ 0 \r \t l e 0033520 t m = M a t c h ( v , p ) \r 0033540 \t i f m g r p 0033560 > > F N . m a t c h t h e n \r 0033600 \t \t [ 1 \r \t \t p > > F N . m a t 0033620 c h = m \r \t \t p > > F N . b c = 0033640 v > > I X . b c ; p > > F N . 0033660 e c = v > > I X . e c \r \t \t p > 0033700 > F N . n e w F a m = v > > 0033720 I X . f a m \r \t \t p > > F N . n 0033740 e w F a c e = v > > \0 \0 @ 0033760 \0 \0 001 354 366 340 \0 \0 027 ) 302 \0 366 366 370 366 0034000 I X . f a c e \r \t \t p > > F N . 0034020 n e w S i z e = v > > I X . 0034040 s i z \r \t \t p > > F N . n e w R 0034060 o t = v > > I X . r o t a t 0034100 i o n \r \t \t D o u b l e C o p ( 0034120 l v p > > F N . s a , l v 0034140 v > > I X . s a ) \r \t \t D o u b 0034160 l e C o p ( l v p > > F N . w 0034200 i d t h S a , l v v > > I X 0034220 . s a ) \r \t \t i f t y p e q 0034240 I X T y p e M u l t i C h a r 0034260 s t h e n / / s a , w i 0034300 d t h S a s e t t i n g s a 0034320 r e m o r e c o m p l i c a 0034340 t e d \r \t \t [ 2 \r \t \t D 0034360 o u b l e C o p ( l v p > > F 0034400 N . s a , l v v > > I X M . 0034420 s e g s ^ 1 . s a ) / / r a 0034440 s t e r s f r o m f i r s t 0034460 e n t r y \r \t \t w a r n i 0034500 n g I s s u e d = f a l s e 0034520 / / u s e t h i s a s 0034540 " f o u n d " f l a g \r \t \t / 0034560 / d a t e i n f o n t f 0034600 i l e i s e x p i r a t i o 0034620 n d a t e . A s o f t h 0034640 a t i n s t a n t t h e e 0034660 n t r y h a s e x p i r e d 0034700 \r \t \t f o r i = v > > 0034720 I X M . n u m S e g s \0 \0 @ 0034740 \0 \0 342 267 \0 344 343 033 001 6 343 Q 001 l 343 m 0034760 001 301 001 334 364 340 \0 \0 025 ) 302 \0 356 356 360 356 0035000 t o 1 b y - 1 d o \r \t \t 0035020 [ 3 \r \t \t l e t 0035040 h i E x p D a t e = v > > 0035060 I X M . s e g s ^ i . d a t e 0 0035100 \r \t \t i f U g t ( h i 0035120 E x p D a t e , h i D a t e ) 0035140 % \r \t \t \t h i E x p D a t e 0035160 e q h i D a t e & U g t ( 0035200 v > > I X M . s e g s ^ i . d a 0035220 t e 1 , p D o c > > D o c G . 0035240 d a t e 1 ) t h e n \r \t \t \t [ 0035260 4 \r \t \t \t w a r n i n g I s s u 0035300 e d = t r u e \r \t \t \t D o u 0035320 b l e C o p ( l v p > > F N . 0035340 w i d t h S a , l v v > > I 0035360 X M . s e g s ^ i . s a ) \r \t \t 0035400 \t b r e a k \r \t \t \t ] 4 \r \t \t 0035420 ] 3 \r \t \t u n l e s s 0035440 w a r n i n g I s s u e d d 0035460 o S p r u c e E r r o r ( 6 3 0035500 0 ) / / W e ' r e i n t 0035520 e r r i b l e s h a p e \r \t \t 0035540 ] 2 \r \t \t ] 1 \r \t 0035560 p = p > > F N . n e x t \r \t 0035600 ] 0 \r ] r e r e p e 0035620 a t \r l e t p = p D o c > 0035640 > D o c G . f o n t L i s t \r w 0035660 h i l e p d o \r \t [ \r \t l e 0035700 t n e w F a m = p > > F N 0035720 . n e w F a m \r \t l e t s u b 0035740 s t = ( ( \0 \0 @ \0 \0 343 C 0035760 001 ] 001 350 362 340 \0 \0 023 ) 302 \0 364 364 366 364 0036000 p > > F N . p r e s s U s e s 0036020 > 1 % p > > F N . p r e s 0036040 s U s e s e q 1 & \r \t 0036060 ( p > > F N . u s e L i s t ) 0036100 > > U S e B l o c k . f n U s e 0036120 ^ 1 . u S e t n e 6 4 ) & 0036140 p > > F N . m a t c h < 1 0036160 0 0 0 - 2 ) % \r \t \t n o t 0036200 S t r E q ( l v p > > F N . n 0036220 a m e , f a m i l y N a m e s 0036240 ! n e w F a m ) \r \t i f s u b 0036260 s t t h e n [ s u b s t 0036300 = F S G e t X ( s i z e F N 0036320 / 1 6 ) ; M o v e B l o c k ( 0036340 s u b s t , p , s i z e F 0036360 N / 1 6 ) \r \t \t \t \t M o v e 0036400 B l o c k ( l v p > > F N . n 0036420 a m e , f a m i l y N a m e s 0036440 ! n e w F a m , 1 0 ) ] \r \t 0036460 p > > F N . f a m = n e w F 0036500 a m ; p > > F N . f a c e = 0036520 p > > F N . n e w F a c e \r \t 0036540 p > > F N . s i z = p > > F 0036560 N . n e w S i z e ; p > > F N 0036600 . r o t a t i o n = p > > F 0036620 N . n e w R o t \r \t i f s u b 0036640 s t t h e n [ S p r u c e 0036660 C o n d i t i o n ( 6 4 0 , E C 0036700 W a r n i n g , p , s u b s 0036720 t ) ; F S P u t ( s u b s t ) 0036740 ] \r \t p = p > > F \0 \0 @ 0036760 \0 \0 001 354 360 340 \0 \0 021 ) 302 \0 366 366 370 366 0037000 N . n e x t \r \t ] \r f o r i 0037020 = 0 t o 2 5 5 d o i f 0037040 f a m i l y N a m e s ! i t 0037060 h e n F S P u t ( f a m i l y 0037100 N a m e s ! i ) ; F S P u t ( 0037120 f a m i l y N a m e s ) \r ] \r \r 0037140 / / N o t e d i s t a n c e 0037160 f u n c t i o n o f s i z 0037200 e * r e s o l u t i o n - - 0037220 t h i s a l l o w s r o u g 0037240 h \r / / m a t c h e s f r o 0037260 m a l l s o r t s o f f 0037300 o n t s e t s ! \r / / ( L H 0037320 R : T h e a b o v e c o m 0037340 m e n t i s n o w f a l s 0037360 e : r e s o l u t i o n i s 0037400 i g n o r e d . ) \r \r a n d 0037420 M a t c h ( i x , f n ) = 0037440 v a l o f \r [ \r / / C o m p u 0037460 t e " p o i n t s i z e " 0037500 o f c h a r i n s c a n - 0037520 l i n e s . v a r i a n c e o 0037540 f S p r u c e f o n t f r 0037560 o m r e q u e s t e d \r / / 0037600 f o n t a n d a d j u s t 0037620 s o t h a t 2 5 % v a r i 0037640 a n c e c o n t r i b u t e s 0037660 a s m u c h a s d i f f 0037700 e r e n t f a m i l y \r / / 0037720 M a x i m u m d i f f e r e n 0037740 c e \0 \0 @ \0 \0 342 ` 001 \v 353 020 001 025 0037760 343 ( 001 342 356 340 \0 \0 017 ) 302 \0 361 361 363 361 0040000 c o n t r i b u t i o n = 0040020 2 0 0 \r / / l e t r x = 0040040 i x - ( i x > > I X H . T 0040060 y p e e q I X T y p e M u l 0040100 t i C h a r s ? ( o f f s e t 0040120 I X . r e s o l u t i o n x - 0040140 o f f s e t I X M . r e s o l 0040160 u t i o n x ) / 1 6 , 0 ) \r 0040200 l e t f o n t S i z = i 0040220 x > > I X . s i z \r l e t 0040240 r e q S i z = f n > > F N . 0040260 s i z \r l e t d i f = 0040300 f o n t S i z - r e q S i z \r 0040320 i f d i f l s 0 t h e 0040340 n d i f = - d i f \r i f 0040360 d i f t h e n / / d i 0040400 f i s n o n - z e r o , s 0040420 o h o w b a d a r e t h 0040440 i n g s ? \r \t t e s t d i f 0040460 g r r e q S i z \r \t \t i f s 0040500 o d i f = 2 0 0 \r \t \t i f n o 0040520 t [ d i f = M u l D i v ( d 0040540 i f , 6 0 0 , r e q S i z ) 0040560 ; i f d i f g r 2 0 0 0040600 t h e n d i f = 2 0 0 ] \r / 0040620 / N o w a s p e c i a l 0040640 h a c k t o m a k e 8 p 0040660 o i n t f o n t b e u s e 0040700 d i f n o g o o d m a t 0040720 c h i s a r o u n d \r i 0040740 f d i f \0 \0 @ 342 \0 \0 024 343 217 0040760 001 335 001 346 354 340 \0 \0 \r ) 302 \0 363 363 365 363 0041000 e q 2 0 0 & M u l D i v ( 0041020 f o n t S i z , 7 2 , 2 5 4 0 ) 0041040 e q 8 t h e n d i f = 1 0041060 9 9 \r \r / / R o t a t i o n : 0041100 c o n t r i b u t i o n = 0041120 4 0 0 \r \t l e t r d = i x > > 0041140 I X . r o t a t i o n - f n > > 0041160 F N . r o t a t i o n \r \t i f 0041200 r d l s 0 t h e n r d = 0041220 - r d \r \t w h i l e r d g r 0041240 ( 1 8 0 * 6 0 ) d o r d = 0041260 r d - ( 3 6 0 * 6 0 ) \r \t i f 0041300 r d l s 0 t h e n r d = 0041320 - r d \r \t r d = M u l D i v ( r 0041340 d , 4 0 0 , 9 0 * 6 0 ) / / 0041360 9 0 d e g r e e s i s 4 0 0041400 0 b a d \r \t i f r d g r 0041420 4 0 0 t h e n r d = 4 0 0 \r 0041440 \t d i f = d i f + r d \r \r / / 0041460 F a c e : c o n t r i b u t i 0041500 o n = 3 0 i f P A R C - 0041520 f a c e a n d c l o s e , 0041540 6 0 i f n o t \r \t i f i x > 0041560 > I X . f a c e n e f n > > 0041600 F N . f a c e t h e n \r \t 0041620 [ d i f = d i f + 6 0 0041640 \r \t i f i x > > I X 0041660 . f a c e l e 3 & f n > 0041700 > F N . f a c e l e 3 & 0041720 ( ( i x > > I X . f a c e & 0041740 f n > > \0 \0 @ \0 \0 342 4 \0 T 343 - 0041760 001 i 001 344 352 340 \0 \0 \v ) 302 \0 362 362 364 362 0042000 F N . f a c e ) n e 0 ) \r \t 0042020 \t \t t h e n d i f = d i f - 3 0042040 0 \r \t ] \r / / F a m i l 0042060 y : c o n t r i b u t i o n 0042100 = 2 5 0 \r \t i f i x > > I X 0042120 . f a m n e f n > > F N . f 0042140 a m t h e n d i f = d i f + 0042160 2 5 0 \r \t r e s u l t i s 1 0 0042200 0 0 - d i f \r ] \r \r / / D C S 0042220 , J u l y 2 7 , 1 9 7 7 0042240 1 0 : 0 4 P M , d e r i v 0042260 e d ( l o o s e l y ) f r o 0042300 m " P r e s s " v e r s i o 0042320 n \r / / \t ( o n l y m i n o r 0042340 f i l e o p e n / c l o s e 0042360 c h a n g e s ) \r / / A u g 0042400 u s t 1 , 1 9 7 7 1 0 : 0042420 5 4 P M , u s e f i l e 0042440 n a m e f r o m P r e s s 0042460 f i l e i f i t e x i s t 0042500 s . \r / / A u g u s t 4 , 0042520 1 9 7 7 9 : 4 5 P M , a 0042540 d j u s t # B a n d F i l e 0042560 b u f f e r s t o n M a x 0042600 M e r g e I n p u t s + 1 \r / / 0042620 A u g u s t 2 6 , 1 9 7 7 0042640 8 : 1 7 A M , a d d I 0042660 n t e r p r e t - - m a i n 0042700 f i l e i n t e r p r e t a 0042720 t i o n c o n t r o l \r / / 0042740 A u g u s t 2 \0 \0 @ \0 \0 342 ( 0042760 \0 F 001 350 350 340 \0 \0 \t ) 302 \0 364 364 366 364 0043000 6 , 1 9 7 7 1 0 : 3 7 A 0043020 M , r e m o v e I n t e r p 0043040 r e t a g a i n \r / / S e p 0043060 t e m b e r 2 5 , 1 9 7 7 0043100 1 1 : 4 3 A M , h a n d l 0043120 e p o r t r a i t m o d e 0043140 d e v i c e i n f o n t r 0043160 e q u e s t s \r / / S e p t e 0043200 m b e r 3 0 , 1 9 7 7 1 0043220 1 : 4 2 P M , t h r e e c 0043240 o l o r b r e a k p a g e \r 0043260 / / O c t o b e r 3 , 1 9 0043300 7 7 8 : 3 6 A M , a d d 0043320 d o t s f o n t \r / / O c 0043340 t o b e r 1 6 , 1 9 7 7 0043360 2 : 4 8 P M , a d d " v e 0043400 r t i c a l d o t s " f o r 0043420 l a n d s c a p e m o d e 0043440 d e v i c e \r / / O c t o b e 0043460 r 2 7 , 1 9 7 7 4 : 4 5 0043500 P M , P i m l i c o ! \r / / 0043520 D e c e m b e r 7 , 1 9 7 0043540 7 1 0 : 0 7 A M , r e p 0043560 o r t p o o r f o n t m a 0043600 t c h e s i n V e r b o s e 0043620 m o d e \r / / D e c e m b e 0043640 r 9 , 1 9 7 7 4 : 3 0 0043660 P M , d o n ' t r e p o r t 0043700 b r e a k f o n t f i r s 0043720 t c h o i c e n o t f o u 0043740 n d \r / / D e c e m b \0 \0 @ 0043760 \0 \0 001 354 346 340 \0 \0 \a ) 302 \0 366 366 370 366 0044000 e r 2 1 , 1 9 7 7 4 : 1 0044020 9 P M , a d d O p e n F o 0044040 r F o n t s , b e t t e r b 0044060 u f f e r m a n a g e m e n t 0044100 \r / / F e b r u a r y 3 , 0044120 1 9 7 8 3 : 4 1 P M , f 0044140 u z z u p f o n t m a t c 0044160 h a b i t \r / / F e b r u 0044200 a r y 1 5 , 1 9 7 8 8 : 0044220 4 6 A M , r e m o v e r e 0044240 s t r i c t i o n o n n u m 0044260 b e r o f r e f s t o s 0044300 i n g l e f o n t \r / / M a 0044320 y 9 , 1 9 7 8 1 0 : 1 1 0044340 A M , a c c o m m o d a t e 0044360 I X T y p e O r b i t C h a r 0044400 s , I X T y p e M u l t i C h 0044420 a r s , t o a l l o w \r / / 0044440 \t a c c o m m o d a t i o n o 0044460 f m u l t i p l e f o n t s 0044500 . w i d t h s i n P r e s s 0044520 f i l e c r e a t i o n \r / 0044540 / J u n e 9 , 1 9 7 8 0044560 8 : 4 8 A M , d a t e i n 0044600 m u l t i - w i d t h s e n 0044620 t r y i s e x p i r a t i o 0044640 n d a t e , n o t e f f e 0044660 c t i v e d a t e \r / / J u 0044700 n e 1 4 , 1 9 7 8 6 : 3 0044720 2 P M , r e p a i r e x p 0044740 i r a t i o n d a t e \0 \0 @ 0044760 \0 \0 001 354 344 340 \0 \0 005 ) 302 \0 366 366 370 366 0045000 c o m p a r i s o n s \r / / 0045020 S e p t e m b e r 2 2 , 1 9 0045040 7 8 9 : 2 1 P M , r e p 0045060 o r t h o s t o n h o p e 0045100 l e s s P r e s s f i l e s 0045120 . \r / / O c t o b e r 1 5 , 0045140 1 9 7 8 3 : 2 2 P M , 0045160 m o d i f y b u f f e r i n g 0045200 f o r u s e w i t h f a 0045220 s t f i l e s \r / / O c t o 0045240 b e r 2 5 , 1 9 7 8 6 : 0045260 3 0 A M , t u n e u p b 0045300 u f f e r i n g \r / / O c t o 0045320 b e r 3 1 , 1 9 7 8 8 : 0045340 1 1 A M , a d j u s t b u 0045360 f f e r i n g v a l u e s f 0045400 o r B a n d , P r e s s f 0045420 i l e s ( r e d u c e ) \r / / 0045440 N o v e m b e r 1 0 , 1 9 0045460 7 8 2 : 0 8 P M , o f f 0045500 e r b e t t e r e r r o r 0045520 r e p o r t i n g o n f o n 0045540 t s u b s t i t u t i o n \r / 0045560 / D e c e m b e r 6 , 1 9 0045600 7 8 1 1 : 0 4 A M u s e 0045620 C a p a b i l i t i e s i n 0045640 s t e a d o f p r i n t e r 0045660 D e v i c e t o d e t e r m 0045700 i n e n u m b e r o f b r 0045720 e a k p a g e s \r / / M a r 0045740 c h 2 0 , 1 9 7 9 \0 \0 @ 0045760 \0 \0 001 354 342 340 \0 \0 003 ) 302 \0 366 366 370 366 0046000 1 : 5 8 P M f o u r c o 0046020 l o r p u f f i n \r / / A u 0046040 g u s t 1 , 1 9 7 9 3 : 0046060 0 5 P M , m B l a c k b e 0046100 c a m e m B l a c k H o u s i 0046120 n g ! ! ? ? \r / / A u g u s t 0046140 2 4 , 1 9 7 9 1 : 1 0 0046160 P M , r e a s o n a b l e n e 0046200 s s c h e c k o n n C o p 0046220 i e s ; p r o t e c t a g a 0046240 i n s t p e n g u i n a u x 0046260 t r a y o v e r f l o w \r / 0046300 / N o v e m b e r 1 6 , 1 0046320 9 7 9 2 : 2 3 P M , g e 0046340 t l o g o f o n t f r o m 0046360 L o g o F o n t \r / / J a n 0046400 u a r y 1 8 , 1 9 8 0 1 0046420 2 : 1 6 P M , u s e D o c 0046440 G . d u p l e x \r / / M a y 0046460 1 3 , 1 9 8 0 , 4 : 2 5 P 0046500 M , f i x f o n t s u b s 0046520 t i t u t i o n m s g t o 0046540 u s e r i g h t n a m e s \r 0046560 / / M a y 1 4 , 1 9 8 0 , 0046600 2 : 2 3 P M , c h a n g e 0046620 f o n t m a t c h a l g o 0046640 r i t h m \r / / M a y 2 0 , 0046660 1 9 8 0 , 9 : 2 8 A M , 0046700 r e p a i r f o n t m a t c 0046720 h a l g o r i \0 006 020 @ 377 v 037 \0 0046740 \a \0 035 \0 \0 ( 303 ) 001 p 001 246 \0 \0 @ 0046760 \0 \0 001 330 340 340 \0 \0 003 222 \0 \0 363 354 370 366 0047000 t h m \r / / J u n e 2 , 1 0047020 9 8 0 , 4 : 0 6 P M , m o 0047040 r e r e p a i r \r / / J u l 0047060 y 1 8 , 1 9 8 0 , 1 2 : 0 0047100 2 P M , A l l o w u p t 0047120 o 2 5 6 f a m i l y n a m 0047140 e s \r / / J u l y 2 2 , 0047160 1 9 8 0 , 3 : 4 8 P M , d 0047200 o n ' t d i v i d e b y r 0047220 e q S i z e i f i t i s 0047240 0 ( M a t c h ) \r / / O c 0047260 t o b e r 6 , 1 9 8 0 , 1 0047300 : 1 2 P M , d o n ' t l e 0047320 t F E E n t e r c l o b b e 0047340 r L o g o F o n t \r / / J a 0047360 n u a r y 2 7 , 1 9 8 1 , 0047400 1 0 : 1 0 P M , c h a n g e 0047420 m a t c h e r t o a v o i 0047440 d o v e r f l o w i n 0047460 s i z e p o r t i o n \r / / 0047500 J a n u a r y 2 8 , 1 9 8 1 0047520 , 1 1 : 3 0 P M , a d j u 0047540 s t m a t c h e r t o u s 0047560 e s m a l l f o n t t o 0047600 m a t c h " s i z e 0 " \r / 0047620 / \r \r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0047640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0047720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 006 020 @ 0047740 377 v 037 \0 \a \0 035 \0 \0 ( 001 222 \0 \0 @ 0047760 \0 \0 001 223 377 246 \0 \0 001 223 001 223 365 356 370 366 0050000