¿Cómo instalo una fuente desde el símbolo del sistema de Windows?

37

¿Es posible instalar fuentes desde el símbolo del sistema en Windows? En caso afirmativo, ¿cuál es el comando?

Lo intenté copy [fontname].ttf C:\Windows\Fonts\y decía que la copia estaba completa, pero no pude encontrar dichas fuentes en la carpeta Fuentes ni encontrarlas en la lista de fuentes de ningún programa, por lo que ciertamente no funcionó. (A pesar de que era capaz de eliminar el citado fuentes de la carpeta Fuentes después)

La tarde
fuente
Relacionado: stackoverflow.com/questions/28687666/…
Jerry Dodge

Respuestas:

31

Es posible, pero tienes que escribir un script de shell de Windows para hacerlo. Copiar solo no instalará la fuente: también debe registrar la fuente, p. Ej.

copy "FontName.ttf" "%WINDIR%\Fonts"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "FontName (TrueType)" /t REG_SZ /d FontName.ttf /f

Alternativamente, puede utilizar las siguientes líneas de código para satisfacer sus necesidades; guárdelo como un archivo .vbs y luego ejecútelo.

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("<Folder or Share Location>")
Set objFolderItem = objFolder.ParseName("<TTF File Name>")
objFolderItem.InvokeVerb("Install")

Ejemplo:

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Windows\Font")
Set objFolderItem = objFolder.ParseName("Myriad Pro.ttf")
objFolderItem.InvokeVerb("Install")

Otra alternativa es instalar fuentes "temporales", solo para la sesión de usuario actual. La idea es ejecutar fontview.execada fuente, lo que la hace disponible para otras aplicaciones de Windows:

for /F "delims=;" %%a in ('dir C:\ExtraFonts /B /A-D-H-S /S') do fontview %%a

Vea la solución completa aquí .

GeneQ
fuente
Va a ser tan amable para extender la secuencia de comandos a: (1) instalar automáticamente *.ttfy *.fonfuentes del directorio actual (2) Uso Const FONTS = &H14&como se sugiere aquí ( sevenforums.com/general-discussion/... ). No soy el rey en VBS :( Gracias de antemano.
dma_k
1
objFolderItem.InvokeVerb("Install")no funciona en Windows Server 2012 R2
Anthony Kong
@GeneQ: El copyy reg addno hace que la fuente
aparezca
16

En Powershell, esto puede ser tan simple como:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
Guss
fuente
3
Cambiaría la segunda línea conGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov
2
De acuerdo, Get-ChildItemes la forma de Powershell, simplemente odio la forma de Powershell (Unix shell afectuoso aquí), y dires solo un alias para eso; y si desea recurrencia, las opciones que proporcionó son el camino a seguir. Para el simple "simplemente escanear los archivos en esta carpeta", mi versión es menos detallada y más legible.
Guss
5

Similar a la solución de GeneQ, aquí hay una versión que lo hace para todos los archivos .ttf en el directorio del script:

Set ofso = CreateObject("Scripting.FileSystemObject")
SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)

Const FONTS = &H14&

Set objShell  = CreateObject("Shell.Application")
Set oSource   = objShell.Namespace(SourceFolder)
Set oWinFonts = objShell.Namespace(FONTS)

' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"

FOR EACH FontFile IN oSource.Items()
    IF rxTTF.Test(FontFile.Path) THEN   
        oWinFonts.CopyHere FontFile.Path
    END IF
NEXT
mivk
fuente
Acabas de salvar mi día :) Mi fuente predeterminada de Windows se corrompió y esta fue la única forma en que pude reinstalar todas las fuentes predeterminadas de Windows. ¡¡Gracias!!
Rima
¡Perfecto! Utilicé esto en un archivo vbs ejecutado por un archivo bat para varias computadoras después de que una empresa renombrara. Instala las fuentes, instala los archivos de firma de correo electrónico para Outlook y establece la página de inicio del navegador
Reece
3

También puede usar la utilidad FontReg para instalar fuentes desde un símbolo del sistema.

afrazier
fuente
1
Esto no funcionó para mí en Windows 10 de 64 bits.
djangofan
1
@djangofan: ¿Estaba utilizando un símbolo del sistema elevado? Todavía no he probado fontreg en Windows 10, pero espero que sea necesario.
Afrazier
El problema era que estaba tratando de instalar fuentes Mac en mi sistema (no tienen extensiones de nombre de archivo). Tengo los archivos de fuente Windows .ttf y todo está bien ahora.
djangofan
1

Crear un archivo de script llamado InstallFonts.vbs en mi caso lo puse en C: \ PortableApps \ InstallFonts \ IN el código siguiente reemplaza "SomeUser" con el nombre de usuario de la persona que desea poder instalar las fuentes. Luego, haga la carpeta "Instalar fuentes" apropiada en su escritorio.

    Set ofso = CreateObject("Scripting.FileSystemObject")
'SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)
SourceFolder = "C:\Users\SomeUser\Desktop\Install Fonts"


Const FONTS = &H14&

Set objShell  = CreateObject("Shell.Application")
Set oSource   = objShell.Namespace(SourceFolder)
Set oWinFonts = objShell.Namespace(FONTS)

' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"

FOR EACH FontFile IN oSource.Items()
    IF rxTTF.Test(FontFile.Path) THEN   
        oWinFonts.CopyHere FontFile.Path
    END IF
NEXT

Ahora cree un acceso directo en su escritorio que sea el siguiente ...

C:\Windows\System32\runas.exe /user:Administrator /savecred "wscript C:\PortableApps\InstallFonts\InstallFonts.vbs"

Tenga en cuenta que usé "Administrador". Lo habilité y le asigné una contraseña. Supongo que podría usar cualquier cuenta de administrador para esto. La primera vez que ejecute el acceso directo, se le solicitará la contraseña de administrador ... cada vez que simplemente funcione.

Si no le solicita una contraseña, ejecute el acceso directo desde una solicitud de cmd, entonces debería solicitarla.

No puedo prometerle cuán seguro es esto, ya que podrían usarlo para ejecutar código elevado. Sin embargo, es una solución.

Maestros de escritorio
fuente
0

Como dijo anteriormente GeneQ, así es como se procede (lo he probado)

  1. Abra una línea de comando con privilegios de administrador
  2. Usa el comando:

para / F "delims =;" % a in ('dir C: \ FontsDir / B / ADHS / S') hace fontview% a

Donde C: \ FontsDir es el directorio donde se almacenan sus archivos tff. Una vez ejecutadas, las ventanas "fontview" se abrirán tanto como la cantidad de archivos tff dentro del directorio "FontsDir". ¡Solo tiene que hacer clic en el botón "Instalar" y ya está! sus fuentes están instaladas en su sistema

Espero que ayude a alguien

Sam Doxy
fuente
¿Por qué un forcomando tan complejo en lugar de (por ejemplo) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale
El comando muestra también fuentes ocultas
Sam Doxy
-1

No enumeró su versión de Windows, pero supongo que está ejecutando Vista o 7. Copiar a ese directorio requiere privilegios administrativos. Intente lo que hizo nuevamente, pero use un símbolo del sistema elevado esta vez.

jsejcksn
fuente
3
Dijo que la copia tuvo éxito. Si los permisos le impiden copiar con éxito allí, le habría dicho que la copia falló, por lo que probablemente este no sea el problema.
nhinkle
-1

Pasé mucho tiempo para encontrar una manera de instalar la fuente sin reiniciar. Finalmente encontré esto: ClickFont . Es una solución fácil y exacta.

ClickFont permite una fácil instalación de fuentes TrueType, OpenType y PostScript con solo dos clics del mouse, desde cualquier parte del sistema. Todo lo que se necesita es hacer clic derecho en una fuente o carpeta.

SelçukDERE
fuente