using System; using System.Drawing; using System.Drawing.Text; using System.Drawing.Drawing2D; using System.Windows.Forms; class FamiliesList : Form { const int iPointSize = 12; public static void Main() { Application.Run(new FamiliesList()); } public FamiliesList() { Text = "Font Families List"; ResizeRedraw = true; } protected override void OnPaint(PaintEventArgs pea) { DoPage(pea.Graphics, ForeColor, ClientSize.Width, ClientSize.Height); } protected void DoPage(Graphics grfx, Color clr, int cx, int cy) { Brush brush = new SolidBrush(clr); float x = 0, y = 0, fMaxWidth = 0; FontCollection fc = new InstalledFontCollection(); FontFamily[] aff = fc.Families; foreach (FontFamily ff in aff) { Font font = CreateSampleFont(ff, iPointSize); SizeF sizef = grfx.MeasureString(ff.Name, font); fMaxWidth = Math.Max(fMaxWidth, sizef.Width); } foreach (FontFamily ff in aff) { Font font = CreateSampleFont(ff, iPointSize); float fHeight = font.GetHeight(grfx); if (y > 0 && y + fHeight > cy) { x += fMaxWidth; y = 0; } grfx.DrawString(ff.Name, font, brush, x, y); y += fHeight; } } Font CreateSampleFont(FontFamily ff, float fPointSize) { if (ff.IsStyleAvailable(FontStyle.Regular)) return new Font(ff, fPointSize); else if (ff.IsStyleAvailable(FontStyle.Bold)) return new Font(ff, fPointSize, FontStyle.Bold); else if (ff.IsStyleAvailable(FontStyle.Italic)) return new Font(ff, fPointSize, FontStyle.Italic); else return Font; } }