Part of #394: each run hyphenates in its own language; Default Language sets new type's

Squashed from #2818 onto main.
This commit is contained in:
jo-quast
2026-11-05 12:17:33 +07:00
committed by bflatastic
parent 1943c7272c
commit bddb834231
14 changed files with 204 additions and 24 deletions
+5 -2
View File
@@ -833,7 +833,10 @@ pub(crate) fn new_type_style(s: &Session, p: &Value) -> CharStyle {
None if !s.paint.fill.is_none() && s.paint.fill != vectorcraft_color::Paint::solid(vectorcraft_color::Color::WHITE) => s.paint.fill.clone(),
None => vectorcraft_color::Paint::solid(vectorcraft_color::Color::BLACK),
};
// In the document's language (Document Setup), none for the default.
style.language = s.doc().ok().and_then(|d| vectorcraft_doc::setup::char_language(&d.doc.setup.language).ok().flatten()).map(str::to_string);
// In the language Document Setup chose, else Preferences › Hyphenation › Default Language; none
// for the default. Type already in a document keeps its own.
let chosen = |name: &str| vectorcraft_doc::setup::char_language(name).ok().flatten();
let document = s.doc().ok().and_then(|d| chosen(&d.doc.setup.language));
style.language = document.or_else(|| chosen(&s.prefs.hyphenation_language)).map(str::to_string);
style
}
+34 -8
View File
@@ -260,14 +260,40 @@ pub const PREF_SPECS: &[PrefSpec] = &[
"",
"Default Language",
choice(&[
("English: USA", "English: USA"),
("English: UK", "English: UK"),
("French", "French"),
("German", "German"),
("Spanish", "Spanish"),
("Italian", "Italian"),
("Dutch", "Dutch"),
("Portuguese", "Portuguese")
("en-US", "English: USA"),
("en-GB", "English: UK"),
("de", "German"),
("de-CH", "German: Swiss"),
("fr", "French"),
("it", "Italian"),
("es", "Spanish"),
("ca", "Catalan"),
("pt", "Portuguese"),
("nl", "Dutch"),
("da", "Danish"),
("sv", "Swedish"),
("fi", "Finnish"),
("nb", "Norwegian"),
("pl", "Polish"),
("cs", "Czech"),
("ru", "Russian"),
("sr-Cyrl", "Serbian: Cyrillic"),
("sr-Latn", "Serbian: Latin"),
("hr", "Croatian"),
("tr", "Turkish"),
("ja", "Japanese"),
("zh", "Chinese"),
("hi", "Hindi"),
("mr", "Marathi"),
("gu", "Gujarati"),
("bn", "Bengali"),
("pa", "Punjabi"),
("ta", "Tamil"),
("te", "Telugu"),
("kn", "Kannada"),
("ml", "Malayalam"),
("or", "Odia"),
("ur", "Urdu")
])
),
p!("hyphenationExceptions", "Hyphenation", "", "Exceptions (comma separated)", text),