[chore:] forgot to 'git add' these...
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using PdfSharp.Drawing;
|
||||
using PdfSharp.Fonts;
|
||||
|
||||
namespace spplus;
|
||||
|
||||
/// <summary>
|
||||
/// Custom font resolver for PdfSharp that loads fonts from the res/fonts directory.
|
||||
/// </summary>
|
||||
public class CustomFontResolver : IFontResolver
|
||||
{
|
||||
private static string? _fontPath;
|
||||
|
||||
public CustomFontResolver()
|
||||
{
|
||||
// Try to locate the fonts directory
|
||||
var basePath = AppDomain.CurrentDomain.BaseDirectory;
|
||||
var possiblePaths = new[]
|
||||
{
|
||||
Path.Combine(basePath, "res", "fonts"),
|
||||
Path.Combine(basePath, "fonts"),
|
||||
Path.Combine(Directory.GetCurrentDirectory(), "res", "fonts"),
|
||||
Path.Combine(Directory.GetCurrentDirectory(), "fonts"),
|
||||
};
|
||||
|
||||
foreach (var path in possiblePaths)
|
||||
{
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
_fontPath = path;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (_fontPath == null)
|
||||
{
|
||||
throw new DirectoryNotFoundException(
|
||||
$"Font directory not found. Searched: {string.Join(", ", possiblePaths)}");
|
||||
}
|
||||
}
|
||||
|
||||
public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
|
||||
{
|
||||
// Map family name to font file
|
||||
var fileName = familyName switch
|
||||
{
|
||||
"Cantarell" => isBold
|
||||
? isItalic ? "Cantarell-BoldItalic.ttf" : "Cantarell-Bold.ttf"
|
||||
: isItalic ? "Cantarell-Italic.ttf" : "Cantarell-Regular.ttf",
|
||||
_ => isBold
|
||||
? isItalic ? "Cantarell-BoldItalic.ttf" : "Cantarell-Bold.ttf"
|
||||
: isItalic ? "Cantarell-Italic.ttf" : "Cantarell-Regular.ttf"
|
||||
};
|
||||
|
||||
var fontPath = Path.Combine(_fontPath, fileName);
|
||||
|
||||
if (!File.Exists(fontPath))
|
||||
{
|
||||
throw new FileNotFoundException($"Font file not found: {fontPath}");
|
||||
}
|
||||
|
||||
// Return a FontResolverInfo with the font path
|
||||
return new FontResolverInfo(fontPath);
|
||||
}
|
||||
|
||||
public byte[]? GetFont(string faceName)
|
||||
{
|
||||
// faceName is the path returned by ResolveTypeface
|
||||
if (File.Exists(faceName))
|
||||
{
|
||||
return File.ReadAllBytes(faceName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user