Back in 2007, I wrote an article about Visio Document fonts ( see Displaying Document Fonts ), but I did not notice the importance of the screenshot that shows the fonts with the IDs from 10 through to 20, and a few others. These fonts were not installed, and had been substituted by Calibri. So, I have now written some code, this time in C#, that lists all of the Visio document fonts, and indicates if they are installed in Windows.
I use LINQPad for a lot of these ad-hoc queries now, rather than VBA, so please visit my fellow Visio MVPS blog at Getting Started With C# in LINQPad with Visio to find out more about this.
I imported the following namespaces:
System.Drawing
System.Drawing.Text
Visio=Microsoft.Office.Interop.Visio
First, I created a simple class, DocFont:
public class DocFont
{
public int ID { get; set;}
public string Name { get; set;}
public short CharSet { get; set;}
public bool Installed { get; set;}
}
Then I created the Main():
void Main()
{
var vApp = MyExtensions.GetRunningVisio();
if (vApp.ActiveDocument == null) return;
Visio.Document doc = vApp.ActiveDocument;
if (doc == null) return;
FontFamily[] fontFamilies;
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
// Get the array of FontFamily objects.
fontFamilies = installedFontCollection.Families;
List<DocFont> fonts = new List<UserQuery.DocFont>();
foreach (Visio.Font fnt in doc.Fonts)
{
fonts.Add(new DocFont() {
ID=fnt.ID,
CharSet=fnt.CharSet,
Name=fnt.Name,
Installed= fontFamilies.Any(f => f.Name.Equals(fnt.Name) )
});
}
foreach (FontFamily fnt in fontFamilies)
{
if (!fonts.Any(f => f.Name.Equals(fnt.Name) == false))
{
fonts.Add(new DocFont()
{
Name = fnt.Name,
Installed = true
});
}
}
fonts.OrderBy(f => f.Name).Dump("Visio document fonts");
}
This produces a table like this:
Visio document fonts |
ID |
Name |
CharSet |
Installed |
24 |
Agency FB |
0 |
True |
25 |
Algerian |
0 |
True |
26 |
Andy |
0 |
True |
21 |
Arial |
0 |
True |
27 |
Arial Black |
0 |
True |
28 |
Arial Narrow |
0 |
True |
29 |
Arial Rounded MT Bold |
0 |
True |
1 |
Arial Unicode MS |
0 |
True |
30 |
Arvo |
0 |
True |
31 |
Baskerville Old Face |
0 |
True |
32 |
Bauhaus 93 |
0 |
True |
33 |
Bell MT |
0 |
True |
34 |
Berlin Sans FB |
0 |
True |
35 |
Berlin Sans FB Demi |
0 |
True |
36 |
Bernard MT Condensed |
0 |
True |
37 |
Blackadder ITC |
0 |
True |
38 |
Bodoni MT |
0 |
True |
39 |
Bodoni MT Black |
0 |
True |
40 |
Bodoni MT Condensed |
0 |
True |
41 |
Bodoni MT Poster Compressed |
0 |
True |
42 |
Book Antiqua |
0 |
True |
43 |
Bookman Old Style |
0 |
True |
44 |
Bookshelf Symbol 7 |
2 |
True |
45 |
Bradley Hand ITC |
0 |
True |
46 |
Britannic Bold |
0 |
True |
47 |
Broadway |
0 |
True |
48 |
Brush Script MT |
0 |
True |
49 |
Buxton Sketch |
0 |
True |
4 |
Calibri |
0 |
True |
50 |
Calibri Light |
0 |
True |
51 |
Californian FB |
0 |
True |
52 |
Calisto MT |
0 |
True |
53 |
Cambria |
0 |
True |
54 |
Cambria Math |
0 |
True |
55 |
Candara |
0 |
True |
56 |
Castellar |
0 |
True |
57 |
Centaur |
0 |
True |
58 |
Century |
0 |
True |
59 |
Century Gothic |
0 |
True |
60 |
Century Schoolbook |
0 |
True |
61 |
Chiller |
0 |
True |
62 |
Colonna MT |
0 |
True |
63 |
Comic Sans MS |
0 |
True |
64 |
Consolas |
0 |
True |
65 |
Constantia |
0 |
True |
66 |
Cooper Black |
0 |
True |
67 |
Copperplate Gothic Bold |
0 |
True |
68 |
Copperplate Gothic Light |
0 |
True |
69 |
Corbel |
0 |
True |
20 |
Cordia New |
0 |
False |
70 |
Courier New |
0 |
True |
71 |
Curlz MT |
0 |
True |
72 |
DengXian |
0 |
True |
17 |
Dhenu |
0 |
False |
8 |
Dotum |
0 |
False |
73 |
Droid Serif |
0 |
True |
74 |
Ebrima |
0 |
True |
75 |
Edwardian Script ITC |
0 |
True |
76 |
Elephant |
0 |
True |
77 |
Engravers MT |
0 |
True |
78 |
Eras Bold ITC |
0 |
True |
79 |
Eras Demi ITC |
0 |
True |
80 |
Eras Light ITC |
0 |
True |
81 |
Eras Medium ITC |
0 |
True |
10 |
Estrangelo Edessa |
0 |
False |
82 |
Felix Titling |
0 |
True |
83 |
Footlight MT Light |
0 |
True |
84 |
Forte |
0 |
True |
85 |
Franklin Gothic Book |
0 |
True |
86 |
Franklin Gothic Demi |
0 |
True |
87 |
Franklin Gothic Demi Cond |
0 |
True |
88 |
Franklin Gothic Heavy |
0 |
True |
89 |
Franklin Gothic Medium |
0 |
True |
90 |
Franklin Gothic Medium Cond |
0 |
True |
91 |
Freestyle Script |
0 |
True |
92 |
French Script MT |
0 |
True |
93 |
Gabriola |
0 |
True |
94 |
Gadugi |
0 |
True |
95 |
Garamond |
0 |
True |
19 |
Gautami |
0 |
False |
96 |
Georgia |
0 |
True |
97 |
Gigi |
0 |
True |
98 |
Gill Sans MT |
0 |
True |
99 |
Gill Sans MT Condensed |
0 |
True |
100 |
Gill Sans MT Ext Condensed Bold |
0 |
True |
101 |
Gill Sans Ultra Bold |
0 |
True |
102 |
Gill Sans Ultra Bold Condensed |
0 |
True |
103 |
Gloucester MT Extra Condensed |
0 |
True |
104 |
Goudy Old Style |
0 |
True |
105 |
Goudy Stout |
0 |
True |
125 |
Haettenschweiler |
0 |
True |
126 |
Harlow Solid Italic |
0 |
True |
127 |
Harrington |
0 |
True |
106 |
HGHeiseiKakugothictaiW3 |
128 |
True |
107 |
HGHeiseiKakugothictaiW5 |
128 |
True |
108 |
HGHeiseiKakugothictaiW9 |
128 |
True |
109 |
HGHeiseiMinchotaiW3 |
128 |
True |
110 |
HGHeiseiMinchotaiW9 |
128 |
True |
111 |
HGMinchoL |
128 |
True |
112 |
HGPHeiseiKakugothictaiW3 |
128 |
True |
113 |
HGPHeiseiKakugothictaiW5 |
128 |
True |
114 |
HGPHeiseiKakugothictaiW9 |
128 |
True |
115 |
HGPHeiseiMinchotaiW3 |
128 |
True |
116 |
HGPHeiseiMinchotaiW9 |
128 |
True |
117 |
HGPMinchoL |
128 |
True |
118 |
HGSHeiseiKakugothictaiW3 |
128 |
True |
119 |
HGSHeiseiKakugothictaiW5 |
128 |
True |
120 |
HGSHeiseiKakugothictaiW9 |
128 |
True |
121 |
HGSHeiseiMinchotaiW3 |
128 |
True |
122 |
HGSHeiseiMinchotaiW9 |
128 |
True |
123 |
HGSMinchoL |
128 |
True |
128 |
High Tower Text |
0 |
True |
124 |
HYSWLongFangSong |
134 |
True |
129 |
Impact |
0 |
True |
130 |
Imprint MT Shadow |
0 |
True |
131 |
Indie Flower |
0 |
True |
132 |
Informal Roman |
0 |
True |
133 |
Javanese Text |
0 |
True |
134 |
Jing Jing |
0 |
True |
135 |
Jokerman |
0 |
True |
136 |
Juice ITC |
0 |
True |
137 |
Kootenay |
0 |
True |
138 |
Kristen ITC |
0 |
True |
139 |
Kunstler Script |
0 |
True |
18 |
Latha |
0 |
False |
140 |
Leelawadee |
0 |
True |
141 |
Leelawadee UI |
0 |
True |
142 |
Leelawadee UI Semilight |
0 |
True |
143 |
Lindsey |
0 |
True |
144 |
Lobster |
0 |
True |
145 |
Lucida Bright |
0 |
True |
146 |
Lucida Calligraphy |
0 |
True |
147 |
Lucida Console |
0 |
True |
148 |
Lucida Fax |
0 |
True |
149 |
Lucida Handwriting |
0 |
True |
150 |
Lucida Sans |
0 |
True |
151 |
Lucida Sans Typewriter |
0 |
True |
152 |
Lucida Sans Unicode |
0 |
True |
160 |
Magneto |
0 |
True |
161 |
Maiandra GD |
0 |
True |
22 |
Malgun Gothic |
0 |
True |
162 |
Malgun Gothic Semilight |
0 |
True |
13 |
Mangal |
0 |
False |
163 |
Marlett |
2 |
True |
164 |
Matura MT Script Capitals |
0 |
True |
165 |
Microsoft Himalaya |
0 |
True |
166 |
Microsoft JhengHei |
0 |
True |
167 |
Microsoft JhengHei Light |
0 |
True |
168 |
Microsoft JhengHei UI |
0 |
True |
169 |
Microsoft JhengHei UI Light |
0 |
True |
170 |
Microsoft MHei |
0 |
True |
171 |
Microsoft NeoGothic |
0 |
True |
172 |
Microsoft New Tai Lue |
0 |
True |
173 |
Microsoft PhagsPa |
0 |
True |
174 |
Microsoft Sans Serif |
0 |
True |
175 |
Microsoft Tai Le |
0 |
True |
176 |
Microsoft Uighur |
0 |
True |
177 |
Microsoft YaHei |
0 |
True |
178 |
Microsoft YaHei Light |
0 |
True |
179 |
Microsoft YaHei UI |
0 |
True |
180 |
Microsoft YaHei UI Light |
0 |
True |
181 |
Microsoft Yi Baiti |
0 |
True |
183 |
MingLiU_HKSCS-ExtB |
0 |
True |
182 |
MingLiU-ExtB |
0 |
True |
184 |
Miramonte |
0 |
True |
185 |
Mistral |
0 |
True |
186 |
Modern No. 20 |
0 |
True |
187 |
Moire |
0 |
True |
188 |
Moire ExtraBold |
0 |
True |
189 |
Moire Light |
0 |
True |
190 |
Mongolian Baiti |
0 |
True |
191 |
Monotype Corsiva |
0 |
True |
192 |
Motorwerk |
0 |
True |
153 |
MS Gothic |
0 |
True |
154 |
MS Outlook |
2 |
True |
7 |
MS PGothic |
0 |
True |
155 |
MS Reference Sans Serif |
0 |
True |
156 |
MS Reference Specialty |
2 |
True |
157 |
MS UI Gothic |
0 |
True |
158 |
MT Extra |
2 |
True |
159 |
MV Boli |
0 |
True |
193 |
Myanmar Text |
0 |
True |
195 |
News Gothic |
0 |
True |
196 |
Niagara Engraved |
0 |
True |
197 |
Niagara Solid |
0 |
True |
198 |
Nirmala UI |
0 |
True |
199 |
Nirmala UI Semilight |
0 |
True |
194 |
NSimSun |
0 |
True |
200 |
OCR A Extended |
0 |
True |
201 |
Old English Text MT |
0 |
True |
202 |
Onyx |
0 |
True |
203 |
Open Sans |
0 |
True |
205 |
Palace Script MT |
0 |
True |
206 |
Palatino Linotype |
0 |
True |
207 |
Papyrus |
0 |
True |
208 |
Parchment |
0 |
True |
209 |
Pericles |
0 |
True |
210 |
Pericles Light |
0 |
True |
211 |
Perpetua |
0 |
True |
212 |
Perpetua Titling MT |
0 |
True |
213 |
Pescadero |
0 |
True |
214 |
Playbill |
0 |
True |
6 |
PMingLiU |
0 |
False |
204 |
PMingLiU-ExtB |
0 |
True |
215 |
Poiret One |
0 |
True |
216 |
Poor Richard |
0 |
True |
217 |
Pristina |
0 |
True |
218 |
Quartz MS |
0 |
True |
16 |
Raavi |
0 |
False |
219 |
Rage Italic |
0 |
True |
220 |
Raleway |
0 |
True |
221 |
Ravie |
0 |
True |
222 |
Roboto |
0 |
True |
223 |
Roboto Condensed |
0 |
True |
224 |
Roboto Slab |
0 |
True |
225 |
Rockwell |
0 |
True |
226 |
Rockwell Condensed |
0 |
True |
227 |
Rockwell Extra Bold |
0 |
True |
229 |
Script MT Bold |
0 |
True |
230 |
Segoe Keycaps |
0 |
True |
232 |
Segoe Marker |
0 |
True |
231 |
Segoe MDL2 Assets |
0 |
True |
233 |
Segoe Print |
0 |
True |
234 |
Segoe Script |
0 |
True |
235 |
Segoe UI |
0 |
True |
236 |
Segoe UI Black |
0 |
True |
237 |
Segoe UI Emoji |
0 |
True |
238 |
Segoe UI Historic |
0 |
True |
239 |
Segoe UI Light |
0 |
True |
240 |
Segoe UI Mono |
0 |
True |
241 |
Segoe UI Semibold |
0 |
True |
242 |
Segoe UI Semilight |
0 |
True |
243 |
Segoe UI Symbol |
0 |
True |
244 |
Segoe WP |
0 |
True |
245 |
Segoe WP Black |
0 |
True |
246 |
Segoe WP Light |
0 |
True |
248 |
Segoe WP Semibold |
0 |
True |
247 |
Segoe WP SemiLight |
0 |
True |
15 |
Sendnya |
0 |
False |
249 |
Showcard Gothic |
0 |
True |
12 |
Shruti |
0 |
False |
5 |
SimSun |
0 |
True |
250 |
SimSun-ExtB |
0 |
True |
251 |
Sitka Banner |
0 |
True |
252 |
Sitka Display |
0 |
True |
253 |
Sitka Heading |
0 |
True |
254 |
Sitka Small |
0 |
True |
255 |
Sitka Subheading |
0 |
True |
256 |
Sitka Text |
0 |
True |
257 |
SketchFlow Print |
0 |
True |
258 |
Snap ITC |
0 |
True |
259 |
Stencil |
0 |
True |
228 |
SWGamekeys MT |
2 |
True |
282 |
SWMacro |
0 |
False |
9 |
Sylfaen |
0 |
True |
2 |
Symbol |
2 |
True |
260 |
Tahoma |
0 |
True |
261 |
Tempus Sans ITC |
0 |
True |
23 |
Times New Roman |
0 |
True |
262 |
Trebuchet MS |
0 |
True |
14 |
Tunga |
0 |
False |
263 |
Tw Cen MT |
0 |
True |
264 |
Tw Cen MT Condensed |
0 |
True |
265 |
Tw Cen MT Condensed Extra Bold |
0 |
True |
266 |
Verdana |
0 |
True |
267 |
Viner Hand ITC |
0 |
True |
268 |
Vivaldi |
0 |
True |
269 |
Vladimir Script |
0 |
True |
11 |
Vrinda |
0 |
False |
270 |
Wasco Sans |
0 |
True |
271 |
Webdings |
2 |
True |
272 |
Wide Latin |
0 |
True |
3 |
Wingdings |
2 |
True |
273 |
Wingdings 2 |
2 |
True |
274 |
Wingdings 3 |
2 |
True |
275 |
Yu Gothic |
0 |
True |
276 |
Yu Gothic Light |
0 |
True |
277 |
Yu Gothic Medium |
0 |
True |
278 |
Yu Gothic UI |
0 |
True |
279 |
Yu Gothic UI Light |
0 |
True |
280 |
Yu Gothic UI Semibold |
0 |
True |
281 |
Yu Gothic UI Semilight |
0 |
True |
|
By the way, I tested exporting a Visio document with all of the document fonts to SVG and PDF using Visio Pro for Office 365. They all rendered fine, apart from those fonts which are not installed in my English Windows 10.
I have asked Microsoft why Visio documents include the names of fonts that are not normally installed by Windows. I have not had an answer yet ….