Ruby on rails 在heroku的.fonts文件夹中包含自定义字体,似乎无法识别它们
Heroku支持人员告诉我,为了在我的web应用程序中使用自定义字体(系统中未安装,您可以在bash控制台中看到带有fc列表的已安装字体),我必须部署一个包含所有字体的.font文件夹 问题是我不知道怎么做。我的意思是,我不知道文件的名称是否必须遵循HeloCu的任何特殊模式,或者我必须在代码中做一些事情来考虑这个字体,或者如果我把它包含在文件夹中…它是自动的……/P> 事实上,我试着用不同的方式更改字体的文件名,但根本没有使用该字体 为了让您了解更多细节,我们使用字体的过程是将PDF转换为图像,更具体地说,是使用rghost gem。最终的图像根本不使用自定义字体Ruby on rails 在heroku的.fonts文件夹中包含自定义字体,似乎无法识别它们,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,Heroku支持人员告诉我,为了在我的web应用程序中使用自定义字体(系统中未安装,您可以在bash控制台中看到带有fc列表的已安装字体),我必须部署一个包含所有字体的.font文件夹 问题是我不知道怎么做。我的意思是,我不知道文件的名称是否必须遵循HeloCu的任何特殊模式,或者我必须在代码中做一些事情来考虑这个字体,或者如果我把它包含在文件夹中…它是自动的……/P> 事实上,我试着用不同的方式更改字体的文件名,但根本没有使用该字体 为了让您了解更多细节,我们使用字体的过程是将PDF转换为图像
提前感谢,欢迎任何想法。我的做法是将所有字体放在
lib/assets/font
中
将这些行添加到config/application.rb
config.assets.paths << Rails.root.join('lib', 'assets', 'fonts')
config.assets.precompile += %w(.svg .eot .woff .ttf)
并将该文件包含在app/assets/stylesheets/application.css
*= require fonts
在应用程序css(scss)中,您可以使用:
font-family: 'AvenirLTStd-Black';
然后只需重新编译资产
$rake资产:预编译并重新部署。让我知道,如果这对你有效,可能已经错过了一个步骤,因为我这个月前做了 我只需在项目的根文件夹中创建一个font/
目录,然后像这样加载字体,例如在config/initializers/rghost.rb中:
RGhost::Config::GS[:extensions] << "#{Rails.root}/fonts/LTSyntax.ttf"
您的问题是PDF引用了未嵌入到PDF中的字体。您可以使用pdffonts
命令获取PDF中使用的字体列表:
> pdffonts example.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Syntax Type 1 no no no 8 0
或者,您也可以使用。本文似乎指出了一种在Heroku中使用自定义字体的方法
简而言之,你可以:
通过GIT签入将它们添加到远程文件系统
使用Ruby创建$HOME/.font
目录(如果它不存在)
使用Ruby为$HOME/.font
文件夹中的每个字体文件创建一个符号链接,指向它们在文件系统中的宿主位置(同样,如果这些文件不存在)
瞧李>
我认为OP不想提供webfonts,他想使用字体生成PDF,所以更像是使用系统字体。确切地说,任务不是提供webfonts(尽管我以后不会使用,谢谢!),而是从PDF文件中未嵌入的字体生成图像。在这种情况下,有必要使用或系统字体(有限且固定)或在应用程序中创建.font文件夹,我认为这是最灵活的选择。我的错,看到了“font”和“rails”两个词,然后大发雷霆哈哈,太棒了,AJcodez,你喜欢你的工作!:-)不管怎样,我想做你告诉我的关于网络字体的事。真的谢谢你!!哦,太好了,我得试试这个。但是,我使用以下方法:RGhost::Convert.new(tmpfile).to:jpg,multipage:true,resolution:resolution
,以便将PDF文件的每个页面转换为图像,因此,我可能不需要定义标记。谢谢,我一测试就来找你。我试过@padde,看起来字体正确,但最终的图像没有使用自定义字体。可能与字体名称有关,可能与PDF中导入的字体和检测到的字体不匹配。我怎么知道呢?安装XPdf,然后使用命令pdffonts myfile.pdf
查找pdf中引用的字体。您应该在Fontmap文件中使用这些名称。是的,这是可能的,您可以尝试转换.new(“/dir/myfile.pdf”)。转换为:pdf,:filename=>“/tmp/with_embedded_fonts.pdf”
谢谢您的回答。背景是不同的,但我会考虑到它的未来。
/Syntax (LTSyntax.ttf);
> pdffonts example.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Syntax Type 1 no no no 8 0