3.68

Replaced readdir_r() with readdir() in epub.c. Readdir_r() is deprecated in
FreeBSD 15.0.

3.67

The formatter now ignores empty TSML elements or elements with names that the
formatter does not recognize instead of exiting.  The formatter will still exit
if a recognized element has incorrect structure.

3.66

Made Nellie ignore garbage arguments to -d instead of exiting.

3.65

fixed formatting of indented dialogue in ePUBs.

3.64

Fixed memory leaks. 

Removed dual dialogue.

3.63

Fixed the bug that added a blank page to screenplays where the included
scenes were explicitly provided by the -d option.

3.62

?

3.61

Refined orphan control.

3.60

Code clean up.  No fixes.  No new features.

3.59

Corrected incorrect parameter that orphaned scene headings on 
A4 paper.

3.58 

Corrected bugs introduced by the changes in 3.56 and 3.57.

3.57

Corrected bug introduced in 3.56 that would drop a paragraph
after a (CONT'D).

3.56

Corrected bug that would add 2 (MORE) parentheticals to 
bottom of page.

3.55

Added Unicode escapes to title pages and ePUB formatter.

3.54

Corrected bug that resulted in the formatter not freeing all the memory
associated with a struct string.

3.53

Added more escapes and a general escape to insert any Unicode character by
decimal code point.

3.52

Added escapes to allow the insertion of some accented characters as ASCII.

3.51

Added missing parenthesis to info dictionary.

3.50

Made buffers in epub.c MAXPATHLEN + 1 to accommodate terminator.

3.49

Removed the Creator entry in the info dictionary.

3.48

Increased indent of indented dialogue to 4 spaces.

Dual and left- and right-aligned dialogue block
cues and parentheticals use a 4 character indent.

3.47

Adjusted left margins for left- and right-aligned dialogue block
cues and parentheticals.

3.46

Removed -r option.  Watermarks are now always rotated.

3.45

Added the $P variable to insert page count into title pages.

3.44

Refined EPUB formatting.

3.43

Refined orphan control of scene headings followed by shot headings.

3.42

Added the -o, -b,  and -t options to turn off emboldening for acts, scenes, and shots.

3.41

Added support for bar characters to break lines.

3.40

Refined orphan control for internal paragraphs in dialogue blocks.

3.39

Corrected some bugs related to shot headings.

3.38

Refined scene heading orphan control when scene is followed by shot.

3.37

Corrrected scene/shot numbering bug.

3.36

Corrected bug in shot headings that did not increment shot letters.

Added orphan control for scene headings followed by shot headings at
bottom of page.

3.35

Removed support for converting TSML to text and Fountain.

Added shot headings. 

3.34

Added support to indicate elision at front of words in EPUBs with backticks.

3.33

Added the -s option to suppress the adding of (CONT'D) to non-pagebreak cues.

3.32

Corrected the adding of (CONT'D) to cues inside of and following dual dialogue blocks.

3.31

Corrected nasty bug in dual dialogue code that destroyed list structure.

Corrected bug that put wrong scene numbers in dual dialogue blocks.

3.30

Formatter no longer recognizes CUES for the purpose of adding (CONT'D) to
CUEs in, before, or after dual dialogue blocks.

3.29

Underlined words in lyrics are now emboldened in EPUBs.

3.28

Added support for dual dialog.

3.27

Corrected bug that misaligned right-aligned dialogue blocks on A4 paper.

3.26

Added left- and right-aligned dialog blocks.

3.25

Removed CIDTxoGID entries from font objects.  They were incorrect
and are optional.

3.24

Formatter no longer places scene headings followed by a single-line
action paragraph at the bottom of a page.

Widow and orphan control now works correctly on lyric blocks.

Formatter no longer breaks lines at double-hyphen representations of em-dashes.

3.23

Corrected bug that placed page numbers incorrectly on A4 PDFs.
Corrected bug that placed scene continuation headers incorrectly on A4 PDFs.

3.22

When scene numbers are requested, the formatter now starts pages with a
scene continuation heading if the first paragraph is not a scene heading.

3.21

Refined unbalanced underscore detection.

3.20

Formatter now recognizes an open quote preceded by an underscore preceded
by whitespace and correctly converts the quote to its typographical
equivalent in EPUBs.

Nellie now prints a warning when the formatter encounters a line with
unbalanced underscores in a line.

3.19

Added support for cover images in EPUBs.

3.18

$W can now be followed by custom text instead of "WORDS".

Added support for A4 paper with the -a option.

3.17

Corrected but in EPUB line wrapper that prevented lines with multibyte
sequences from being wrapped correctly.  This did not effect how EPUBs
were displayed only the internal formatting.

Fimblethwicke now composes EPUB dc:identifier elements with the title,
author, and time.

3.16

Centered parentheticals that wrap a page break in the middle of an
action paragraph.

3.15

Terminated page numbers with a full-stop.

3.14

Added character cue name to "(CONT'D)" parentheticals.

3.13

Increased line spacing for legibility.  The maximum number of lines per
page has dropped from 53 to 52.

3.12

Added CIDToGIDMap to font objects just to conform to spec.

3.11

Added -r option to rotate watermarks to diagonal.

3.10

Refined 3.9 changes.

3.9

Refined orphan-avoidance code.  Formatter will now not place a single-line
action paragraph that follows a scene heading on the second-last line of a
page if the succeeding paragraph is not a single-line paragraph.  The
second paragraph would be pushed to another page, orphaning the first
paragraph.

3.8

Formatter now breaks lines at explicit hyphens if it needs to.

3.7

Formatter no longer sets a single line paragraph at the bottom of a page
after a scene header.

3.6

Removed the added "By" from title pages. If you want an attribution line,
add it to the start of your author metadata:

Author:
 By
 
 James Gordon Bailie

This allows users to omit the line or to include a line in the language of
their choice.

3.5

Corrected discrepancy in where orphan space for a character cue begins
from the iOS version. That version is correct.

3.4

Corrected CMap stream lengths in PDFs that were off by 1.

3.3

Switched to TrueType CID-keyed fonts with custom CMap so PDF readers that
do not understand OpenType CID-Keyed fonts can render PDFs.

Removed support for Courier Prime Sans. It is just too annoying to maintain
2 CMaps for the 2 sets of fonts.

3.2

Removed CIDToGIDMap entries from FontDescriptors.

Added /Type and /CMapName entries to ToUnicode dictionaries.

3.1

Added ToUnicode CMap to PDFs.

3.0

Added support for (most) Unicode code points in fonts.  Some standalone
diacriticals have been omitted.

2.25

Title and Author keywords are removed from the Information Dictionary
because it can only support PDFDocEncoding.

2.24

Corrected bug that would place underlines incorrectly on lines that
contained backslashes.

2.23

Refined orphan avoidance code to avoid widows and orphans within
dialogue blocks.

2.22

Refined orphan-avoidance code for dialog blocks.

Corrected bug in Makefile that removed /usr/local/share on "make deinstall"
instead of /usr/local/share/nellie/.

2.21

Corrrected bug that would generate corrupt EPUB TOCs when a screenplay
did not start with an act or a scene header.

2.20

Corrected bug that would place underlines incorrectly on lines that contained
parentheses.

2.19

Moved the horizontal placement of (MORE) and (CONT'D) parentheticals to the
location of character cues.

2.18

Blank dialog lines now show up in EPUBs.

Fixed a memory leak that would occur in error conditions when generating EPUBs.

2.17

Formatter recognizes '~' character as encoded semicolon in metadata.

2.16

Fixed bug in epub converter that incorrectly inserted both
&gt; and > instead of substuting the first for the second.

2.15

Added checks to limit the line length of SCENE and CUE paragraphs to
prevent malicious users from causing infinite loops with paragraphs
too long to fit on a single page.

2.14

Refined EPUB styles.

2.13

Refined orphan/window avoidance code.

2.12

Corrected bug that would split an action paragraph before its
first line.

2.11

Added code to prevent widowed END headings at tops of pages.

Action paragraphs that span page breaks now get (MORE)
and (CONT'D) parentheticals.

2.10

Removed -v option. Act headings are now always pushed to new pages.

Tweak orphan avoidance code.

2.9

Tweak orphan avoidance code.

2.8

Tweaked orphan avoidance code for scene headings followed by
dialog blocks.

2.7

Nellie now will not end a page with a parenthetical.

2.6

Nellie now will not start a page with a transition.

2.5

Bumped version number to synchronize version numberss of iOS app and Unix filter.

2.4

Corrected bug that misaligned scene headers with scene numbers > 99.

2.3

Corrected bug that prevented (MORE) parenthetical from being
inserted at bottom of pages with lyrics that span page boundaries.

2.2

Wrapped lyric lines now form a paragraph with a hanging indent.

2.1

epub styling tweaks.

2.0

Added epub output.

1.86

Made the Fountain lyric meta character ~ Nellie's lyric meta character
instead of #.

Made the -x converter output lyrics as Fountain lyrics.

1.85

Changed the indented dialogue paragraph meta character from & to >.

> can be used now to insert a blank line in dialogue blocks.

Added the < meta character to suppress indentation of a new paragraph.

1.84

Fixed some memory leaks that would occur in error situations when
converting TSML to fountain or plain text.

When converting TSML to Fountain or plain text, both $D and $W are now
recognized.

When converting TSML to plain text or Fountain, the Watermark metadata
is now output in the title block.

1.83

Changed watermark transparency to 90%. Enlarged watermark font to 60pts.

Added watermark to title page.

Ensured that watermarks are underneath page numbers.

1.82

Added watermark entry to metadata. Watermarks are added underneath
page text on every page except the title page.

1.81

Corrected bug that would omit characters from metadata lines that
contained UTF-8 sequences of the Latin-1 range.

The sequence '(C)' in Contact metadata is now replaced with copyright
symbol.

1.80

Corrected bug in Fountain to TSML converter.

1.79

Added support for indented dialogue paragraphs.

1.78

Modified orphan-prevention code to push to a new page a scene header
followed by a character cue that itself is pushed to a new page.

1.77

Corrected bug that prevented single line notes from being
recognized.

1.76

Corrected memory leak that would occur in error conditions.

Added check for NULL pointer in data elements of TSML tree nodes.

1.75

Added /IDs to trailer dictionaries.  To generate IDs, we concatenate the
UNIX time with the document's Title and Author metadata.  Then we hash that
string with the Jenkins hash function.  Then we convert the hashed value to
a string and prepend 64 bytes of random data.

1.74

Forgot to update this file.

1.73

Added the -d option.

1.72

Renamed modified Courier Prime typeface to comply with license (OFL).

1.71

Made formatter tolerate title page block keywords that are not capitalized.

1.70

Made top margin exactly 1 inch.  I was putting a little less to fit an even
number of lines on a page.  I forget why.  Doesn't matter now.

Changed maximum number of lines on a page from 54 to 53.

1.69

No user-visible changes.  Replaced the hard-coded /Parent value of
the title page object with a parameter.

1.68

Removed unused character ranges from fonts.  Supposed to do this in 1.62,
but I ended up inadvertently including the wrong files.

1.67

Corrected a memory leak in the underliner that would only
occur on error conditions.

1.66

Corrected but that would incorrectly center an underlined ACT
or END header.

1.65

Corrected memory leak that would only occur in error conditions.

1.64

Removed ASCII85 encoding from fonts to make PDFs smaller.

All streams are deflated to reduce PDF size.

1.63

Compressed fonts before ascii85 encoding.

1.62

Removed unused character rangers from fonts.

1.61

Corrected 2 memory leaks.

1.60

Finally got Latin Supplement characters working.

1.59

New $W variable inserts word count into Revision metadata.

Removed support for Latin Supplement characters.


1.58

Removed some redundant text positioning commands from PDFs.

1.57

Added the -s option to choose Courier Prime Sans over Courier Prime.

1.56

Reverted to fixed number of intermediaries.

Formatter now recognizes Latin Supplement characters in metadata.

1.55

Corrected bug that would wrap lines incorrectly that contained
smart dashes or quotes.

Corrected bug in encoder that reported incorrect stream lengths.

Formatter now calculates the number of intermediate pages objects in
PDFs rather than using hard coded quantity.

1.54

Formatter now converts UTF-8 sequences of Unicode Latin Supplement
characters into 8-bit values.

1.53

Formatter now uses ASCII85 encoding on embedded fonts.

1.52

Formatter now embeds Courier Prime into PDFs.

1.51

Formatter now converts UTF-8 smart quotes and smart em dashes to their
typewriter equivalents.

1.50

Capitalized UNTITLED in placeholder titles.

Manual tweaks.

1.49

Fixed bugs that would only manifest themselves in error conditions.

1.48

Made Fountain produced by -c include explicit meta characters for action
paragraphs if necessary.

1.47

Corrected bug in TSML parser that prevented escaped brackets from
being recognized at start of data segments.

Added limited support for Fountain notes of the form: [[note]].  Only Notes
that are entire paragraphs are recognized.  Recognized notes are stripped
from documents by the -c option.

1.46

Added support for '!' to force the recognition of action paragraphs.

TSML produced by the -c option no longer has extraneous whitespace at the
start of 'a' or 'd' content.  This was harmless, but I didn't like it.

1.45

Stripped support for UTF-8.  Encodings aren't the problem, Sonny Jim.  It's
fonts. For each language that I support, other than English, I must embed
an appropriate font.  I don't need this facility, so you aren't getting it.

1.44

Dialog that is interrupted by action paragraphs causes "(CONT'D)" to be
added to succeeding character cues.

Pages breaks ending with "(CONTINUED)" now end with "(CONT'D)".

1.43

Added code to bracket a page break between a parenthetical and dialog with
(MORE) and (CONTINUED) as we do inside dialog and parentheticals.

Removed extraneous print() in free_tsml_tree().  What the
hell was that all about?

1.42

Changed call of gmtime_r() to localtime_r() in formatter.  Why on earth
was I translating $D into GMT?

1.41

Made -x and -c converters unwrap all wrapped paragraphs except for action
and dialog paragraphs.  This is necessary for -x to convert TSML into
fountain that can be successfully converted back again with -c.

1.40

Removed the keywords element from metadata.

1.39

Corrected bug in date exporting code used by the -x and -t options.

1.38

Added support for UTF-8 text.

1.37

Removed the extra space in $D metadata dates generated when the day of the
month is a single digit

1.36

Added the 't' option for plain text output.

1.35

Refined the widow control of character cues.  If the dialog and
parentheticals that follow fit into 3 lines, we do not bump the cue to a
new page.

1.34

Fountain to TSML converter converts all characters in
scene headings to uppercase.

1.33

Refinements to Fountain to TSML converter.

1.32

Made Fountain to TSML converter recognize '@' characters to force
character cue recognition

1.31

Refinements to Fountain to TSML converter.

1.30

Corrected bug in Fountain to TSML converter that prevented it from
recognizing multiple parentheticals in dialogue.

1.29

Corrected bug in widow control code that checked for 1 line less than the
required vertical space.

Increased the required lines to 4 for CUEs to account for (MORE) lines.

Corrected bug in fountain to TSML conversion that would recognize "OK."
as a CUE when it was a lone line of dialogue.

Made fountian to TSML converter convert all whitespace to spaces and
ignore lines containing only spaces.

1.28

Corrected bug in 1.27 utf-8 smart quotes conversion.  Made nellie remove
unrecognized utf-8 encodings.

1.27

Nellie now replaces utf-8 sequences representing smart quotes
with typewriter quotes so that counts of line lengths that
assume 8-bit chararacters are correct.

1.26

Added the -c option to enable conversion of Fountain files to TSML.

1.25

Added /Creator key to /Info dictionary.  Both /Producer and /Creator
are set to "Nellie the Screenplay Formatter <VERSION>".

Added the 'k' element to the 'm' element to specify keywords for
the /Info dictionary.

Edited the manual page to clarify character set support.

1.24

Made the formatter engine consume less memory.

Made nellie into a filter.

1.23

Corrected bug in line wrapper that caused it to incorrectly
wrap lines with lots of whitespace.

1.22

When centering 'v' and 'e' elements, Nellie now centers them with
point rather than character resolution.

1.21

Nellie now underlines words that are bookended with _underscores_.

Adjusted the vertical position of title lines to suit my taste.

1.20

Nellie now adds the markup to each fountain paragraph to
force it to be recognized to be of its type.

Fixed the bug that prevented nellie from reading files
in 1.19

1.19

Nellie now functions as a filter if you specify - as the
input file.

1.18

Added the -x option to export the TSML input as Fountain.

1.17

Changed the vertical placement of the title on the title page.

1.16

Added the -v option to force 'v' elements to start a new page.

1.15

Fixed a bug that I introduced in 1.1 that caused blank
lines to be added to paragraphs in certain situations.

Refined widow-avoidance code.  Described behavior in manual.

Added the 'e' element.

In multiple line 'v' and 'e' elements, Nellie now discards all
lines after the first.

1.14

Corrected bug that would render the wrapped lines of long
scene headers in Courier rather than Courier-Bold.

Adjusted widow control code to account for multiline scene
headings.

1.13

Nellie now supports the -n option to add scene numbers.

1.12

Nellie now unlinks the outfile before writing to it so that we
do not write a short PDF into a longer PDF from a previous run.

1.11

Fixed the bug I did not completely fix in 1.4.

1.10

Added support for a second command line argument to specify an output file.

1.9

Code cleanup.

Correct crashy bug that would only be triggered on error conditions in
make_pdf().  We were freeing a possibly unallocated struct stack.

Changed values of TREE to 20, and INTERMEDIARIES to 6.  A 120 page
screenplay is now distributed into 6 intermediate nodes of 20 page
references.

1.8

Tiny code cleanup.

Added /Subject key to /Info dictionary.  Value is hardcoded to
"Screenplay".

1.7

Parameterized the threshold at which nellie creates a page tree and the
number of intermediaries.  The depth of the tree is always 3.  It can only
grow wider.  Default trigger is 31 pages not including title page.  Default
number of intermediaries is 4.  A screenplay of 120 pages is therefore
distributed into 4 intermediaries containing 30 page references.

1.6

Corrected bug in page tree code in 1.5.

1.5

Nellie now creates a static page tree of depth 3 when a PDF contains 10 or
more pages.  This means that for screenplays of 120 pages or less, each
intermediate /Pages node contains 40 page references to terminal /Page
nodes.

1.4

Corrected bug that generated xref tables with lines of 19 bytes instead of
20.

1.3

Corrected heading widow trigger lines.  They reflected an earlier
incarnation of nellie that had fewer lines per page.

1.2

Rolled in libstringstack to make nellie a standalone executable capable of
building and running on UNIX or Mac.

1.1

Changed the metadata line separator to ; from , so that you can have commas
in your metadata.

Added the $D directive to version metadata to insert the current date.

Corrected the bug that made nellie chop off the final character of metadata
that did not specify multiple lines.

1.0

Initial release.
