ctrl-kd 4.9.0__tar.gz → 4.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. {ctrl_kd-4.9.0/src/ctrl_kd.egg-info → ctrl_kd-4.10.0}/PKG-INFO +2 -2
  2. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/README.md +1 -1
  3. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0/src/ctrl_kd.egg-info}/PKG-INFO +2 -2
  4. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrl_kd.egg-info/SOURCES.txt +9 -0
  5. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/__init__.py +1 -1
  6. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/cli.py +14 -8
  7. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/emit.py +721 -77
  8. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/layout.py +82 -18
  9. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/pdf.py +451 -49
  10. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/quirks.py +50 -10
  11. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_ctrlkd.py +96 -25
  12. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_graphic_cells.py +2 -2
  13. ctrl_kd-4.10.0/tests/test_html_column_sections.py +74 -0
  14. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_html_print_stylesheet.py +8 -2
  15. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_justification.py +1 -1
  16. ctrl_kd-4.10.0/tests/test_markdown_escaping_and_breaks.py +238 -0
  17. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_merge_page_number_variable.py +7 -3
  18. ctrl_kd-4.10.0/tests/test_modern_bullet_gap.py +141 -0
  19. ctrl_kd-4.10.0/tests/test_modern_html_measure.py +77 -0
  20. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_lint.py +17 -1
  21. ctrl_kd-4.10.0/tests/test_no_syntax_warnings.py +105 -0
  22. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_v4_column_geometry.py +1 -1
  23. ctrl_kd-4.10.0/tests/test_per_page_orientation.py +167 -0
  24. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_printed_fidelity.py +1 -1
  25. ctrl_kd-4.10.0/tests/test_printed_html_single_break.py +57 -0
  26. ctrl_kd-4.10.0/tests/test_printed_rtf_ruler_column.py +116 -0
  27. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_quirks.py +115 -50
  28. ctrl_kd-4.10.0/tests/test_reverse_video_ground.py +86 -0
  29. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_rtf_facing_pages.py +12 -4
  30. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_rtf_head_style_attrs.py +9 -5
  31. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_rtf_page_numbers.py +22 -13
  32. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_structural_checks.py +1 -1
  33. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/LICENSE +0 -0
  34. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/pyproject.toml +0 -0
  35. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/setup.cfg +0 -0
  36. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrl_kd.egg-info/dependency_links.txt +0 -0
  37. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrl_kd.egg-info/entry_points.txt +0 -0
  38. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrl_kd.egg-info/top_level.txt +0 -0
  39. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/afm.py +0 -0
  40. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/convert.py +0 -0
  41. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/core.py +0 -0
  42. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/fontmap.py +0 -0
  43. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/info.py +0 -0
  44. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/pictures.py +0 -0
  45. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/pix.py +0 -0
  46. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/piximg.py +0 -0
  47. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/samples/LYING.WS +0 -0
  48. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/samples/OCAPTAIN.WS +0 -0
  49. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/samples/TWAINLET.WS +0 -0
  50. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/samples/WARPRAYR.WS +0 -0
  51. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/symbolmap.py +0 -0
  52. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/typestyles.py +0 -0
  53. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/writer.py +0 -0
  54. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/src/ctrlkd/wschange.py +0 -0
  55. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_bare_tab_modulus8.py +0 -0
  56. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_dot_comment_prints_nothing.py +0 -0
  57. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_driver_substitutions_exports.py +0 -0
  58. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_endnote_leading_gap.py +0 -0
  59. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_fidelity_gate.py +0 -0
  60. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_flags_toc_inline.py +0 -0
  61. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_form_feed_line_marks.py +0 -0
  62. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_glyph_aspect.py +0 -0
  63. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_graphic_cell_ops.py +0 -0
  64. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_head_foot_placement_m16.py +0 -0
  65. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_head_foot_timing.py +0 -0
  66. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_layout_marks.py +0 -0
  67. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_bullet_glyph.py +0 -0
  68. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_char_substitution.py +0 -0
  69. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_colour_restore.py +0 -0
  70. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_heading_face.py +0 -0
  71. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_hp_patterns.py +0 -0
  72. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_legend_line_spacing.py +0 -0
  73. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_pcl_rectangles.py +0 -0
  74. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_shading_table_rules.py +0 -0
  75. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_lj6dtp_table_rule_weight.py +0 -0
  76. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_load_plugins.py +0 -0
  77. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_mailmerge_data_files.py +0 -0
  78. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_blank_after_tightened_line.py +0 -0
  79. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_box_regions.py +0 -0
  80. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_centring_clip.py +0 -0
  81. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_columns.py +0 -0
  82. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_line_spacing.py +0 -0
  83. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_page_baseline.py +0 -0
  84. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_page_number.py +0 -0
  85. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_rtf_structure_rows.py +0 -0
  86. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_sheet_height.py +0 -0
  87. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_modern_verse_defrow.py +0 -0
  88. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_note_rulings_20260824.py +0 -0
  89. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_page_parity.py +0 -0
  90. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_paper_verdicts.py +0 -0
  91. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_fidelity.py +0 -0
  92. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_page_membership.py +0 -0
  93. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_page_size_eject.py +0 -0
  94. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_tolerance.py +0 -0
  95. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_transparent_print.py +0 -0
  96. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_v4_untriaged_fixes.py +0 -0
  97. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pcl_vertical_wraparound.py +0 -0
  98. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_peseta_euro_driver.py +0 -0
  99. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pf_print_reformat.py +0 -0
  100. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pictures.py +0 -0
  101. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pix.py +0 -0
  102. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_pn_page_timing.py +0 -0
  103. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_polarity_gate.py +0 -0
  104. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_print_control_labels_invisible.py +0 -0
  105. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_rtf_keep_with_next.py +0 -0
  106. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_rtf_section_spine.py +0 -0
  107. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_samples.py +0 -0
  108. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_sawyer_corpus.py +0 -0
  109. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_screenplay_detection.py +0 -0
  110. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_screenplay_pdf.py +0 -0
  111. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_screenplay_rendering.py +0 -0
  112. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_sentence_spacing_n9.py +0 -0
  113. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_style_leading.py +0 -0
  114. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_style_strikeout_runs_until_cleared.py +0 -0
  115. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_style_symbol_map_resolved_face.py +0 -0
  116. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_symbol_span_graphic_chars.py +0 -0
  117. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_trailing_pa_break.py +0 -0
  118. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_verse_quote_couplet.py +0 -0
  119. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_verse_spacing.py +0 -0
  120. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_width_and_cp1252_memo.py +0 -0
  121. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_writer.py +0 -0
  122. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_wschange.py +0 -0
  123. {ctrl_kd-4.9.0 → ctrl_kd-4.10.0}/tests/test_zero_width_tab.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ctrl-kd
3
- Version: 4.9.0
3
+ Version: 4.10.0
4
4
  Summary: Convert WordStar 4-7 documents and print-to-disk files to text, Markdown, HTML, RTF, or PDF. ^KD: save and done.
5
5
  Author: Jon Michaels
6
6
  License: MIT
@@ -47,7 +47,7 @@ $ ctrl-kd --comments MEMO.WS # include the author's hidden comments
47
47
  $ ctrl-kd --no-notes PAPER.WS # body text only, no notes
48
48
  $ ctrl-kd --samples DIR # write 4 bundled public-domain sample .WS files into DIR
49
49
  $ ctrl-kd --list-quirks ESSAY.WS # which known quirks this file has, and why
50
- $ ctrl-kd --quirk stray-style-strikeout NOVEL.WS # turn one on
50
+ $ ctrl-kd --quirk sawyer-strikeout NOVEL.WS # turn one on
51
51
  ```
52
52
 
53
53
  ## Modes
@@ -28,7 +28,7 @@ $ ctrl-kd --comments MEMO.WS # include the author's hidden comments
28
28
  $ ctrl-kd --no-notes PAPER.WS # body text only, no notes
29
29
  $ ctrl-kd --samples DIR # write 4 bundled public-domain sample .WS files into DIR
30
30
  $ ctrl-kd --list-quirks ESSAY.WS # which known quirks this file has, and why
31
- $ ctrl-kd --quirk stray-style-strikeout NOVEL.WS # turn one on
31
+ $ ctrl-kd --quirk sawyer-strikeout NOVEL.WS # turn one on
32
32
  ```
33
33
 
34
34
  ## Modes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ctrl-kd
3
- Version: 4.9.0
3
+ Version: 4.10.0
4
4
  Summary: Convert WordStar 4-7 documents and print-to-disk files to text, Markdown, HTML, RTF, or PDF. ^KD: save and done.
5
5
  Author: Jon Michaels
6
6
  License: MIT
@@ -47,7 +47,7 @@ $ ctrl-kd --comments MEMO.WS # include the author's hidden comments
47
47
  $ ctrl-kd --no-notes PAPER.WS # body text only, no notes
48
48
  $ ctrl-kd --samples DIR # write 4 bundled public-domain sample .WS files into DIR
49
49
  $ ctrl-kd --list-quirks ESSAY.WS # which known quirks this file has, and why
50
- $ ctrl-kd --quirk stray-style-strikeout NOVEL.WS # turn one on
50
+ $ ctrl-kd --quirk sawyer-strikeout NOVEL.WS # turn one on
51
51
  ```
52
52
 
53
53
  ## Modes
@@ -41,6 +41,7 @@ tests/test_graphic_cell_ops.py
41
41
  tests/test_graphic_cells.py
42
42
  tests/test_head_foot_placement_m16.py
43
43
  tests/test_head_foot_timing.py
44
+ tests/test_html_column_sections.py
44
45
  tests/test_html_print_stylesheet.py
45
46
  tests/test_justification.py
46
47
  tests/test_layout_marks.py
@@ -55,11 +56,14 @@ tests/test_lj6dtp_shading_table_rules.py
55
56
  tests/test_lj6dtp_table_rule_weight.py
56
57
  tests/test_load_plugins.py
57
58
  tests/test_mailmerge_data_files.py
59
+ tests/test_markdown_escaping_and_breaks.py
58
60
  tests/test_merge_page_number_variable.py
59
61
  tests/test_modern_blank_after_tightened_line.py
60
62
  tests/test_modern_box_regions.py
63
+ tests/test_modern_bullet_gap.py
61
64
  tests/test_modern_centring_clip.py
62
65
  tests/test_modern_columns.py
66
+ tests/test_modern_html_measure.py
63
67
  tests/test_modern_line_spacing.py
64
68
  tests/test_modern_lint.py
65
69
  tests/test_modern_page_baseline.py
@@ -67,6 +71,7 @@ tests/test_modern_page_number.py
67
71
  tests/test_modern_rtf_structure_rows.py
68
72
  tests/test_modern_sheet_height.py
69
73
  tests/test_modern_verse_defrow.py
74
+ tests/test_no_syntax_warnings.py
70
75
  tests/test_note_rulings_20260824.py
71
76
  tests/test_page_parity.py
72
77
  tests/test_paper_verdicts.py
@@ -78,6 +83,7 @@ tests/test_pcl_transparent_print.py
78
83
  tests/test_pcl_v4_column_geometry.py
79
84
  tests/test_pcl_v4_untriaged_fixes.py
80
85
  tests/test_pcl_vertical_wraparound.py
86
+ tests/test_per_page_orientation.py
81
87
  tests/test_peseta_euro_driver.py
82
88
  tests/test_pf_print_reformat.py
83
89
  tests/test_pictures.py
@@ -86,7 +92,10 @@ tests/test_pn_page_timing.py
86
92
  tests/test_polarity_gate.py
87
93
  tests/test_print_control_labels_invisible.py
88
94
  tests/test_printed_fidelity.py
95
+ tests/test_printed_html_single_break.py
96
+ tests/test_printed_rtf_ruler_column.py
89
97
  tests/test_quirks.py
98
+ tests/test_reverse_video_ground.py
90
99
  tests/test_rtf_facing_pages.py
91
100
  tests/test_rtf_head_style_attrs.py
92
101
  tests/test_rtf_keep_with_next.py
@@ -11,4 +11,4 @@ from .pdf import emit_pdf # registers the 'pdf' format
11
11
  from .convert import convert, select_notes, DEFAULT_NOTE_KINDS, ALL_NOTE_KINDS
12
12
  from .info import document_info
13
13
 
14
- __version__ = '4.9.0'
14
+ __version__ = '4.10.0'
@@ -143,17 +143,23 @@ def main(argv=None):
143
143
  help='omit paragraph-style pass-through (HTML classes + '
144
144
  'generated CSS, RTF stylesheet) from the output')
145
145
  ap.add_argument('--headers', choices=('on', 'off'), default='on',
146
- help="the document's own running heads and feet (.he/.fo) "
147
- 'in the paged surfaces -- Printed PDF, Modern PDF and '
148
- "both RTF modes. WordStar's own automatic page number "
149
- 'is --page-numbers\' business alone. Default: on')
146
+ help="the document's own running heads and feet (.he/.fo). "
147
+ 'PDF AND RTF ONLY -- those are the page formats; '
148
+ 'text, Markdown and HTML are unpaged by design and '
149
+ 'carry no running heads, feet or page numbers at '
150
+ 'all, so this flag is accepted and ignored for them '
151
+ "(no error). WordStar's own automatic page number is "
152
+ "--page-numbers' business alone. Default: on")
150
153
  ap.add_argument('--page-numbers', choices=('auto', 'on', 'off'),
151
154
  default='auto',
152
155
  help="WordStar's own AUTOMATIC page number -- the one "
153
156
  '.pc positions, a separate mechanism from a # the '
154
157
  'author placed inside a real .he/.fo (that goes '
155
158
  'with its head, under --headers, never this flag). '
156
- 'Every paged surface. auto (DEFAULT): the '
159
+ 'PDF AND RTF ONLY, for the same reason --headers is: '
160
+ 'text, Markdown and HTML are unpaged by design, so '
161
+ 'the flag is accepted and ignored for them (no '
162
+ 'error). auto (DEFAULT): the '
157
163
  'document\'s own dot '
158
164
  'commands decide -- .pn/.pg turn it on, .op turns '
159
165
  'it off, exactly like real WordStar; a document '
@@ -192,9 +198,9 @@ def main(argv=None):
192
198
  'each entry to a real page number, every other '
193
199
  'format lists entries without one. Default: off')
194
200
  ap.add_argument('--inline-styling', choices=('on', 'off'), default='on',
195
- help='inline colour (^A) and font-size (^B... a symmetric '
201
+ help='inline color (^A) and font-size (^B... a symmetric '
196
202
  'type-2 font block) changes the author placed mid-'
197
- 'text -- RTF gets \\cf from a 16-colour screen '
203
+ 'text -- RTF gets \\cf from a 16-color screen '
198
204
  'palette and \\fsN; HTML gets a span with color/'
199
205
  'font-size. Default: on')
200
206
  ap.add_argument('--pictures', choices=('off', 'embed', 'export'), default='embed',
@@ -388,7 +394,7 @@ def main(argv=None):
388
394
  if (a.mode == 'modern'
389
395
  and doc.meta.get('printer_driver') == 'LJ6DTP'):
390
396
  print(f'ctrl-kd: {path}: LJ6DTP driver document -- its '
391
- f'print-time page art (boxes, rules, colour) does not '
397
+ f'print-time page art (boxes, rules, color) does not '
392
398
  f'reflow; character substitutions applied. '
393
399
  f'--mode printed reproduces the page', file=sys.stderr)
394
400
  # --page-settings applies ONCE to the resolved page dict, so every