pub struct TexmfResources { /* private fields */ }Expand description
Resource provider backed by a TeXMF tree root and its ls-R filename index.
Implementations§
Source§impl TexmfResources
impl TexmfResources
Sourcepub fn from_root(root: impl Into<PathBuf>) -> Option<Self>
pub fn from_root(root: impl Into<PathBuf>) -> Option<Self>
Returns None when ls-R is absent or empty, run mktexlsr to generate it.
Examples found in repository?
examples/pack_native_format.rs (line 81)
72fn main() -> ExitCode {
73 let Some(output) = output_path() else {
74 eprintln!("usage: pack_native_format <output path>");
75 return ExitCode::FAILURE;
76 };
77 let Some(texmf_root) = find_texmf_root() else {
78 eprintln!("cannot find a texmf-dist ls-R index");
79 return ExitCode::FAILURE;
80 };
81 let Some(texmf) = TexmfResources::from_root(texmf_root) else {
82 eprintln!("cannot load the texmf-dist ls-R index");
83 return ExitCode::FAILURE;
84 };
85 let texmf = Arc::new(texmf);
86
87 let latex = match texmf.read("latex.ltx", ResourceKind::TexInput) {
88 Ok(resource) => resource.bytes,
89 Err(error) => {
90 eprintln!("cannot read latex.ltx: {error:?}");
91 return ExitCode::FAILURE;
92 }
93 };
94
95 let cache = GeneratedFormatCache::initialized(pe::EngineProfile::xetex());
96 let mut engine = cache
97 .instantiate(
98 pe::EngineProfile::xetex(),
99 GeneratedResourceProvider::new(&*texmf),
100 )
101 .with_font_platform(GeneratedFontSystemAdapter::new(NativeFontSystem::new(
102 texmf.clone(),
103 )));
104
105 if !engine.begin_primary_input("latex.ltx", latex) {
106 eprintln!("failed to begin latex.ltx");
107 return ExitCode::FAILURE;
108 }
109 engine.run_format_initialization();
110 if !engine.begin_primary_input("preamble.tex", PREAMBLE.to_vec()) {
111 eprintln!("failed to begin preamble");
112 return ExitCode::FAILURE;
113 }
114 engine.run_format_initialization();
115
116 engine.finalize_trie();
117 let format_bytes = GeneratedFormatCache::from_engine(&engine).to_bytes();
118 let font_table = engine.native_font_table();
119 let packaged = mathtex_engine::generated::pack_packaged_format(&format_bytes, &font_table);
120 if let Err(error) = std::fs::write(&output, packaged) {
121 eprintln!("cannot write {}: {error}", output.display());
122 return ExitCode::FAILURE;
123 }
124 ExitCode::SUCCESS
125}Trait Implementations§
Source§impl Debug for TexmfResources
impl Debug for TexmfResources
Source§impl ResourceProvider for TexmfResources
impl ResourceProvider for TexmfResources
Source§fn read_request(
&self,
request: &ResourceRequest,
) -> Result<Resource, ResourceError>
fn read_request( &self, request: &ResourceRequest, ) -> Result<Resource, ResourceError>
Resolve an arbitrary resource described by
request.Source§fn read(
&self,
name: &str,
kind: ResourceKind,
) -> Result<Resource, ResourceError>
fn read( &self, name: &str, kind: ResourceKind, ) -> Result<Resource, ResourceError>
Resolve
name as a resource of the given kind.Source§fn read_tex_input(&self, name: &str) -> Result<Resource, ResourceError>
fn read_tex_input(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a TeX input file by name.
Source§fn read_package(&self, name: &str) -> Result<Resource, ResourceError>
fn read_package(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a LaTeX package file by name.
Source§fn read_class(&self, name: &str) -> Result<Resource, ResourceError>
fn read_class(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a LaTeX class file by name.
Source§fn read_font_definition(&self, name: &str) -> Result<Resource, ResourceError>
fn read_font_definition(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a font definition file by name.
Source§fn read_package_support(&self, name: &str) -> Result<Resource, ResourceError>
fn read_package_support(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a package support file by name.
Source§fn read_font(&self, name: &str) -> Result<Resource, ResourceError>
fn read_font(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a font program or collection by name.
Source§fn read_encoding(&self, name: &str) -> Result<Resource, ResourceError>
fn read_encoding(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a font encoding file by name.
Source§fn read_map(&self, name: &str) -> Result<Resource, ResourceError>
fn read_map(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a font map file by name.
Source§fn read_config(&self, name: &str) -> Result<Resource, ResourceError>
fn read_config(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a configuration file by name.
Source§fn read_format_image(&self, name: &str) -> Result<Resource, ResourceError>
fn read_format_image(&self, name: &str) -> Result<Resource, ResourceError>
Resolve a precompiled format image by name.
Source§fn read_asset(
&self,
package: &str,
name: &str,
) -> Result<Resource, ResourceError>
fn read_asset( &self, package: &str, name: &str, ) -> Result<Resource, ResourceError>
Resolve a package-owned asset by package and asset name.
Auto Trait Implementations§
impl Freeze for TexmfResources
impl RefUnwindSafe for TexmfResources
impl Send for TexmfResources
impl Sync for TexmfResources
impl Unpin for TexmfResources
impl UnsafeUnpin for TexmfResources
impl UnwindSafe for TexmfResources
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more