Benvenuto! Effettua l'accesso oppure registrati.
Hai perso l'e-mail di attivazione?

10/09/2024, 17:11

Login with username, password and session length
4 Visitatori, 0 Utenti

Autore Topic: Install Fonts Tool  (Letto 4498 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline OnePiece

  • Eng2ita Friends
  • **
  • Post: 3.126
  • Karma: -3278
Install Fonts Tool
« il: 17/04/2012, 17:51 »
Ragazzi questo Tool Installa Fonts

Citazione
"InstallFontsTool.exe" "lokicola.ttf" "Loki Cola (TrueType)"

oppure

"InstallFontsTool.exe" "lokicola.ttf"

oppure

"InstallFontsTool.exe" "*.ttf"

oppure

"InstallFontsTool.exe" "FontDir"
In questo caso il cerca per File Font nella direttori FontDir e tutte le sue sottodirettori ect ect

tutte le file o direttori indicati nella riga di comando dovranno essere presenti nella stesa direttori del InstallFontsTool.exe, visto che il InstallFontsTool.exe cerca il "File\Folder" nella direttori dove sta lavorando, oppure usare un comando cosi
"InstallFontsTool.exe" "%UserProfile%\Desktop\FontDir"
oppure
"InstallFontsTool.exe" "%UserProfile%\Desktop\lokicola\lokicola.ttf"

InstallFontsTool x86
Aggiornato (24 Ottobre 2013)
Aggiornato (24 Ottobre 2013)
Aggiornato (24 Ottobre 2013)
Hash MD5 BDB73A5921AB06BD9F6C3B56A46C218D
Filesize: 412 KB (421888 bytes)

InstallFontsTool x64
Aggiornato (24 Ottobre 2013)
Aggiornato (24 Ottobre 2013)
Aggiornato (24 Ottobre 2013)
Hash MD5 D41D375A2EC052250FAEDD6DFC194CC1
Filesize: 444 KB (455168 bytes)

Codice: [Seleziona]
#RequireAdmin

Global Const $HWND_BROADCAST = 0xFFFF
Global Const $WM_FONTCHANGE = 0x1D
Global $aRet, $hGdi32 = DllOpen("gdi32.dll")
Global $SourceFile, $FontDescript, $sDir, $sFilter, $aDirFilter

;_InstallFontEx(@DesktopDir & "\SourceCodePro-ExtraLight.otf")
;_InstallFontEx(@DesktopDir & "\lokicola\lokicola.ttf", "Loki Cola (TrueType)")

If $CmdLine[0] > 0 Then
For $Count = 1 To $CmdLine[0]
$sDir = $CmdLine[$Count]
If StringInStr($sDir, "*", 1) Then
$sFilter = StringRegExpReplace($sDir, ".*[\/\\]+", "")
$aDirFilter = StringRegExp($sDir, "(.+[^\/\\])([^\/\\]+)", 1)
If Not @Error Then
$sDir = $aDirFilter[0]
$sFilter = $aDirFilter[1]
If Not StringRegExp($aDirFilter[0], "^\h*(?:\\\\\?\\)*(\\\\[^\?\/\\]+|[A-Za-z]:)") Then $sDir = @ScriptDir & "\" & $aDirFilter[0]
Else
$sDir = @ScriptDir
EndIf
$SourceFile = _FileListToArrayEx($sDir, $sFilter, 13)
If Not @Error Then
For $y = 1 To $SourceFile[0]
_InstallFontEx($SourceFile[$y])
Next
EndIf
Else
If Not StringRegExp($sDir, "^\h*(?:\\\\\?\\)*(\\\\[^\?\/\\]+|[A-Za-z]:)") Then $sDir = @ScriptDir & "\" & $CmdLine[$Count]
If StringInStr(FileGetAttrib($sDir), "D", 1) Then
$SourceFile = _FileListToArrayEx($sDir, "(?:\.fon$|\.ttf$|\.ttc$|\.fot$|\.otf$|\.mmm$|\.pfb$|\.pfm$|\.pfb$)", 77)
If Not @Error Then
For $y = 1 To $SourceFile[0]
_InstallFontEx($SourceFile[$y])
Next
EndIf
Else
If $CmdLine[0] > $Count And StringRegExp($CmdLine[$Count + 1], "\(.+\)") Then
$FontDescript = $CmdLine[$Count + 1]
$Count += 1
EndIf
_InstallFontEx($sDir, $FontDescript)
EndIf
EndIf
Next
Else
   MsgBox(0, "Error", "Please drop files to this script to run it!" & @LF & 'example : InstallFontsTool.exe "FontsName.ttf" "Fonts Desc"')
EndIf
DllClose($hGdi32)


; #FUNCTION# ====================================================================================================================
; Name...........: _InstallFontEx
; Description ...: Install a Font file
; Syntax.........: _InstallFontEx($sFilePath)
; Parameters ....: $sFilePath     - The full path file
;                  $sFontDescript - Optional, Font Description
;                  $sFontsPath    - Optional, Font Path Destination
; Return values .: Success - Title Property
; Author ........: DXRW4E
; ===============================================================================================================================
Func _InstallFontEx($sFilePath, $sFontDescript = "", $sFontsPath = "")
    If Not $sFontsPath Then $sFontsPath = @WindowsDir & "\Fonts"
Local $sFontsName = StringRegExpReplace($sFilePath, "\A.+[\/\\]+", "")
    If Not FileCopy($sFilePath, $sFontsPath & "\" & $sFontsName, 1) Then Return SetError(1, 0, 0)

$aGdi32 = DllCall($hGdi32, "Int", "AddFontResource", "str", $sFontsPath & "\" & $sFontsName)
If @Error Or Not $aGdi32[0] Then Return SetError(1, 0, 0)
If Not $sFontDescript Then
;;$aGdi32 = DllCall($hGdi32, "int", "GetFontResourceInfoW", "wstr", $sFontsPath & "\" & $sFontsName, "dword*", 4096, "wstr", "", "dword", 1)
;;$sFontDescript = $aGdi32[3] & _FontGetProperty($sFilePath, 1)
$sFontDescript &= _FontGetProperty($sFilePath)
EndIf
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", $sFontDescript, "REG_SZ", $sFontsName)
    DllCall("user32.dll", "Int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_FONTCHANGE, "int", 0, "int", 0)
    Return 1
EndFunc

; #FUNCTION# ====================================================================================================================
; Name...........: _FontGetProperty
; Description ...: Returns a property for a Font file
; Syntax.........: _FontGetProperty($sFilePath)
; Parameters ....: $sFilePath  - The full path file
; Return values .: Success - Title Property
; Author ........: DXRW4E
; ===============================================================================================================================
Func _FontGetProperty($sFilePath, $iFlags = 0)
    ;$sFilePath = StringRegExpReplace($sFilePath, '["' & "]", "")
    If Not FileExists($sFilePath) Then Return SetError(1, 0, "")

    Local $sTitle, $objFolder, $objFolderItem, $objShell = ObjCreate("Shell.Application")
    If @Error Then Return SetError(3, 0, "")
$objFolder = $objShell.NameSpace(StringRegExpReplace($sFilePath, "\A.+\K[\/\\][^\/\\]*$", ""))
    $objFolderItem = $objFolder.Parsename(StringRegExpReplace($sFilePath, "\A.+[\/\\]+", ""))
If Not $iFlags Then
$sTitle = $objFolder.GetDetailsOf($objFolderItem, 21)
If Not $sTitle Then Return SetError(2, 0, 0)
EndIf
If StringRegExp($objFolder.GetDetailsOf($objFolderItem, 187), "(?:True|Open)Type") Then $sTitle &= " (TrueType)"
    Return $sTitle
EndFunc   ;==>_FontGetProperty

; #FUNCTION# =======================================================================================================================================================
; Name...........: _FileListToArrayEx
; Description ...: Lists files and\or folders in a specified path (Similar to using Dir with the /B Switch)
; Syntax.........: _FileListToArrayEx($sPath[, $sFilter = "*"[, $iFlag = 0]])
; Parameters ....: $sPath   - Path to generate filelist for.
;                  $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.png|*.jpg|*.bmp") Search the Autoit3 helpfile for the word "WildCards" For details.
;                  $iFlag   - Optional: specifies whether to return files folders or both Or Full Path (add the flags together for multiple operations):
;                  |$iFlag = 0 (Default) Return both files and folders
;                  |$iFlag = 1 Return files only
;                  |$iFlag = 2 Return Folders only
;                  |$iFlag = 4 Search SubDirectory
;                  |$iFlag = 8 Return Full Path
;                  |$iFlag = 16 $sFilter do Case-Sensitive matching (By Default $sFilter do Case-Insensitive matching)
;                  |$iFlag = 32 Disable the return the count in the first element - effectively makes the array 0-based (must use UBound() to get the size in this case).
;                    By Default the first element ($array[0]) contains the number of file found, the remaining elements ($array[1], $array[2], etc.)
;                  |$iFlag = 64 $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp (Can not be combined with flag 16)
;                  |$iFlag = 128 Return Backslash at the beginning of the file name, example Return "\Filename1.xxx" (Can not be combined with flag 8)
; Return values .: Failure - @Error
;                  |1 = Path not found or invalid
;                  |2 = Invalid $sFilter
;                  |3 = No File(s) Found
; Author ........: DXRW4E
; Modified.......:
; Remarks .......: The array returned is one-dimensional and is made up as follows:
;                                $array[0] = Number of Files\Folders returned
;                                $array[1] = 1st File\Folder
;                                $array[2] = 2nd File\Folder
;                                $array[3] = 3rd File\Folder
;                                $array[n] = nth File\Folder
; Related .......:
; Link ..........:
; Example .......: Yes
; Note ..........: Special Thanks to SolidSnake & Tlem
; ==================================================================================================================================================================
Func _FileListToArrayEx($sPath, $sFilter = "*", $iFlag = 0)
    $sPath = StringRegExpReplace($sPath & "\", "(?!\A)[\\/]+\h*", "\\")
    If Not FileExists($sPath) Then Return SetError(1, 1, "")
If StringRegExp($sFilter, StringReplace('^\s*$|\v|[\\/:><"]|^\||\|\||\|$', "[" & Chr(BitAND($iFlag, 64) + 28) & '\/:><"]|^\||\|\||\|$', "\\\\")) Then Return SetError(2, 2, "")
Local $hSearch, $sFile, $sFileList, $sSubDir = BitAND($iFlag, 4), $sDelim = "|", $sDirFilter = StringReplace($sFilter, "*", "")
    $hSearch = FileFindFirstFile($sPath & "*")
    If @Error Then Return SetError(3, 3, "")
Local $hWSearch = $hSearch, $hWSTMP, $SearchWD, $Extended, $iFlags = StringReplace(BitAND($iFlag, 1) + BitAND($iFlag, 2), "3", "0")
If BitAND($iFlag, 8) Then $sDelim &= $sPath
If BitAND($iFlag, 128) Then $sDelim = "|\"
If Not BitAND($iFlag, 64) Then $sFilter = StringRegExpReplace(BitAND($iFlag, 16) & "(?i)(", "16\(\?\i\)|\d+", "") & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sFilter, "[^*?|]+", "\\Q$0\\E"), "\\E(?=\||$)", "$0\$"), "(?<=^|\|)\\Q", "^$0"), "\*+", ".*") & ")"
While 1
        $sFile = FileFindNextFile($hWSearch)
        If @Error Then
            If $hWSearch = $hSearch Then ExitLoop
            FileClose($hWSearch)
            $hWSearch -= 1
            $SearchWD = StringLeft($SearchWD, StringInStr($SearchWD, "\", 1, -2))
        ElseIf $sSubDir Then
            $Extended = @Extended
            If ($iFlags + $Extended <> 2) Then
                If $sDirFilter Then
                    If StringRegExp($sFile, $sFilter) Then $sFileList &= $sDelim & $SearchWD & $sFile
                Else
                    $sFileList &= $sDelim & $SearchWD & $sFile
                EndIf
            EndIf
            If Not $Extended Then ContinueLoop
            $hWSTMP = FileFindFirstFile($sPath & $SearchWD & $sFile & "\*")
            If $hWSTMP = -1 Then ContinueLoop
            $hWSearch = $hWSTMP
            $SearchWD &= $sFile & "\"
        Else
            If ($iFlags + @Extended = 2) Or StringRegExp($sFile, $sFilter) = 0 Then ContinueLoop
            $sFileList &= $sDelim & $sFile
        EndIf
    WEnd
    FileClose($hSearch)
    If Not $sFileList Then Return SetError(3, 3, "")
Return StringSplit(StringTrimLeft($sFileList, 1), "|", StringReplace(BitAND($iFlag, 32), "32", 2))
EndFunc ;==>_FileListToArrayEx


« Ultima modifica: 07/07/2020, 18:33 da Singolarity »
   

Offline OnePiece

  • Eng2ita Friends
  • **
  • Post: 3.126
  • Karma: -3278
Re: Install Fonts Tool
« Risposta #1 il: 17/04/2012, 17:57 »
Ragazzi il tool lavora già OK, detto questo perché forse sarebbe più bene usare anche la funzione CreateScalableFontResource come anche microsoft consiglia fare in Come installare a livello di programmazione di un tipo di carattere TrueType

comunque come già detto e già tutto OK, se caso mai servirà aggiungeremo anche il uso del CreateScalableFontResource

Ciao a tutti.

   

Offline DMD

  • Eng2ita Friends
  • **
  • Post: 339
  • Karma: 45
Re: Install Fonts Tool
« Risposta #2 il: 20/04/2012, 13:06 »
Un sentito grazie a OnePiece per avermi spiegato la procedura che riepilogo in queste poche righe:  :)

1- Creazione di una cartella al cui interno inseriremo i font preferiti più InstallFontsTool.exe e lo script bat Install.bat



Per poter inserire la descrizione dei fonts, occorre che questi siano già installati (anche su mcchina virtuale) e poi nel registro di sistema portarsi nel percorso
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts


Il contenuto dello script è questo

Codice: [Seleziona]
@echo off
Color 4f
echo ==========================================
echo.
echo       Fonts Extra
echo.
echo ==========================================
echo.
echo             Attendere...

rem per vedere la descrizione dei fonts andare nel registro di sistema e portarsi nel percorso
rem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts


CD "%~p0"
"InstallFontsTool.exe" "aquarelle.ttf" "Aquarelle (TrueType)"
"InstallFontsTool.exe" "barbie.ttf" "Barbie MediumItalic (TrueType)"
"InstallFontsTool.exe" "cacshishonibrush.ttf" "CAC Shishoni Brush (TrueType)"
"InstallFontsTool.exe" "lokicola.ttf" "Loki Cola (TrueType)"
"InstallFontsTool.exe" "signetroundhandceattitalic.ttf" "Signet Roundhand CE ATT Italic (TrueType)"
"InstallFontsTool.exe" "silentinafilm.ttf" "Silentina Film (TrueType)"
"InstallFontsTool.exe" "silentinamovie.ttf" "Silentina Movie (TrueType)"
exit



Buon lavoro a tutti.

« Ultima modifica: 20/04/2012, 13:35 da DMD »

Offline OnePiece

  • Eng2ita Friends
  • **
  • Post: 3.126
  • Karma: -3278
Re: Install Fonts Tool
« Risposta #3 il: 24/10/2013, 02:46 »
Ragazzi Install Fonts Tool già aggiornato, per di più guardate il primo post

Ciao a tutti.
   

Offline DMD

  • Eng2ita Friends
  • **
  • Post: 339
  • Karma: 45
Re: Install Fonts Tool
« Risposta #4 il: 24/10/2013, 06:27 »
GRAZIE ONE!! :)  :thumbup:
« Ultima modifica: 24/10/2013, 06:31 da DMD »

 

Come Aggiungere Cancellare Registro durante la Installazione di Windows

Aperto da OnePiece

Risposte: 29
Visite: 36798
Ultimo post 27/01/2015, 10:29
da Lupone
Come creare un disco d'installazione di Windows 7 Post-SP1 “step by step”

Aperto da aquilotto

Risposte: 803
Visite: 492185
Ultimo post 14/05/2024, 19:17
da aquilotto
[Windows 7] SYSTEM PREPARATION TOOL E IMAGEX

Aperto da DMD

Risposte: 240
Visite: 215614
Ultimo post 01/05/2016, 19:14
da marhko