Problem installing PostScript Type 1 fonts
I have PostScript Type 1 font(s) (.pfb and .pfm) I'm trying to install with Wise Package Studio 5.6 HF1 (5.60.0.466).
Adding the .pfb and .pfm font files to FontsFolder folder.
The font is installed (viewable under Fonts directory) but not showing up as a available font in ex. wordpad, winword and so on. Also tried populating the Font table but same issue.
Using "Adobe Type Manager" (ATMLIB.DLL/5.1.2.226) to install the font(s) manual will do the trick.
I've also tried adding the "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Type 1 Installer\Type 1 Fonts" registry entry "Eurostile", "(T[~]eu______.PFM[~]eu______.PFB)" with no success.
The target is Windows XP Professional SP2 (English)
Any thoughts?
Adding the .pfb and .pfm font files to FontsFolder folder.
The font is installed (viewable under Fonts directory) but not showing up as a available font in ex. wordpad, winword and so on. Also tried populating the Font table but same issue.
Using "Adobe Type Manager" (ATMLIB.DLL/5.1.2.226) to install the font(s) manual will do the trick.
I've also tried adding the "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Type 1 Installer\Type 1 Fonts" registry entry "Eurostile", "(T[~]eu______.PFM[~]eu______.PFB)" with no success.
The target is Windows XP Professional SP2 (English)
Any thoughts?
0 Comments
[ + ] Show comments
Answers (4)
Please log in to answer
Posted by:
bheers
17 years ago
Posted by:
AngelD
17 years ago
Posted by:
kevco
16 years ago
I realize this is an old thread but I found it while searching for a solution to the same problem. I never found a solution posted anywhere so I came up with one myself and I figured I'd share it here.
I read through the ATM API information and was able to figure out how to call atmlib.dll to add and remove Type 1 fonts. My MSI copies the PFM and PFB files to the c:\widnows\fonts and also made the corresponding registry entries in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Type 1 Installer\Type 1 Fonts and then I run a wisescript custom action. The wisescript used the Call DLL Function configured as follows:
DLL PathName: %sys32%\atmlib.dll, Function Name
Function Name: ATMAddFont
Call a Funtion with variable parameter list:
string pointer, constant, [your font name]
word, constant, 256 (256 for regular, 257 for italic, 258 for bold, 259 for bold & italic)
string pointer, contant, c:\windows\fonts\[your font filename].pfm
string pointer, contant, c:\windows\fonts\[your font filename].pfb
To remove the font I used a wisescript that does the following (this has to be run before the files are removed):
DLL PathName: %sys32%\atmlib.dll, Function Name
Function Name: ATMRemoveFont
Call a Funtion with variable parameter list:
string pointer, constant, [your font name]
word, constant, NULL (NULL for regular, 1 for italic, NULL called a 2nd time for bold, 1 called a 2nd time for bold & italic)
From my understanding of the API calls, to remove the "bold" and "bold/italic" fonts I should be passing 3 and 4 respectively to the ATMRemoveFont function but it didn't work. However if ran the call once with NULL and then ran the same call with NULL again it would remove the regular font and then the bold font on the second pass. Same with italic and bold/italic. I'm not sure why but it works.
Hope this helps.
I tried using the "Call Custom DLL from Destination" action directly from my MSI, instead of using wisescript but couldn't get it working. There doesn't seem to be an option for to pass a "word" parameter, only dword or word pointer, neither of which worked for me.
I read through the ATM API information and was able to figure out how to call atmlib.dll to add and remove Type 1 fonts. My MSI copies the PFM and PFB files to the c:\widnows\fonts and also made the corresponding registry entries in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Type 1 Installer\Type 1 Fonts and then I run a wisescript custom action. The wisescript used the Call DLL Function configured as follows:
DLL PathName: %sys32%\atmlib.dll, Function Name
Function Name: ATMAddFont
Call a Funtion with variable parameter list:
string pointer, constant, [your font name]
word, constant, 256 (256 for regular, 257 for italic, 258 for bold, 259 for bold & italic)
string pointer, contant, c:\windows\fonts\[your font filename].pfm
string pointer, contant, c:\windows\fonts\[your font filename].pfb
To remove the font I used a wisescript that does the following (this has to be run before the files are removed):
DLL PathName: %sys32%\atmlib.dll, Function Name
Function Name: ATMRemoveFont
Call a Funtion with variable parameter list:
string pointer, constant, [your font name]
word, constant, NULL (NULL for regular, 1 for italic, NULL called a 2nd time for bold, 1 called a 2nd time for bold & italic)
From my understanding of the API calls, to remove the "bold" and "bold/italic" fonts I should be passing 3 and 4 respectively to the ATMRemoveFont function but it didn't work. However if ran the call once with NULL and then ran the same call with NULL again it would remove the regular font and then the bold font on the second pass. Same with italic and bold/italic. I'm not sure why but it works.
Hope this helps.
I tried using the "Call Custom DLL from Destination" action directly from my MSI, instead of using wisescript but couldn't get it working. There doesn't seem to be an option for to pass a "word" parameter, only dword or word pointer, neither of which worked for me.
Posted by:
AngelD
16 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.