5。低レベルのインターフェイス

ドキュメントで使用することを目的とした高レベルのフォントコマンドとは対照的に、低レベルのコマンドは主にパッケージまたはドキュメントプリアンブルで新しいコマンドを定義するためのものです。このようなコマンドを最大限に活用するには、LaTexのフォント選択スキーム(NFSS)でフォントの内部組織を理解することが役立ちます。

一方では、ラテックスのフォント選択スキームの目標は、一般的なマークアップの原則に導かれたアルゴリズムを使用して、合理的なフォント選択を許可することです。この目的のために、できるだけ多くのフォント属性に独立した変更を許可することが望ましいでしょう。一方、実生活のフォントファミリーには、通常、無数の想像できるフォント属性の組み合わせのサブセットのみが含まれています。したがって、あまりにも多くの属性に独立した変更を許可すると、実際の外部フォントが使用できない組み合わせが多すぎると、デフォルトを置き換える必要があります。

内部的には、LATEXは、 *現在のエンコード *、 *現在のファミリー *、 *現在のシリーズ *、 *現在の形状 *、および *現在のサイズ *を5つの独立したフォント属性を追跡します。エンコーディング属性は、NFSSリリース2で導入され、他のフォント属性とは無関係にキャラクターエンコードスキームを維持せずに複数の言語のサポートが不可能であることが明らかになりました。

これらの属性の値は、現在使用されているフォントを決定します。 LaTexはまた、属性の組み合わせを外部フォント(つまり、LaTexがジョブを行うために必要なデータを含む「.tfm」ファイル)と関連付けるために使用される大規模なテーブルセットを維持しています。フォントの選択は、2つのステップで行われます。

1.低レベルのコマンド\ fontencoding\ fontfamily \ fontseries\ fontshape、および \ fontsizeを使用して、多くのフォント属性が変更されます。

2。これらの新しい属性設定に対応するフォントは、「\ selectfont」コマンドを呼び出すことによって選択されます。

2番目のステップは、いくつかのアクションで構成されています。まず、LaTexは、目的の属性設定に対応するフォントがシステムに知られているかどうかを確認します(つまり、 .tfmファイルは既にロードされています)、もしそうなら、このフォントが選択されます。それ以外の場合、内部テーブルが検索されて、これらの設定に関連付けられた外部フォント名が見つかります。このようなフォント名が見つかった場合、対応する .tfmファイルがメモリに読み取られ、フォントが型形設定用に選択されます。フォント名が見つからない場合、この記事で後述するように、LaTexは代替フォントを見つけようとします。

5.1。個々のフォント属性を設定します

すべてのフォント属性に現在の値を変更するコマンドが1つあります。これらのすべてのコマンドは、多かれ少なかれ任意の文字文字列を引数として受け入れますが、わずかな値のみが理にかなっています。これらの値はNFSSに固定されているのではなく、内部テーブルに設定された規則です。次のセクションでは、標準のラテックスセットアップで使用される命名規則を紹介しますが、内部テーブルに新しいフォント宣言を追加することで、誰でもこのセットアップを変更できます。通常、LaTexで使用する新しいフォントを設定する人は誰でも、可能な限りこれらの慣習を尊重しようとする必要があります。これは、一貫した命名規則のみが、一般的にマークアップされたドキュメントで適切なフォントが選択されていることを保証できるためです。

このインターフェイスを使用して特定のフォントを選択する場合 - たとえば、コンピューターモダンダンヒルボールドコンデンスイタリック14pt-インターフェイスコンベンションのみの知識は、属性値のすべての組み合わせに外部フォントが存在しないため十分ではありません。次のようなものを指定しようとすることができます。

1\fontencoding{OT1}\fontfamily{cmdh}\fontseries{bc}\fontshape{it}%
2\fontsize{14}{16pt}\selectfont

以下に示すように、このコードは命名規則に従って正しいでしょう。ただし、この属性の組み合わせが実際のフォントに対応していないという事実のため、LaTexは別のフォントを代用する必要があります。代替メカニズムは、必要なものとはまったく異なるフォントを選択する場合があるため、フォントテーブルを参照して、目的の組み合わせが利用可能かどうかを確認する必要があります。 フォント代替プロセスの詳細については、こちらをご覧ください。

フォントファミリを選択します

フォントファミリーは、コマンド「\ fontfamily」によって選択されます。その議論として、内部テーブルで宣言されたフォントファミリを指す文字文字列を取得します。文字文字列は、これらのテーブルがセットアップされたときに定義され、通常は短い文字シーケンスです。たとえば、コンピューターモダンローマファミリーの「CMR」です。姓は、おそらくさらに3文字を組み合わせてファイル名を形成するため、5文字以下であってはなりません。

フォントシリーズの選択

「fontseries」コマンドは、シリーズ属性を変更します。このシリーズは、その引数の重みと幅を組み合わせています。つまり、その重量とは無関係に現在のフォントの幅を変更することは不可能です。これは、重量または幅を個別に変更する必要がないため、受け入れられます。それどころか、重量の変化は、デザイナーの仕様の幅の変化を伴うことがよくあります。体重が変化すると文字の水平外観が変化し、したがって、バランスの取れた外観を生成するために膨張(幅)の調整が必要なため、これはそれほど驚くことではありません。

重量と幅の両方の名前は、シリーズ名で略されているため、各組み合わせは一意です。これらの命名規則は、下の表に示されています。 「M」のインスタンス(重量または幅の中程度の立場)は省略されています。ただし、重量と幅の両方が中程度である場合を除き、単一の「M」が使用されます。たとえば、Boldの拡張は「BX」ですが、拡張された媒体は「X」であり、Bold Mediumは「B」になります。

フォントシリーズの命名規則

フォントの形状を選択します

\ fontshapeコマンドはShape属性を変更します。標準の形状の場合、1つおよび2文字の略語が使用されます。これらの形状は、以下の表にリストされています。

命名規則のフォント形状

フォントサイズの選択

コマンド \ fontsize {<size>} {<skip>}フォントサイズを変更します。 2つの引数が必要です。「 `に切り替えると、ベースライン「」(このサイズのベースライン間の距離)。フォントサイズは通常ポイントで測定されるため、慣習により、ユニットは省略されます。同じことが2番目の引数にも当てはまります。ただし、ベースラインスキップがゴムの長さである場合、ユニットを指定する必要があります。したがって、有効なサイズの変更を要求することができます

1\fontsize{14.4}{17}\selectfont

そのようなリクエストが有効であっても、このサイズに対応する外部フォントはない場合があります。そのような場合、Latexは、内部テーブルがサイズの補正を許可する場合、またはそれ以外の場合はエラーを報告する場合、近くのサイズを見つけようとします。

任意のサイズで存在するフォントを使用する場合は、もちろん、任意のサイズを選択できます。

1\fontsize{1in}{1.2in}\selectfont A text in an arbitrary font size

エンコーディングの選択

\ fontencodingコマンドは、エンコーディングを変更するために使用されます。引数は、目的のエンコードの内部名です。この名前は、事前定義されたエンコーディングの1つ(カーネルでロード)のいずれかであるか、「decrareFontencoding」コマンドで宣言されているように、ラテックスに知られている必要があります。 [フォントエンコーディングの宣言]に関する詳細情報を以下に示します(4)。標準のフォントエンコード名は、以下の表にリストされています。

標準のフォントエンコード名

NFSSは、テキストのほとんど(またはより良い、すべての)フォントが同じ言語のタイプセットに使用されている限り、同じエンコードで使用できるという仮定に基づいています。言い換えれば、エンコードの変更は、ある言語から別の言語に切り替える場合にのみ必要です。この場合、言語サポートパッケージ(例えば、「バベル」システムから)は、通常、舞台裏のエンコーディングの世話をすることになっています。

次の例では、キリル語で型刻むために環境「cyr」を定義することにより、手動でエンコードを変更します。この環境では、フォントエンコードと入力エンコードの両方が局所的に変更されます。もちろん、適切な言語サポートのために、ハイフネーションルールの変更など、追加の作業が必要になります。エンコーディングは、「Fontenc」パッケージをロードすることにより、ラテックスに宣言されます。 t2aは、標準のキリル語エンコーディングの1つを指定します。 t1は最後にロードされるため、デフォルトのエンコードになります。

エンコンディングスソースコード

エンコンディングエクスマップ出力

残念ながら、「T1」はほとんどのPostScriptフォントに完全に実装できません。次の例の5つの文字がインクの塊として表示される可能性が高く、フォントにグリフが欠落していることを示しています。 「1000個あたり」と「1万個のシンボル」シンボルは、実際にはパーセントサインと1つまたは2つの追加の小さなゼロを結合することにより形成されることに注意してください。後者のグリフのみが欠落しています。

1\usepackage[T1]{fontenc}
2-----------------------------------------
3\fontfamily{cmr}\selectfont
4\j{} \ng{} \NG{} \textperthousand{}\textpertenthousand \par
5\fontfamily{ptm}\selectfont
6\j{} \ng{} \NG{} \textperthousand{}\textpertenthousand{}

PostScriptフォントのT1

5.2。複数のフォント属性の設定

ページスタイルまたはレイアウト指向のコマンドを設計する際に、特定のフォントを選択することをお勧めします。つまり、すべての属性の値を指定する必要があります。このため、LaTexはコマンド「\ usefont」を提供します。これは、エンコーディング、ファミリ、シリーズ、および形状の4つの引数を取ります。コマンドはこれらの属性を更新し、「\ selectfont」を呼び出します。サイズとベースラインスキップも指定する場合は、「\ usefont」の前に「fontsize」コマンドを配置します。例えば、

1\fontsize{14}{16pt}\usefont{OT1}{cmdh}{bc}{it}

次のコマンドと同じ結果が生成されます。

1\fontencoding{OT1}\fontfamily{cmdh}\fontseries{bc}\fontshape{it}%
2\fontsize{14}{16pt}\selectfont

LaTexは、完全に固定されたフォントに切り替える新しいコマンドを定義するために使用できる「\ DeclareFixedFont」宣言も提供します。このようなコマンドは、内部テーブルを検索する必要がないため、非常に高速です。したがって、それらは、フォント間を前後に切り替える必要があるコマンド定義で非常に役立ちます。たとえば、スクリプトサイズで特定のテキストを型書き留めるコマンドを宣言したい場合は、次のように行うことができます。

1\DeclareFixedFont\ScriptSizeFont{\encodingdefault}{\familydefault}
2    {\seriesdefault}{\shapedefault}{7pt}
3\newcommand\theScript[1]{{\ScriptSizeFont #1}}

「\ declarefixedfont」には6つの引数があることがわかります。定義されるコマンドの名前の後に、NFSS分類の5つのフォント属性が続きます。固定値を渡す代わりに(サイズを除く)、メインドキュメントフォントを説明する内蔵フックが使用されます。したがって、上記の例では、「\ scriptsizefont」は、ドキュメントの全体的なレイアウトに依存しています。ただし、定義が実行されると、その意味が凍結されるため、後でデフォルトに変更されても「\ ScriptSizeFont」フォントは変更されません。

5.3。フォントの自動置換

組み合わせがラテックスに知られていないためにフォント変更要求を実行できない場合、同様の属性を持つフォントを使用して回復しようとします。エンコードスキーム、ファミリ、シリーズ、および形状の組み合わせが宣言されていない場合、LaTexは、最初に形状属性をデフォルトに変更することにより、既知の組み合わせを見つけようとします。結果の組み合わせがまだ不明な場合、シリーズをデフォルトに変更します。最後の手段として、家族をデフォルト値に変えます。最後に、内部テーブルエントリを検索して、要求されたサイズを見つけます。たとえば、「\ ttfamily \ bfseries \ ithape」を要求すると、大胆なシリーズとイタリック形状のタイプライターフォント(通常は存在しません)を求めた場合、ラテックスがシリーズをリセットする前に形状を最初にリセットするため、ミディアムシリーズと直立形状のタイプライターフォントを取得します。そのような場合、斜体形状のタイプライターフォントを好む場合は、 新しいフォントのセットアップ方法の記事で説明されている「sub」関数を使用して、ラテックスへの設定を発表する必要があります。

変更プロセスは、エンコードスキームを変更することはありません。これは、変更が出力に誤った文字を生成する可能性があるためです。思い出すかもしれませんが、エンコードスキームは入力文字の解釈方法を定義し、他の属性は出力の外観を定義します。したがって、たとえば、ソフトウェアが賢いという理由だけでポンドサインが契約のドル標識に置き換えられた場合、それは適切ではありません。

したがって、すべてのエンコーディングスキームには、デフォルトのファミリ、シリーズ、および形状が必要であり、少なくともエンコードスキームで構成される組み合わせと対応するデフォルトは、LaTex内に定義が必要です。

5.4。ドキュメントで低レベルのコマンドを使用する方法

前のセクションで説明されている低レベルのコマンドは、ドキュメントクラスまたはパッケージファイル、またはドキュメントプリアンブルのいずれかの高レベルコマンドの定義で使用することを目的としています。

「\ textsf」のような高レベルのコマンドを使用できる場合は、可能な限りドキュメント内の低レベルのコマンドを直接使用しないようにする必要があります。その理由は、低レベルのコマンドが特定のフォントに切り替えるための非常に正確な指示であるのに対し、高レベルのコマンドはプリアンブルのパッケージまたは宣言を使用してカスタマイズできるためです。 「fontfamily {cmss} \ selectfont」を使用して、ドキュメントでコンピューターモダンなsansを選択したとします。後で、PSNFSSバンドルのフォント(たとえば、時間)でドキュメント全体を入力することにした場合、パッケージを適用すると、明示的な「\ fontfamily」コマンドが含まれていないドキュメントの部分のみが変更されます。

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.