FontData.d.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import { OptionList } from '../../util/Options.js';
  2. import { StyleList } from '../../util/StyleList.js';
  3. export interface CharOptions {
  4. ic?: number;
  5. sk?: number;
  6. dx?: number;
  7. unknown?: boolean;
  8. smp?: number;
  9. }
  10. export declare type CharData<C extends CharOptions> = [
  11. number,
  12. number,
  13. number
  14. ] | [
  15. number,
  16. number,
  17. number,
  18. C
  19. ];
  20. export declare type CharMap<C extends CharOptions> = {
  21. [n: number]: CharData<C>;
  22. };
  23. export declare type CharMapMap<C extends CharOptions> = {
  24. [name: string]: CharMap<C>;
  25. };
  26. export interface VariantData<C extends CharOptions> {
  27. linked: CharMap<C>[];
  28. chars: CharMap<C>;
  29. }
  30. export declare type VariantMap<C extends CharOptions, V extends VariantData<C>> = {
  31. [name: string]: V;
  32. };
  33. export declare type CssFontData = [string, boolean, boolean];
  34. export declare type CssFontMap = {
  35. [name: string]: CssFontData;
  36. };
  37. export declare const enum DIRECTION {
  38. None = 0,
  39. Vertical = 1,
  40. Horizontal = 2
  41. }
  42. export declare const V = DIRECTION.Vertical;
  43. export declare const H = DIRECTION.Horizontal;
  44. export declare type DelimiterData = {
  45. dir: DIRECTION;
  46. sizes?: number[];
  47. variants?: number[];
  48. schar?: number[];
  49. stretch?: number[];
  50. stretchv?: number[];
  51. HDW?: number[];
  52. min?: number;
  53. c?: number;
  54. fullExt?: [number, number];
  55. };
  56. export declare type DelimiterMap<D extends DelimiterData> = {
  57. [n: number]: D;
  58. };
  59. export declare const NOSTRETCH: DelimiterData;
  60. export declare type RemapData = string;
  61. export declare type RemapMap = {
  62. [key: number]: RemapData;
  63. };
  64. export declare type RemapMapMap = {
  65. [key: string]: RemapMap;
  66. };
  67. export declare type SmpMap = {
  68. [c: number]: number;
  69. };
  70. export declare type SmpData = [number, number, number?, number?, number?];
  71. export declare type FontParameters = {
  72. x_height: number;
  73. quad: number;
  74. num1: number;
  75. num2: number;
  76. num3: number;
  77. denom1: number;
  78. denom2: number;
  79. sup1: number;
  80. sup2: number;
  81. sup3: number;
  82. sub1: number;
  83. sub2: number;
  84. sup_drop: number;
  85. sub_drop: number;
  86. delim1: number;
  87. delim2: number;
  88. axis_height: number;
  89. rule_thickness: number;
  90. big_op_spacing1: number;
  91. big_op_spacing2: number;
  92. big_op_spacing3: number;
  93. big_op_spacing4: number;
  94. big_op_spacing5: number;
  95. surd_height: number;
  96. scriptspace: number;
  97. nulldelimiterspace: number;
  98. delimiterfactor: number;
  99. delimitershortfall: number;
  100. min_rule_thickness: number;
  101. separation_factor: number;
  102. extra_ic: number;
  103. };
  104. export declare class FontData<C extends CharOptions, V extends VariantData<C>, D extends DelimiterData> {
  105. static OPTIONS: OptionList;
  106. static JAX: string;
  107. static NAME: string;
  108. static defaultVariants: string[][];
  109. static defaultCssFonts: CssFontMap;
  110. protected static defaultCssFamilyPrefix: string;
  111. static VariantSmp: {
  112. [name: string]: SmpData;
  113. };
  114. static SmpRanges: number[][];
  115. static SmpRemap: SmpMap;
  116. static SmpRemapGreekU: SmpMap;
  117. static SmpRemapGreekL: SmpMap;
  118. protected static defaultAccentMap: RemapMap;
  119. protected static defaultMoMap: RemapMap;
  120. protected static defaultMnMap: RemapMap;
  121. static defaultParams: FontParameters;
  122. protected static defaultDelimiters: DelimiterMap<any>;
  123. protected static defaultChars: CharMapMap<any>;
  124. protected static defaultSizeVariants: string[];
  125. protected static defaultStretchVariants: string[];
  126. protected options: OptionList;
  127. protected variant: VariantMap<C, V>;
  128. protected delimiters: DelimiterMap<D>;
  129. protected sizeVariants: string[];
  130. protected stretchVariants: string[];
  131. protected cssFontMap: CssFontMap;
  132. cssFamilyPrefix: string;
  133. protected remapChars: RemapMapMap;
  134. params: FontParameters;
  135. skewIcFactor: number;
  136. protected _styles: StyleList;
  137. static charOptions(font: CharMap<CharOptions>, n: number): CharOptions;
  138. constructor(options?: OptionList);
  139. get styles(): StyleList;
  140. set styles(style: StyleList);
  141. createVariant(name: string, inherit?: string, link?: string): void;
  142. protected remapSmpChars(chars: CharMap<C>, name: string): void;
  143. protected smpChar(n: number): CharData<C>;
  144. createVariants(variants: string[][]): void;
  145. defineChars(name: string, chars: CharMap<C>): void;
  146. defineDelimiters(delims: DelimiterMap<D>): void;
  147. defineRemap(name: string, remap: RemapMap): void;
  148. getDelimiter(n: number): DelimiterData;
  149. getSizeVariant(n: number, i: number): string;
  150. getStretchVariant(n: number, i: number): string;
  151. getChar(name: string, n: number): CharData<C>;
  152. getVariant(name: string): V;
  153. getCssFont(variant: string): CssFontData;
  154. getFamily(family: string): string;
  155. getRemappedChar(name: string, c: number): string;
  156. }
  157. export interface FontDataClass<C extends CharOptions, V extends VariantData<C>, D extends DelimiterData> {
  158. OPTIONS: OptionList;
  159. defaultCssFonts: CssFontMap;
  160. defaultVariants: string[][];
  161. defaultParams: FontParameters;
  162. charOptions(font: CharMap<C>, n: number): C;
  163. new (...args: any[]): FontData<C, V, D>;
  164. }