import type { int16, uint8, uint16, uint32 } from "../../types.ts"; import type { Reader } from "../binary/reader.ts"; /** * OS/2 table - Font metrics and classification * Contains Windows-specific metrics and font embedding information */ export interface Os2Table { version: uint16; xAvgCharWidth: int16; usWeightClass: uint16; usWidthClass: uint16; fsType: uint16; ySubscriptXSize: int16; ySubscriptYSize: int16; ySubscriptXOffset: int16; ySubscriptYOffset: int16; ySuperscriptXSize: int16; ySuperscriptYSize: int16; ySuperscriptXOffset: int16; ySuperscriptYOffset: int16; yStrikeoutSize: int16; yStrikeoutPosition: int16; sFamilyClass: int16; panose: uint8[]; ulUnicodeRange1: uint32; ulUnicodeRange2: uint32; ulUnicodeRange3: uint32; ulUnicodeRange4: uint32; achVendID: string; fsSelection: uint16; usFirstCharIndex: uint16; usLastCharIndex: uint16; sTypoAscender: int16; sTypoDescender: int16; sTypoLineGap: int16; usWinAscent: uint16; usWinDescent: uint16; ulCodePageRange1?: uint32; ulCodePageRange2?: uint32; sxHeight?: int16; sCapHeight?: int16; usDefaultChar?: uint16; usBreakChar?: uint16; usMaxContext?: uint16; usLowerOpticalPointSize?: uint16; usUpperOpticalPointSize?: uint16; } /** Weight class constants */ export declare const WeightClass: { readonly Thin: 100; readonly ExtraLight: 200; readonly Light: 300; readonly Normal: 400; readonly Medium: 500; readonly SemiBold: 600; readonly Bold: 700; readonly ExtraBold: 800; readonly Black: 900; }; /** Width class constants */ export declare const WidthClass: { readonly UltraCondensed: 1; readonly ExtraCondensed: 2; readonly Condensed: 3; readonly SemiCondensed: 4; readonly Normal: 5; readonly SemiExpanded: 6; readonly Expanded: 7; readonly ExtraExpanded: 8; readonly UltraExpanded: 9; }; /** Font selection flags (fsSelection) */ export declare const FsSelection: { readonly Italic: 1; readonly Underscore: 2; readonly Negative: 4; readonly Outlined: 8; readonly Strikeout: 16; readonly Bold: 32; readonly Regular: 64; readonly UseTypoMetrics: 128; readonly WWS: 256; readonly Oblique: 512; }; /** Font embedding permissions (fsType) */ export declare const FsType: { readonly InstallableEmbedding: 0; readonly RestrictedLicense: 2; readonly PreviewAndPrint: 4; readonly Editable: 8; readonly NoSubsetting: 256; readonly BitmapOnly: 512; }; /** * Parse OS/2 table - Windows-specific metrics, weight, width, and classification * @param reader - Reader positioned at start of OS/2 table * @returns Parsed OS/2 table */ export declare function parseOs2(reader: Reader): Os2Table; /** Check if font is italic */ export declare function isItalic(os2: Os2Table): boolean; /** Check if font is bold */ export declare function isBold(os2: Os2Table): boolean; /** Check if USE_TYPO_METRICS flag is set */ export declare function useTypoMetrics(os2: Os2Table): boolean; /** Get embedding permission level */ export declare function getEmbeddingPermission(os2: Os2Table): "installable" | "restricted" | "preview" | "editable";