EmbedFonts.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Collections.Generic;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 (Noto Serif Regular) to the document: var font1 = doc.Fonts.Add(myFontName1); // 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 "Noto Serif" font data: byte[] data1 = File.ReadAllBytes(Path.Combine("Resources", "Fonts", "NotoSerif-Regular.ttf")); // Embed font data into the document: font1.Embedded.Add(EmbeddedFontType.Regular, FontDataType.ObfuscatedTrueTypeFont, data1);
// Add second font (Noto Sans Bold Italic) to the document: var font2 = doc.Fonts.Add(myFontName2); // 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 "Noto Sans Bold Italic" font data: byte[] data2 = File.ReadAllBytes(Path.Combine("Resources", "Fonts", "NotoSans-BoldItalic.ttf")); // Embed font data into the document: font2.Embedded.Add(EmbeddedFontType.BoldItalic, FontDataType.ObfuscatedTrueTypeFont, data2);
// Done: return doc; } }}