typeset 0.1.0
縦書き・横書きの日本語組版ライブラリ(JLReq 水準、ラスタ / PDF / SVG)
読み取り中…
検索中…
一致する文字列を見つけられません
typeset::font 名前空間

font — フォント層(glyphware の薄い包み) [詳解]

クラス

struct  DecorationMetrics
 下線・打消し線のメトリクス(pt、size で換算)。位置はベースラインからの距離で下が正 (横組みの block 軸と同じ向き。打消し線は通常負) [詳解]
 
struct  FontDeclaration
 フォントの宣言(開かずに登録するためのメタデータ) [詳解]
 
class  FontSet
 

関数

uint32_t makeTag (const std::string &s)
 OpenType タグ("wght")を glyphware / HarfBuzz の 32bit タグに
 
int effectiveWeight (const glyphware::Face &face)
 face の実効ウェイト。バリアブルフォントのインスタンスなら wght 軸の値、無ければ OS/2 の値
 
float unitsPerEm (const glyphware::Face &face)
 face の unitsPerEm(取れなければ 1000)
 
void faceAscentDescent (const glyphware::Face &face, Pt size, Pt &ascent, Pt &descent)
 face の ascender / descender(正・正、pt)を size で返す
 
DecorationMetrics decorationMetrics (FontSet &fonts, const glyphware::Face &face, Pt size)
 post / OS/2 から取る(hb_ot_metrics)。無ければ下線 0.1em / 太さ 0.05em、打消し線 -0.3em
 

詳解

font — フォント層(glyphware の薄い包み)

  • face を開く(loadFile / loadMemory)か、メタデータだけ宣言して初回使用時に開く(declare)
  • 同じ family に複数の face(ウェイト・斜体)を登録でき、FontSpec の weight / italic に最も近い face を選ぶ (CSS Fonts の font-matching と同じ規則。無ければ通常の face に落ち、組版層がフェイクボールド/斜体にする)
  • FontSpec(family のフォールバック列)と文字から face を解決する。言語 → family の置換表 (setLanguageFonts)と宣言の languages により、言語の付いた文字は先にその言語のフォントを試す
  • シェイピング用の hb_font_t を face ごとに 1 つ持つ。glyphware の Face::hb() は hb-ft(FT のピクセルサイズに縛られる)なので使わず、フォントのバイト列から OT funcs の hb_font を作り、スケールを unitsPerEm にして**フォントユニットで** 位置を受け取る。vmtx / VORG による縦メトリクスもこの経路で効く

関数詳解

◆ makeTag()

uint32_t typeset::font::makeTag ( const std::string &  s)
inline

OpenType タグ("wght")を glyphware / HarfBuzz の 32bit タグに

font_set.hpp161 行目に定義があります。

◆ effectiveWeight()

int typeset::font::effectiveWeight ( const glyphware::Face &  face)

face の実効ウェイト。バリアブルフォントのインスタンスなら wght 軸の値、無ければ OS/2 の値

◆ unitsPerEm()

float typeset::font::unitsPerEm ( const glyphware::Face &  face)

face の unitsPerEm(取れなければ 1000)

◆ faceAscentDescent()

void typeset::font::faceAscentDescent ( const glyphware::Face &  face,
Pt  size,
Pt ascent,
Pt descent 
)

face の ascender / descender(正・正、pt)を size で返す

◆ decorationMetrics()

DecorationMetrics typeset::font::decorationMetrics ( FontSet fonts,
const glyphware::Face &  face,
Pt  size 
)

post / OS/2 から取る(hb_ot_metrics)。無ければ下線 0.1em / 太さ 0.05em、打消し線 -0.3em