2017-03-24 7 views
0

背景:node.jsバックエンドでフォントを使用する方法は?

私は、さまざまなフォントを使用するために必要Node.jsのベースのWebアプリケーションを構築しています。しかし、結果はイメージとして配信されるため、バックエンドでのみ行う必要があります。したがって、私の場合、クライアント/ブラウザはではなく、はフォントにアクセスする必要がありません。

質問:

私は、できるだけ主観的な質問を策定しようとします: フォントの大規模なコレクションとのNode.jsバックエンドを提供するために、一般的なオプションは何ですか?私がこれまでに思い付いた

オプションは次のとおりです。サーバー:

  1. 1は(Ubuntuの私の場合)のオペレーティングシステムでフォントのこれらの数百または数千をインストールしていますか?
  2. S3やMongo DBサーバーなどの(オンライン)データベースなどのクラウドストレージからフォントを提供していますか?
  3. ローカルファイルシステムを使用してフォントを保存して取得しますか?
  4. ...他のオプション

これは私のような素人がローカルマシン上でそれをしない方法ですので、私は現在、オプション1に傾いています。

ここでの議論を開始することなく、さまざまなオプションの利点(ディスコ)を議論するリソースはどこにありますか?

EDIT:

すべての回答をいただき、ありがとうございます。 これらのおかげで、私は何かを明確にする必要があることに気づいた。 p5.j​​s、paper.js、raphael.jsなどのSVG処理ライブラリで使用するフォントが必要です。ですから、node.js上で実行されるこれらのライブラリでフォントを利用できるようにする必要があります。

+1

どのようにNode.jsで画像をレンダリングする予定ですか? – AEonAX

+0

私はpaper.jsや類似のライブラリを使用しています(既に動作しています!)。これらはSVG形式のフォントを使用し、後で* .pngにもエクスポートされます。これはすでに同様に機能します。 – pascal

+1

https://groups.google.com/forum/#!topic/paperjs/mdjv-LrUS1Y? – AEonAX

答えて

1

私はそこにあなたの方法の間には実質的な違いがないことを取ったまであなたの質問への鍵は、フォントの

数百または数千

です。その数は(気が遠くなるけれども一種の)正しい場合しかし、私は希望:

  1. ないはOSにインストールしてください。イメージなしでサーバーを移動するとどうなりますか?またはOSを移動しますか?

  2. ローカルファイルシステムでは、コードのすべてのファイル名とパスを手動で追跡する必要があります。

  3. MongoDB - コレクションにファイル名+パスを格納し、実際のフォントをシステムに保存します。 移動するサーバーが出現すると、すべての実際のファイルが格納されているディレクトリとファイル名+パスが格納されているDBを選択する必要があります。
  4. MongoDBにすべてを置くことができますが、そのファイルも巨大になりたい場合、私は仮定します。それはあなた次第です。

このような場合には、おそらく選択肢3があります。

+0

ありがとう、@ twg! 数字は正しい;) 私のWebアプリケーションは創造的な方法でフォントを使用しようとしているので、何百、何千ものものを扱う必要があります。 paper.js、p5.jsなどのJavaScriptライブラリ(node.jsの上)が、オペレーティングシステムにインストールされているのではなく、ファイルパスとしてのみ提供されている場合は、 – pascal

+1

@pascalこれについてはわかりませんが、ここで見てください:[fontkit](https://www.npmjs.com/package/fontkit) – twg

+0

ありがとう!私はフォントキットで私が望んだものを達成することができました! – pascal

-1

サーバーの設定が適切な場合(たとえば、インストールされているものを制御するVPSや他のVMソリューションなど)、このジョブを「ノード外に」実行することを検討してください。例えば、私のように完璧な-AS--することができ数学の文175+構築する必要が私のプロジェクトの一つで、私が代わりにXeLaTeXにその作業をオフロード:

  1. 私は入力を受け取りノードスクリプトを実行しますテキストとは、私はその後、私はその後、余白を削除するには、そのPDFの「pdfcrop」をコールするノードを伝える
  2. PDFを生成する「xelatexのtheFileIJustMade.tex」をコールするノードを伝える
  3. 小さいながらも完全な.texファイルを作成します
  4. 次にノードに、無料で驚くほど効果的なユーティリティである「pdf2svg」を呼び出すように指示します
  5. 最後のステップとして主にスペースと帯域幅を節約するために、私は "svgo"を使用しています。これは通常のスクリプトコードまたはCLIユーティリティとして実行できるnodejsベースのsvgオプティマイザです。応じて、もちろん

(具体的なコードhereとそのhere上でいくつかの詳細は、)には限界がありますどのように反応するあなたは、あなたがステップ3と5をまったく必要とせずに行うことができます必要があるシステムどのくらい速く実行できるのですが、サーバー側のタスクとしては、リアルタイムの応答性が期待できません。

これは、サーバーが大規模なオペレーティングシステムで動作し、ジョブを実行できるツールを提供している可能性があることを示す良い例です。あなたはNodeを使っていますが、明らかにNodeソリューションが選択されていますが、Nodeは汎用プログラミング言語でもあり、python、php、java、C#などと同様にspawnexecを呼び出すことができます。特にSVGへの文字列の組版などの高度に専門化された仕事をすることを考えているときに、あなたのニーズにさらに適した別のツールがあるかもしれないかどうかについて考える価値があります。

この場合、LaTeXはコマンドラインからテキストをタイプセットするために特別に作成され、XeLaTeXは完全なUnicode認識と完全なOpenType機能を備えたシステムからのファイルへのクリーンで簡単なアクセスノード固有の解決策が候補者として価値ある候補になることは間違いありません。使用するツールについては

:(、またはWindows上のMiKTeXを通して、あなたのOSが使用するどのようなパッケージマネージャを使用してインストールしたのですが、私はあなたのサーバがWindows上で実行されていない疑いがある)pdf2svgが自由にavailable on githubでXeLaTeXとTeXのライブが付属してpdfcrop、 and svgo is available from npm

関連する問題