import { type DataWriter } from '../data-writer.ts'; import { TableBuilder } from '../table-builder.ts'; /** * Bit flags for the font selection flags used in the fsSelection field * of the OS/2 table. * * See https://learn.microsoft.com/en-us/typography/opentype/spec/os2#fsselection */ export declare const FsSelection: { /** Font contains italic or oblique glyphs, otherwise they are upright. */ readonly ITALIC: 1; /** Glyphs are underscored. */ readonly UNDERSCORE: 2; /** Glyphs have their foreground and background reversed. */ readonly NEGATIVE: 4; /** Outline (hollow) glyphs, otherwise they are solid. */ readonly OUTLINED: 8; /** Glyphs are overstruck. */ readonly STRIKEOUT: 16; /** Glyphs are emboldened. */ readonly BOLD: 32; /** Glyphs are in the standard weight/style for the font. */ readonly REGULAR: 64; /** If set, it is strongly recommended that applications use OS/2.sTypoAscender - OS/2.sTypoDescender + OS/2.sTypoLineGap as the default line spacing for this font. */ readonly USE_TYPO_METRICS: 128; /** The font has 'name' table strings consistent with a weight/width/slope family without requiring use of name IDs 21 and 22. */ readonly WWS: 256; /** Font contains oblique glyphs. */ readonly OBLIQUE: 512; }; /** * The OS/2 table contains metrics and other data used by Windows and * some other platforms. It is essential for proper font embedding in PDFs, * as it includes fields for font weight, width, and embedding licensing flags. */ export declare class Os2Table { readonly version: number; readonly xAvgCharWidth: number; readonly usWeightClass: number; readonly usWidthClass: number; readonly fsType: number; readonly ySubscriptXSize: number; readonly ySubscriptYSize: number; readonly ySubscriptXOffset: number; readonly ySubscriptYOffset: number; readonly ySuperscriptXSize: number; readonly ySuperscriptYSize: number; readonly ySuperscriptXOffset: number; readonly ySuperscriptYOffset: number; readonly yStrikeoutSize: number; readonly yStrikeoutPosition: number; readonly sFamilyClass: number; readonly panose: number[]; readonly ulUnicodeRange1: number; readonly ulUnicodeRange2: number; readonly ulUnicodeRange3: number; readonly ulUnicodeRange4: number; readonly achVendID: string; readonly fsSelection: number; readonly usFirstCharIndex: number; readonly usLastCharIndex: number; readonly sTypoAscender?: number; readonly sTypoDescender?: number; readonly sTypoLineGap?: number; readonly usWinAscent?: number; readonly usWinDescent?: number; readonly ulCodePageRange1?: number; readonly ulCodePageRange2?: number; readonly sxHeight?: number; readonly sCapHeight?: number; readonly usDefaultChar?: number; readonly usBreakChar?: number; readonly usMaxContext?: number; readonly usLowerOpticalPointSize?: number; readonly usUpperOpticalPointSize?: number; /** * Reads an OS/2 table from the given DataView. */ static read(data: DataView): Os2Table; private constructor(); } /** * Builder for the OS/2 table. * * The version determines which fields are written: * - Version 0: Base fields only (up to usLastCharIndex, plus optional sTypoAscender..usWinDescent) * - Version 1: Adds ulCodePageRange1/2 * - Version 2-4: Adds sxHeight, sCapHeight, usDefaultChar, usBreakChar, usMaxContext * - Version 5: Adds usLowerOpticalPointSize, usUpperOpticalPointSize */ export declare class Os2TableBuilder extends TableBuilder { version: number; xAvgCharWidth: number; usWeightClass: number; usWidthClass: number; fsType: number; ySubscriptXSize: number; ySubscriptYSize: number; ySubscriptXOffset: number; ySubscriptYOffset: number; ySuperscriptXSize: number; ySuperscriptYSize: number; ySuperscriptXOffset: number; ySuperscriptYOffset: number; yStrikeoutSize: number; yStrikeoutPosition: number; sFamilyClass: number; panose: number[]; ulUnicodeRange1: number; ulUnicodeRange2: number; ulUnicodeRange3: number; ulUnicodeRange4: number; achVendID: string; fsSelection: number; usFirstCharIndex: number; usLastCharIndex: number; sTypoAscender: number; sTypoDescender: number; sTypoLineGap: number; usWinAscent: number; usWinDescent: number; ulCodePageRange1: number; ulCodePageRange2: number; sxHeight: number; sCapHeight: number; usDefaultChar: number; usBreakChar: number; usMaxContext: number; usLowerOpticalPointSize: number; usUpperOpticalPointSize: number; constructor(init?: Os2Table); writeTable(writer: DataWriter): void; } /** * Embedding licensing flags for fsType field. * Can be combined with bitwise OR. */ export declare const FsType: { /** Installable embedding */ readonly installable: 0; /** Restricted License embedding */ readonly restricted: 2; /** Preview & Print embedding */ readonly previewAndPrint: 4; /** Editable embedding */ readonly editable: 8; /** No subsetting */ readonly noSubsetting: 256; /** Bitmap embedding only */ readonly bitmapOnly: 512; };