Type: Character Style Options sets Tate-chu-yoko Up/Down and Left/Right

Advanced Character Formats in Character Style Options and New Character
Style gains Tate-chu-yoko Up/Down and Left/Right fields, in points from
-1296 to 1296, which set the style's tcyUpDown and tcyLeftRight as the
Character panel menu's Tate-chu-yoko Settings sets them on text. An empty
field leaves the attribute unset, an explicit 0 stays distinct from
unset, a value outside the range is an error, and the section's Reset
Panel clears them with its other attributes. Text that uses the style
takes the values and keeps its local overrides.
This commit is contained in:
dotCooCoo
2026-11-11 14:40:53 -08:00
parent 7f3a046b18
commit aa27045ef4
30 changed files with 161 additions and 13 deletions
@@ -26,9 +26,9 @@ const NUMBERS: &[&str] = &["size", "leading", "kerning", "tracking"];
/// The on, off or unset checkboxes.
const SWITCHES: &[&str] = &["underline", "strikethrough", "standardVerticalRoman"];
/// The attributes of Advanced Character Formats, in the order the section shows them.
const ADVANCED: &[&str] = &["h_scale", "v_scale", "baseline_shift", "rotation", "language"];
const ADVANCED: &[&str] = &["h_scale", "v_scale", "baseline_shift", "tcyUpDown", "tcyLeftRight", "rotation", "language"];
/// The number fields of Advanced Character Formats.
const ADVANCED_NUMBERS: &[&str] = &["h_scale", "v_scale", "baseline_shift", "rotation"];
const ADVANCED_NUMBERS: &[&str] = &["h_scale", "v_scale", "baseline_shift", "tcyUpDown", "tcyLeftRight", "rotation"];
/// The attributes of Character Color.
const COLOR: &[&str] = &["fill", "stroke", "stroke_width", "overprint_fill", "overprint_stroke"];
/// The fields of Character Color: the fill and stroke paints, their tints in percent, the stroke
@@ -78,6 +78,8 @@ pub(super) const SPEC: DialogSpec = DialogSpec {
"h_scale",
"v_scale",
"baseline_shift",
"tcyUpDown",
"tcyLeftRight",
"rotation",
"language",
"fill",
@@ -250,6 +252,8 @@ fn optional_number(d: &Dialog, key: &str) -> Result<Option<Value>, String> {
"h_scale" => tl!("Horizontal Scale"),
"v_scale" => tl!("Vertical Scale"),
"baseline_shift" => tl!("Baseline Shift"),
"tcyUpDown" => tl!("Tate-chu-yoko Up/Down"),
"tcyLeftRight" => tl!("Tate-chu-yoko Left/Right"),
"rotation" => tl!("Character Rotation"),
"fill_tint" => tl!("Fill Tint"),
"stroke_tint" => tl!("Stroke Tint"),
@@ -281,7 +285,7 @@ fn optional_number(d: &Dialog, key: &str) -> Result<Option<Value>, String> {
if ["h_scale", "v_scale"].contains(&key) && !(1.0..=10000.0).contains(&n) {
return Err(format!("{label} must be a number from 1 to 10000"));
}
if key == "baseline_shift" && !(-1296.0..=1296.0).contains(&n) {
if ["baseline_shift", "tcyUpDown", "tcyLeftRight"].contains(&key) && !(-1296.0..=1296.0).contains(&n) {
return Err(format!("{label} must be a number from -1296 to 1296"));
}
// Weight from 0 to the document limit, a tint from 0% to 100%.
@@ -564,7 +568,7 @@ pub(crate) fn reset_basic(d: &mut Dialog) {
}
}
/// Reset Panel in Advanced Character Formats: its five attributes become unset.
/// Reset Panel in Advanced Character Formats: its seven attributes become unset.
pub(crate) fn reset_advanced(d: &mut Dialog) {
d.fields.insert("__resetAdvanced".into(), json!(true));
for key in ADVANCED_NUMBERS {
@@ -718,14 +722,16 @@ pub(crate) fn basic_body(ui: &mut egui::Ui, d: &mut Dialog) {
});
}
/// Advanced Character Formats: Horizontal Scale, Vertical Scale, Baseline Shift, Character Rotation
/// and Language, each empty (unset) or set.
/// Advanced Character Formats: Horizontal Scale, Vertical Scale, Baseline Shift, the Tate-chu-yoko
/// Up/Down and Left/Right, Character Rotation and Language, each empty (unset) or set.
pub(crate) fn advanced_body(ui: &mut egui::Ui, d: &mut Dialog) {
egui::Grid::new("character-style-advanced").num_columns(2).spacing([18.0, 8.0]).show(ui, |ui| {
for (key, caption, unit) in [
("h_scale", tl!("Horizontal Scale"), "%"),
("v_scale", tl!("Vertical Scale"), "%"),
("baseline_shift", tl!("Baseline Shift"), "pt"),
("tcyUpDown", tl!("Tate-chu-yoko Up/Down"), "pt"),
("tcyLeftRight", tl!("Tate-chu-yoko Left/Right"), "pt"),
("rotation", tl!("Character Rotation"), "°"),
] {
let row = ui.label(caption);
@@ -1473,11 +1479,19 @@ mod tests {
}
#[test]
fn advanced_section_shows_its_five_controls() {
fn advanced_section_shows_its_seven_controls() {
let mut d = dialog_for(json!({}));
let mut app = app();
let shown = crate::tests_labels::painted_text(&mut app, |_, ui| advanced_body(ui, &mut d));
for label in ["Horizontal Scale", "Vertical Scale", "Baseline Shift", "Character Rotation", "Language:"] {
for label in [
"Horizontal Scale",
"Vertical Scale",
"Baseline Shift",
"Tate-chu-yoko Up/Down",
"Tate-chu-yoko Left/Right",
"Character Rotation",
"Language:",
] {
assert!(shown.contains(label), "{label}: {shown}");
}
}
@@ -1569,6 +1583,85 @@ mod tests {
assert!(!def.attrs.contains_key("v_scale"));
}
#[test]
fn tate_chu_yoko_offsets_show_set_reset_and_keep_their_limits() {
let d = dialog_for(json!({"tcyUpDown": 2.0, "size": 12.0}));
assert_eq!((d.fields["tcyUpDown"].clone(), d.fields["tcyLeftRight"].clone()), (json!(2.0), json!("")));
assert_eq!(edited_attrs(&d).unwrap(), attrs(json!({"tcyUpDown": 2.0, "size": 12.0})));
// A value a style captured from scaled text stays while its field is untouched.
assert_eq!(edited_attrs(&dialog_for(json!({"tcyLeftRight": 3000.0}))).unwrap(), attrs(json!({"tcyLeftRight": 3000.0})));
let mut d = dialog_for(json!({"tcyUpDown": 2.0}));
d.fields.insert("tcyUpDown".into(), json!(""));
d.fields.insert("tcyLeftRight".into(), json!("-1296"));
assert_eq!(edited_attrs(&d).unwrap(), attrs(json!({"tcyLeftRight": -1296.0})));
d.fields.insert("tcyLeftRight".into(), json!("0"));
assert_eq!(edited_attrs(&d).unwrap(), attrs(json!({"tcyLeftRight": 0.0})));
for (key, value, message) in [
("tcyUpDown", "1296.1", "Tate-chu-yoko Up/Down must be a number from -1296 to 1296"),
("tcyLeftRight", "-1296.1", "Tate-chu-yoko Left/Right must be a number from -1296 to 1296"),
("tcyUpDown", "high", "Tate-chu-yoko Up/Down must be a number"),
("tcyLeftRight", "NaN", "Tate-chu-yoko Left/Right must be a number"),
] {
let mut d = dialog_for(json!({}));
d.fields.insert(key.into(), json!(value));
assert_eq!(edited_attrs(&d).unwrap_err(), message, "{key} {value}");
}
let mut d = dialog_for(json!({"tcyUpDown": 2.0, "tcyLeftRight": -1.0, "size": 12.0}));
d.fields.insert("section".into(), json!("advanced"));
reset_section(&mut d);
assert_eq!(edited_attrs(&d).unwrap(), attrs(json!({"size": 12.0})));
}
#[test]
fn tate_chu_yoko_offsets_preview_cancel_and_commit_to_the_style_and_its_text() {
let mut app = app();
app.run("charStyle.new", json!({"name": "Body", "attrs": {"size": 24.0, "tcyLeftRight": 0.0}})).unwrap();
let id = app.run("text.create", json!({"x": 10, "y": 40, "text": "Text"})).unwrap()["id"].as_u64().unwrap();
app.run("charStyle.apply", json!({"name": "Body", "id": id})).unwrap();
app.run("text.setRangeStyle", json!({"id": id, "start": 2, "end": 4, "tcyLeftRight": 5.0})).unwrap();
let before = app.session.doc().unwrap().doc.clone();
let undo = app.session.doc().unwrap().history.undo.len();
open(&mut app, "Body").unwrap();
{
let d = app.ui.dialog.as_mut().unwrap();
d.fields.insert("section".into(), json!("advanced"));
d.fields.insert("tcyUpDown".into(), json!("4"));
}
frame(&mut app);
assert_eq!(app.session.doc().unwrap().doc.char_styles[0].attrs["tcyUpDown"], json!(4.0));
super::super::cancel(&mut app);
assert_eq!(app.session.doc().unwrap().doc, before);
assert_eq!(app.session.doc().unwrap().history.undo.len(), undo);
open(&mut app, "Body").unwrap();
{
let d = app.ui.dialog.as_mut().unwrap();
d.fields.insert("tcyUpDown".into(), json!("4"));
d.fields.insert("tcyLeftRight".into(), json!("-3"));
}
super::super::confirm(&mut app).unwrap();
let state = app.session.doc().unwrap();
assert_eq!(state.history.undo.len(), undo + 1);
assert_eq!(state.doc.char_styles[0].attrs, attrs(json!({"size": 24.0, "tcyUpDown": 4.0, "tcyLeftRight": -3.0})));
let vectorcraft_doc::NodeKind::Text(t) = &state.doc.node(vectorcraft_doc::NodeId(id)).unwrap().kind else { panic!("text") };
assert_eq!(t.runs.iter().map(|r| (r.style.tcy_up_down, r.style.tcy_left_right)).collect::<Vec<_>>(), [(4.0, -3.0), (4.0, 5.0)]);
app.run("edit.undo", json!({})).unwrap();
assert_eq!(app.session.doc().unwrap().doc, before);
app.run("ui.newCharStyle", json!({})).unwrap();
{
let d = app.ui.dialog.as_mut().unwrap();
d.fields.insert("name".into(), json!("Shifted"));
d.fields.insert("tcyLeftRight".into(), json!("6"));
}
super::super::confirm(&mut app).unwrap();
let doc = &app.session.doc().unwrap().doc;
let def = doc.char_styles.iter().find(|def| def.name == "Shifted").unwrap();
assert_eq!(def.attrs["tcyLeftRight"], json!(6.0));
}
/// The negated tags of the twenty stylistic sets: an explicit empty Stylistic Sets choice.
fn no_sets() -> Vec<String> {
vectorcraft_text::EXTRA_FEATURES[..20].iter().map(|s| format!("-{s}")).collect()
+2
View File
@@ -3445,6 +3445,8 @@ digits Malayalam Малаялам
Scale at Center Мащабиране от центъра
Up/Down: Нагоре/надолу:
Left/Right: Наляво/надясно:
Tate-chu-yoko Up/Down Тате-чу-йоко нагоре/надолу
Tate-chu-yoko Left/Right Тате-чу-йоко наляво/надясно
Temperature Температура
Temperature/Tint… Температура/Нюанс…
Template Шаблон
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1554,6 +1554,8 @@ digits Malayalam Malajalam
Scale at Center Skaliraj od centra
Up/Down: Gore/dolje:
Left/Right: Lijevo/desno:
Tate-chu-yoko Up/Down Tate-chu-yoko gore/dolje
Tate-chu-yoko Left/Right Tate-chu-yoko lijevo/desno
Underline Podvučeno
Vertical Scale % Okomita skala %
Axis Osa
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -4417,6 +4417,8 @@ digits Malayalam Malaiàlam
Scale at Center Escala des del centre
Up/Down: Amunt/avall:
Left/Right: Esquerra/dreta:
Tate-chu-yoko Up/Down Tate-chu-yoko amunt/avall
Tate-chu-yoko Left/Right Tate-chu-yoko esquerra/dreta
Technical Drawing Dibuix tècnic
Temperature Temperatura
Temperature/Tint… Temperatura/To…
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1578,6 +1578,8 @@ digits Malayalam Malajálamské
Scale at Center Měřítko od středu
Up/Down: Nahoru/dolů:
Left/Right: Vlevo/vpravo:
Tate-chu-yoko Up/Down Tate-chu-yoko nahoru/dolů
Tate-chu-yoko Left/Right Tate-chu-yoko vlevo/vpravo
Underline Podtržení
Vertical Scale % Svislá změna velikosti %
Axis Osa
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1489,6 +1489,8 @@ digits Malayalam Malayalam
Scale at Center Skalér fra midten
Up/Down: Op/ned:
Left/Right: Venstre/højre:
Tate-chu-yoko Up/Down Tate-chu-yoko op/ned
Tate-chu-yoko Left/Right Tate-chu-yoko venstre/højre
Underline Understreget
Vertical Scale % Lodret skalering %
Axis Akse
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -3477,6 +3477,8 @@ effect Points Punkte
Scale at Center Von der Mitte aus skalieren
Up/Down: Oben/Unten:
Left/Right: Links/Rechts:
Tate-chu-yoko Up/Down Tate-chu-yoko oben/unten
Tate-chu-yoko Left/Right Tate-chu-yoko links/rechts
Temperature Temperatur
Temperature/Tint… Temperatur/Farbstich…
Template Vorlage
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -3907,6 +3907,8 @@ digits Malayalam Μαλαγιάλαμ
Scale at Center Κλιμάκωση από το κέντρο
Up/Down: Πάνω/Κάτω:
Left/Right: Αριστερά/Δεξιά:
Tate-chu-yoko Up/Down Tate-chu-yoko πάνω/κάτω
Tate-chu-yoko Left/Right Tate-chu-yoko αριστερά/δεξιά
Temperature/Tint… Θερμοκρασία/Απόχρωση…
Templates Folder Φάκελος προτύπων
Text Displayed in Cell: Κείμενο που εμφανίζεται στο κελί:
Can't render this file because it is too large.
+2
View File
@@ -3532,6 +3532,8 @@ digits Malayalam Malayálam
Scale at Center Escalar desde el centro
Up/Down: Arriba/abajo:
Left/Right: Izquierda/derecha:
Tate-chu-yoko Up/Down Tate-chu-yoko arriba/abajo
Tate-chu-yoko Left/Right Tate-chu-yoko izquierda/derecha
Temperature Temperatura
Temperature/Tint… Temperatura/tinte…
Template Plantilla
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1551,6 +1551,8 @@ digits Malayalam Malajalam
Scale at Center Skaalaa keskeltä
Up/Down: Ylös/alas:
Left/Right: Vasen/oikea:
Tate-chu-yoko Up/Down Tate-chu-yoko ylös/alas
Tate-chu-yoko Left/Right Tate-chu-yoko vasen/oikea
Underline Alleviivaus
Vertical Scale % Pystyskaalaus %
Axis Akseli
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -3524,6 +3524,8 @@ digits Malayalam Malayalam
Scale at Center Mettre à l’échelle depuis le centre
Up/Down: Haut/bas :
Left/Right: Gauche/droite :
Tate-chu-yoko Up/Down Tate-chu-yoko haut/bas
Tate-chu-yoko Left/Right Tate-chu-yoko gauche/droite
Temperature Température
Temperature/Tint… Température/teinte…
Template Modèle
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -2449,6 +2449,8 @@ antiAlias Sharp शार्प
Left-to-Right Paragraph Direction बाएँ-से-दाएँ पैराग्राफ़ दिशा
Left: बाएँ:
Left/Right: बाएं / दाएं:
Tate-chu-yoko Up/Down ताते-चू-योको ऊपर/नीचे
Tate-chu-yoko Left/Right ताते-चू-योको बाएं/दाएं
Legacy .ai Options पुराने .ai फ़ॉर्मैट के ऑप्शन्स
Legacy (version 7) पुराना फ़ॉर्मैट (संस्करण 7)
Legacy Macintosh RGB (Gamma 1.8) पुराना Macintosh RGB (गामा 1.8)
Can't render this file because it is too large.
+2
View File
@@ -4186,6 +4186,8 @@ mark-style Japanese Japán
Scale at Center Méretezés középről
Up/Down: Fel/le:
Left/Right: Balra/jobbra:
Tate-chu-yoko Up/Down Tate-chu-yoko fel/le
Tate-chu-yoko Left/Right Tate-chu-yoko balra/jobbra
Technical Drawing Műszaki rajz
Temperature Színhőmérséklet
Temperature/Tint… Színhőmérséklet/tónus…
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1489,6 +1489,8 @@ digits Malayalam Malayalam
Scale at Center Skalakan dari tengah
Up/Down: Atas/bawah:
Left/Right: Kiri/kanan:
Tate-chu-yoko Up/Down Tate-chu-yoko atas/bawah
Tate-chu-yoko Left/Right Tate-chu-yoko kiri/kanan
Underline Garis bawah
Vertical Scale % Skala vertikal %
Axis Sumbu
1 # Indonesian (id) catalog. Same format as zh-hant.tsv: context <TAB> source <TAB> translation
1489
1490
1491
1492
1493
1494
1495
1496
+2
View File
@@ -3569,6 +3569,8 @@ digits Malayalam Malayalam
Scale at Center Ridimensiona dal centro
Up/Down: Su/giù:
Left/Right: Sinistra/destra:
Tate-chu-yoko Up/Down Tate-chu-yoko su/giù
Tate-chu-yoko Left/Right Tate-chu-yoko sinistra/destra
Temperature Temperatura
Temperature/Tint… Temperatura/tinta…
Template Modello
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -3894,6 +3894,8 @@ file-filter Templates テンプレート
Scale at Center 中心から拡大・縮小
Up/Down: 上下:
Left/Right: 左右:
Tate-chu-yoko Up/Down 縦中横の上下
Tate-chu-yoko Left/Right 縦中横の左右
Temperature 色温度
Template テンプレート
Templates テンプレート
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1423,6 +1423,8 @@ digits Malayalam მალაიალამური
Scale at Center ცენტრიდან მასშტაბირება
Up/Down: ზემოთ/ქვემოთ:
Left/Right: მარცხნივ/მარჯვნივ:
Tate-chu-yoko Up/Down Tate-chu-yoko ზემოთ/ქვემოთ
Tate-chu-yoko Left/Right Tate-chu-yoko მარცხნივ/მარჯვნივ
Underline ხაზგასმული
Vertical Scale % ვერტიკალური მასშტაბი %
Axis ღერძი
Can't render this file because it is too large.
+2
View File
@@ -3882,6 +3882,8 @@ file-filter Templates 템플릿
Scale at Center 중심에서 크기 조정
Up/Down: 위/아래:
Left/Right: 왼쪽/오른쪽:
Tate-chu-yoko Up/Down 다테추요코 위/아래
Tate-chu-yoko Left/Right 다테추요코 왼쪽/오른쪽
Temperature 색온도
Template 템플릿
Templates 템플릿
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1503,6 +1503,8 @@ digits Malayalam Malayalam
Scale at Center Schalen vanuit het midden
Up/Down: Omhoog/omlaag:
Left/Right: Links/rechts:
Tate-chu-yoko Up/Down Tate-chu-yoko omhoog/omlaag
Tate-chu-yoko Left/Right Tate-chu-yoko links/rechts
Underline Onderstrepen
Vertical Scale % Verticale schaal %
Axis As
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -1490,6 +1490,8 @@ digits Malayalam Malajalam
Scale at Center Skaluj od środka
Up/Down: W górę/w dół:
Left/Right: W lewo/w prawo:
Tate-chu-yoko Up/Down Tate-chu-yoko w górę/w dół
Tate-chu-yoko Left/Right Tate-chu-yoko w lewo/w prawo
Underline Podkreślenie
Vertical Scale % Skala pionowa %
Axis Oś
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -5026,6 +5026,8 @@ axis Both Ambos
Scale at Center Dimensionar a partir do centro
Up/Down: Para Cima/Para Baixo:
Left/Right: Esquerda/Direita:
Tate-chu-yoko Up/Down Tate-chu-yoko Para Cima/Para Baixo
Tate-chu-yoko Left/Right Tate-chu-yoko Esquerda/Direita
Temperature Temperatura
Templates Modelos
Text Wrap Options Opções de Quebra de Texto
Can't render this file because it contains an unexpected character in line 6 and column 47.
+2
View File
@@ -3564,6 +3564,8 @@ digits Malayalam Малаялам
Scale at Center Масштабировать от центра
Up/Down: Вверх/вниз:
Left/Right: Влево/вправо:
Tate-chu-yoko Up/Down Tate-chu-yoko вверх/вниз
Tate-chu-yoko Left/Right Tate-chu-yoko влево/вправо
Temperature Температура
Temperature/Tint… Температура/оттенок…
Template Шаблон
Can't render this file because it is too large.
+2
View File
@@ -3454,6 +3454,8 @@ digits Malayalam Malayalam
Scale at Center Skala från mitten
Up/Down: Upp/ned:
Left/Right: Vänster/höger:
Tate-chu-yoko Up/Down Tate-chu-yoko upp/ned
Tate-chu-yoko Left/Right Tate-chu-yoko vänster/höger
Temperature Temperatur
Temperature/Tint… Temperatur/färgton…
Template Mall
Can't render this file because it contains an unexpected character in line 5 and column 25.
+2
View File
@@ -3345,6 +3345,8 @@ digits Malayalam Malayalam
Scale at Center Merkezden Ölçekle
Up/Down: Yukarı/Aşağı:
Left/Right: Sol/Sağ:
Tate-chu-yoko Up/Down Tate-chu-yoko Yukarı/Aşağı
Tate-chu-yoko Left/Right Tate-chu-yoko Sol/Sağ
Temperature Sıcaklık
Temperature/Tint… Sıcaklık/Renk Tonu…
Template Şablon
Can't render this file because it contains an unexpected character in line 5 and column 25.
+2
View File
@@ -3562,6 +3562,8 @@ effect Points Точки
Scale at Center Масштабувати від центру
Up/Down: Вгору/вниз:
Left/Right: Ліворуч/праворуч:
Tate-chu-yoko Up/Down Tate-chu-yoko вгору/вниз
Tate-chu-yoko Left/Right Tate-chu-yoko ліворуч/праворуч
Temperature Температура
Temperature/Tint… Температура/відтінок…
Template Шаблон
Can't render this file because it contains an unexpected character in line 182 and column 5.
+2
View File
@@ -3896,6 +3896,8 @@ mark-style Japanese Kiểu Nhật
Scale at Center Co giãn từ tâm
Up/Down: Lên/Xuống:
Left/Right: Trái/Phải:
Tate-chu-yoko Up/Down Tate-chu-yoko lên/xuống
Tate-chu-yoko Left/Right Tate-chu-yoko trái/phải
Temperature Nhiệt độ màu
Temperature/Tint… Nhiệt độ màu/Tông…
Template Mẫu
Can't render this file because it contains an unexpected character in line 204 and column 5.
+2
View File
@@ -3397,6 +3397,8 @@ digits Malayalam 马拉雅拉姆数字
Scale at Center 从中心缩放
Up/Down: 上/下:
Left/Right: 左/右:
Tate-chu-yoko Up/Down 纵中横上/下
Tate-chu-yoko Left/Right 纵中横左/右
Temperature 色温
Temperature/Tint… 色温/色调…
Template 模板
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -4511,6 +4511,8 @@ digits Malayalam 馬來亞拉姆數字
Scale at Center 從中心縮放
Up/Down: 上/下:
Left/Right: 左/右:
Tate-chu-yoko Up/Down 縱中橫上/下
Tate-chu-yoko Left/Right 縱中橫左/右
Temperature 色溫
Temperature/Tint… 色溫/色調…
Template 範本
Can't render this file because it contains an unexpected character in line 6 and column 47.
+5 -4
View File
@@ -7374,13 +7374,14 @@ Character Style Options uses `charStyle.edit {name, to, attrs}` to replace the n
attribute map in one undo step. `to` is trimmed and must be unique. The command updates text using the style
while preserving local overrides; Undo/Redo restores the definition and its users. The `charStyleOptions`
dialog exposes `name`, `font_family`, `font_style`, `size`, `leading`, `kerning`, `tracking`, `case`,
`position`, `underline`, `strikethrough`, `charAlign`, `h_scale`, `v_scale`, `baseline_shift`, `rotation`,
`language`, `fill`, `fill_tint`, `stroke`, `stroke_tint`, `stroke_width`, `overprint_fill`, `overprint_stroke`,
`position`, `underline`, `strikethrough`, `charAlign`, `h_scale`, `v_scale`, `baseline_shift`, `tcyUpDown`,
`tcyLeftRight`, `rotation`, `language`, `fill`, `fill_tint`, `stroke`, `stroke_tint`, `stroke_width`, `overprint_fill`, `overprint_stroke`,
`ot_figure`, `ot_position`, `ot_liga`, `ot_calt`, `ot_dlig`, `ot_swsh`, `ot_salt`, `ot_titl`, `ot_ordn`, `ot_frac`,
`ot_sets`, `section` (`general`, `basic`, `advanced`, `color` or `opentype`), and `preview`. An empty field leaves its
attribute unset. `leading` and `kerning` also accept `Auto` to store an explicit automatic value.
Advanced Character Formats holds `h_scale` and `v_scale` (percent, 1 to 10000),
`baseline_shift` (points, -1296 to 1296), `rotation` (degrees, stored from -180 to 180) and `language` (a name or tag from Document
`baseline_shift` (points, -1296 to 1296), the Tate-chu-yoko Settings `tcyUpDown` and `tcyLeftRight` (points,
-1296 to 1296, as `text.setRangeStyle` takes them; an explicit 0 stays distinct from unset), `rotation` (degrees, stored from -180 to 180) and `language` (a name or tag from Document
Setup's languages; English: USA stores the explicit default `null`, and a tag not in the list that the style
already has is kept). Language sets the language the characters are shaped in; it does not change hyphenation
or spelling.
@@ -7409,7 +7410,7 @@ captured attributes. Without selected text, it starts with the character default
(including `charAlign: "emBoxCenter"` in Japanese); changing a Basic field keeps other seeded attributes.
Without selected text, the New Paragraph Style dialog sends no `attrs`, and the engine gives the new style the
paragraph defaults for the interface language. Reset Panel in Basic Character
Formats removes those fields from the definition, Reset Panel in Advanced Character Formats removes its five, Reset
Formats removes those fields from the definition, Reset Panel in Advanced Character Formats removes its seven, Reset
Panel in Character Color removes its five attributes and Reset Panel in OpenType Features removes `features`.
`ui.charStyleOptions.resetPanel {}` performs that reset for the section selected in either character-style
dialog; it is disabled on General.
+1 -1
View File
@@ -629,7 +629,7 @@ since 2026-10-01.
- **Character-style Auto leading:** capture and explicit style attributes retain Auto as a reset, distinct from omitted leading. Redefine and later numeric updates preserve local leading overrides; the Character Styles marker recognizes Auto correctly. Regression assertions cover partial definitions, Undo/Redo and native save/load serialization. Public references: [Character and paragraph styles](https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html) and [Leading](https://helpx.adobe.com/illustrator/using/line-character-spacing.html).
- **Character-style numeric bounds:** `charStyle.new`, `charStyle.edit`, and `charStyle.setAttrs` accept size from 0.1 to 1296 pt, explicit leading from 0.1 to 5000 pt, horizontal and vertical scale from 1% to 10,000%, and baseline shift and Tate-chu-yoko offsets from -1296 to 1296 pt. Out-of-range input leaves the style and Undo history unchanged; Auto leading remains available. These limits match the Character panel controls.
- **Character Style Options, General and Basic Character Formats:** the dialog edits a style's name and stored character formats together. Empty fields remain unset, checkboxes show an indeterminate unset state, Basic's Reset Panel clears its explicit settings, and Preview can be canceled without changing history. OK saves one undo step; New Character Style offers the same fields from captured text or the interface language's defaults without a selection. Public reference: [Character and paragraph styles](https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html).
- **Character Style Options, Advanced Character Formats:** Character Style Options and New Character Style set a style's Horizontal Scale and Vertical Scale (1% to 10,000%), Baseline Shift (-1296 pt to 1296 pt), Character Rotation (stored from -180° to 180°) and Language; text that uses the style takes them and keeps its local overrides. Empty fields remain unset, an explicit 100%, 0° or English: USA stays distinct from unset, and the section's Reset Panel clears only these five. Language sets the language the characters are shaped in, not hyphenation or spelling. Public reference: [Character and paragraph styles](https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html).
- **Character Style Options, Advanced Character Formats:** Character Style Options and New Character Style set a style's Horizontal Scale and Vertical Scale (1% to 10,000%), Baseline Shift (-1296 pt to 1296 pt), the Tate-chu-yoko Settings Up/Down and Left/Right (-1296 pt to 1296 pt), Character Rotation (stored from -180° to 180°) and Language; text that uses the style takes them and keeps its local overrides. Empty fields remain unset, an explicit 100%, 0 pt, 0° or English: USA stays distinct from unset, and the section's Reset Panel clears only these seven. Language sets the language the characters are shaped in, not hyphenation or spelling. Public references: [Character and paragraph styles](https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html) and [Format East Asian characters](https://helpx.adobe.com/illustrator/using/formatting-asian-characters.html).
- **Character Style Options, Character Color and OpenType Features:** Character Style Options and New Character Style set a style's fill and stroke (None or a document swatch; a global swatch stays linked, with a Tint from 0% to 100%), stroke Weight, Overprint Fill and Overprint Stroke, and its Figure, Position, Standard and Discretionary Ligatures, Contextual, Stylistic and Titling Alternates, Swash, Ordinals, Fractions and Stylistic Sets 1 to 20; text that uses the style takes them and keeps its local overrides, and editing a global swatch later updates the style and its text. Empty controls remain unset, an explicit None, off, Default Figure or Default Position stays distinct from unset, each stylistic set is on, off or unset, a gradient or pattern paint stays until another paint is chosen, a changed OpenType control keeps the style's other feature tags, and each section's Reset Panel clears only its own attributes. Public references: [Character and paragraph styles](https://helpx.adobe.com/illustrator/using/character-paragraph-styles.html) and [Format text with OpenType features](https://helpx.adobe.com/illustrator/desktop/design-with-text/special-characters-glyphs/format-text-with-opentype-features.html).
- **Opening style options from the style panels:** a double-click on a user character style's row opens its Character Style Options (`ui.charStyleOptions`), as the panel menu's item does; a paragraph style's row opens its Paragraph Style Options, the rename dialog (`ui.paramDialog` running `paraStyle.rename`) the panel menu opens. A single click still applies the style, the second click of the double-click does not apply it again, and the built-in Normal style opens no dialog. Test `panels::text_styles::tests::double_clicking_a_character_style_row_opens_its_options`.
- **Character Style Options window size:** the dialog keeps a fixed width wide enough for the widest tab's controls and scrolls its sections inside a window shorter than them, so it stays on screen and its OK and Cancel buttons stay visible; the width is the same in every section and the height follows the section. Test `dialogs::char_style_options::tests::the_sections_scroll_in_a_window_shorter_than_the_general_list`.