1pub mod agl;
51pub mod cff_parser;
52pub mod charstring;
53pub mod encoding;
54pub mod geometry;
55pub mod system_fonts;
56pub mod truetype;
57pub mod type1_parser;
58pub mod type2_charstring;
59
60pub use geometry::{Matrix, PathSegment, PsPath};
62
63pub const FONT_SUBSTITUTIONS: &[(&str, &str)] = &[
65 ("Times-Roman", "NimbusRoman-Regular"),
67 ("Times-Bold", "NimbusRoman-Bold"),
68 ("Times-Italic", "NimbusRoman-Italic"),
69 ("Times-BoldItalic", "NimbusRoman-BoldItalic"),
70 ("Helvetica", "NimbusSans-Regular"),
72 ("Helvetica-Bold", "NimbusSans-Bold"),
73 ("Helvetica-Oblique", "NimbusSans-Italic"),
74 ("Helvetica-BoldOblique", "NimbusSans-BoldItalic"),
75 ("Helvetica-Narrow", "NimbusSansNarrow-Regular"),
77 ("Helvetica-Narrow-Bold", "NimbusSansNarrow-Bold"),
78 ("Helvetica-Narrow-Oblique", "NimbusSansNarrow-Oblique"),
79 (
80 "Helvetica-Narrow-BoldOblique",
81 "NimbusSansNarrow-BoldOblique",
82 ),
83 ("Courier", "NimbusMonoPS-Regular"),
85 ("Courier-Bold", "NimbusMonoPS-Bold"),
86 ("Courier-Oblique", "NimbusMonoPS-Italic"),
87 ("Courier-BoldOblique", "NimbusMonoPS-BoldItalic"),
88 ("ArialMT", "NimbusSans-Regular"),
90 ("Arial-BoldMT", "NimbusSans-Bold"),
91 ("Arial-ItalicMT", "NimbusSans-Italic"),
92 ("Arial-BoldItalicMT", "NimbusSans-BoldItalic"),
93 ("Arial", "NimbusSans-Regular"),
94 ("Arial-Bold", "NimbusSans-Bold"),
95 ("Arial-Italic", "NimbusSans-Italic"),
96 ("Arial-BoldItalic", "NimbusSans-BoldItalic"),
97 ("Symbol", "StandardSymbolsPS"),
99 ("ZapfDingbats", "D050000L"),
100 ("Palatino-Roman", "P052-Roman"),
102 ("Palatino-Bold", "P052-Bold"),
103 ("Palatino-Italic", "P052-Italic"),
104 ("Palatino-BoldItalic", "P052-BoldItalic"),
105 ("NewCenturySchlbk-Roman", "C059-Roman"),
107 ("NewCenturySchlbk-Bold", "C059-Bold"),
108 ("NewCenturySchlbk-Italic", "C059-Italic"),
109 ("NewCenturySchlbk-BoldItalic", "C059-BdIta"),
110 ("Bookman-Light", "URWBookman-Light"),
112 ("Bookman-LightItalic", "URWBookman-LightItalic"),
113 ("Bookman-Demi", "URWBookman-Demi"),
114 ("Bookman-DemiItalic", "URWBookman-DemiItalic"),
115 ("AvantGarde-Book", "URWGothic-Book"),
117 ("AvantGarde-BookOblique", "URWGothic-BookOblique"),
118 ("AvantGarde-Demi", "URWGothic-Demi"),
119 ("AvantGarde-DemiOblique", "URWGothic-DemiOblique"),
120 ("TimesNewRoman", "NimbusRoman-Regular"),
122 ("TimesNewRomanPS", "NimbusRoman-Regular"),
123 ("TimesNewRomanPSMT", "NimbusRoman-Regular"),
124 ("TimesNewRoman-Bold", "NimbusRoman-Bold"),
125 ("TimesNewRoman,Bold", "NimbusRoman-Bold"),
126 ("TimesNewRomanPS-Bold", "NimbusRoman-Bold"),
127 ("TimesNewRomanPS-BoldMT", "NimbusRoman-Bold"),
128 ("TimesNewRoman-Italic", "NimbusRoman-Italic"),
129 ("TimesNewRoman,Italic", "NimbusRoman-Italic"),
130 ("TimesNewRomanPS-Italic", "NimbusRoman-Italic"),
131 ("TimesNewRomanPS-ItalicMT", "NimbusRoman-Italic"),
132 ("TimesNewRoman-BoldItalic", "NimbusRoman-BoldItalic"),
133 ("TimesNewRomanPS-BoldItalic", "NimbusRoman-BoldItalic"),
134 ("TimesNewRomanPS-BoldItalicMT", "NimbusRoman-BoldItalic"),
135 ("ZapfChancery-MediumItalic", "Z003-MediumItalic"),
137];
138
139pub fn find_substitution(name: &str) -> Option<&'static str> {
141 for &(ps_name, urw_name) in FONT_SUBSTITUTIONS {
142 if ps_name == name {
143 return Some(urw_name);
144 }
145 }
146 None
147}