I recently sequenced a terminal emulation application that utilised a specific set of fonts for each terminal session, and discovered that the fonts were not rendering correctly in App-V 5. If your fonts don’t render correctly when run inside an App-V 5 package, it may be due to how the fonts have been captured during the sequencing phase.
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:
I wondered if this was the reason why the App-V font subsystem wasn’t correctly processing the font and the fonts were still not rendering correctly in App-V 5! 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!
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’.
You 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:
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>