繁体   English   中英

如何在node.js后端中使用字体?

[英]How to use fonts in the node.js backend?

背景:

我正在构建一个需要使用各种字体的基于node.js的Web应用程序。 但是它只需要在后端这样做,因为结果将作为图像传递。 因此,客户端/浏览器并不需要在所有访问的字体在我的情况。

题:

我将尝试提出尽可能少的主观问题: 为node.js后端提供大量字体的典型选择是什么?

到目前为止,我想到的选择是:

  1. 有人会在服务器(在我的情况下为Ubuntu)的操作系统中安装这数百种或数千种字体吗?
  2. 是否有人以某种方式从云存储(例如S3)或(在线)数据库(例如Mongo DB服务器)提供字体?
  3. 是否使用本地文件系统存储字体并检索它们?
  4. ...其他选择

我目前倾向于选择1,因为这是像我这样的外行在本地计算机上执行此操作的方式。

如果不在此处开始讨论,我在哪里可以找到讨论这些不同方案(不利)优势的资源?

编辑:

感谢您的所有答复。 多亏了这些,我注意到我需要澄清一些事情。 我需要在SVG处理库(例如p5.js,paper.js,raphael.js)中使用的字体。 因此,我需要使字体可用于在node.js上运行的这些库。

您问题的关键是

成百上千种字体

在我接受之前,您的方法之间没有真正的区别。 但是,如果这个数字是正确的(虽然有点令人难以置信),我会:

  1. 不要在操作系统中安装它们。 如果移动没有映像的服务器会怎样? 还是移动操作系统?

  2. 尽管需要手动跟踪代码的所有文件名和路径但是 Local File system是一种明智的做法。

  3. MongoDB-将文件名和路径存储在collection .. 中,并将实际字体存储在系统中 随着移动服务器的出现,您将必须选择存储所有实际文件的目录以及保存文件名和路径的DB。
  4. 如果您愿意,可以将其全部放在MongoDB中,但是该文件也很大,我想-这取决于您。

在这种情况下,选择3可能是我要做的。

如果您有足够不错的服务器设置(例如,VPS或用于控制安装内容的其他VM解决方案),那么您可能要考虑的另一种选择是“在节点外”进行此工作。 例如,在我的一个项目中,我需要构建175个以上尽可能完美的数学语句,我将其工作卸载到XeLaTeX:

  1. 我运行一个节点脚本,该脚本接受输入文本并构建一个小的但完整的.tex文件
  2. 然后,我告诉节点调用“ xelatex theFileIJustMade.tex”,生成一个pdf
  3. 然后,我告诉节点在该pdf上调用“ pdfcrop”,以删除边距
  4. 然后,我告诉node调用“ pdf2svg”,这是一个免费且非常有效的实用程序
  5. 然后,在最后一步,主要是为了节省空间和带宽,我使用“ svgo”,它是基于nodejs的svg优化器,可以作为常规脚本代码或CLI实用程序运行。

(对一些细节在这里 ,用实际的代码在这里

当然,根据您需要的系统响应速度,您可以完全不执行步骤3和5。我们的运行速度有一定的限制,但是作为服务器端任务,永远不要期望实时响应。

这是记住您的服务器在较大的操作系统中运行的一个很好的示例,该操作系统也可能提供可以完成此任务的工具。 当您使用Node时,显而易见的选择是Node解决方案,Node还是一种通用的编程语言,可以通过spawnexec调用其他任何东西,就像python,php,java,C#等一样。有时值得考虑是否可能存在另一个更适合您需要的工具,尤其是在考虑进行高度专业化的工作(例如将字符串键入SVG)时。

在这种情况下,专门创建LaTeX来从命令行排版文本,并且创建XeLaTeX时要具有完整的Unicode意识,并具有完整的OpenType功能控制,可以从文件和系统中干净方便地访问字体。当然,与任何特定于节点的解决方案一样,有资格成为候选人。

至于使用的工具:TeX Live附带XeLaTeX和pdfcrop(使用操作系统使用的任何软件包管理器安装,或者通过Windows上的MiKTeX安装,但我怀疑您的服务器不能在Windows上运行)pdf2svg 可在github和svgo 免费使用。 可从npm获得

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM