Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
This article describes how to load custom fonts for barcode generation in Aspose.Barcode for .Net. This is allowed only for .Net Standard and .Net Core library versions. Aspose.Barcode in .Net Standard and .Net Core library versions uses Aspose.Drawing.Common as graphics library and it allows to load custom fonts to the AppDomain without installing them to system.
You can anytime download the example application.
First, you need to create .Net Console application. You can do this in Visual Studio 2022. For this you need to:
The next you need to add reference to NuGet package Aspose.BarCode and your project should look like this:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aspose.BarCode" Version="24.1.0.0"/>
</ItemGroup>
</Project>
The following code allows you to load custom fonts to local AppDomain for Aspose.Drawing.Common library using.
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Aspose.Barcode.LoadFonts
{
public class AsposeFontsLoader
{
/// <summary>
/// Adds font file to Aspose.Drawing main fonts
/// </summary>
///<param name="fontName">font file</param>
public static void RegisterFontFromFile(string fontName)
{
using (Stream fontStream = new FileStream(fontName, FileMode.Open, FileAccess.Read, FileShare.Read))
RegisterFontFromStream(fontStream);
}
/// <summary>
/// Adds font stream to Aspose.Drawing main fonts
/// </summary>
///<param name="fontStream">font stream</param>
public static void RegisterFontFromStream(Stream fontStream)
{
//load font
Aspose.Drawing.Text.PrivateFontCollection collection = new Aspose.Drawing.Text.PrivateFontCollection();
AddFontData(collection, fontStream);
//register
Aspose.Drawing.Text.InstalledFontCollection installed = new Aspose.Drawing.Text.InstalledFontCollection();
installed.AddFamilies(collection.Families);
}
/// <summary>
/// Adds font stream to private fonts collection
/// </summary>
///<param name="privateCollection">private fonts collection where we add the following font stream</param>
///<param name="fontStream">font stream</param>
public static void AddFontData(Aspose.Drawing.Text.PrivateFontCollection privateCollection, Stream fontStream)
{
byte[] fontData = new byte[fontStream.Length];
fontStream.Position = 0;
fontStream.Read(fontData, 0, fontData.Length);
IntPtr dataPointer = Marshal.AllocHGlobal(fontData.Length);
try
{
Marshal.Copy(fontData, 0, dataPointer, fontData.Length);
privateCollection.AddMemoryFont(dataPointer, fontData.Length);
}
finally
{
Marshal.FreeHGlobal(dataPointer);
}
}
}
}
With the following code you can generate Code128 barcode with custom calligraphic font Claire Amoreth
//register fonts
AsposeFontsLoader.RegisterFontFromFile(@"..\..\..\..\fonts\ClaireAmoreth.ttf");
//generate barcode
BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.Code128, "Aspose.BarCode");
gen.Parameters.Barcode.XDimension.Pixels = 4;
gen.Parameters.Barcode.BarHeight.Pixels = 80;
gen.Parameters.Barcode.CodeTextParameters.Font.Style = FontStyle.Bold;
gen.Parameters.Barcode.CodeTextParameters.Font.FamilyName = "Claire Amoreth";
gen.Save("code128.png", BarCodeImageFormat.Png);
And result:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.