29

How can I list the family names of installed fonts on Windows?

Any command line utility or any registry paths?

6 Answers 6

42

In PowerShell you can get the Font families in two lines, one to load the .NET reflection and the second actually gets the font families:

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
(New-Object System.Drawing.Text.InstalledFontCollection).Families

The outlook looks similar to:

sample output

3
  • Yes it produces a list. But there seems to be a disparity between what's listed by the powershell script and what's in the font GUI
    – Mick
    May 20, 2021 at 4:49
  • 1
    Running this command on a machine produced 185 entries... whereas the list produced by the regex query supplied in phuclv's answer produces 338. And includes the fonts missing in the list produced by the above powershell query
    – Mick
    May 20, 2021 at 5:02
  • 1
    arielCo's answer produced a very similar list but with 189 entries, including the fonts missing from the list produced by this command and what's in the Windows Font admin UI.
    – Mick
    May 20, 2021 at 5:31
11

Installed fonts are listed in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts so you can check it with regedit or just run the below command

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /s

Alternatively run this in PowerShell

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'

This gives you the real font names along with their corresponding font files, unlike dir C:\windows\fonts\*.* which only lists font file names and you won't know what things like GenBkBasB.ttf or FRABKIT.TTF represent

Sample output:

PS C:\> reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /s `
| select -First 12

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
    Arial (TrueType)    REG_SZ    arial.ttf
    Arial Black (TrueType)    REG_SZ    ariblk.ttf
    Arial Bold (TrueType)    REG_SZ    arialbd.ttf
    Arial Bold Italic (TrueType)    REG_SZ    arialbi.ttf
    Arial Italic (TrueType)    REG_SZ    ariali.ttf
    Bahnschrift (TrueType)    REG_SZ    bahnschrift.ttf
    Calibri (TrueType)    REG_SZ    calibri.ttf
    Calibri Bold (TrueType)    REG_SZ    calibrib.ttf
    Calibri Bold Italic (TrueType)    REG_SZ    calibriz.ttf
    Calibri Italic (TrueType)    REG_SZ    calibrii.ttf
PS C:\> Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' `
| select -First 12


Arial (TrueType)                                                      : arial.ttf
Arial Black (TrueType)                                                : ariblk.ttf
Arial Bold (TrueType)                                                 : arialbd.ttf
Arial Bold Italic (TrueType)                                          : arialbi.ttf
Arial Italic (TrueType)                                               : ariali.ttf
Bahnschrift (TrueType)                                                : bahnschrift.ttf
Calibri (TrueType)                                                    : calibri.ttf
Calibri Bold (TrueType)                                               : calibrib.ttf
Calibri Bold Italic (TrueType)                                        : calibriz.ttf
Calibri Italic (TrueType)                                             : calibrii.ttf
Calibri Light (TrueType)                                              : calibril.ttf
Calibri Light Italic (TrueType)                                       : calibrili.ttf
Cambria & Cambria Math (TrueType)                                     : cambria.ttc
1
  • This answer produces the most complete list with all the variants e.g bold, italic etc... for just a (complete) list of font names use arielCo's answer
    – Mick
    May 20, 2021 at 5:33
8

Another way, using the PresentationCore assembly:

Add-Type -AssemblyName PresentationCore
[Windows.Media.Fonts]::SystemFontFamilies | Select-Object -Property Source

(tested on Windows 10)

5
  • 1
    Produces a more complete list than the accepted answer
    – Mick
    May 20, 2021 at 5:27
  • I use this to find the fonts that are installed but since I have some fonts that are renamed "BF_standard" is our company font which is really Segoe UI but since it may be changed in the future we use a font name to update the font without having to change the font in each file. Anyways... the suggested solution only list the base font name "Segoe UI" and not the "BF_standard" name (which shows up in all text applications, Word etc.). Anyway to get that name using PowerShell? May 13 at 12:59
  • @JimmyWestberg there's another property FamilyNames. See if [Windows.Media.Fonts]::SystemFontFamilies | %{ $_.FamilyNames["en-us"] } brings that other name (substitute your language if needed).
    – arielCo
    May 15 at 22:42
  • @arielCo sorry but that didn't make the custom name appear. 2 days ago
  • FYI. I found the "fc-list" command and it gave me the raw file list which included my custom font. thegeekdiary.com/… 2 days ago
1

These links will list all the font families installed on your computer with preview while online.

If you need you can save the page as *.mht or *.html format from any browser for offline use

Or download FontViewOK which is a portable freeware and preview all installed fonts, even without an internet connection

0
dir C:\windows\fonts\*.* > C:\users\<my_username>\desktop\fontlist.txt

Alternatively, something like this will do what you need it to do :)

Hope this helps

1
  • 1
    This solution builds on the false expectation that every file in this directory is both: 1) a font file, 2) it is installed at the same time. I can copy a bunch of JPEGs to the C:\Windows\Fonts folder and nothing will happen. Also I can copy a font file to this folder and also nothing will happen as copying a file to this folder does not install the fonts. Installed fonts need to be queried from something that is registered and acts as a database. Like Registry.
    – karatedog
    Apr 6, 2022 at 9:55
0

You can use the command "fc-list" (FontConfig) which is included in MikeTex (as an example). Just run the command as:

fc-list

Or if you want to pipe it to the clipboard (much faster)

fc-list | clip

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .