向Dart命令行应用程序添加字体



我正在尝试根据条件从源生成PDF文件。我正在处理的数据是用土耳其语写的。这就是为什么,存在字体错误。我需要使用一种支持土耳其字符的字体,但我无法在Dart命令行应用程序中使用它。

这就是为什么我想知道有没有一种方法可以将字体文件导入Dart应用程序?或者有其他方法可以解决unicode编码器转换错误吗?

我正在使用pdf库生成pdf文件。


#0      _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:89:9)
#1      Latin1Codec.encode (dart:convert/latin1.dart:40:46)
#2      PdfFont.stringMetrics
package:pdf/…/pdf/font.dart:174
#3      RichText.layout.<anonymous closure>
package:pdf/…/widgets/text.dart:607
#4      TextSpan.visitChildren
package:pdf/…/widgets/text.dart:436
#5      RichText.layout
package:pdf/…/widgets/text.dart:583
#6      Align.layout
package:pdf/…/widgets/basic.dart:313
#7      Flex.layout
package:pdf/…/widgets/flex.dart:294
#8      Page.layout
package:pdf/…/widgets/page.dart:200
#9      Page.postProcess
package:pdf/…/widgets/page.dart:142
#10     Document.save
package:pdf/…/widgets/document.dart:118
#11     gethtml
bin/vvitru.dart:93
<asynchronous suspension>
#12     main
bin/vvitru.dart:14
#13     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#14     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

我发现不需要在pubspec.yaml中导入字体。只需粘贴字体文件的目录就可以使用它。

比如:

final fontData =
File('/Users/zahidtekbas/Downloads/Open_Sans/OpenSans-Regular.ttf')
.readAsBytesSync();
final ttf = pw.Font.ttf(fontData.buffer.asByteData());

最新更新