JumpCut
JumpCut is a Rust utility designed to convert the Fountain screenwriting markup format into Final Draft FDX files (the industry standard in Hollywood) or into HTML.
JumpCut can be used as a command-line utility, a Rust library, or as a WASM package. Because of this, the project utilizes cargo features so that different parts like the command-line utility can be turned off to save binary size.
Installation
If you want to use JumpCut as a command-line utility, you can install it via Cargo.
To use JumpCut as a library, you can specify the following in your Cargo.toml so that the command-line features are not added to your project:
jumpcut = { version = "0.7", default-features = false, features = ["lib-only"] }
Usage
Once installed, you can pass JumpCut a text file and it will parse it and output it as either an FDX, HTML, or JSON. The full options from the help text are listed below.
USAGE:
jumpcut [OPTIONS] <input> [output]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-f, --format <format> Formats (FDX, HTML, JSON) [default: fdx]
ARGS:
<input> Input file, pass a dash ("-") to receive stdin
<output> Output file, stdout if not present
To use JumpCut within a Rust program, you can examine the main.rs file for an example of calling the library, but the basics are depicted below:
let mut screenplay: Screenplay = parse; // content is a String provided by your application
let output_fdx: String = screenplay.to_final_draft;
let output_html: String = screenplay.to_html;
Custom Formatting for Final Draft (FDX) Export
When converting your screenplay to Final Draft (FDX) format, you can specify custom formatting options using the fmt metadata key. This allows you to control various aspects of the FDX output, such as text styles, spacing, and margins.
To use these options, add a fmt key to your screenplay's metadata (optional key: value statements placed at the top of a document), followed by a space-separated list of options.
Example:
Title: My Awesome Screenplay
Author: John Doe
Fmt: bsh ush acat dsd dl-1.5 dr-7.0
Available fmt Options
bsh: Bold Scene Headings. Makes all scene headings bold.ush: Underlined Scene Headings. Underlines all scene headings.- Note:
bshandushcan be combined (e.g.,bsh ushfor bold and underlined scene headings).
- Note:
acat: All Caps Action Text. Converts all action text to uppercase.ssbsh: Single Space Before Scene Headings. Reduces the space before scene headings from the default (24 points) to 12 points.dsd: Double-Spaced Dialogue. Changes dialogue spacing from single to double.cfd: Courier Final Draft Font. Uses "Courier Final Draft" as the primary font instead of the default "Courier Prime".dl-X.XX: Custom Dialogue Left Indent. Sets the left indent for dialogue blocks. ReplaceX.XXwith a numerical value (e.g.,dl-1.25). The default is 2.50 inches.dr-X.XX: Custom Dialogue Right Indent. Sets the right indent for dialogue blocks. ReplaceX.XXwith a numerical value (e.g.,dr-6.00). The default is 6.00 inches.
Combined Example
To have bold and underlined scene headings, all caps action text, double-spaced dialogue, and custom dialogue margins:
Fmt: bsh ush acat dsd dl-2.0 dr-5.5
Development Plans
I have no current plans to expand this project. I've used it internally for a few years and it meets my current needs (converting my own screenplays locally and powering my website FountainLoader.com).
I have open-sourced it in case it can be useful to other developers and screenwriters.
Changelog
- 0.7.3: Adding new metadata fmt support for arbitrary dialogue margins.
- 0.7.2: Fixing parser bug where any word ending in "to:" became a transition.
- 0.7.1: Improving documentation.
- 0.7.0: Initial public release. Supports FDX, HTML, and JSON output.
License
JumpCut is licensed under the terms of the MIT license.