Aspose.Pdf.Text.FontRepository.FindFont 中文字型


#1

您好,
在 C:\Windows\Fonts 目錄中有 標楷體,新細明體,
但透過 Aspose.Pdf.Text.FontRepository.FindFont 時,
給 標楷體、新細明體 都會 Aspose.Pdf.FontNotFoundException 。
請問在設定 TextState 時,該如何設定中文字型呢? 謝謝您!

var a = Aspose.Pdf.Text.FontRepository.FindFont("新細明體"); var b = Aspose.Pdf.Text.FontRepository.FindFont("標楷體");
我發現,似乎是要給 機碼「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\fontlink\systemlink」裡面有的值。

可是,我在 Aspose.Cells 設定字型是值接給 標楷體 。


#2

@rainmaker_ho

感谢您与支持人员联系。

如果您使用的是系统上未安装的自定义字体,请将自定义字体目录与下面的代码行连接。 或者,你也可以从流加载字体

// 连接自定义字体目录
FolderFontSource fs = new FolderFontSource(@"path\to\my\folder");
FontRepository.Sources.Add(fs);

我们希望这会有所帮助。 如果您需要任何进一步的帮助,请随时与我们联系。


#3

您好,
我有一個問題是,為什麼 Aspose.Cells 使用的字型可以設定為 標楷體 。
但是在 Aspose.PDF 中的 TextState 卻無法使用 標楷體 呢?
而且2個的設定方式不同,
一個可以設定為 字型的名稱(Aspose.Cells),可以從 C:\Windows\Fonts 中去尋找,
另一個(Aspose.PDF)卻是要到機碼去找的名稱,有些在 C:\Windows\Fonts 中的名稱並無法使用。

是否有什麼方式可以讓我們知道 Aspose.Pdf.Text.FontRepository 可用的字型名稱嗎? 可以與 C:\Windows\Fonts 有對應嗎?
非常感謝您的幫忙。


#4

@rainmaker_ho

请你分享缩小的代码片段,其中字体适用于Aspose.Cells for .NET但不适用于Aspose.PDF for .NET API。 此外,可以使用LoadFonts方法加载所有已安装的字体。

FontRepository.LoadFonts();

#5

您好,
PDFReportUtility 中,設 Workbook 物件的 DefaultStyle 是使用 Font.Name ,arg.FontName 可以給 標楷體,如下,

var workbook = new Workbook();
if (!string.IsNullOrWhiteSpace(arg.FontName))
{
                var wbStyle = workbook.DefaultStyle;
                wbStyle.Font.Name = arg.FontName;
                workbook.DefaultStyle = wbStyle;
}

而 TextState 的設定方式如下,會設定 MingLiU 是因為我找不到 標楷體 要如何設定 ,一定要設定一個中文字型,裡面的某些字才不會變成 空的方塊。

Aspose.Pdf.Table tab1 = new Aspose.Pdf.Table();
tab1.HorizontalAlignment = HorizontalAlignment.Center;
//設定預設的文字格式
var defaultTextState = new TextState("MingLiU", 8);
 footer.Paragraphs.Add(tab1);
 tab1.DefaultColumnWidth = "180";
tab1.DefaultCellTextState = defaultTextState;

謝謝您。


#6

@rainmaker_ho

您还可以使用环境中的以下代码段将自定义中文字体应用于文本。

   Document document = new Document();
   //将一个页面添加到文档中
   var page = document.Pages.Add();
   //指定TextFragment的文本
   TextFragment text = new TextFragment(“Font Test”);
   //为文本设置不同的属性
   text.TextState.ForegroundColor = Aspose.Pdf.Color.Black;
   text.TextState.FontSize = 10;
   text.TextState.Font = FontRepository.OpenFont(@"D:\Custom Font\Sample\Test Font.ttf");
   page.Paragraphs.Add(text);
   //保存文档
   document.Save(dataDir + @“Font_18.11.pdf”);

如果您仍然遇到问题,请分享一个示例控制台应用程序以及字体文件,以便我们进一步调查以帮助您。


#7

您好,
我們目前的問題是,我Windows/Fonts 中有 標楷體,請參考附件中的 kaiuReg.png 。

Kaiu.zip (3.0 MB)

但使用 中文字型名稱 ,或是機碼中的名稱大小寫不對的話,都會發生 Aspose.Pdf.FontNotFoundException 的 Exception。

// 中文字型名稱 ,或是機碼中的名稱大小寫不對
var textStateFromFontCName = new TextState("標楷體", 8);
var textStateFromFontEName= new TextState("DFKai-sb", 8);

// 機碼中是 DFKai-SB
var textStateFromFontEName= new TextState("DFKai-SB", 8);

結論是, TextState 要使用 機碼中的字型名稱,而且區分大小寫。
這個 區分大小寫 問題找很久,真的讓人很厭世 :slight_smile:


#8

@rainmaker_ho

我们在我们的问题管理系统中记录了一张ID为PDFNET-45764的调查单,以便进一步调查。 一旦在这方面有一些重要的更新,我们将立即通知您。