Convert a font-unit advance to PDF user-space points at size_pt,
given the face’s units-per-em. Values are carried as i32 because
shapers use signed advances, but current embedded output normalizes
to PDF-emittable hmtx advances in 0..=65535. Preserve sign here
anyway so future positioned shaping cannot turn a negative adjustment
into a huge positive width.
Width of a single character in a Base14 face, in 1/1000 em. WinAnsi
natives go through the baked O(1) table; extended glyphs (Latin
Extended-A, math operators, ligatures) go through the baked sorted
name index. Anything else (Cyrillic, CJK, emoji) silently returns
the width of ?; the PDF emit path renders those characters as
? too, so widths and content stream stay in sync. Embedded
families exist precisely so callers wanting real coverage can opt
out of this ?-everywhere behaviour.
Width of a single glyph in font at size points. For Base14
faces this is one AFM lookup; for embedded faces it shapes the
single character. Used by the paragraph engine for character-wise
hyphenation of oversized words.