EmbedFonts.cs
- //
- // This code is part of Document Solutions for Word demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using System.Collections.Generic;
- using System.Linq;
- using GrapeCity.Documents.Word;
-
- namespace DsWordWeb.Demos
- {
- // This sample shows how to embed font data into a DOCX.
- public class EmbedFonts
- {
- public GcWordDocument CreateDocx()
- {
- // Custom names for fonts that will be embedded:
- const string myFontName1 = "My Font 1";
- const string myFontName2 = "My Font 2";
-
- var doc = new GcWordDocument();
-
- // Use first of the fonts to be embedded:
- var p = doc.Body.Paragraphs.Add();
- var run = p.GetRange().Runs.Add($"Text rendered using embedded font \"{myFontName1}\".");
- // Apply custom font to the run:
- run.Font.Name = myFontName1;
-
- // Use second of the fonts to be embedded:
- p = doc.Body.Paragraphs.Add();
- run = p.GetRange().Runs.Add($"Text rendered using embedded font \"{myFontName2}\".");
- run.Font.Name = myFontName2;
-
- // For reference, Panose numbers for Latin Text:
- // 1.Family Kind(= 2 for Latin Text)
- // 2.Serif Style
- // 3.Weight
- // 4.Proportion
- // 5.Contrast
- // 6.Stroke Variation
- // 7.Arm Style
- // 8.Letterform
- // 9.Midline
- // 10.X - height
-
- // Add first font (Times New Roman) to the document:
- var font1 = doc.Fonts.Add(myFontName1);
- // Use "Times New Roman" font settings:
- font1.CharSet = FontCharSet.Ansi;
- font1.Family = GrapeCity.Documents.Word.FontFamily.Roman;
- font1.Pitch = FontPitch.Variable;
- font1.Panose = new List<byte> { 2, 2, 6, 3, 5, 4, 5, 2, 3, 4 };
- font1.Signature.CodePageRange1 = 0x000001ff;
- font1.Signature.CodePageRange2 = 0x00000000;
- font1.Signature.UnicodeRange1 = 0xE0002EFF;
- font1.Signature.UnicodeRange2 = 0xC000785B;
- font1.Signature.UnicodeRange3 = 0x00000009;
- font1.Signature.UnicodeRange4 = 0x00000000;
- // Load the "Times New Roman" font data:
- byte[] data1 = File.ReadAllBytes(Path.Combine("Resources", "Fonts", "times.ttf"));
- // Embed font data into the document:
- font1.Embedded.Add(EmbeddedFontType.Regular, FontDataType.ObfuscatedTrueTypeFont, data1);
-
- // Add second font (Arial Bold Italic) to the document:
- var font2 = doc.Fonts.Add(myFontName2);
- // Use "Times New Roman" font settings:
- font2.CharSet = FontCharSet.Ansi;
- font2.Family = GrapeCity.Documents.Word.FontFamily.Swiss;
- font2.Pitch = FontPitch.Variable;
- font2.Panose = new List<byte> { 2, 11, 8, 3, 2, 2, 3, 2, 3, 4 };
- font2.Signature.CodePageRange1 = 0x000001ff;
- font2.Signature.CodePageRange2 = 0x00000000;
- font2.Signature.UnicodeRange1 = 0xE0002EFF;
- font2.Signature.UnicodeRange2 = 0xC000785B;
- font2.Signature.UnicodeRange3 = 0x00000009;
- font2.Signature.UnicodeRange4 = 0x00000000;
- // Load the "Arial Bold Italic" font data:
- byte[] data2 = File.ReadAllBytes(Path.Combine("Resources", "Fonts", "arialbi.ttf"));
- // Embed font data into the document:
- font2.Embedded.Add(EmbeddedFontType.BoldItalic, FontDataType.ObfuscatedTrueTypeFont, data2);
-
- // Done:
- return doc;
- }
- }
- }
-