Resolve Font Issues with App-V 5

I recently sequenced a terminal emulation application that utilised a specific set of fonts for each terminal session.

When i first launched the App-V application shortcut after capturing a default installation, I was presented with random characters and symbols – the fonts hadn’t been successfully virtualised.

I checked the AppxManifest.xml file within my package and saw that the fonts had been captured and processed by the App-V font subsystem like so:

<appv:Extension Category="AppV.Fonts">
	<appv:Fonts>
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\bsfascii.fon" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\bsfisol1.fon" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfascii.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfcrm.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfdgint.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\Psfdgln.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfdgmos.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfdspec.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfdsupg.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfdtech.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfisol1.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfisol2.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfisol9.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\Psfkata.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\Psfpc0__.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfpcasc.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfsymbl.ttf" />
		<appv:Font Path="[{ProgramFilesX86}]\Persoft\STEssen\Fonts\psfwproc.ttf" />
	</appv:Fonts>
</appv:Extension>

Of course, this looked ok to me and the font files did exist inside the VFS at the correct location!

When i took a closer look at how the fonts were installed by the installation routine, I noticed shortcut icons in the C:\Windows\Fonts folder as opposed to physical files:

Fonts in the Application Folder
I wondered if this was the reason why the App-V font subsystem wasn’t correctly processing the font?  Since the physical font file didn’t exist inside the Fonts folder itself.

During my next attempt, I lazily tried dragging the fonts into the Fonts folder during the sequencing phase.  I noted again that by default the fonts got copied to the AppData folder and a shortcut was created to the font!  Of course after removing LocalAppData from the exclusions list in App-V, this yielded similar behaviour to my first attempt and the fonts didn’t work in my App-V package!

Fonts Local App Data

My third and final attempt consisted of highlighting all of the font files during the sequencing phase, right-clicking and selecting ‘Install for all users’.

Install Fonts for All UsersYou can see that doing it this way meant that the physical font files were stored in the C:\Windows\Fonts folder directly (no shortcuts!), and the App-V font subsystem then processed them correctly:

Fonts Folder

And the AppxManifest.xml:

<appv:Extension Category="AppV.Fonts">
	<appv:Fonts>
		<appv:Font Path="[{Fonts}]\bsfascii.fon" />
		<appv:Font Path="[{Fonts}]\bsfisol1.fon" />
		<appv:Font Path="[{Fonts}]\psfascii.ttf" />
		<appv:Font Path="[{Fonts}]\psfcrm.ttf" />
		<appv:Font Path="[{Fonts}]\psfdgint.ttf" />
		<appv:Font Path="[{Fonts}]\Psfdgln.ttf" />
		<appv:Font Path="[{Fonts}]\psfdgmos.ttf" />
		<appv:Font Path="[{Fonts}]\psfdspec.ttf" />
		<appv:Font Path="[{Fonts}]\psfdsupg.ttf" />
		<appv:Font Path="[{Fonts}]\psfdtech.ttf" />
		<appv:Font Path="[{Fonts}]\psfisol1.ttf" />
		<appv:Font Path="[{Fonts}]\psfisol2.ttf" />
		<appv:Font Path="[{Fonts}]\psfisol9.ttf" />
		<appv:Font Path="[{Fonts}]\Psfkata.ttf" />
		<appv:Font Path="[{Fonts}]\Psfpc0_.ttf" />
		<appv:Font Path="[{Fonts}]\psfpcasc.ttf" />
		<appv:Font Path="[{Fonts}]\psfsymbl.ttf" />
		<appv:Font Path="[{Fonts}]\psfwproc.ttf" />
	</appv:Fonts>
</appv:Extension>