;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                          S T R I N G S                                *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

(set #MSG_INTRO "\nWith this script you can install new truetype fonts. Do you want to continue?")
(set #MSG_NOFONTDIR "\nYou forgot to run the \"Prepare Font Directory\" script. You can't continue before having done that ...");
(set #MSG_SELECTFONT "Choose the truetype font you want to install (file must end in \".ttf\" or \".ttc\")!");
(set #MSG_NOTEXIST "\nFont file does not exist!? Try again ...")
(set #MSG_BADFILE "\nDidn't I say, that the file must end in \".ttf\" or \".ttc\"!?")
(set #MSG_CREATE_FONT "\nCreating font contents file (\"%s\") in \"%s\" ...")
(set #MSG_COPY_TT   "\nCopying truetype font file (\"%s\") to \"%s\" ...")

(set #MSG_OTAG "\nNow you will be asked for some information needed to create the outline tag file ...")
(set #MSG_OTAG_FAMILY "\nEnter a family name for the font!")
(set #MSG_OTAG_YSIZEFACTOR_HIGH "\nEnter YSizeFactor high word!")
(set #MSG_OTAG_YSIZEFACTOR_LOW "\nEnter YSizeFactor low word!")
(set #MSG_OTAG_SPACEWIDTH "\nEnter SpaceWidth factor!")
(set #MSG_OTAG_FIXED "\nIs the font proportional (non-fixed)?")
(set #MSG_OTAG_SERIF "\nIs the font serif less?")

(set #MSG_OTAG_STEMWEIGHT "\nEnter StemWeight!")
(set #MSG_SW_ULTRATHIN "\x1B[2pUltra thin")
(set #MSG_SW_EXTRATHIN "Extra thin")
(set #MSG_SW_THIN "Thin")
(set #MSG_SW_EXTRALIGHT "Extra light")
(set #MSG_SW_LIGHT "Light")
(set #MSG_SW_DEMILIGHT "Demi light")
(set #MSG_SW_SEMILIGHT "Semi light")
(set #MSG_SW_BOOK "Book")
(set #MSG_SW_MEDIUM "Medium")
(set #MSG_SW_SEMIBOLD "Semi bold")
(set #MSG_SW_DEMIBOLD "Demi bold")
(set #MSG_SW_BOLD "Bold")
(set #MSG_SW_EXTRABOLD "Extra bold")
(set #MSG_SW_BLACK "Black")
(set #MSG_SW_EXTRABLACK "Extra black")
(set #MSG_SW_ULTRABLACK "Ultra black")

(set #MSG_OTAG_SLANTSTYLE "\nEnter SlantStyle!")
(set #MSG_SLANTSTYLE_NORMAL "\x1B[2pUpright (normal)")
(set #MSG_SLANTSTYLE_ITALIC "Italic")
(set #MSG_SLANTSTYLE_LEFTITALIC "Left Italic")

(set #MSG_OTAG_HORIZSTYLE "\nEnter HorizStyle!")
(set #MSG_HS_ULTRACOMPRESSED "\x1B[2pUltra compressed")
(set #MSG_HS_EXTRACOMPRESSED "Extra compressed")
(set #MSG_HS_COMPRESSED "Compressed")
(set #MSG_HS_CONDENSED "Condensed")
(set #MSG_HS_NORMAL "Normal")
(set #MSG_HS_SEMIEXPANDED "Semi expanded")
(set #MSG_HS_EXPANDED "Expanded")
(set #MSG_HS_EXTRAEXPANDED "Extra expanded")

(set #MSG_OTAG_SIZES "\nEnter font sizes to be displayed in ASL requesters. Enter nothing after last size!\n\n")

(set #MSG_ANOTHER_FONT "\nFont has been installed successfully!\n\nDo you want to install one more font?")
(set #MSG_ANOTHER_YES "\x1B[2pYes")
(set #MSG_ANOTHER_YES2 "Yes, using the same data for the .otag file")
(set #MSG_ANOTHER_NO "No.") 

(set #MSG_DONE "\nInstallation complete!")
(set #MSG_ABORT "\nInstallation aborted!")

(set #MSG_NOHELP "I can't help you!")


;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                        P R O C E D U R E S                            *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


;#FONT and #QUERY_ID must be set
;result in #RESULT

(procedure P_GetTTInfo
	(
		(set #RESULT "")
		(if (= 0 (run ("Tools/GetTTInfo \"%s\" %s >ENV:FREEDOM_TEMP_RESULT" #FONT #QUERY_ID)))
			(
				(set #RESULT (getenv "FREEDOM_TEMP_RESULT"))
				(if (> (strlen #RESULT) 0)
					(
						(set #RESULT (substr #RESULT 0 (- (strlen #RESULT) 1))) 
					)
				)
				(delete "ENV:FREEDOM_TEMP_RESULT")
			)
		)
	)
)

;--------------------------------------------------------------------------

;#ICON and #TOOLTYPE must be set
;result in #RESULT

(procedure P_GetToolType
	(
		(set #RESULT "")
		(if (= 0 (run ("Tools/GetToolType \"%s\" %s >ENV:FREEDOM_TEMP_RESULT" #ICON #TOOLTYPE)))
			(
				(set #RESULT (getenv "FREEDOM_TEMP_RESULT"))
				(if (> (strlen #RESULT) 0)
					(
						(set #RESULT (substr #RESULT 0 (- (strlen #RESULT) 1)))
					)
				)
				(delete "ENV:FREEDOM_TEMP_RESULT")
			)
		)
	)
)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                             S T A R T                                 *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


(if (= 0 (askbool
			(prompt #MSG_INTRO)
			(default 1)
			(help #MSG_NOHELP)
		 )
	)
	(
		(exit #MSG_ABORT (quiet))
	)
)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*     G E T   S C R I P T   C O N F I G   F R O M   T O O L T Y P E     *      
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

(set #ICON "Install TrueType Font") 

(set #TOOLTYPE "YSIZEFACTORHIGH")
(P_GetToolType)
(if (<> "" #RESULT) (set #tt_ysizefactorhigh #RESULT) (set #tt_ysizefactorhigh ""))

(set #TOOLTYPE "YSIZEFACTORLOW")
(P_GetToolType)
(if (<> "" #RESULT) (set #tt_ysizefactorlow #RESULT) (set #tt_ysizefactorlow ""))

(set #TOOLTYPE "SPACEWIDTH")
(P_GetToolType)
(if (<> "" #RESULT) (set #tt_spacewidth #RESULT) (set #tt_spacewidth ""))

(set #TOOLTYPE "ASLSIZES")
(P_GetToolType)
(if (<> "" #RESULT)
	(
		(set #t_aslsizes (cat #RESULT " "))

		;** convert spaces to LFs 

		(set #len (strlen #t_aslsizes))
		(set #i 0)
		(set #wasspace 0)
		(set #tt_aslsizes "")

		(while (< #i #len)
			(
				(if (= " " (substr #t_aslsizes #i 1))
					(if (= 0 #wasspace)
						(
							(set #tt_aslsizes (cat #tt_aslsizes "\n"))
							(set #wasspace 1)
						)			
					)
					(
						(set #tt_aslsizes (cat #tt_aslsizes (substr #t_aslsizes #i 1)))
						(set #wasspace 0)
					)
				)
				(set #i (+ #i 1))
			)
		)

		(set #tt_aslsizes (cat #tt_aslsizes "\n"))
	)
	(set #tt_aslsizes "")
)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*         G E T   P A T H   F O R   T R U E T Y P E   F I L E S         *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

(set #fontpath "")

(while (= "" #fontpath)
	(
		(set #fontpath (getenv "FREEDOM_FONT_PATH"))
		(if (= "" #fontpath)
			(message #MSG_NOFONTDIR)
		)
	)
)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*     W H I L E   " O N E   M O R E   F O N T   T O   I N S T A L L "   *                *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

(set #defaultpath (expandpath "RAM:"))
(set #again 1)
(set #sameotag 0)
(set #defaultagainanswer 2)
(set #firstloop 1)

(while (= 1 #again)
	(
		(set #fileok 0)


;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*             A S K   F O R   T R U E T Y P E   F I L E                 *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

		(while (= 0 #fileok)
			(
				(set #file
					(expandpath
						(askfile
							(prompt #MSG_SELECTFONT)
							(default #defaultpath)
							(help #MSG_NOHELP)
						)
					)
				)
				
				(if (= 0 (exists #file))
					(message #MSG_NOTEXIST)
					(
						(if (<> 0 (patmatch "(#?.ttf|#?.ttc)" #file))
							(set #fileok 1)
							(message #MSG_BADFILE)
						)
					)
				)
				
			)
		)
		(set #defaultpath (pathonly #file))
		
		(set #fileonly (fileonly #file))
		(set #fileonlyonly (substr #fileonly 0 (- (strlen #fileonly) 4)))


;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;* M A K E   " . F O N T "   A N D   C O P Y   T R U E T Y P E   F I L E *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


		(run ("Tools/MakeOFont \"%s\"" (tackon #fontpath #fileonlyonly))
			(prompt (#MSG_CREATE_FONT (cat #fileonlyonly ".font") #fontpath))
			(help #MSG_NOHELP)
			(confirm)
		)



		(set #ttdest (expandpath (tackon #fontpath "_truetype")))

		;** to allow re-installing in same place

		(if (<> #ttdest (pathonly #file))
			(copyfiles
				(prompt (#MSG_COPY_TT #fileonly #ttdest))
				(source #file)
				(dest #ttdest)
				(help #MSG_NOHELP)
				(confirm)
			)
		)
	

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                          O T A G   F I L E                            *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


		;*** otag
		
		(if (= 0 #sameotag) (message #MSG_OTAG))

		(set #FONT #file)
		
		;-- FAMILYNAME ----------------------------------------------------
		
		(set #QUERY_ID "FAMILYNAME")
		(P_GetTTInfo)
		(if (<> "" #RESULT)
			(set #familyname #RESULT)
			(set #familyname
				(askstring
					(prompt #MSG_OTAG_FAMILY)
					(help #MSG_NOHELP)
					(default #fileonlyonly)
				)
			)
		)

		(if (= 0 #sameotag)
			(

				;-- YSIZEFACTORHIGH ---------------------------------------

				(if (= "" #tt_ysizefactorhigh)
					(set #ysizefactorhigh
						(askstring
							(prompt #MSG_OTAG_YSIZEFACTOR_HIGH)
							(help #MSG_NOHELP)
							(default "8782")
						)
					)
					(set #ysizefactorhigh #tt_ysizefactorhigh)
				)
				
				;-- YSIZEFACTORLOW ----------------------------------------
				
				(if (= "" #tt_ysizefactorlow)
					(set #ysizefactorlow
						(askstring
							(prompt #MSG_OTAG_YSIZEFACTOR_LOW)
							(help #MSG_NOHELP)
							(default "10034")
						)
					)
					(set #ysizefactorlow #tt_ysizefactorlow)
				)

				;-- SPACEWIDTH --------------------------------------------

				(if (= "" #tt_spacewidth)
					(set #spacewidth
						(askstring
							(prompt #MSG_OTAG_SPACEWIDTH)
							(help #MSG_NOHELP)
							(default "0.039703")
						)
					)
					(set #spacewidth #tt_spacewidth)
				)

				;-- ISFIXED -----------------------------------------------
				
				(set #QUERY_ID "ISFIXED")
				(P_GetTTInfo)
				(if (<> "" #RESULT)
					(set #isfixed #RESULT)
					(if (= 0 (askbool 
								(prompt #MSG_OTAG_FIXED)
								(help #MSG_NOHELP)
								(default 1)
							 )
						)
						(set #isfixed "1")
						(set #isfixed "0")
					)
				)

				;-- ISSERIF -----------------------------------------------
				
				(set #QUERY_ID "ISSERIF")
				(P_GetTTInfo)
				(if (<> "" #RESULT)
					(set #isserif #RESULT)
					(if (= 0 (askbool 
								(prompt #MSG_OTAG_SERIF)
								(help #MSG_NOHELP)
								(default 1)
							 )
						)
						(set #isserif "1")
						(set #isserif "0")
					)
				)

				;-- WEIGHT ------------------------------------------------
				
				(set #QUERY_ID "WEIGHT")
				(P_GetTTInfo)
				(if (<> "" #RESULT)
					(set #stemweight #RESULT)
					(
						(set #sw
							(askchoice
								(prompt #MSG_OTAG_STEMWEIGHT)
								(choices #MSG_SW_ULTRATHIN
										 #MSG_SW_EXTRATHIN
										 #MSG_SW_THIN
										 #MSG_SW_EXTRALIGHT
										 #MSG_SW_LIGHT
										 #MSG_SW_DEMILIGHT
										 #MSG_SW_SEMILIGHT
										 #MSG_SW_BOOK
										 #MSG_SW_MEDIUM
										 #MSG_SW_SEMIBOLD
										 #MSG_SW_DEMIBOLD
										 #MSG_SW_BOLD
										 #MSG_SW_EXTRABOLD
										 #MSG_SW_BLACK
										 #MSG_SW_EXTRABLACK
										 #MSG_SW_ULTRABLACK)
								(help #MSG_NOHELP)
								(default 7)
							)
						)
						(if (= 0 #sw) (set #stemweight "8"))
						(if (= 1 #sw) (set #stemweight "24"))
						(if (= 2 #sw) (set #stemweight "40"))
						(if (= 3 #sw) (set #stemweight "56"))
						(if (= 4 #sw) (set #stemweight "72"))
						(if (= 5 #sw) (set #stemweight "88"))
						(if (= 6 #sw) (set #stemweight "104"))
						(if (= 7 #sw) (set #stemweight "120"))
						(if (= 8 #sw) (set #stemweight "136"))
						(if (= 9 #sw) (set #stemweight "152"))
						(if (= 10 #sw) (set #stemweight "168"))
						(if (= 11 #sw) (set #stemweight "184"))
						(if (= 12 #sw) (set #stemweight "200"))
						(if (= 13 #sw) (set #stemweight "216"))
						(if (= 14 #sw) (set #stemweight "232"))
						(if (= 15 #sw) (set #stemweight "248"))
					)
				)
				
				;-- ITALIC ------------------------------------------------
				
				(set #QUERY_ID "ISITALIC")
				(P_GetTTInfo)
				(if (<> "" #RESULT)
					(set #slantstyle #RESULT)
					(set #slantstyle
						(cat
							(askchoice
								(prompt #MSG_OTAG_SLANTSTYLE)
								(choices #MSG_SLANTSTYLE_NORMAL #MSG_SLANTSTYLE_ITALIC #MSG_SLANTSTYLE_LEFTITALIC)
								(help #MSG_NOHELP)
								(default 0)
							)
						)
					)
				)

				;-- HORIZSTYLE --------------------------------------------

				(set #QUERY_ID "HORIZSTYLE")
				(P_GetTTInfo)
				(if (<> "" #RESULT)
					(set #horizontalstyle #RESULT)
					(
						(set #hs
							(askchoice
								(prompt #MSG_OTAG_HORIZSTYLE)
								(choices #MSG_HS_ULTRACOMPRESSED
										 #MSG_HS_EXTRACOMPRESSED
										 #MSG_HS_COMPRESSED
										 #MSG_HS_CONDENSED
										 #MSG_HS_NORMAL
										 #MSG_HS_SEMIEXPANDED
										 #MSG_HS_EXPANDED
										 #MSG_HS_EXTRAEXPANDED)
								(help #MSG_NOHELP)
								(default 4)
							)
						)
						(if (= 0 #hs) (set #horizontalstyle "16"))
						(if (= 1 #hs) (set #horizontalstyle "48"))
						(if (= 2 #hs) (set #horizontalstyle "80"))
						(if (= 3 #hs) (set #horizontalstyle "112"))
						(if (= 4 #hs) (set #horizontalstyle "144"))
						(if (= 5 #hs) (set #horizontalstyle "176"))
						(if (= 6 #hs) (set #horizontalstyle "208"))
						(if (= 7 #hs) (set #horizontalstyle "240"))
					)
				)

				;-- SIZES -------------------------------------------------

				(if (= "" #tt_aslsizes)
					(
						(set #sizesdone 0)
						(set #sizes "")
						(set #sizemsg "")

						(while (= 0 #sizesdone)
							(
								(set #size
									(askstring
										(prompt #MSG_OTAG_SIZES #sizemsg)
										(help #MSG_NOHELP)
										(default "")
									)
								)
								
								(if (= "" #size)
									(
										(set #sizesdone 1)
										(set #sizes (cat #sizes "\n"))
									)
									(
										(set #sizes (cat #sizes #size "\n"))
										(set #sizemsg (cat #sizemsg #size " "))
									)
								)
							)
						)
					)
					(set #sizes #tt_aslsizes)
				)
				
				;--
			)
		)
		
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*   M A K E   R E S P O N S E   F I L E   F O R   " M A K E O T A G "   *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

		
		(textfile
			(prompt " ")
			(dest "T:makeotag_response")
			
			(append "freedom\n")
			(append #familyname)
			(append "\n\n\n\n\n")
			(append #ysizefactorhigh)
			(append "\n")
			(append #ysizefactorlow)
			(append "\n")
			(append #spacewidth)
			(append "\n")
			(append #isfixed)
			(append "\n")
			(append #isserif)
			(append "\n")
			(append #stemweight)
			(append "\n")
			(append #slantstyle)
			(append "\n")
			(append #horizstyle)
			(append "\n")
			(append "\n")
			(append #sizes)
			
			(help #MSG_NOHELP)
		)

		(run ("Tools/MakeOTag >NIL: <t:makeotag_response \"%s\" \"%s\"" (tackon #fontpath #fileonlyonly) #fileonly)
			(prompt "")
			(help #MSG_NOHELP)
		)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                     O N E   M O R E   F O N T ?                       *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


		(set #oncemore
			(askchoice
					(prompt #MSG_ANOTHER_FONT)
					(choices #MSG_ANOTHER_YES #MSG_ANOTHER_YES2 #MSG_ANOTHER_NO)
					(choices #MSG_ANOTHER_YES #MSG_ANOTHER_YES2 #MSG_ANOTHER_NO)
					(default #defaultagainanswer)
					(help #MSG_NOHELP)
			)
		)
		
		(set #defaultagainanswer #oncemore)

		(if (= 2 #oncemore)
			(set #again 0)
			(
				(set #again 1)
				(if (= 1 #oncemore)
					(set #sameotag 1)
					(set #sameotag 0)
				)
			)
		)

	)

)

;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
;|                                                                       |
;*                           T H E   E N D                               *
;|                                                                       |
;*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


(exit #MSG_DONE (quiet))
