Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在heroku的.fonts文件夹中包含自定义字体,似乎无法识别它们_Ruby On Rails_Ruby_Heroku - Fatal编程技术网

Ruby on rails 在heroku的.fonts文件夹中包含自定义字体,似乎无法识别它们

Ruby on rails 在heroku的.fonts文件夹中包含自定义字体,似乎无法识别它们,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,Heroku支持人员告诉我,为了在我的web应用程序中使用自定义字体(系统中未安装,您可以在bash控制台中看到带有fc列表的已安装字体),我必须部署一个包含所有字体的.font文件夹 问题是我不知道怎么做。我的意思是,我不知道文件的名称是否必须遵循HeloCu的任何特殊模式,或者我必须在代码中做一些事情来考虑这个字体,或者如果我把它包含在文件夹中…它是自动的……/P> 事实上,我试着用不同的方式更改字体的文件名,但根本没有使用该字体 为了让您了解更多细节,我们使用字体的过程是将PDF转换为图像

Heroku支持人员告诉我,为了在我的web应用程序中使用自定义字体(系统中未安装,您可以在bash控制台中看到带有fc列表的已安装字体),我必须部署一个包含所有字体的.font文件夹

问题是我不知道怎么做。我的意思是,我不知道文件的名称是否必须遵循HeloCu的任何特殊模式,或者我必须在代码中做一些事情来考虑这个字体,或者如果我把它包含在文件夹中…它是自动的……/P> 事实上,我试着用不同的方式更改字体的文件名,但根本没有使用该字体

为了让您了解更多细节,我们使用字体的过程是将PDF转换为图像,更具体地说,是使用rghost gem。最终的图像根本不使用自定义字体


提前感谢,欢迎任何想法。

我的做法是将所有字体放在
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