回答:
TeX / LaTeXを使用するのは簡単です(OpenTypeおよびTrueTypeフォントに簡単にアクセスできるようにするには、xetexやluatexなどの新しいバージョンを使用する必要があります)。
\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{Myriad Pro Black Condensed}% <<-- change to desired font
\usepackage[nomessages]{fp}
\makeatletter
\newcommand{\printer}[3][in]{%
\FPeval\temp{round(\expandafter\strip@pt\csname#2\endcsname/72.27:#3)}%
\temp#1}
\makeatother
\begin{document}
\newlength{\samplewidth}
\settowidth{\samplewidth}{Test} % <<-- change to the text which you wish to measure
\printer{samplewidth}{4}
\end{document}
出力:0.2060in
OpenType機能がサポートされています。
\settowidth{\samplewidth}{Test 0123456789}
\printer{samplewidth}{4}\par
\addfontfeature{Numbers={Proportional,Lining}}
\settowidth{\samplewidth}{Test 0123456789}
\printer{samplewidth}{4}
出力:
0.8425インチ
0.7911インチ
一般的に利用可能なツールに関しては、いいえ、[ランダムフォント] [サイズ]と[文字]を入力として受け取り、長さを吐き出すものはありません。これが常に当てはまる理由はいくつかありますが、主な理由は、すべての通常の(モノスペースではない)フォントには独自のカーニングテーブルがあり、フォントのリリースごとに多少異なることがあるということです。異なるタイプのファウンドリが人気のある書体(Futura、Times、Gill Sansなど)の独自のバージョンを公開し、独自のバリエーションの文字のアウトラインとカーニングを使用しているという事実。これらすべて、そしてOpenTypeフォントで一般的に利用できるような合字、追跡、カスタムカーニング、自動文字代替、またはスワッシュについても触れていません。
ですから、あなたが質問している種類の測定ツールは理論的には作ることができますが、実際にそれを実用的にするために必要な実用性は、おそらくそれが高価すぎて努力に値しないでしょう。
ただし、すべてが失われるわけではありません。すべてのデザインアプリケーションには、ページ上のあらゆるものを測定するために使用できる測定ツールの形式があります(WillAdamsが指摘したように、特にLaTeXの場合はタイプ用)。アドビアプリケーションでは、スポイトツールにネストされています。マニュアルですが、動作します。
これを行うには多くの方法があります。ここでは、エンジニアが問題にどのように取り組むかを示しています。重要なのは、このアプローチが他の多くの分野と多くの点で類似していることを示すことです。声に出してそれを列挙するのは退屈に思われ、このような単純なケースでは、頭の中で静かに行われます。これはメソッドを説明するだけです。
警告の長い説明。
ご覧のとおり、回答が必要な未知の要素がたくさんあります。特に、クライアントに出荷できる優れたソリューションが必要な場合。常に問題を理解するよう努めてください。
最初の段階は、答えを出すことができるアプリケーションと方法をリストすることです:
Graphics applications (adobe has scripting api OK)
Page setters (TEX solution above)
Operating system (windows has methods for font metrics)
Manually parse fontfile (Infeasible, many formats in one need to implement a lot of routines)
postscript interpretters (solution known)
GUI toolkits (QT can do this)
Other Tookints (Graphing tools like Scipy have this info)
リストは十分な行くテストです
ポストスクリプトを使用
Postscriptは既知の方法です。Postscriptの問題は、わずかに異なる効果があるため、これを行うためにどのエンジンを使用するかです。gohostscriptを使用して、次のバッチファイルが機能します。
:: usage stringWidth string systemfont
set "ps=(%1) /%2 findfont 12 scalefont setfont 0 0 moveto true charpath pathbbox pop exch pop exch sub pstack"
gswin64c -dQUIET -dBATCH -r1200 -dNODISPLAY -sFONTPATH=%windir%\fonts -c %ps%
Windowsで動作し、ポイント幅を返します。おそらくいくつかの変更を加えてLinuxでも動作します。境界制約は不明です。説明を求めます。問題:charエンコーディングを修正するか、中間のpsファイルを使用する必要があります。それ以外の場合、間隔のある文字列は機能しません。厄介なエンコーディングの問題。西洋の言語を使用している場合は対処できます。
Illustratorとjavasciptの使用
イラストレーターを手動で使用:パスの輪郭を描く場合、GUIの幅ボックスでテキストの幅を読み取ることができます。これが理解されたら、スクリプト化できます。
これはJavaScriptで体系化できます。
#target illustrator
var doc = app.documents.add();
var text = doc.textFrames.add();
text.contents = "test";
text.textRange.characterAttributes.size = 12;
text.textRange.characterAttributes.textFont = textFonts.getByName("Onyx");
var outline = text.createOutline();
var bounds = outline.geometricBounds
var width = bounds[1]-bounds[3]
alert(width+" pt")
動作しますが、Illustratorが必要かどうかは問題ではありません。必要に応じて、一部の技術的な側面について結果を絞り込むことができます。VBやapplescriptで、またはC、C ++、python、perl、rubyなどでCOMを使用して同じことを行うことができます。必要に応じて、コマンドラインからも使用できます。
そして、上記のいくつかがテストされた後、改良のために1つを選択します。
PS: opは明確化できますか?