Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
da62124
Qwen3 ASR: pass the selected language to qwen3-asr-cli
niksedk Oct 19, 2026
1812210
Qwen3 ASR: bump qwen3-asr.cpp to v0.1.9 (mel filterbank fix)
niksedk Oct 19, 2026
7d43d94
Qwen3 ASR: add Danish fine-tuned 0.6B model
niksedk Oct 19, 2026
16e061b
Merge pull request #16243 from SubtitleEdit/claude/qwen3-asr-pass-lan…
niksedk Oct 19, 2026
e9d1657
Merge pull request #16244 from SubtitleEdit/claude/qwen3-asr-cpp-v019
niksedk Oct 19, 2026
f0db4ec
Merge pull request #16247 from SubtitleEdit/claude/qwen3-asr-danish-m…
niksedk Oct 19, 2026
e90bb0d
Merge pull request #16246 from pdjdev/fix/editor-chrome-numeric-field…
niksedk Oct 19, 2026
5313942
OCR fix engine: only read a lone slash as "I" for image matchers (#16…
niksedk Oct 19, 2026
b7b4dcb
OCR fix engine: an "l" counts as uppercase in the separator-slash guard
niksedk Oct 19, 2026
1ae6fb9
OCR fix engine: case-based I/l repair and italic spacing for image ma…
niksedk Oct 19, 2026
09a70ad
OCR fix engine: split an unknown word at an overhanging f/r/t before …
niksedk Oct 19, 2026
0e43e9b
Qwen3 ASR: bump qwen3-asr.cpp to v0.1.10 and use beam search (3)
niksedk Oct 19, 2026
a4e9334
Merge pull request #16250 from SubtitleEdit/claude/qwen3-asr-cpp-v011…
niksedk Oct 19, 2026
6674618
Merge pull request #16248 from SubtitleEdit/claude/github-issue-analy…
niksedk Oct 19, 2026
aac5fed
Qwen3 ASR: strip the <asr_text> marker from engine output
niksedk Oct 19, 2026
5a6c8d7
Merge pull request #16253 from SubtitleEdit/claude/qwen3-asr-strip-ma…
niksedk Oct 19, 2026
4f13e74
ASSA/SSA styles: category picker back, font name + color columns, res…
niksedk Oct 19, 2026
2bd925c
Update Japanese.json for 5.4 Beta3
hisui3393 Oct 19, 2026
edd0106
ASSA/SSA styles: file list Name 150 + Font name 110, Size and Usages 70
niksedk Oct 19, 2026
a475134
Merge pull request #16254 from SubtitleEdit/claude/subtitleedit-issue…
niksedk Oct 19, 2026
cb74f7b
Update Italian.json
bovirus Oct 19, 2026
dac1bbf
Language auto-detect: tell Macedonian and Serbian from Bulgarian/Russ…
niksedk Oct 19, 2026
94f4431
Merge pull request #16256 from SubtitleEdit/claude/macedonian-languag…
niksedk Oct 19, 2026
07e3d34
Italian: fix swapped nOCR zoom tooltips, typos and wording in new str…
niksedk Oct 19, 2026
911d4f0
Update Japanese.json for 5.4 Beta3
hisui3393 Oct 19, 2026
af2de01
Merge pull request #16255 from bovirus/main
niksedk Oct 19, 2026
a8cd5c9
iTunes Timed Text: export presets with a template-file header source
niksedk Oct 19, 2026
e37bb0f
Merge pull request #16259 from SubtitleEdit/claude/subtitleedit-discu…
niksedk Oct 19, 2026
cef4028
Add Nord theme
niksedk Oct 19, 2026
177c341
Language auto-detect: everyday words for 30 languages, letter rules f…
niksedk Oct 19, 2026
b3e72d4
Merge pull request #16258 from hisui3393/patch-1
niksedk Oct 19, 2026
bac87b4
Language auto-detect: Czech/Slovak own-list blocks need more than one…
niksedk Oct 19, 2026
cc24389
Merge pull request #16261 from SubtitleEdit/claude/macedonian-languag…
niksedk Oct 19, 2026
438b753
Merge pull request #16260 from SubtitleEdit/claude/nord-theme
niksedk Oct 19, 2026
880e0e8
Share TableView check-box cell template via TableViewExtras
ivandrofly Oct 19, 2026
4984f97
Merge pull request #16263 from ivandrofly/share-checkbox-cell-template
niksedk Oct 20, 2026
987071b
Use EditorChrome.WrapButtonBar for hand-rolled button bars
niksedk Oct 20, 2026
e1e6eff
Merge pull request #16268 from SubtitleEdit/claude/wrap-button-bar
niksedk Oct 20, 2026
0c3ef38
Settings: theme picker as preview cards
niksedk Oct 20, 2026
26503d7
Video dialogs: use EditorChrome switch, hint and inline-row helpers
niksedk Oct 20, 2026
39dff0a
Merge pull request #16269 from SubtitleEdit/claude/visual-theme-picke…
niksedk Oct 20, 2026
4672dc0
Merge pull request #16270 from SubtitleEdit/claude/video-dialog-chrom…
niksedk Oct 20, 2026
627672c
Multiple replace: category list + flat rules list with a type-in row
niksedk Oct 20, 2026
f52c48d
Merge pull request #16271 from SubtitleEdit/claude/multiple-replace-f…
niksedk Oct 20, 2026
68bd9aa
v5.4.0-beta3
niksedk Oct 20, 2026
41365c1
Update Polish.json
potplayer-fanpack Oct 20, 2026
19539ea
Multiple replace: fix tests and accessible names after the flat rules…
niksedk Oct 20, 2026
4c12c15
Merge pull request #16274 from SubtitleEdit/claude/fix-multiple-repla…
niksedk Oct 20, 2026
fa43089
Merge branch 'main' into claude/beta-release-51bb42
niksedk Oct 20, 2026
8b72393
Merge pull request #16272 from SubtitleEdit/claude/beta-release-51bb42
niksedk Oct 20, 2026
35cb7f2
Text to speech: context line on its own row, trim long video names
niksedk Oct 20, 2026
8421a36
Merge pull request #16275 from SubtitleEdit/claude/tts-label-overlap-…
niksedk Oct 20, 2026
40d6a99
One 13 px text size for all windows; main window in the editor look (…
niksedk Oct 20, 2026
0b0a7f2
Merge pull request #16277 from SubtitleEdit/claude/subtitleedit-issue…
niksedk Oct 20, 2026
10bf6b2
OCR fix: keep Dutch "Eén" instead of stripping it to "Een"
niksedk Oct 20, 2026
e5a97f1
Polish: fix stray parenthesis and pronoun gender from review
niksedk Oct 20, 2026
e875fd2
Merge pull request #16278 from SubtitleEdit/claude/dutch-capital-een-…
niksedk Oct 20, 2026
62ea0d7
Merge pull request #16273 from potplayer-fanpack/main
niksedk Oct 20, 2026
7fd5bf7
Update Italian.json
bovirus Oct 20, 2026
e88d167
Merge pull request #16279 from bovirus/main
niksedk Oct 20, 2026
af0424c
CI: shard the test suite over four parallel jobs
niksedk Oct 20, 2026
6802cf0
Italian: fix three wording issues from #16279
niksedk Oct 20, 2026
c595a86
Merge pull request #16280 from SubtitleEdit/claude/unit-test-performa…
niksedk Oct 20, 2026
f706f4d
Merge pull request #16281 from SubtitleEdit/claude/italian-wording-fixes
niksedk Oct 20, 2026
874a83a
Dutch OCR replace list: add GLM-OCR word errors from #16031
niksedk Oct 20, 2026
a99156d
Dutch OCR replace list: drop ambiguous inzekere, gestukt, bietetap
niksedk Oct 20, 2026
214ea96
Dutch OCR replace list: extend the glued-pronoun split, drop redundan…
niksedk Oct 20, 2026
a47ab75
Merge pull request #16282 from SubtitleEdit/claude/xml-replace-lists-…
niksedk Oct 20, 2026
fbb556d
Danish OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
6f02903
German OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
ca3569c
English OCR replace list: drop entries that change correct words
niksedk Oct 20, 2026
92d08fd
Italian OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
a4bfc4e
Swedish OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
3d26e54
Norwegian Bokmål OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
51151c7
Norwegian OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
7734d57
Portuguese OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
68a230f
Hungarian OCR replace list: fix I/l rules that damage correct text
niksedk Oct 20, 2026
100a34b
Croatian OCR replace list: fix rules that damage correct text
niksedk Oct 20, 2026
88391cb
Merge pull request #16283 from SubtitleEdit/claude/ocr-replace-list-c…
niksedk Oct 20, 2026
de8062f
Fix stack overflow when opening a TTML file that needs XML repair
niksedk Oct 20, 2026
2fb98be
Fix endless loop in Json.ReadArray on a missing closing bracket
niksedk Oct 20, 2026
43921d9
Fix MP4 trun hang on a huge sample count without per-sample fields
niksedk Oct 20, 2026
ee39050
Fix out-of-memory on MP4 files with corrupt box or sample sizes
niksedk Oct 20, 2026
b26003e
Add Midnight Cinema and Sakura themes
niksedk Oct 20, 2026
cd31931
Merge pull request #16284 from SubtitleEdit/claude/fuzz-fixes-1-4
niksedk Oct 20, 2026
50de207
Nord theme: background art
niksedk Oct 20, 2026
d775273
Add "Cycle theme" shortcut
niksedk Oct 20, 2026
6c772d0
ITT: source header timing parameters follow the current frame rate
niksedk Oct 20, 2026
8446d26
Pastel background art, Nord and Pastel waveform colors
niksedk Oct 20, 2026
8344bf9
Batch convert: change frame rate saves at the target frame rate
niksedk Oct 20, 2026
61581fa
Merge pull request #16286 from SubtitleEdit/claude/sakura-midnight-ci…
niksedk Oct 20, 2026
86d0e55
Merge pull request #16285 from SubtitleEdit/claude/itt-source-header-…
niksedk Oct 20, 2026
28a41c6
Merge pull request #16287 from SubtitleEdit/claude/batch-convert-targ…
niksedk Oct 20, 2026
e422c7c
Update Hungarian translation
niksedk Oct 20, 2026
cccac3a
Merge pull request #16288 from SubtitleEdit/claude/hungarian-translat…
niksedk Oct 20, 2026
af147da
Video art: hide a native player window while the art shows
niksedk Oct 20, 2026
9476d06
Set position: remember window size and position (#16289)
niksedk Oct 20, 2026
df41742
Set position: toggle to hide the selection box and anchor dot (#16289)
niksedk Oct 20, 2026
d2277b5
Set position: start with focus on the frame so arrow keys nudge (#16289)
niksedk Oct 20, 2026
ac206ff
Set position: open at once, render the frame and text in the backgrou…
niksedk Oct 20, 2026
aa5c918
Set position: SE4-style click-to-place mode (#16289)
niksedk Oct 20, 2026
de2d844
Merge pull request #16290 from SubtitleEdit/claude/set-position-remem…
niksedk Oct 20, 2026
de94d8b
Merge pull request #16291 from SubtitleEdit/claude/set-position-hide-…
niksedk Oct 20, 2026
99f9fde
Merge pull request #16293 from SubtitleEdit/claude/set-position-async…
niksedk Oct 20, 2026
8de912d
Merge pull request #16292 from SubtitleEdit/claude/set-position-focus…
niksedk Oct 20, 2026
873a05e
Merge remote-tracking branch 'origin/main' into claude/set-position-c…
niksedk Oct 20, 2026
6da3da8
Merge pull request #16294 from SubtitleEdit/claude/set-position-click…
niksedk Oct 20, 2026
0e42f9c
Sakura and Pastel: stronger empty-waveform art
niksedk Oct 20, 2026
c7a2eff
Merge pull request #16295 from SubtitleEdit/claude/video-art-mpv-wid
niksedk Oct 20, 2026
49f1fe7
Merge pull request #16296 from SubtitleEdit/claude/stronger-waveform-art
niksedk Oct 20, 2026
cc44216
Perf hunt round 33: name casing index, STT name cache, teletext, OCR …
niksedk Oct 20, 2026
2d36c34
Merge pull request #16297 from SubtitleEdit/claude/perf-hunt-round33
niksedk Oct 20, 2026
47f06ba
Rewrite SubRip reader: time-code anchored, tolerant, 2.6-12x faster
niksedk Oct 20, 2026
dc238b2
Merge pull request #16298 from SubtitleEdit/claude/subrip-performance…
niksedk Oct 20, 2026
a3ab59b
Code cleanup: remove unused methods, fields and dependencies
niksedk Oct 20, 2026
c64905b
Color the grid gap when it falls inside a user-defined range
niksedk Oct 20, 2026
5a471ff
Merge pull request #16299 from SubtitleEdit/claude/code-cleanup-71a4b7
niksedk Oct 20, 2026
97097a5
Remove unused usings outside libse
niksedk Oct 20, 2026
6f7a1c8
Merge remote-tracking branch 'origin/main' into claude/remove-unused-…
niksedk Oct 20, 2026
309ae00
Merge pull request #16300 from SubtitleEdit/claude/color-gap-in-range
niksedk Oct 20, 2026
bb6e00f
Update Italian.json
bovirus Oct 20, 2026
7ead9ad
Remove usings left unused after merging main
niksedk Oct 20, 2026
8efb399
Merge pull request #16301 from SubtitleEdit/claude/remove-unused-usings
niksedk Oct 20, 2026
acd53b4
Update Japanese.json for 5.4 Beta4
hisui3393 Oct 20, 2026
875d51f
Merge branch 'main' into Beta4
hisui3393 Oct 20, 2026
ce58bb6
Merge pull request #16302 from bovirus/main
niksedk Oct 21, 2026
c166d07
Merge pull request #16304 from hisui3393/Beta4
niksedk Oct 21, 2026
e4df6df
Include video offset when copying from the grid
niksedk Oct 21, 2026
c530594
Paste SE's own copy with the offset it was copied with
niksedk Oct 21, 2026
e8f8f27
Setting: split at video and text box position keeps text at caret end…
niksedk Oct 21, 2026
cb96785
Merge pull request #16307 from SubtitleEdit/claude/video-offset-grid-…
niksedk Oct 21, 2026
708bd85
Merge pull request #16308 from SubtitleEdit/claude/subtitleedit-issue…
niksedk Oct 21, 2026
2722997
Spell check: remove words from the dictionary (#16031)
niksedk Oct 21, 2026
d616c04
Video player: optional playback speed button (#16306)
niksedk Oct 21, 2026
ca9ed35
Merge pull request #16309 from SubtitleEdit/claude/spellcheck-rejecte…
niksedk Oct 21, 2026
74162d6
Merge pull request #16310 from SubtitleEdit/claude/playback-speed-vid…
niksedk Oct 21, 2026
5c54ec2
v5.4.0-beta4
niksedk Oct 21, 2026
cf2427e
Update Korean.json
12si27 Oct 21, 2026
856df56
Merge pull request #16311 from SubtitleEdit/claude/v5.4.0-beta4
niksedk Oct 21, 2026
8a20bb8
Merge pull request #16312 from 12si27/patch-6
niksedk Oct 21, 2026
9c80b58
Fix settings scroll alignment
pdjdev Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
62 changes: 51 additions & 11 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@ name: Tests
# Polish.json still reached main, so the suite also needs to gate merges here.
#
# This covers the translation files as well - UITests contains LanguageJsonFilesTests and
# SeLanguageJsonContextTests - which is why there is no separate language-file workflow:
# building UITests is nearly the whole cost of this job, so a second workflow that builds
# the same project to run 66 of its tests would roughly double CI time for no extra
# coverage.
# SeLanguageJsonContextTests - which is why there is no separate language-file workflow.
#
# `dotnet test` on the solution picks up the four test projects (libse, libuilogic,
# seconv, UI); the benchmark projects are not test projects and are skipped.
# The suite is split over parallel jobs because UITests is nearly all of the run time and
# cannot parallelize inside one process: every headless test shares one Avalonia dispatcher
# thread and the static Se.Settings, so tests/xunit.runner.json turns parallelization off.
# Separate processes have none of that shared state, so UITests is sharded by namespace
# into three runs of about the same length (measured 10-20: 118 s in one process, 48 s as
# three). The three filters partition the namespace - Features.Main, the rest of Features,
# everything else - so a new test lands in exactly one shard without editing this file.
# The libs job builds the whole solution, so the app and benchmark projects still have to
# compile; the UI jobs build only UITests and what it references.
on:
pull_request:
push:
Expand All @@ -24,8 +28,34 @@ on:

jobs:
test:
name: test (${{ matrix.name }})
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- name: libs
build: SubtitleEdit.sln
projects: tests/libse/LibSETests.csproj tests/libuilogic/LibUiLogicTests.csproj tests/seconv/SeConvTests.csproj
filter: ''
- name: ui-main
build: tests/UI/UITests.csproj
projects: tests/UI/UITests.csproj
filter: FullyQualifiedName~UITests.Features.Main.
- name: ui-features
build: tests/UI/UITests.csproj
projects: tests/UI/UITests.csproj
filter: FullyQualifiedName~UITests.Features.&FullyQualifiedName!~UITests.Features.Main.
- name: ui-other
build: tests/UI/UITests.csproj
projects: tests/UI/UITests.csproj
filter: FullyQualifiedName!~UITests.Features.

env:
PROJECTS: ${{ matrix.projects }}
FILTER: ${{ matrix.filter }}

steps:
- uses: actions/checkout@v5

Expand All @@ -35,15 +65,21 @@ jobs:
dotnet-version: '10.0.x'

- name: Restore
run: dotnet restore SubtitleEdit.sln
run: dotnet restore ${{ matrix.build }}

- name: Build
run: dotnet build SubtitleEdit.sln --no-restore
run: dotnet build ${{ matrix.build }} --no-restore

# Every project runs even when an earlier one fails, so one run reports all failures.
- name: Test
id: test
continue-on-error: true
run: dotnet test SubtitleEdit.sln --no-build --logger "trx;LogFileName=tests.trx"
run: |
status=0
for p in $PROJECTS; do
dotnet test "$p" --no-build --logger "trx;LogFileName=tests.trx" ${FILTER:+--filter "$FILTER"} || status=1
done
exit $status

# The headless UI suite has a contamination failure mode no in-test fix can cover:
# when a test crashes the shared Avalonia dispatcher thread, every later test that
Expand All @@ -56,7 +92,11 @@ jobs:
if: steps.test.outcome == 'failure'
run: |
echo "::warning title=Flaky test run::First test run failed; retrying once in a fresh process. Check the test-results artifact for the failure."
dotnet test SubtitleEdit.sln --no-build --logger "trx;LogFileName=tests-retry.trx"
status=0
for p in $PROJECTS; do
dotnet test "$p" --no-build --logger "trx;LogFileName=tests-retry.trx" ${FILTER:+--filter "$FILTER"} || status=1
done
exit $status

# Uploaded whenever the first run failed - also on a green retry, so flakes can be
# diagnosed without re-running locally. Needs !cancelled(): without a status function
Expand All @@ -66,6 +106,6 @@ jobs:
if: ${{ !cancelled() && steps.test.outcome == 'failure' }}
uses: actions/upload-artifact@v5
with:
name: test-results
name: test-results-${{ matrix.name }}
path: '**/TestResults/*.trx'
if-no-files-found: ignore
10 changes: 5 additions & 5 deletions Dictionaries/dan_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -600,14 +600,14 @@
</WholeWords>
<PartialWordsAlways>
<WordPart from="¤" to="o" />
<WordPart from="IVI" to="M" />
<WordPart from="lVI" to="M" />
<WordPart from="IVl" to="M" />
<WordPart from="lVl" to="M" />
</PartialWordsAlways>
<PartialWords>
<!-- Will be used to check words not in dictionary -->
<!-- If new word(s) exists in spelling dictionary, it(they) is accepted -->
<WordPart from="IVI" to="M" />
<WordPart from="lVI" to="M" />
<WordPart from="IVl" to="M" />
<WordPart from="lVl" to="M" />
<WordPart from="fi" to="fi" />
<WordPart from="fl" to="fl" />
<WordPart from="/" to="l" />
Expand Down Expand Up @@ -670,7 +670,7 @@
<!-- SlNG to SING -->
</RegularExpressionsIfSpelledCorrectly>
<RegularExpressions>
<RegEx find="\b\|\b" replaceWith="I" />
<RegEx find="(?&lt;=\p{Lu})\|(?=\p{Lu})" replaceWith="I" />
</RegularExpressions>
<RegularExpressionsIfSpelledCorrectly language="da">

Expand Down
8 changes: 0 additions & 8 deletions Dictionaries/deu_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3933,7 +3933,6 @@
<Word from="lnvestition" to="Investition" />
<Word from="lnvestoren" to="Investoren" />
<Word from="lnzucht" to="Inzucht" />
<Word from="lo" to="Io" />
<Word from="Lordkémmerer" to="Lordkämmerer" />
<Word from="losf" to="los!" />
<Word from="losl" to="los!" />
Expand Down Expand Up @@ -6499,8 +6498,6 @@
<Word from="Wélfen" to="Wölfen" />
<Word from="Welflt" to="Weißt" />
<Word from="Wélkchen" to="Wölkchen" />
<Word from="well" to="weil" />
<Word from="Well" to="Welt" />
<Word from="Wellit" to="Weißt" />
<Word from="welllt" to="weißt" />
<Word from="welt" to="weit" />
Expand All @@ -6509,7 +6506,6 @@
<Word from="Wénden" to="Wänden" />
<Word from="wér" to="wär" />
<Word from="Werdja" to="Werd ja" />
<Word from="we're" to="wäre" />
<Word from="Wére" to="Wäre" />
<Word from="Wéren" to="Wären" />
<Word from="wéret" to="wäret" />
Expand Down Expand Up @@ -6982,12 +6978,8 @@
</WholeWords>
<PartialWordsAlways>
<!-- Will be replaced always -->
<WordPart from="IVI" to="M" />
<WordPart from="IVl" to="M" />
<WordPart from="I\/I" to="M" />
<WordPart from="I\/l" to="M" />
<WordPart from="lVI" to="M" />
<WordPart from="lVl" to="M" />
<WordPart from="l\/I" to="M" />
<WordPart from="l\/l" to="M" />
<WordPart from="¤" to="o" />
Expand Down
5 changes: 0 additions & 5 deletions Dictionaries/eng_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -696,7 +696,6 @@
<Word from="forAmerica's" to="for America's" />
<Word from="forArthur" to="for Arthur" />
<Word from="forbad" to="forbid" />
<Word from="forevermore" to="for evermore" />
<Word from="forgetyourname" to="forget your name" />
<Word from="forJack" to="for Jack" />
<Word from="forjoining" to="for joining" />
Expand Down Expand Up @@ -1064,7 +1063,6 @@
<Word from="Ile" to="lie" />
<Word from="Ileft" to="I left" />
<Word from="Ilive" to="I live" />
<Word from="I'LL" to="I'll" />
<Word from="I'lldo" to="I'll do" />
<Word from="I'llgo" to="I'll go" />
<Word from="I'lljust" to="I'll just" />
Expand Down Expand Up @@ -1289,7 +1287,6 @@
<Word from="l_AuGHING" to="LAUGHING" />
<Word from="l‘m" to="I'm" />
<Word from="l0ng's" to="long's" />
<Word from="lam" to="I am" />
<Word from="Laml6" to="I am 16" />
<Word from="lasagna" to="lasagne" />
<Word from="Lcad" to="Load" />
Expand Down Expand Up @@ -1563,7 +1560,6 @@
<Word from="newjobs" to="new jobs" />
<Word from="newous" to="nervous" />
<Word from="newsagenfs" to="newsagents" />
<Word from="newsstand" to="news stand" />
<Word from="nextdoor" to="next door" />
<Word from="nff" to="off" />
<Word from="NiCe" to="Nice" />
Expand Down Expand Up @@ -2342,7 +2338,6 @@
<Word from="Wasnt" to="Wasn't" />
<Word from="Wasrt" to="Wasn't" />
<Word from="wasrt" to="wasn't" />
<Word from="wastebasket" to="waste basket" />
<Word from="wayJack" to="way Jack" />
<Word from="wayl" to="way I" />
<Word from="wayround" to="way round" />
Expand Down
6 changes: 3 additions & 3 deletions Dictionaries/hrv_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7033,7 +7033,7 @@
<RegEx find="Menhetn" replaceWith="Manhattan" />
<RegEx find="Metju" replaceWith="Matthew" />
<RegEx find="Mexic" replaceWith="Meksik" />
<RegEx find="Mič" replaceWith="Mitch" />
<RegEx find="\bMič\b" replaceWith="Mitch" />
<RegEx find="ičigen" replaceWith="ichigan" />
<RegEx find="ilvoki" replaceWith="illwaukee" />
<RegEx find="Misuri" replaceWith="Missouri" />
Expand Down Expand Up @@ -7102,10 +7102,10 @@
<RegEx find="Volter" replaceWith="Walter" />
<RegEx find="Vots" replaceWith="Wats" />

<RegEx find=", ili" replaceWith="ili" />
<RegEx find=", ili" replaceWith=" ili" />
<RegEx find="ili," replaceWith="ili" />

<RegEx find="\b\|\b" replaceWith="I" />
<RegEx find="(?&lt;=\p{Lu})\|(?=\p{Lu})" replaceWith="I" />

<RegEx find="da li se (\w+)" replaceWith="$1 li se" />
<!-- <RegEx find=" ([Ss])a(?![szš]\b)" replaceWith=" $1 " /> -->
Expand Down
13 changes: 6 additions & 7 deletions Dictionaries/hun_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,14 @@
<EndLines />
<RegularExpressions>
<!-- nagy I-l javítások -->
<RegEx find="([\x41-\x5a\x61-\x7a\xc1-\xfc])II" replaceWith="$1ll" />
<RegEx find="((?![IVXLCDM])[\x41-\x5a\x61-\x7a\xc1-\xfc])II" replaceWith="$1ll" />
<RegEx find="II([\x61-\x7a\xe1-\xfc])" replaceWith="ll$1" />
<RegEx find="([\x61-\x7a\xe1-\xfc])I" replaceWith="$1l" />
<RegEx find="([\x20])I([^aeou\x41-\x5a\xc1-\xdc])" replaceWith="$1l$2" />
<RegEx find="\bl([bcdfghjklmnpqrstvwxz])" replaceWith="I$1" />
<RegEx find="([\x61-\x7a\xe1-\xfc])(?&lt;!\bMa?c)I" replaceWith="$1l" />
<RegEx find="([\x20])I(?![&apos;’](?:m|ll|ve|d)\b)([^aeou\x41-\x5a\xc1-\xdc])" replaceWith="$1l$2" />
<RegEx find="\bl(?!l\b)([bcdfghjklmnpqrstvwxz])" replaceWith="I$1" />
<RegEx find="([\x41-\x5a\xc1-\xdc])I([\x61-\x7a\xe1-\xfc])" replaceWith="$1l$2" />
<RegEx find="([\x61-\x7a\xe1-\xfc][\-])I([\x61-\x7a\xe1-\xfc])" replaceWith="$1l$2" />
<RegEx find="([\x41-\x5a\xc1-\xdc])I([\-][\x41-\x5a\xc1-\xdc][\x61-\x7a\xe1-\xfc])" replaceWith="$1l$2" />
<RegEx find="\b([AEÜÓ])I([^\x41-\x5a\xc1-\xdc])" replaceWith="$1l$2" />
<RegEx find="\bI([aáeéiíoóöuúüy\xf5\xfb])" replaceWith="l$1" />
<RegEx find="\b(?:II|ll)" replaceWith="Il" />
<RegEx find="([\xf5\xfb])I" replaceWith="$1l" />
</RegularExpressions>
<RegularExpressionsIfSpelledCorrectly>
Expand All @@ -44,6 +41,8 @@

<!-- word-initial i to l (iove to love, iieber to lieber) -->
<RegEx find="\bi([a-záéíóöőúüű]{2,})\b" spellCheck="l$1" replaceWith="l$1" />
<!-- word-initial I before a vowel to l (Iesz to lesz), only when the l-word is in the dictionary: "Ian", "Iowa", "Iolaus" stay -->
<RegEx find="\bI([aáeéiíoóöuúüy\xf5\xfb][a-záéíóöőúüű]*)\b" spellCheck="l$1" replaceWith="l$1" />

<!-- word-initial ii to ll (iiegar to llegar) -->
<RegEx find="\bii([a-záéíóöőúüű]+)\b" spellCheck="ll$1" replaceWith="ll$1" />
Expand Down
8 changes: 4 additions & 4 deletions Dictionaries/ita_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
<PartialWordsAlways>
<!-- Will be replaced always -->
<WordPart from="¤" to="o" />
<WordPart from="lVI" to="M" />
<WordPart from="IVl" to="M" />
<WordPart from="lVl" to="M" />
<WordPart from="I\/I" to="M" />
<WordPart from="l\/I" to="M" />
<WordPart from="I\/l" to="M" />
Expand All @@ -26,6 +23,9 @@
<!-- Will be used to check words not in dictionary.
If new word(s) and longer than 5 chars and exists in spelling dictionary, it is (or they are) accepted -->
<WordPart from="IVI" to="M" />
<WordPart from="lVI" to="M" />
<WordPart from="IVl" to="M" />
<WordPart from="lVl" to="M" />
<WordPart from="/" to="l" />
<WordPart from="|" to="I" />
<WordPart from="vv" to="w" />
Expand Down Expand Up @@ -61,7 +61,7 @@
<BeginLines />
<EndLines />
<RegularExpressions>
<RegEx find="\b\|\b" replaceWith="I" />
<RegEx find="(?&lt;=\p{Lu})\|(?=\p{Lu})" replaceWith="I" />
<RegEx find="([\p{Ll},] )(I)([oai][, \.])" replaceWith="$1l$3" />
<RegEx find="\b(I)([àì]|'[ \r\n])\b" replaceWith="l$2" />
<RegEx find="([\p{Ll},] )(II)\b" replaceWith="$1Il" />
Expand Down
Loading
Loading