Skip to content

feat(alalc): encode Church Slavic 2022 and Rusyn 2013 romanization tables (batch 3, Cyrillic) - #263

Merged
ronaldtse merged 1 commit into
mainfrom
feat/alalc-batch3-cyrillic
Nov 8, 2026
Merged

ronaldtse merged 1 commit into
mainfrom
feat/alalc-batch3-cyrillic

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Summary

ALA-LC batch 3 (Cyrillic) — encodes the two systems of the batch whose source documents are present in the collection, transcribing the entire tables and their notes. Pure addition: two new .isc files, no existing file touched.

Systems encoded

Map Source document Pages Notes
alalc-chu-Cyrl-Latn-2022 alalc-church-slavic.pdf (2022 version; earlier versions 2011, 1997) p. 1-2 table, p. 2-3 notes Full Church Slavonic alphabet: yuses, ksi, psi, fita, izhitsa, both uk forms, ot ligature; numeric-value column carried into metadata notes; document notes 1-4 (diacritics, abbreviations, numerals, dates) transcribed
alalc-rue-Cyrl-Latn-2013 alalc-rusyn.pdf (2013 version, no earlier versions) p. 1-2 table, p. 2 prose + notes Ukrainian-style gh/g distinction, iotated vowels with the I-macron + tie convention, yaty → i-circumflex, yery → y-circumflex; ligature rows zh/kh/ts per notes 1, 3, 4

Both romanization tables embed low-resolution raster images for their diacritic-bearing cells (iotated vowels, ot, ts, ks, ps, yery-macron, fita, izhitsa). Every such cell was verified at magnification from the extracted image rasters; the encoding follows what the images show: I-macron + tie (U+0361) + vowel for the iotated letters (Ī͡e, Ī͡u, Ī͡a, Ī͡ę, Ī͡ǫ), Ō͡T/ō͡t for the ot letter Ѿ/ѿ, and tied digraphs for ж/х/ц in Rusyn (z͡h, k͡h, t͡s) and Ц/Ѯ/Ѱ in Church Slavic (t͡s, k͡s, p͡s).

Ambiguous rows and source errata (flagged, not silently "fixed")

Church Slavic:

  • The lower-case row for и prints the romanization as uppercase I in the source table. Encoded as i for case parity; flagged in the map notes.
  • ћ is romanized ǵ (soft g in Serbian-printed Church Slavonic) — distinct from the Serbian table's đ; per the source row.
  • Ѷ (izhitsa): the table's alternative rendering v̇ "if used without diacritical marks" cannot be resolved without reading context; only the vowel rendering ẏ is encoded.

Rusyn:

  • The upper-case romanization cell for Я shows only ī — a defective cell in the source. Encoded as Ī͡A per the lower-case cell (ī͡a) and the pattern of the other iotated rows.
  • The vernacular cells for the yo and o-circumflex rows print Latin codepoints (Ë U+00CB, Ô U+00D4). The map keys the Cyrillic inputs Ё/ё (U+0401/U+0451) and О + combining circumflex (U+0302).
  • The lower-case row for ф prints romanization F; encoded as f.
  • The hard-sign row prints ʹʹ (two primes); encoded as ʺ (U+02BA), matching the Church Slavic table.
  • И has two rows (note 2): i for Vojvodinian publications, y for all other materials. The map encodes the general rule y; the regional variant is documented in notes (it depends on publication provenance, not text).

Tests carried

The source documents contain no example words beyond the tables, so every table row (upper and lower case) is carried as an embedded test — same convention as the existing bsi-chu map: 98 tests (chu) + 78 tests (rue).

Source not in collection (from the batch work order — NOT encoded)

  • ALA-LC Bashkir — no alalc-bashkir.pdf in the collection
  • ALA-LC Chuvash — no alalc-chuvash.pdf in the collection
  • ALA-LC Udmurt — no alalc-udmurt.pdf in the collection
  • ALA-LC Komi — no alalc-komi.pdf in the collection
  • ALA-LC Yakut/Sakha — no alalc-yakut.pdf / alalc-sakha.pdf in the collection

Verification

All against a fresh interscript-ts main checkout (scripts/-side parser and runtime):

  • Embedded tests through the TS runtime (parse + compile + transliterate): 176 passed, 0 failed
    npx -y tsx <driver>   # parseIsc + iscBundledStrategy + transliterate over every tests{} entry
    
  • Full-corpus parse gate with the TS parser over the branch corpus: Parsed 406/406 .isc files (the maps/ CI-gate equivalent; the runtime's own scripts/parse-all-isc.ts expects a maps sibling checkout)
  • Mixed-sequence sanity through the runtime: Ѿцъ → Ō͡Tt͡sʺ, Глаголица → Glagolit͡sa, ѥюꙗѨѬ → ī͡eī͡uī͡aĪ͡ĘĪ͡Ǫ, rue Русин → Rusyn, ґг → gh
  • git status shows only the two new files (pure addition)

No merge — awaiting review.

…bles

ALA-LC batch 3 (Cyrlic) — the two systems of the batch with sources in
the collection:

- alalc-chu-Cyrl-Latn-2022: Church Slavic, 2022 version (3-page table +
  notes on diacritics, abbreviations, numerals, dates). Full alphabet
  including yuses, ksi, psi, fita, izhitsa, both uk forms (monograph
  uk -> U, digraph uk -> U-macron), iotated letters romanized I-macron
  plus tie plus vowel (I-macron + U+0361 + vowel), ot ligature ->
  o-macron + tie + t. Numeric-value column carried into notes.
- alalc-rue-Cyrl-Latn-2013: Rusyn / Carpatho-Rusyn (no earlier
  versions). Ukrainian-style gh/g distinction, ye/yu/ya with the
  I-macron + tie convention, yaty -> i-circumflex, yery -> y-circumflex,
  and the ligature rows zh/kh/ts (U+0361) per notes 1, 3 and 4. The
  Vojvodinian i variant of и (note 2) is documented in notes; the map
  encodes the general y rule.

Every table row is carried as an embedded test (the documents have no
example words beyond the tables): 98 + 78 tests, all passing through
the interscript-ts ISC runtime. Source-document errata are flagged in
the map notes (lowercase и row prints capital I; lowercase ф row prints
capital F; the ya upper-case cell shows only i-macron; yo/o-circumflex
vernacular cells use Latin codepoints; hard sign printed as two
primes).

Verification: interscript-ts parseIsc + runtime transliterate on all
176 embedded tests (pass), full 406-file corpus parse (pass).
@ronaldtse
ronaldtse merged commit 9bb8854 into main Nov 8, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant