Information about not installed fonts

754
3
07-06-2016 07:37 AM
Status: Open
AnjaSeckel
Occasional Contributor

Hello all,

we have a map-template with specific fonts (Zurich, Univers, ...). The replacement of a computer is very common for different reasons. We update the software for the map-production at the new computer, but often not all fonts are installed. If we open a map-document in ArcMap, some specific fonts get Arial. It would be nice if ArcMap give the user a hint, that some fonts will be replaced after saving the document. To repair this error is very timecomsuming.

Thanks.

Tags (3)
3 Comments
RobertBorchert

I strongly agree.  I have 74 GIS fonts installed, not to mention the standard Windows Fonts.

I have had this issue in the past. However, I have not made it a habit to only use standard windows true type fonts in all situations where an ArcGIS Font is not being use. 

We are fortunate though in my department that our IT staff automatically transfers all fonts to our new computers.  But often we will create a GIS for a client and send it off to them and then get reports of odd looking symbols.

We keep a zip file of all the fonts on our network that we can use to install them all but being notified when a font does not exist would be a great bonus.

JonMorris2

As a workaround, you could run a script to check the required fonts are installed. I wrote something similar a few years ago - here it is slightly modified. If you create a text file requiredfonts.txt with all the fonts you need, the script will check they are all present.

    @echo off

    setlocal enabledelayedexpansion

    reg export "hklm\software\microsoft\windows nt\currentversion\fonts" %COMPUTERNAME%fonts.reg

    if exist %COMPUTERNAME%fontsReg.txt del %COMPUTERNAME%fontsReg.txt /q

    if exist %COMPUTERNAME%fontsByDate.txt del %COMPUTERNAME%fontsByDate.txt /q

    :: look at fonts in registry ::

    for /f "tokens=1-2* delims==" %%a in ('type %COMPUTERNAME%fonts.reg') do (

        if "%%~b" neq "" (

            set FONTPATH=%%~b

            if "!FONTPATH!" equ "!FONTPATH::\=!" set FONTPATH=c:\windows\fonts\%%~b

            if "!FONTPATH!" neq "!FONTPATH:\\=!" set FONTPATH=!FONTPATH:\\=\!

            :: check if font is in fonts folder ::

            if not exist "!FONTPATH!" (

                echo %%~a found in registry but not C:\Windows\Fonts

            ) else (

                echo %%~b >> %COMPUTERNAME%fontsReg.txt

                for /f "tokens=*" %%c in ('dir "!FONTPATH!" /b/s/a') do (

                    echo %%a        %%~tc >> %COMPUTERNAME%fontsByDate.txt

                )

            )

        )

    )

    :: check required list ::

    if exist requiredfonts.txt (

        for /f "tokens=*" %%a in ('type requiredfonts.txt') do (

            for /f "tokens=2 delims=:" %%c in ('find /i /c "%%a" %COMPUTERNAME%fontsReg.txt') do (

                if %%c equ 0 (

                    echo %%a not found on %COMPUTERNAME%.

                )

            )

        )

    )

    pause

    endlocal

    goto :eof

AnjaSeckel

Hello Jon,

thank you very much for the script. You idea sounds good. I will speek with our IT-branch to use this script. Maybe that helps the ArcGIS-user for the future. Thanks again.