#! /usr/bin/python3
import sys, re
import html_gen as h
from process_funcs import bash
import html_report_funcs as hr
last_edit = "Last edited on 2026-01-20 22:42:07 by stolfi"
def main():
global last_edit
title = "Locating parag breaks in the Starred Parags Section"
st = h.new_doc(title, "#eeffdd")
h.section(st, 2, "Summary")
h.parags(st, """This webpage reports an attemp at locating the paragraph breaks in
the Starred Paragraphs section (SPS) of the Voynich Manuscript (VMS),
also known as the Recipes section.""")
h.section(st, 2, "Paragraphs and why they matter")
h.parags(st, """ The text of the SPS clearly consists of multiple
paragraphs ('parags' for short), each comprising one or more lines. Each
line normally starts at the left margin of the text and continues up
to the right margin, or to the end of the paragraph, whichever comes
first.
Considering the cost of parch and the difficulty of erasing it,
we assume that the Author (the person who decided to create the book,
devised the script, created or obtained the information, etc.) first
wrote a draft the SPS on paper, and then recruited a Scribe to
traspose the final draft to parch. We assume that both Author and
Scribe understood that the parags were significant, while the line
breaks within each parag were not; so that the Scribe disregarded the
line breaks in the draft, and introduced new ones whenever he/she
reached the right margin. (While the Scribe may have been the
Author him/herself, there is evidence that they were different
persons, and that the Scribe did not know much about the meaning of
text, probably not even its language.)
Identifying the paragraphs as intended by the Author is necessary
for certain analyses, such as comparing the frequencies of words at in
the start, middle, and end of paragraphs, or trying to identify words
that occur preferably at the end of sentences (like the verbs in
German and other SOV languages).
There are several features that are believed to indicate those breaks;
but they often disagree or are absent, and there are several blocks of
consecutive lines that, based on internal and external clues, can be
presumed to consist of two or more parags run together. Locating the
paragraph breaks within those blocks requires some more or less
arbitary choices, guided by the available clues.
This article describes a set of criteria for guiding these choices,
and shows the results of applying them to each page of the SPS.""")
h.parags(st, hr.html_subdoc_link(st, "sec-glossary", "page", thumb_img = None, link_text = "Glossary of general terms"))
h.parags(st, hr.html_subdoc_link(st, "sec-transcription", "page", thumb_img = None, link_text = "The transcription file"))
h.section(st, 2, "Stars in the SPS")
h.parags(st, """The left margin of every page of the SPS contains a
column of stars.""")
h.enum_item_parags(st,
hr.html_subdoc_link(st, "sec-star-glossary", "page", thumb_img = None, link_text = "Glossary of star-related terms")
)
h.section(st, 3, "Appearance")
h.parags(st, """
The stars of the SPS look very similar to those in the Zodiac section,
and some of those in the Cosmo section. Each star is typically ~6 mm
across. Its outline is drawn with the same ink as the text, and
consists of 6 to 9 rays, typically ~1.5 mmm wide at the base
and ~2 mm long, with two straight or slightly curved sizes, that form
a sharp or slightly rounded point. The bases of the rays define a
round body ~2mm across. While the finished outline is a single
continuous line, it may be drawn in two or more separate strokes.
A few stars are clear -- just outlined, not painted. All the
others are partially or totally painted with one of two colors:
yel, a partly transparent watercolor-like golden yellow paint
(apparently the same paint/ink used on the hair of the nymphs of the
Zodiac section), or red, an opaque tempera-like dark red paint
(presumably the same used for the lips of nymphs in the Zodiac,
flowers in the Herbal section, etc.)""")
h.section(st, 3, "Colors")
h.parags(st, """
The cores of stars that are painted red is usually invisible, while
that of those painted yel is normally visible through the paint.
The two colors may have been applied at different times by
different people (the Light Painter and the Dark Painter,
respectively), who may have had different levels of knowledge about
the VMS. Thus it is possible that the yel color on stars has some
information, for instance about parag breaks, while the red color has
not.
Most stars in the SPS have a tail, which is a thin curvy
line extending down from the star's outline, usually from one of the
rays. In this case the ray is often sharper, longer, and curved. (This
indicates that the tail was drawn by the same Scribe who drew the
stars.) On some stars the ray is extended to most of the length of the
tail, thus creating a fat tail. The fat tails may have some
information too. For instance, a fat tail may signify that the star is
associated with two parag heads that are too close together to receive
individual stars.
The number of rays may also carry information.""")
h.section(st, 3, "Line assignment and starlets")
h.parags(st, """Presumably, the intention of the Author or
Scribe was to have one star for each parag of the SPS, aligned with
the parag's head line, like the bullet in an item of an itemized list.
However the reality is somewhat far from this ideal. A star that is
presumably associated with an obvious parag is often located at some
distance, up or down, from the head, or is missing entirely. Part of
the task of identifying the paragraph breaks is to assign each star to
a text line, in a one-to-one way; and deciding which text lines
(and, in some cases, which parags) will be left without stars.""")
h.section(st, 2, "Parsing the SPS into parags")
h.section(st, 3, "Parag properties")
h.parags(st, """To identify a set of one or more consecutive text lines, not including any "titles",
as a paragraph, I use some or all of the following criteria:""")
h.begin_enum(st, "ul")
h.enum_item_parags(st, """P1. The first of these lines follows
a short line or a wide linegap (or is the first line in the page,
or follows a 'title').""")
h.enum_item_parags(st, """P2. The last of these lines is short
or precedes a wide linegap (or is the last line of the page, or
precedes a 'title').""")
h.enum_item_parags(st, """P3. All lines other than the last one
are long lines.""")
h.enum_item_parags(st, """P4. There are no puffs in any of
these lines, except possibly in the first line.""")
h.enum_item_parags(st, """P5. The first of these lines has an
assigned starlet.""")
h.enum_item_parags(st, """P6. None of these lines, except the
first one, has an assigned starlet.""")
h.enum_item_parags(st, """P7. There are no wide linegaps between
any two of these lines.""")
h.enum_item_parags(st, """P8. All lines are left-justified
(start on the left rail).""")
h.end_enum(st, "ul")
h.parags(st, """
Note that P4 does not *require* the existence of puffs in the head
line of a perfect parag. It only prohibits them in the other
lines.
Rules P1 and P2 effectively require that a perfect parag be entirely
contained within one page.""")
h.section(st, 3, "Perfect parags")
h.parags(st, """
A set of consecutive non-title lines that satisfies all conditions P1-P9
will be called a perfect parag.
By the above criteria, one can identify ??? perfect parags in the SPS,
covering ??? or the ??? text lines. When those are excluded, the lines
that remain ???""")
h.section(st, 3, "Quasi-perfect parags")
h.parags(st, """
If a set of consecutive lines satisfies all the conditions P1-P9 except P4,
(that is, if some line other than the first one contains puffs) we will
call those lines a quasi-perfec parag.
There are ??? parags that are not perfect but quasi-perfect.""")
h.section(st, 3, "Pluperfect parags")
h.parags(st, """Two other conditions that are relevant for parag splitting are:""")
h.begin_enum(st, "ul")
h.enum_item_parags(st, """Q1. The first line of the set follows
a short line and a wide linegap (or is the first line in the page,
or follows a 'title').""")
h.enum_item_parags(st, """Q2. The first glyph of the
head line is either a puff or a @t.""")
h.end_enum(st, "ul")
h.parags(st, """
Note that condition Q1 is a stronger version of P1. If a set of lines is a
perfect parag and satisfies either of these two criteria, we call it a
pluperfect parag.""")
h.section(st, 3, "Determining the 'imperfect' parags")
h.parags(st, """
While most of the text can be parsed as perfect parags, there are
several 'imperfect blocks' of consecutive lines such that, in any
block, any candidate parag fails at least one of the criteria P1-P8.
Thus, within each of those imperfect blocks we had to chose where to
break parags by less objective criteria.
As discussed above, stars on the right margin do not seem to be reliable parag markers.
they are often more than one line off from the head, or missing
entirely.
Looking at. ??? (I can think of a
few scenarios for the creation and final scribing of the SMS that
would have led to starlets being omitted or misaligned by mistake.) ???
??? I suspect that the Scribe may sometimes have started a parag on
the same line as the tail of the previous parag, when the latter
was a short line. For example, on the parag break should
perhaps be after the first word {dcheo}. Likewise, on ,
the parag break should perhaps be after the first word {saiin}.
??? We put a 'definitive' parag break after every short line, even if
the next line cannot get a starlet assigned to it. That line will be
the start of an 'unstarred' parag.
??? We put a 'tentative' parg break before any line that has at least
one puff, even if the previous line is not short and no starlet can be
assigned to it.
??? Those two decisions divide each imperfect block into 'tentative
parags'. Each tentative parags is a set of consecutive lines such that
no line except perhaps the first has any puffs or assigned starlet,
and no line except perhaps the last one is short-length.""")
h.section(st, 3, "???Stuff")
h.parags(st, """
??? Page f107v is the only one whose first line has no puffs. But the
last line of f107r is short, so the last parag of f107r cannot
continue on page f107v, not even as an imperfect parag.
??? The title is a right-justified line after a parag that
ends with a full line. It had been assumed to be the tail of the
previous parag that the Scribe skipped and then inserted in that
non-standard position. However, the first line of the next parag
bends down to avoid that title. Thus, if that conjecture
is true, the Scribe must have realized the omission after writing the
firat 4 lines of . I have now re-interpreted
as a title.
??? It is possible that other section headers were not recognized as such
and were joined with adjacent parags.
On page f108r, there seems to be something wrong with stars 2--5
and 7--9. Stars 1 and 2 are both yellow, as are stars 4,5, and 6,
breaking the pattern of alternating yellow and red stars. Line 2 of
the page, , has a one-leg gallows and thus is probably the
start of a paragraph; however there is no nearby star that could be
assigned to it. Presumably a star, presumably red, was omitted between
stars 1 and 2. On the other hand, the line of star 4 ( )
seems to be in the middle of a parag. Presumably that 'extra' star was
added in order to get the count of stars right, compensating for the
missing star on line . Thus we will assume that line
is the start of a 6-line parag, which would be perfect if
that 'extra' star was not there. Likewise, there seems to be one star
missing on line , which has 2 one-leg gallows; and star 7
is yellow, star 9 is red, and star 8 is unpainted. Presumably the
missing star was to be red, and then star 8 should be yellow.
On f108v, the lines in the lower 2/3 of the page seem more crammed
than usual, and some lines overflow the right rail. Stars 10--16 do
not have obvious parag heads. Star 10 is next to line
which starts with an extra-wide {t}, hinting that it is a parag head.
The lines from that point on have no one-leg gallows or short lines. A
parag break was inferred before because of a slightly
wider interlinear space, which was then assigned to star 16. The other
breaks were guessed from the positions of stars 10--15. Stars 10--14
are not aligned with the lines but with gaps between the lines, so in
each of these cases a choice had to be made between the two nearest
lines. (There are faint short lines between the star and the left rail
that may be suggestions for the parag breaks. However, those lines may
have been added by some later owner and may be just his guesses,
rather than informed hints. They were ignored.)
On pages f111r and f111v there is a triangular stain along the
middle of the top edge of the panel, similar in shape and size to that
of f103r but light brown instead of light green. There are three
smaller stains below it, at ~40 mm from the top edge, with diams ~8,
~4, and ~10 mm. The text included in the stains (on lines 01--03 of
both pages, 11--14 of f111r, 10--13 of f111v) became fainter but is
still quite readable. Maybe a couple of glyphs on f111r were fully or
partly retraced, but it is far from certain.
----------------------------------------------------------------------
# In general the tail of a star extends or starts from a ray tip near
# 05:00. But sometimes it starts at a notch between two rays.
#
# There doesn't seem to be a sharp distinction between fat and thin tails.
# The difference is only how far the fat part of the tail extends.
#
# In some thin-tailed stars, the outline was drawn first and the tail
# was added as a separate stroke. In other cases the drawing of the
# outline apparently started at a ray tip around 05:00, went CW all
# around, then instead of stopping at the starting point continued out
# to form the (single) tail.
#
# In the case of stars with fat tails, sometimes the star outline is
# drawn as two or more strokes in opposite directions, starting at a ray
# tip in the general NW area, until a ray tip around around 05:00, and
# each stroke is then extended to make one edge of the tail. See S13 in
# f113r for example.
#
# Other times a star with fat tail is drawn by drawing a thin-tail star
# first (in either of the pssible ways), and then adding the left edge
# of the tail as a separate stroke. See the tail of S06 in f114v for
# example.
----------------------------------------------------------------------
#
# On f104r the red-painted stars are initially grubbed with a
# half-dry pen in a clumsy attempt to fill them. At star S10 they
# suddenly the technique changes to a red splot, confined to the star's
# body, seemingly applied with a brush. The yel paint, on the other hand,
# is always a roundish splot, apparently applied with a brush.
# Star S10 has apparently was drawn as an 8-ray star and then
# the double tail was added as an extra ray that starts at 04:00, between
# two previous rays.
#
# The (thin) tail of star S11 starts in the notch at 04:30, not at a ray tip.
----------------------------------------------------------------------
# On f105r, the double tail of star S05 starts at the core like an extra ray;
# counted as such.
#
# The tails of stars S07 and S08 are double only for a while, then
# revert to single; maybe they are just fat and slightly bent rays, not
# tails.
#
# The red paint of S04 was apparently a splot applied with a brush,
# a clumsy attempt was made to fill the rays by pulling the fresh paint
# into them with a pen or other sharp object.
#
----------------------------------------------------------------------
# On f106r, star S03 shares the tip of one ray a tiny "companion" star, with vpos
# 07+0.0 and 7 rays. That tiny starlet seems to have a dot core in
# normal ink and also a red dot (not splot!) inside the body but off to
# one side, avoiding the dot core.
#
----------------------------------------------------------------------
# On f106v, the splot of star S14 seems to have been applied with brush, like the
# other red splots, but it is off-center and irreular, overflowing the
# outline.
#
----------------------------------------------------------------------
# On f107r, star S11 has three dots at its left, in the dark-gray Retracer ink.
#
# The splot of star S14 is a bit smeared and wanders off from the body.
#
----------------------------------------------------------------------
# On f107v, star S01 has three reverse-comma marks on each side, aligned with two
# rays at 02:00 and 08:00. They seem to be in normal ink.
#
----------------------------------------------------------------------
# On f108r, star S01 is within a light brown stain that obscueres the shape of the
# yel paint. But seems to be a splot.
#
# In star S02, the splot seems to be smeared into and over the 05:00 ray.
#
# The fill of star S03 leaves 3 rays almost unpainted.
#
# Stars S02, S03, and S04 seem to have been shifted by ~2.5 lines from
# the correct position. Maybe the scribe did not notice a parag break on
# line 02 (see puff) and instead thought that line 11 was a parag head.
#
----------------------------------------------------------------------
# Stars on f108v vary a lot in size.
#
# The VPOS of stars S04 and S05 depends on how one splits lines 07-19,
# which is a conflict between "starlet nearby" and "no puffs" criteria.
#
----------------------------------------------------------------------
# On f111r, the core of star S08 may have been a small dot that was erased by the
# paint applied over it.
#
----------------------------------------------------------------------
#
# On f111v, the dot of star S10 is a thin and short vertical dash, off-center, and
# very dark; maybe added by the Retracer? Or just a parch defect?
#
# The tail of star S09 comes off from a wide gap between rays, rather
# than from the tip of ray.
#
# The 04:00 ray of star S18 seem to have been partly retraced in dark
# ink.
#
----------------------------------------------------------------------
# The stars of f112v lie roughly on a straight line but that line is
# significantly tilted, apparently to avoid some area of bad parch at
# the top left corner, adjacent to the big indentation on the edge. That
# hypothesis is suported by the tilt and two steps of indentation of the
# left rail of the text. Perhaps the parch in that part was oily and
# did not hold the ink?
#
# The outlines and tails of stars S02 and S06 are quite faint. The
# outlines of red-painted stars apparently escaped the fading, except
# for S13. The red paint in the splots does not show any sign of fading,
# not even on S13.
#
# The tail of star S01 is blurry.
#
# Star S02 may have been backtraced (rays 01:00 and 06:00) but even those
# backtraced strokes are faint.
#
# Star S02 perhaps had a dot or ring core, but it is almost invisible because
# of fading and yel paint-over.
#
# Strokes at 10:30, 04:00 and 05:00 of tar S13 may have been backtraced,
# but even those strokes are fainter and blurry.
#
# The core of star S06, if it existed, has faded almost to invisibility;
# if what we see is indeed the core, it seem to hav been a ring rather
# than a dot.
#
# Star S06 has only a stub at 05:00 where a ray should have been. The
# tail of S11 leaves between two rays 04:00 and 06:00 instead of from a
# ray tip.
----------------------------------------------------------------------
# Stars on f113r lie rather close to the binding edge and are distorted
# in scans by the curvature of the parch there.
#
# The splot of star 14 has sharp edges but is elongated NS and does not
# fill the body of the star.
#
# The body of S13 is extra wide and so it its splot.
#
# The outline of S13 appears to have been drawn in at least twho
# strokes. The first one started at the ray tip at 11:00 and went CW to
# the notch at 05:00, then continued to make the right edge of the
# double tail. The second stroke started as the same ray tip as the
# first, and went CCW to the notch at 06:00, then continued to make the
# left edge of the tail.
#
----------------------------------------------------------------------
# On f113v, star S01 seems to have an extra short troke inside th ray at 10:30.
#
# Star S10 may have had a core, but if so it is too fiant now to be sure.
#
# Star S11 has a short stroke extending from tip of ray at 01:30.
#
----------------------------------------------------------------------
# Stars on f114r lie rather close to the binding edge and are distorted
# in scans by the curvature of the parch there.
#
----------------------------------------------------------------------
# On f114v, The double tail of S05 is an extension of a ray that was inserted into
# the notch at 04:30 after a 7-ray outline had been drawn. The two edges
# of the tail are separate strokes.
#
----------------------------------------------------------------------
# On f115r, stars S01--S05 are mostly drawn in dark ink, like the first 16.7 lines
# of the text, and may have been retraced. See comments in the SPS
# transcription file and the verbal description file.#
#
# The red splots of S01, S03, and S03 apparently cover and obscure the
# dark ink of the outline. This would be evidence that the Dark Painter
# operated after the Retracer.
#
# The CCW edge of the 01:00 ray of star S02, and the 01:00 and 02:00
# rays of S04, are much fainter than the rest of the respective star
# outlines, and may be instances of the original state before retracing
# (if it occurred).
#
# There are some wormholes in the margin, and one of them may or may not
# have eaten an entire ray of S04. Assuming that it did.
#
# The double tail of S05 is filled in with the dark ink. Accident?
#
----------------------------------------------------------------------
# The color of the yel splots on f115v seem to have faded so that
# their presence is barely visible in some stars as a change of the
# normal parch collor to an more off-white tone (denoted WHT below), a
# slight smoothing of the parch texture. Some of the stars listed below
# as "unpainted" may in fact have had a yel splot which became
# completely invisible. It may be visible in IR transmission scans,
# perhaps.
#
# The red paint shows no sign of fading.
#
# The left edge of the parch was damaged by a huge wormhole (see scan
# of f115r) and was aparently restored by pasting on f115v a patch of
# new parch, ~10 mm wide and ~18 mm tall, that partly obscured star S07
# (near text line 21). Still visible are 8 rays, and one more probably
# exists but is hidden under the patch.
#
----------------------------------------------------------------------
# On f116r, the 04:30 ray of star S09 is almost entirely filled with dark ink, as
# if it had been clumsily retraced. There is a @'qo' just to the right of
# it whose @o is almost certainly retraced with the same ink. However,
# the transtion from dark strokes to strong strokes along the star's
# outlne may not be sharp. Perhaps it is just strong normal ink that
# happened to have a higher concentration of black particles.
#
# The strokes of the two rays of S07 at 04:30 and 06:00 too are thicker
# and darker, and appear to be retraced.
#
# There are several wormholes near the left edge of the page
# around lines 10--13 of f116r. One of these may or may not have
# eaten the complete 12:00 ray of S05, if it existed. Assuming that
# it did.
#
# Star S07 is smaller than the others (~5 mm diam instead of ~7 mm) but
# has similar or bigger body, and thus has shorter and chubbier rays.
#
----------------------------------------------------------------------
# Last edited on 2026-01-19 19:45:39 by stolfi
# -*- coding: iso-latin-1 -*-
# The Starrred Parags section from the VMS, pages f103r to f116r line 30.
#
# Originally Rene Zandbergen's transcription (';Z') extracted from the
# Landini/Zandbergen/Stolfi interlinear version 1.6e6, then revised and
# modified by J. Stolfi, especially line breaks, and relabeled ";U".
# Cleanup:
# Removed all '!' alignment fillers.
# Replaced all '%' missing {Ch}ars markers by '?'.
# Removed all star codes "{*}" and "{*[0-9/?]+}" otained from the interlinear.
# Inserted [=»] before text to mean (resp) at or after left rail.
# Inserted [«=] after text to mean (resp) before or at/beyond right rail.
# Added <%> before the '=»' to mark start of parags and titles.
# Added <$> after [«=] to mark end of parags and titles.
# Replaced all weirdo codes by '&nnn' (no ";").
# Revised parag breaks. (Cannot trust the stars...)
# Inserted assigned starlet of parag head with "" or "" after "<%>".
# Inserted "" at the start of each line AFTER an extra-wide linegap (or page break).
# Inserted "" at the start of each line BEFORE an extra-wide linegap (or page break).
# Replaced '{}'- and '" "" "" "") by #-comments.
#
# Punctuation [.,«=»]. Every word is preceded and followed by punct.
# TO DO for this note:
# TO DO in order to comply with IVTFF format:
# Add subtype "P0" to all parag lines.
# Restore weirdo codes as "@NNN;"
# Restore the titles as data lines, type "Pt".
# Move #-comments to description file "../073/desc25e1-53.txt"
# Copy page header lines from Rene's version.
# ----------------------------------------------------------------------
# @@f103r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-07]
# [ONE-LEG GALLOWS CHECKED]
# In @'r,kar', the faint plume of the last @r is visible under the restored one.
# In @'ota?', the @? may be @r with a very faint plume.
# In @'qoeedy', the @o and @e are overlapped.
# Very short @i in @'qaisal'
# The lig of @{Ch} in @'ke{Ch}dy' was not restored.
# Break inferred from star and wider @t in first word.
# In @'da{CKh}yky', the @{CKh} may be @{IKh}
# In @'{Sh}{CKh}y', the @{CKh} may be @{IKh}.
# Only tail of @y present in @'qoky', atta{Ch}ed to the @k.
# In @'{Sh}olkar', the plume is on the @s.
# Between @'{Ch}ew' and @'ar' the baseline drops by ~1 oht.
# Between @'otar' and @'op{Ch}y' the baseline rses by ~1 oht.
# The @l after @'{Sh}eey.qokeey' has a horz fat short tail.
# Very thin small @c in @'{Ch}ain'.
# In @'{Sh}eol', the plume is on the @h.
# In @'ok{Co}l', there is a faint lig from top of @C to mid of @o.
# The @t of @'{Ch}sky' has tiny loops.
# The @d n @'{Sh}edy' is backtraced and more like a flipped @j.
# Star S16, unpainted, lies next to line . Assumed to belong to the next parag.
# The 'o' in 'otedy' looks like @a but must be @o.
# In @'{Sh}et,{Sh}o', the @h in the second @{Sh} looks like @I.
# Star S17, red filled, lies next to line . Assumed to belong to the next parag.
# ----------------------------------------------------------------------
# @@f103v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'{Sh}ey', retraced only @e and @h, not lig of @c or plume.
# The star is partly restored.
# In @'.{Ch}ekee', the two @e are stuck together.
# In @'a{CTh}y', the @{CTh} looks like @{ITh}.
# In @'{Sh}eey', plume on @s.
# In @'{Sh}ar', the @{Sh} has a very tall plume.
# In @'o{Qa}iin', the @Q is ligd to @a at mid-height.
# In @'{Sh}a{CKh}y', the @{CKh} looks like @{IKh}.
# Break inferred from star, extra-wide lin-initial @t, and extra long prev line.
# In @'tokain', @o may be @a.
# In @'{Sh}a{CKHh}y', the @{CKHh} looks like @{IKHh}.
# In @'ror.aiin', the @n plume is retraced and blotted.
# The initial @z is malformed.
# in @'{QCKHh}y', the @Q is ligd to @{CKHh} at mid-height.
# In @'{QCWh}ey', the @Q is ligd to the @{CWh} at mid-height.
# The line is a bit short of the rail.
# In @'{CTh}y', the @{CTh} looks like @{ITh}.
# Ends with a long line, but is last of page, so {Sh}ould count as perfect.
# In @'{Qk}ain', the @Q is ligd to the @k but does not cross it.
# ----------------------------------------------------------------------
# @@f104r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# The @r in @'rain' has a very short stem.
# In @'{Ch}eda{CPh}y', the @{CPh} looks like @{IPh}.
# In @'o{Ch}eo{CTh}ey', the @{CTh} looks like @{ITh}.
# In @'{Qe}keeey', the @Q is ligd to @e at mid-height.
# In @'ow{Ch}eo{Cf}', the @{Cf} has no platf slash.
# Break inferred from somewhat {Sh}orter previous line, star, puffs.
# The last @o in @'ozaiino' maybe @l.
# The @n in @'qotaiiin' has a short stem.
# In @'{QHTh}' the @Q is ligd to a @{CTh} at o-height.
# In @'yk{Ch}dy', the @k has a round corner.
# ----------------------------------------------------------------------
# @@f104v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'o,s{Ch}eo', the @o is small, detached, and hanging from the plume of @s.
# In @'qo{Ck}y', the @C crosses left leg of @k but not the right one.
# In @'ote{Ch}y', the @{Ch} may be @'ee'.
# In @'{Ch}ataiin', the @a looks like @'ei'.
# between @'{Ch}o{CTh}y' and @'qokeo{Ch}y', there was a pen/ink change.
# In @'{ai}r', the @r may be @s.
# In @'{QCh}or', the @Q is ligd to the @{Ch} at mid-height.
# In @'qotain', the @n has a kinked plume.
# There is a tiny tiny vert stroke after the first @{Ch} in @'{Ch}ok{Ch}eo', so it may be @'{Ch}eok{Ch}eo'.
# In @'', the @{CTHh} may be @'{CTh}e'.
# In @'oka{CZHh}y', the @{CZHh} looks like @{IZHh}.
# In @'rar.a,kain', spurious tail below stem of @r.
# In @'keeda', the right stroke of the @a ends in blot.
# In @'okeey', the @o sits on parch defect; erasure?.
# Title. Was in the old interlinear.
# ----------------------------------------------------------------------
# @@f105r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# The initial @p is very ornate.
# The star is above the initial @p.
# In @'{Ch}eey', the @y has an angular head and almost vert tail; could be @q.
# In @'qodor', the @r may be @s.
# In @'qodair', the @r has a tiny body; the @'air' may be @'an'
# In @'o{CKh}y', the platf slash is very faint, but is there.
# The word before @'okeeydy' may be @'oeeoleey' or @'oeeol{Ch}y'. The @es in the second @'ee'/@{Ch} are abnormally fat.
# In @'o,eeol{Ch}y', the @{Ch} was retraced/backtraced as @{ee}.
# In @'okeeydy', the @y has a very short tail, may be @a.
# This line of the manuscript is assumed to be the end of .
# In @'sairy-ore-daiindy', the "-" denote intruding gallows.
# Thee is a change of pen/ink/font size between these two parags.
# In @'ok{Sh}eey', the @o may be @e or @l.
# The last weirdo &314 is malformed, maybe @t or @'ql'.
# In @'o{ep}aiin', the @e is glued to the leg of the @p.
# In @'a{Ch}o,d{Ch}y', the @a is malformed, could be @o or @'oi'.
# Im @'qodeedy', there is a detached plume over the @o.
# In @'ykair', the @y has a straight tail; @q?.
# Title. Was
# ----------------------------------------------------------------------
# @@f105v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'r.ail.o', the @o may be @l.
# In @'roees', the @r has a vertical body.
# In @'kaii{Rh}dy', the @{Rh} is an @r ligd to @h, or a @{Sh} with @i at left instead of @c.
# There is a baseline drop between @'{CKh}eol' and @'lkol'.
# In @'a{IFHh}y', the ligh of the @I extends a bit to the left and almost ligates to the @a.
# In @'a{IFHh}y', the first @h is an isolated @e below the lig.
# In @'a{CFHh}y', the @{CFHh} looks like @{IFHh}.
# In @'otaiirody', the @r looks like @l because it is crossed by tail of @y on prev line.
# In @'a{CPHh}ey', the @{CPHh} looks like @{IPHh}.
# ----------------------------------------------------------------------
# @@f106r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'{Ch}eoky', the @o is glued to the @k. It is definitely not @e.
# In @'qokar', only the right stroke of @a was retraced.
# In @'{QHKh}edy', the @Q is ligd to the @{CKh} at o-height.
# In @'t{Ch}eoky', the @y has a trunc tail.
# In @'r{Ch}eo', the @o may be @y with trunc tail.
# In @'ok{Sh}{Ch}edy', the @{Sh} is @'ee' w/o lig, but with plume like @{Sh}.
# In @'ot{Cd}y', the @{Cd} is a @C ligd to a @d at o-height.
# ----------------------------------------------------------------------
# @@f106v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'otar', the @a is open and looks like @'ei'.
# In @'qoeedy', the tail of the @y is very faint, so it looks like @a.
# In @'t{Ch}eoykar', the left loop is very tiny, may be @k.
# In @'kair', the @k has a vert tail.
# In @'kol{Sh}es', The @{Sh} has the plume on the @h.
# In @'oka{CFh}y', the @{CFh} looks like @{IFh}.
# In @'oeesysarx', the @{ee} is tiny, and the @s is just the plume.
# In @'{Sh}eey,ko', the @o may be @a.
# In @'tolos', the @s is like a @C with very long lig, and a plume at the end of that.
# ----------------------------------------------------------------------
# @@f107r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'{Qe}eey', the @Q is ligd to the @e at mid-height.
# In @'tor,{Sh}or', the first @o may be @a.
# The final @{Cy} is a @C ligd to a @y at o-height.
# The @{Sh} in the word after @'{Ch}ey.qo{CKh}al' has the plume over the@h insted of over the lig.
# Break inferred from star, puffs, baseline gap in the middle.
# In @'{Qh}eoy', the @Q is ligd to the @e at o-height.
# In @'a{CPh}y', the @{CPh} looks like @{IPh}.
# In @'oke{Ch}y', the @'e{Ch}' may be @'eee', @'{Ch}e', or @{CHh}.
# There is a baseline step down after @'taror'.
# There is a baseline step down before @'lldy'.
# The @r in @'okair' could be @n or @s.
# In @'{Sh}o{CKh}y', the @{CKh} looks like @{IKh}.
# In @'aii{CKh}eedy', the @{CKh} looks like @{IKh}.
# In @'opai{Ch}y', the @{Ch} looks like @{Ih}.
# There is a big hole defect in the vellum before @'rolky'.
# There is a big hole defect in the vellum before @'okal'.
# Break inferred from star and puffs.
# In @'zairar', the top right corner of the @z touches the plume of @y on prev line.
# In @'owaim', only the first stroke of the @m is retraced.
# The @o in the word @'so,keey' is lowered by half height and attached to the bottom of the @s.
# In @'a{CTh}y', the @{CTh} looks like @{ITh}.
# In @'a{CKh}y', the @{CKh} looks like @{IKh}.
# In @'ra{CTh}ty', the @{CTh} looks like @{ITh}.
# ----------------------------------------------------------------------
# @@f107v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In the final @'aiim', the plume of the @m starts at the bottom. The word could be @'aiiil'.
# In @'{Sh}oeky', the @e is glued to the leg of @k.
# In @'{Qe}k{Ch}dy', the @Q is ligd to the @e at mid-height.
# The top of the plume on the @n in @'lkeeey.qokaiin.{Ch}ey' may have been restored.
# In @'{QCTHh}y', the @Q is ligd to the @{CTHh} at mid-height.
# In @'{Qh},okeody', the @Q is ligd to the @e at ~0.75 oht.
# maybe @y, R, hard to tell.
# In @'tay-oaiin', the @o was @o but was retraced to @a. The @{-} is a big hole defect.
# In @'{Ch}kaly.rai?', the @? is a blot, maybe @n or @'in'
# In the first word of line 2, after @'{Ch}eokaly',. The @c after
# it was restored or backtraced.
# in @'kaii{Ch}', the second @i is tiny and may have been @e.
# ----------------------------------------------------------------------
# @@f108r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'toda{rh}x', the @{rh} is a @i ligated to @h with plume over the lig.
# In @'qotear', the @a is wide open, could be @'ci'.
# In @'ok{Ch}e{Cf},y', the @{Cf} is a @C glued to the leg of an @f.
# In @'qo?.qokeey', the @? is a comma-like stroke.
# In @'{Qa}iin', the @Q is ligd to the @a at mid-height.
# In @'{Qe}tam', the @Q is ligd to the @e at mid-height.
# In @'{Qa}iin', the @a may have been @o.
# In @'{Qh}t{Ch}dy', the @Q is ligd to the @e at ~0.75 oht.
# In @'=sa{CTh}y', the @{CTh} looks like @{ITh}.
# In @'otal', the @a is wide open, could be @'ei'.
# In @'ykeey', the tail of the @y is very very faint.
# In @'okedy', the @o is malformed, maybe @y or @a.
# In @'ok{Ch}d', the @d is malformed.
# In @'{Qe}eey', the @Q is ligd to the @e at mid-height.
# In @'{Qe}eey', the @'ee' may be @{Ch}.
# In @'{Qe}keey', the @Q is ligd to the @e at mid-height.
# Break inferred from nearby star, wider linegap at right.
# In @'olke?y', the @? is an illegible glyph.
# In @'{QCKh}y', the @q is ligd to the @{CKh} at mid-height.
# Break inferred from puff and star.
# ----------------------------------------------------------------------
# @@f108v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# Break inferred from puffs, star.
# In @'ka{CTh}y', the @{CTh} looks like @{ITh}.
# In the final @'ald?', the @? is a malformed glyph, maybe @'am', @'ar', @'or'.
# In @'rar', the first @r has a thick descender.
# In @'{Qh}eedy', the @Q is ligd to the @e at o-height.
# In @'{Sh}eody', the plume of the @{Sh} is tiny and disconnected, but is there.
# Parag break assumed here because of star.
# In @'ldar', the @a is malformed, maybe @y.
# Parag break assumed because of puffs as line initial.
# Starlet S08 is actually on line 26.
# In @'{Ch}ea?m', the @? may be @i or nothing.
# In @'qokedy', the @k is malformed by tail of @y on line 30.
# In @'{Sh}ed', the @{Sh} has the plume on the @s.
# In @'olke{Ch}dy', the @{Ch} may be @'ee'.
# Parag break assumed because of star and extra-wide @t as line initial.
# Parag break assumed because of star.
# Parag break assumed because of star.
# In @'okeedy', the second @{e} maybe @o.
# Break inferred from star.
# In @'qokear', the @a is malformed, could be @'eo'.
# Break inferred from star.
# Break inferred from star.
# Break inferred from star.
# The @s at start of lines 2 and 3 of parag, in words @'s{Sh}eodain' and @'saiin', seems to have been restored.
# Line 2 of parag overflows the right rail.
# Title - almost right-justified. Was .
# ----------------------------------------------------------------------
# @@f111r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# The word @'oteeam' after @'l{Ch}eol' could be @'ot{Ch}am'
# In @'{Qe}eal', the @'{Qe}e' is not @{Qa}. Could be @'{Qo}e'
# In @'okeey' the @k has a micro left loop, may be @t.
# Break inferred from star.
# Break inferred from star.
# In @'a{CKh}y', the @{CKh} looks like @{IKh}.
# Break inferred from puffs, wider linegap at right.
# Star S05 is actually between lines 13 and 14.
# In @'{Sh}eotam', the @m is malformed.
# Break inferred from star, slightly wider linegap, slightly wider @t on first word.
# In @'okeeol', the first @o looks sort of like @a.
# In @'oaiin', the @a is malformed and may be another @o.
# In @'l{Ch}eo{Ck}am', the @{Ck} is a @C ligd to @k but not crossing it.
# Break inferred because of star.
# In @'l{Ch}edy', the @{Ch} is malformed, looks like @a.
# In @'kaim', the @m is @i with @m-tail at bottom, old &175.
# In @'okar', the @k has a tail on first leg, like @y.
# In @'tydy', the @t has a left loop but no right loop.
# In @'{Sh}ey', the plume of @{Sh} is on the @s.
# In @'dain', the @a is open so it looks like @'deiin'.
# In @'ko,deedy', the @o is malformed, may be @e.
# IN @'qokey', the @y has a fancy tail.
# In @'ain,ai?', the @? is @i with @m-tail at bot, old &175.
# Break inferred because of slightly {Sh}ort line above, wider linegap at left, star nearby.
# In @'o{CKh}y', the @{CKh} looks like @{IKh}.
# Break inferred from star.
# In @'ar.al', the first @a is malformed, like @{ci}.
# In @'okeeo', the last @o may be @a.
# In @'qoirain',the @o is malformed, like @l, @e.
# Break inferred from star and wider linegap at right.
# In @'{Ch}e{CTh}y', the @{Ch} looks like @{Ih}.
# in @'lkain', the @n has a malformed, kinky plume.
# Break inferred from star and slightly wider @t as line initial.
# In @'ol.lkeeey', the @o is a blot, maybe @a.
# In @'qokeeod.lke?', the @? may be @e retraced as malformed @d.
# In @'aiin', the @a looks like a @c, in which case it would be @'ain' not @'aiin'.
# In @'aiy', the @y is malformed.
# Ends with a line that is almost but not quite long.
# In @'qokeokedy', the @d is malformed.
# In @'qokal', the @a s malformed, may be @'ee'.
# The plume on the @s of @'okee{Sh}ey' is over the @s not the lig.
# In @'{Qe}ear', the @Q is ligd to @e at mid-height.
# In @'keel',the @{ee} is malformed, may be @a.
# Break assumed because of star, puff initial.
# In @'wolkeeo', the @a may be @o.
# In @'{Ih}a?.?ain', the first @? may be a malformed @r or @n.
# In @'{Ih}a?.?ain', the second @? may be a malformed @{Ch}, pi-like.
# In @'{Ch}a?', the @{Ch} looks like @{Ih}.
# ----------------------------------------------------------------------
# @@f111v
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# In @'ko{Rh}ey', the @{Rh} is @i ligd to @h with plume on lig.
# In @'{Sh}e{CTHy}', the @H is a blot, ligd to top of @y.
# In @'oteey', the tail of @y is only a stub. May be @o.
# Break inferred from star.
# Break inferred from puffs and slightly wider linegap at 0.3 LR.
# Star S03 is actually on line 6.
# Break inferred from star.
# Break inferred from star and slightly wider linegap around middle.
# In @'{Sh}al', the plume is just a dot, may be @'{Ch}al'.
# In @'{Qe}ar,ain', the @Q is ligd to the @e at mid-height.
# Break inferred from star, wider linegap at right.
# In @'{Ch}{CKh}y', the @k has no loops.
# In @'sa?', the @? may be @'ir' or @m.
# Break inferred from star, puffs, wider linegap at right.
# Break inferred from star,slightly wider initial @t.
# In @'tair', the @r may be @s.
# Break inferred from wider linegap at right.
# Star S09 is actually on line 21.
# Break inferred from wider linegap at right.
# Prev line is long.
# Last {Ch}ar of line 25 is malformed and unguessable.
# The @? in the final @'{Ch}d?' is malformed, unguessable.
# In @'{Ch}ain', the @a is open, so it could be @'{Ch}eiin'
# In @'lkain', the @a is open, so it could be @'lkeiin'
# In @'{Qo}tain' the @o is malformed, may be @e.
# Break inferred from star, puffs.
# Break inferred from star.
# In @'?oais', the @? is a @q with no head, just a vertical tail.
# Last line is almost but not quite long.
# In @'okain', the @o may be @y w trunc tail.
# In @'l,keey', the tail of @y is almost invisible.
# Last line is almost but not quite long.
# The leg of the initial @p on line 48 crosses the plume of the following @s.
# In @'{Qe}kal' the @q is ligd to the @e at mid-height.
# In @'sairy', The @{ir} may have been @n.
# ----------------------------------------------------------------------
# @@f112r
# [TRANSCRIPTION CHECKED: 05..07 2025, 2026-01-08]
# [ONE-LEG GALLOWS CHECKED]
# The last @{Ch} is very faint and blurred because of bad vellum.
# The last @? is faint and blurred because of bad vellum. Maybe @e or incomplete @{Ch}?.
# In @'{CTh}edy', the @{CTh} ligature and platf slash are nearly invisible.
# In @'{Qe}ol', the @Q is barely ligd to the @e at mid-height.
# The last @? is faint and blurred @e because of bad vellum.
# In @'{Sh}e?dy', the @? is an unidentifiable weirdo.
# In @'{Qe}ey', the @Q is ligd to the @e at mid-height.
# In @'{Qe}ey', the @Q is ligd to the @e at mid-height.
# In @'{Qa}in', the @Q is ligd to the @a at mid-height. The @a could be @o.
# In @'qoain.qoiin', the first @q has a retraced curved tail like @y.
# In @'qoain.qoiin', the first @n is malformed.
# In @'dairiy', the font is strange.
# There is a baseline step up after @'dairiy'.
# Maybe the words after @'dairiy' are the end of ,
# and is the tail of prev parag, and is parag head.
# In @'sar', the @s has an extra long plume.
# In @'alkeeor.ol', the @'ol' may be @'al'.
# In @'sarol', the plume of the @s is squashed.
# In @'{Qo}keain', the @a is malformed, could be @'ei'.
# In @'oty', the @y is on a crease, could be @o or @a.
#