mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 09:46:59 -06:00
EPS and .ai import: the note for editing data of another page size gives both sizes and the scale
When the editing data of an EPS or .ai file was for a page of another size than the file's own page, the file opened as its page or its PDF part with the reason "its editing data is for a different page". The reason did not say which page the editing data was for, or that it was the same page at another scale. The reason now gives both sizes in points: "its editing data is for a 600 × 400 pt page, not the file's 612 × 792 pt page". When the two pages are in proportion (within the 0.5 pt per side of the check), it gives the scale of the editing data's page to the file's instead: "its editing data is for a 100 × 100 pt page, the file's 1000 × 1000 pt page at 1:10". Every catalog that had the old reason has rows for both new ones. Docs: docs/mcp.md, docs/target-app-parity.md.
This commit is contained in:
@@ -30,7 +30,7 @@ use std::collections::BTreeSet;
|
||||
use std::sync::Arc;
|
||||
|
||||
use vectorcraft_color::BlendMode;
|
||||
use vectorcraft_doc::{AppearanceItem, Document, Node, NodeId, NodeKind, Scaling, TextKind};
|
||||
use vectorcraft_doc::{AppearanceItem, Document, Node, NodeId, NodeKind, Scaling, TextKind, Unit};
|
||||
use vectorcraft_geom::{Affine, PathData, Point, Rect, Vec2};
|
||||
|
||||
use super::Imported;
|
||||
@@ -994,7 +994,18 @@ fn build(data: &[u8], visible: Option<&Document>, page: Page, outlined: bool, tr
|
||||
// scale, which `to_doc` carries, so its art and the page reach the same size (#2031).
|
||||
let rect = to_doc.transform_rect_bbox(art_box);
|
||||
if (rect.width() - page_rect.width()).abs() > 0.5 || (rect.height() - page_rect.height()).abs() > 0.5 {
|
||||
return Err("its editing data is for a different page".into());
|
||||
// Both sizes in points as the fields show them, and the editing data's page to the
|
||||
// file's as a scale (1:10 is a tenth of its size) when its sides are in proportion and
|
||||
// the scale doesn't round to 1:1.
|
||||
let n = |v: f64| Unit::Points.number(v);
|
||||
let (w, h, pw, ph) = (n(rect.width()), n(rect.height()), n(page_rect.width()), n(page_rect.height()));
|
||||
let k = page_rect.width() / rect.width();
|
||||
let factor = n(k.max(1.0 / k));
|
||||
if k.is_finite() && k > 0.0 && (rect.height() * k - page_rect.height()).abs() <= 0.5 && factor != "1" {
|
||||
let scale = if k >= 1.0 { format!("1:{factor}") } else { format!("{factor}:1") };
|
||||
return Err(format!("its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale}"));
|
||||
}
|
||||
return Err(format!("its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page"));
|
||||
}
|
||||
// The page's area in the layers' document, and the page's type moved there.
|
||||
let shift = Affine::translate(Vec2::new(rect.x0 - page_rect.x0, rect.y0 - page_rect.y0));
|
||||
|
||||
@@ -270,7 +270,7 @@ fn editing_data_in_the_units_of_a_user_unit_page_comes_in_at_the_pages_size() {
|
||||
assert_eq!((stroke.width, dash.pattern, dash.offset), (20.0, vec![40.0, 20.0], 10.0));
|
||||
// Read as if its page had no `UserUnit`, the editing data is for another page.
|
||||
let (_, w, read) = crate::layered_ai(&private(&art), page.clone(), vec![], false, false, 1.0);
|
||||
assert!(!read && w.iter().any(|w| w.contains("different page")), "{w:?}");
|
||||
assert!(!read && w.iter().any(|w| w.contains("for a 100 × 100 pt page, the file's 1000 × 1000 pt page at 1:10")), "{w:?}");
|
||||
// Editing data with the page in points.
|
||||
let points = native(&layer("Jig", true, "0 0 1 0 k\n100 100 m\n140 100 L\n140 140 L\n100 140 L\nf")).replace(" 0 0 100 100", " 0 0 1000 1000");
|
||||
let (d, w, read) = crate::layered_ai(&private(&points), page, vec![], false, false, 10.0);
|
||||
@@ -290,7 +290,49 @@ fn an_ai_file_that_cant_be_read_through_its_editing_data_keeps_its_pdf_part() {
|
||||
let other = native(&layer("Jig", true, &square(10, 10))).replace("%AI3_Cropmarks: 0 0 100 100", "%AI3_Cropmarks: 0 0 50 50");
|
||||
let (d, w, _) = crate::layered_ai(&private(&other), pdf.clone(), vec![], false, false, 1.0);
|
||||
assert_eq!(names(&d), names(&pdf));
|
||||
assert!(w.iter().any(|w| w.contains("different page")), "{w:?}");
|
||||
assert!(w.iter().any(|w| w.contains("for a 50 × 50 pt page, the file's 100 × 100 pt page at 1:2")), "{w:?}");
|
||||
}
|
||||
|
||||
/// #2034: editing data for a page of another size gives both sizes in points, in an EPS's note and
|
||||
/// in a `.ai`'s.
|
||||
#[test]
|
||||
fn editing_data_for_a_page_of_another_size_names_both_sizes() {
|
||||
let art = native(&layer("Jig", true, &square(10, 10))).replace(" 0 0 100 100", " 0 0 600 400");
|
||||
let file = String::from_utf8(eps(&page_square(10, 10), &art)).unwrap().replace("%%BoundingBox: 0 0 100 100", "%%BoundingBox: 0 0 612 792");
|
||||
let r = import(file.as_bytes()).unwrap();
|
||||
assert_eq!(names(&r.document), ["Layer 1"], "{:?}", r.warnings);
|
||||
let note = "the file's layers weren't read (its editing data is for a 600 × 400 pt page, not the file's 612 × 792 pt page): it comes in as its page, in one layer";
|
||||
assert!(r.warnings.iter().any(|w| w == note), "{:?}", r.warnings);
|
||||
// A `.ai` whose PDF part has an A4 page.
|
||||
let (_, w, read) = crate::layered_ai(&private(&art), Document::new(595.2756, 841.8898), vec![], false, false, 1.0);
|
||||
let note = "the file's layers weren't read from its editing data (its editing data is for a 600 × 400 pt page, not the file's 595.276 × 841.89 pt page): they come from its PDF part";
|
||||
assert!(!read && w.iter().any(|w| w == note), "{w:?}");
|
||||
}
|
||||
|
||||
/// #2034: editing data whose page is the file's at another scale (a Large Canvas file without its
|
||||
/// scale, for one) gives that scale, the editing data's page to the file's.
|
||||
#[test]
|
||||
fn editing_data_for_the_page_at_another_scale_names_the_scale() {
|
||||
let art = native(&layer("Jig", true, &square(10, 10)));
|
||||
let note = |file: &str| {
|
||||
let r = import(file.as_bytes()).unwrap();
|
||||
assert_eq!(names(&r.document), ["Layer 1"], "{:?}", r.warnings);
|
||||
r.warnings.into_iter().find(|w| w.contains("its editing data is for")).unwrap_or_default()
|
||||
};
|
||||
let file = String::from_utf8(eps(&page_square(10, 10), &art)).unwrap();
|
||||
let ten = file.replace("%%BoundingBox: 0 0 100 100", "%%BoundingBox: 0 0 1000 1000");
|
||||
assert_eq!(
|
||||
note(&ten),
|
||||
"the file's layers weren't read (its editing data is for a 100 × 100 pt page, the file's 1000 × 1000 pt page at 1:10): it comes in as its page, in one layer"
|
||||
);
|
||||
let wide = file.replace("%%BoundingBox: 0 0 100 100", "%%BoundingBox: 0 0 250 250");
|
||||
assert!(note(&wide).contains("for a 100 × 100 pt page, the file's 250 × 250 pt page at 1:2.5)"));
|
||||
let half = file.replace("%%BoundingBox: 0 0 100 100", "%%BoundingBox: 0 0 50 50");
|
||||
assert!(note(&half).contains("for a 100 × 100 pt page, the file's 50 × 50 pt page at 2:1)"));
|
||||
// A scale that rounds to 1:1 isn't given.
|
||||
let large = art.replace(" 0 0 100 100", " 0 0 2000 2000");
|
||||
let (_, w, _) = crate::layered_ai(&private(&large), Document::new(2000.8, 2000.8), vec![], false, false, 1.0);
|
||||
assert!(w.iter().any(|w| w.contains("for a 2000 × 2000 pt page, not the file's 2000.8 × 2000.8 pt page)")), "{w:?}");
|
||||
}
|
||||
|
||||
/// Editing data that can't be decompressed leaves the `.ai` as its PDF part, after its notes, with a
|
||||
@@ -330,7 +372,7 @@ fn a_large_canvas_eps_keeps_its_layers_at_the_pages_size() {
|
||||
let art = native_large_canvas(20.0, 10.0, &layer("Art", true, &square(10, 10)));
|
||||
let r = import(&eps(&page_square(10, 10), &art)).unwrap();
|
||||
assert_eq!(names(&r.document), ["Layer 1"], "{:?}", r.warnings);
|
||||
assert!(r.warnings.iter().any(|w| w.contains("different page")), "{:?}", r.warnings);
|
||||
assert!(r.warnings.iter().any(|w| w.contains("for a 200 × 200 pt page, the file's 100 × 100 pt page at 2:1")), "{:?}", r.warnings);
|
||||
// A `.ai` keeps its art space: its PDF part is read at the size it declares.
|
||||
let art = native_large_canvas(100.0, 10.0, &layer("Art", true, &square(10, 10)));
|
||||
let (d, w, read) = crate::layered_ai(&private(&art), pdf_part(10.0, 86.0), vec![], false, false, 1.0);
|
||||
@@ -1198,5 +1240,5 @@ fn raster_print_page_recovers_legacy_mesh_vector_mask_and_editable_curve() {
|
||||
// A wrong editing copy must still fail the page comparison.
|
||||
let wrong = file.replace("%%BoundingBox: 0 0 100 100", "%%BoundingBox: 0 0 120 100");
|
||||
let r = import(wrong.as_bytes()).unwrap();
|
||||
assert!(r.warnings.iter().any(|w| w.contains("different page")), "{:?}", r.warnings);
|
||||
assert!(r.warnings.iter().any(|w| w.contains("for a 100 × 100 pt page, not the file's 120 × 100 pt page")), "{:?}", r.warnings);
|
||||
}
|
||||
|
||||
@@ -3623,7 +3623,8 @@ axis Both И двете
|
||||
@msg its editing data doesn't say where its artboard is данните за редакция не посочват къде е неговата работна област
|
||||
@msg its editing data has no layers данните за редакция нямат слоеве
|
||||
@msg its editing data is damaged данните за редакция са повредени
|
||||
@msg its editing data is for a different page данните за редакция са за друга страница
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page данните за редакция са за страница {w} × {h} pt, а не за страницата на файла {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} данните за редакция са за страница {w} × {h} pt, т.е. страницата на файла {pw} × {ph} pt в мащаб {scale}
|
||||
@msg its layers use {_1}, which aren't read yet слоевете му използват {_1}, които все още не са прочетени
|
||||
@msg its page has text, and its layers have no text objects to put it in страницата му има текст, а слоевете му нямат текстови обекти, в които да го поставят
|
||||
@msg its type is to come in as outlines, which only its page has типът му е да се появи като контури, каквито има само страницата му
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3995,6 +3995,8 @@ imageTrace Outline Obrys
|
||||
@msg its editing data doesn't say where its artboard is z jeho dat pro úpravy není zřejmé, kde je pracovní plocha
|
||||
@msg its editing data has no layers jeho data pro úpravy nemají žádné vrstvy
|
||||
@msg its editing data is damaged jeho data pro úpravy jsou poškozená
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page jeho data pro úpravy patří ke stránce {w} × {h} pt, ne ke stránce souboru {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} jeho data pro úpravy patří ke stránce {w} × {h} pt, tedy ke stránce souboru {pw} × {ph} pt v měřítku {scale}
|
||||
@msg its zlib compression is damaged jejich komprese zlib je poškozená
|
||||
@msg its Zstandard compression is damaged jejich komprese Zstandard je poškozená
|
||||
@msg it decompresses to more than {_1} MB po rozbalení mají více než {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3755,7 +3755,8 @@ imageTrace Outline Kontur
|
||||
@msg its editing data doesn't say where its artboard is dens redigeringsdata siger ikke, hvor dens tegneflade er
|
||||
@msg its editing data has no layers dens redigeringsdata har ingen lag
|
||||
@msg its editing data is damaged dens redigeringsdata er beskadiget
|
||||
@msg its editing data is for a different page dens redigeringsdata er til en anden side
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page dens redigeringsdata er til en side på {w} × {h} pt, ikke til filens side på {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} dens redigeringsdata er til en side på {w} × {h} pt, altså filens side på {pw} × {ph} pt i skala {scale}
|
||||
@msg its layers use {_1}, which aren't read yet dens lag bruger {_1}, som ikke kan læses endnu
|
||||
@msg its page has text, and its layers have no text objects to put it in dens side har tekst, og dens lag har ingen tekstobjekter at lægge den i
|
||||
@msg its type is to come in as outlines, which only its page has dens tekst kommer ind som konturer, hvilket kun dens side har
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3629,6 +3629,8 @@ theme Appearance Erscheinungsbild
|
||||
@msg its editing data doesn't say where its artboard is seine Bearbeitungsdaten geben nicht an, wo seine Zeichenfläche liegt
|
||||
@msg its editing data has no layers seine Bearbeitungsdaten enthalten keine Ebenen
|
||||
@msg its editing data is damaged seine Bearbeitungsdaten sind beschädigt
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page seine Bearbeitungsdaten gehören zu einer Seite von {w} × {h} pt, nicht zur Seite der Datei von {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} seine Bearbeitungsdaten gehören zu einer Seite von {w} × {h} pt, der Seite der Datei von {pw} × {ph} pt im Maßstab {scale}
|
||||
@msg its zlib compression is damaged ihre zlib-Komprimierung ist beschädigt
|
||||
@msg its Zstandard compression is damaged ihre Zstandard-Komprimierung ist beschädigt
|
||||
@msg it decompresses to more than {_1} MB sie entpacken sich auf mehr als {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -1991,6 +1991,8 @@ axis Both Και τα δύο
|
||||
@msg its editing data doesn't say where its artboard is Τα δεδομένα επεξεργασίας δεν προσδιορίζουν τη θέση του πίνακα σχεδίασης
|
||||
@msg its editing data has no layers Τα δεδομένα επεξεργασίας δεν περιλαμβάνουν επίπεδα
|
||||
@msg its editing data is damaged Τα δεδομένα επεξεργασίας είναι κατεστραμμένα
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page Τα δεδομένα επεξεργασίας αφορούν σελίδα {w} × {h} pt, όχι τη σελίδα του αρχείου {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} Τα δεδομένα επεξεργασίας αφορούν σελίδα {w} × {h} pt, δηλαδή τη σελίδα του αρχείου {pw} × {ph} pt σε κλίμακα {scale}
|
||||
@msg its zlib compression is damaged η συμπίεση zlib τους είναι κατεστραμμένη
|
||||
@msg its Zstandard compression is damaged η συμπίεση Zstandard τους είναι κατεστραμμένη
|
||||
@msg it decompresses to more than {_1} MB αποσυμπιεσμένα υπερβαίνουν τα {_1} MB
|
||||
|
||||
|
@@ -3692,6 +3692,8 @@ axis Both Ambos
|
||||
@msg its editing data doesn't say where its artboard is sus datos de edición no indican dónde está su mesa de trabajo
|
||||
@msg its editing data has no layers sus datos de edición no tienen capas
|
||||
@msg its editing data is damaged sus datos de edición están dañados
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page sus datos de edición son de una página de {w} × {h} pt, no de la página del archivo de {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} sus datos de edición son de una página de {w} × {h} pt, la página del archivo de {pw} × {ph} pt a escala {scale}
|
||||
@msg its zlib compression is damaged su compresión zlib está dañada
|
||||
@msg its Zstandard compression is damaged su compresión Zstandard está dañada
|
||||
@msg it decompresses to more than {_1} MB ocupan más de {_1} MB al descomprimirse
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3924,6 +3924,8 @@ imageTrace Outline Ääriviiva
|
||||
@msg its editing data doesn't say where its artboard is sen muokkaustiedoista ei selviä piirtoalustan sijainti
|
||||
@msg its editing data has no layers sen muokkaustiedoissa ei ole tasoja
|
||||
@msg its editing data is damaged sen muokkaustiedot ovat vaurioituneet
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page sen muokkaustiedot koskevat sivua {w} × {h} pt, eivät tiedoston sivua {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} sen muokkaustiedot koskevat sivua {w} × {h} pt, eli tiedoston sivua {pw} × {ph} pt mittakaavassa {scale}
|
||||
@msg its zlib compression is damaged niiden zlib-pakkaus on vaurioitunut
|
||||
@msg its Zstandard compression is damaged niiden Zstandard-pakkaus on vaurioitunut
|
||||
@msg it decompresses to more than {_1} MB ne purkautuvat yli {_1} megatavuksi
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3689,6 +3689,8 @@ axis Both Les deux
|
||||
@msg its editing data doesn't say where its artboard is ses données de modification n’indiquent pas où se trouve son plan de travail
|
||||
@msg its editing data has no layers ses données de modification n’ont pas de calques
|
||||
@msg its editing data is damaged ses données de modification sont endommagées
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page ses données de modification concernent une page de {w} × {h} pt, et non la page du fichier de {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} ses données de modification concernent une page de {w} × {h} pt, soit la page du fichier de {pw} × {ph} pt à l’échelle {scale}
|
||||
@msg its zlib compression is damaged leur compression zlib est endommagée
|
||||
@msg its Zstandard compression is damaged leur compression Zstandard est endommagée
|
||||
@msg it decompresses to more than {_1} MB elles dépassent {_1} Mo une fois décompressées
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4537,6 +4537,8 @@ imageTrace Outline Körvonal
|
||||
@msg its editing data doesn't say where its artboard is a szerkesztési adataiból nem derül ki, hol van a rajztáblája
|
||||
@msg its editing data has no layers a szerkesztési adataiban nincsenek rétegek
|
||||
@msg its editing data is damaged a szerkesztési adatai sérültek
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page a szerkesztési adatai egy {w} × {h} pt méretű oldalhoz tartoznak, nem a fájl {pw} × {ph} pt méretű oldalához
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} a szerkesztési adatai egy {w} × {h} pt méretű oldalhoz tartoznak, ami a fájl {pw} × {ph} pt méretű oldala {scale} méretarányban
|
||||
@msg its zlib compression is damaged a zlib-tömörítésük sérült
|
||||
@msg its Zstandard compression is damaged a Zstandard-tömörítésük sérült
|
||||
@msg it decompresses to more than {_1} MB kicsomagolva nagyobbak, mint {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3755,7 +3755,8 @@ imageTrace Outline Kontur
|
||||
@msg its editing data doesn't say where its artboard is data penyuntingannya tidak menyebut di mana artboard-nya berada
|
||||
@msg its editing data has no layers data penyuntingannya tidak memiliki lapisan
|
||||
@msg its editing data is damaged data penyuntingannya rusak
|
||||
@msg its editing data is for a different page data penyuntingannya untuk halaman yang berbeda
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page data penyuntingannya untuk halaman {w} × {h} pt, bukan halaman file {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} data penyuntingannya untuk halaman {w} × {h} pt, yaitu halaman file {pw} × {ph} pt dengan skala {scale}
|
||||
@msg its layers use {_1}, which aren't read yet lapisannya menggunakan {_1}, yang belum dapat dibaca
|
||||
@msg its page has text, and its layers have no text objects to put it in halamannya memiliki teks, tetapi lapisannya tidak memiliki objek teks untuk menampungnya
|
||||
@msg its type is to come in as outlines, which only its page has teksnya akan masuk sebagai kontur, yang hanya ada di halamannya
|
||||
|
||||
|
@@ -3731,6 +3731,8 @@ axis Both Entrambi
|
||||
@msg its editing data doesn't say where its artboard is i suoi dati di modifica non indicano dove si trova la tavola da disegno
|
||||
@msg its editing data has no layers i suoi dati di modifica non hanno livelli
|
||||
@msg its editing data is damaged i suoi dati di modifica sono danneggiati
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page i suoi dati di modifica sono di una pagina di {w} × {h} pt, non della pagina del file di {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} i suoi dati di modifica sono di una pagina di {w} × {h} pt, la pagina del file di {pw} × {ph} pt in scala {scale}
|
||||
@msg its zlib compression is damaged la loro compressione zlib è danneggiata
|
||||
@msg its Zstandard compression is damaged la loro compressione Zstandard è danneggiata
|
||||
@msg it decompresses to more than {_1} MB una volta decompressi superano {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4115,7 +4115,8 @@ swatch Bright Violet ビビッドバイオレット
|
||||
@msg it has too much text テキストが多すぎます
|
||||
@msg its editing data doesn't say where its art is 編集データにアートの位置が記録されていません
|
||||
@msg its editing data doesn't say where its artboard is 編集データにアートボードの位置が記録されていません
|
||||
@msg its editing data is for a different page 編集データが別のページのものです
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page 編集データは {w} × {h} pt のページのもので、ファイルの {pw} × {ph} pt のページのものではありません
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} 編集データは {w} × {h} pt のページのもので、ファイルの {pw} × {ph} pt のページを縮尺 {scale} にしたものです
|
||||
@msg its page has text, and its layers have no text objects to put it in ページにテキストがありますが、レイヤーにはそれを入れるテキストオブジェクトがありません
|
||||
@msg the art on them differs from the page's in {_1}% of it レイヤー上のアートの {_1}% がページのアートと異なります
|
||||
@msg the art on them differs from the page's in {_1}% of it: they come from its editing data all the same レイヤー上のアートの {_1}% がページのアートと異なりますが、レイヤーは編集データから読み込まれました
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4047,7 +4047,8 @@ theme Appearance 외관
|
||||
@msg it has too much text 텍스트가 너무 많습니다
|
||||
@msg its editing data doesn't say where its art is 편집 데이터에 아트웍의 위치가 없습니다
|
||||
@msg its editing data doesn't say where its artboard is 편집 데이터에 아트보드의 위치가 없습니다
|
||||
@msg its editing data is for a different page 편집 데이터가 다른 페이지용입니다
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page 편집 데이터가 파일의 {pw} × {ph} pt 페이지가 아닌 {w} × {h} pt 페이지용입니다
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} 편집 데이터가 {w} × {h} pt 페이지용입니다. 파일의 {pw} × {ph} pt 페이지를 {scale} 배율로 나타낸 것입니다
|
||||
@msg its page has text, and its layers have no text objects to put it in 페이지에 텍스트가 있지만 레이어에는 이를 넣을 텍스트 개체가 없습니다
|
||||
@msg the art on them differs from the page's in {_1}% of it 이들의 아트웍이 페이지와 {_1}% 다릅니다
|
||||
@msg the art on them differs from the page's in {_1}% of it: they come from its editing data all the same 이들의 아트웍이 페이지와 {_1}% 다릅니다. 그래도 편집 데이터에서 가져왔습니다
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3769,7 +3769,8 @@ imageTrace Outline Contour
|
||||
@msg its editing data doesn't say where its artboard is zijn bewerkingsgegevens zeggen niet waar zijn tekengebied is
|
||||
@msg its editing data has no layers zijn bewerkingsgegevens hebben geen lagen
|
||||
@msg its editing data is damaged zijn bewerkingsgegevens zijn beschadigd
|
||||
@msg its editing data is for a different page zijn bewerkingsgegevens zijn voor een andere pagina
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page zijn bewerkingsgegevens zijn voor een pagina van {w} × {h} pt, niet voor de pagina van het bestand van {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} zijn bewerkingsgegevens zijn voor een pagina van {w} × {h} pt, de pagina van het bestand van {pw} × {ph} pt op schaal {scale}
|
||||
@msg its layers use {_1}, which aren't read yet zijn lagen gebruiken {_1}, die nog niet worden gelezen
|
||||
@msg its page has text, and its layers have no text objects to put it in zijn pagina heeft tekst, en zijn lagen hebben geen tekstobjecten om die in onder te brengen
|
||||
@msg its type is to come in as outlines, which only its page has zijn tekst komt als contouren binnen, die alleen zijn pagina heeft
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3817,6 +3817,8 @@ imageTrace Outline Kontur
|
||||
@msg its editing data doesn't say where its artboard is jego dane edycyjne nie określają położenia obszaru kompozycji
|
||||
@msg its editing data has no layers jego dane edycyjne nie zawierają warstw
|
||||
@msg its editing data is damaged jego dane edycyjne są uszkodzone
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page jego dane edycyjne dotyczą strony {w} × {h} pt, a nie strony pliku {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} jego dane edycyjne dotyczą strony {w} × {h} pt, czyli strony pliku {pw} × {ph} pt w skali {scale}
|
||||
@msg its zlib compression is damaged ich kompresja zlib jest uszkodzona
|
||||
@msg its Zstandard compression is damaged ich kompresja Zstandard jest uszkodzona
|
||||
@msg it decompresses to more than {_1} MB po rozpakowaniu przekraczają {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3283,6 +3283,8 @@ axis Both Ambos
|
||||
@msg its editing data doesn't say where its artboard is seus dados de edição não indicam onde fica a prancheta
|
||||
@msg its editing data has no layers seus dados de edição não têm camadas
|
||||
@msg its editing data is damaged seus dados de edição estão danificados
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page seus dados de edição são de uma página de {w} × {h} pt, não da página de {pw} × {ph} pt do arquivo
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} seus dados de edição são de uma página de {w} × {h} pt, a página de {pw} × {ph} pt do arquivo na escala {scale}
|
||||
@msg its zlib compression is damaged sua compactação zlib está danificada
|
||||
@msg its Zstandard compression is damaged sua compactação Zstandard está danificada
|
||||
@msg it decompresses to more than {_1} MB eles se expandem para mais de {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -3727,6 +3727,8 @@ axis Both Оба
|
||||
@msg its editing data doesn't say where its artboard is его данные для редактирования не указывают, где находится монтажная область
|
||||
@msg its editing data has no layers в его данных для редактирования нет слоёв
|
||||
@msg its editing data is damaged его данные для редактирования повреждены
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page его данные для редактирования относятся к странице {w} × {h} пт, а не к странице файла {pw} × {ph} пт
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} его данные для редактирования относятся к странице {w} × {h} пт, то есть к странице файла {pw} × {ph} пт в масштабе {scale}
|
||||
@msg its zlib compression is damaged их сжатие zlib повреждено
|
||||
@msg its Zstandard compression is damaged их сжатие Zstandard повреждено
|
||||
@msg it decompresses to more than {_1} MB после распаковки они занимают более {_1} МБ
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3623,6 +3623,8 @@ axis Both Båda
|
||||
@msg its editing data doesn't say where its artboard is dess redigeringsdata anger inte var dess rityta finns
|
||||
@msg its editing data has no layers dess redigeringsdata har inga lager
|
||||
@msg its editing data is damaged dess redigeringsdata är skadade
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page dess redigeringsdata gäller en sida på {w} × {h} pt, inte filens sida på {pw} × {ph} pt
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} dess redigeringsdata gäller en sida på {w} × {h} pt, alltså filens sida på {pw} × {ph} pt i skala {scale}
|
||||
@msg its zlib compression is damaged dess zlib-komprimering är skadad
|
||||
@msg its Zstandard compression is damaged dess Zstandard-komprimering är skadad
|
||||
@msg it decompresses to more than {_1} MB de packas upp till mer än {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -1656,7 +1656,8 @@ fn effect_color_param_error_is_translated() {
|
||||
#[test]
|
||||
fn unread_layers_notes_are_translated() {
|
||||
for note in [
|
||||
"the file's layers weren't read (its editing data is for a different page): it comes in as its page, in one layer",
|
||||
"the file's layers weren't read (its editing data is for a 600 × 400 pt page, not the file's 612 × 792 pt page): it comes in as its page, in one layer",
|
||||
"the file's layers weren't read from its editing data (its editing data is for a 100 × 100 pt page, the file's 1000 × 1000 pt page at 1:10): they come from its PDF part",
|
||||
"the file's layers weren't read from its editing data (its editing data is damaged): they come from its PDF part",
|
||||
"the file's layers weren't read from its editing data (its zlib compression is damaged): they come from its PDF part",
|
||||
"the file's layers weren't read from its editing data (its Zstandard compression is damaged): they come from its PDF part",
|
||||
|
||||
@@ -3715,6 +3715,8 @@ axis Both Обидві
|
||||
@msg its editing data doesn't say where its artboard is його дані для редагування не вказують, де знаходиться монтажна область
|
||||
@msg its editing data has no layers у його даних для редагування немає шарів
|
||||
@msg its editing data is damaged його дані для редагування пошкоджено
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page його дані для редагування відносяться до сторінки {w} × {h} пт, а не до сторінки файлу {pw} × {ph} пт
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} його дані для редагування відносяться до сторінки {w} × {h} пт, тобто до сторінки файлу {pw} × {ph} пт у масштабі {scale}
|
||||
@msg its zlib compression is damaged їхнє стиснення zlib пошкоджено
|
||||
@msg its Zstandard compression is damaged їхнє стиснення Zstandard пошкоджено
|
||||
@msg it decompresses to more than {_1} MB після розпакування вони займають понад {_1} МБ
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 725 and column 40.
|
@@ -4182,6 +4182,8 @@ theme Appearance Giao diện
|
||||
@msg its editing data doesn't say where its artboard is dữ liệu chỉnh sửa không cho biết vị trí bảng vẽ
|
||||
@msg its editing data has no layers dữ liệu chỉnh sửa không có lớp
|
||||
@msg its editing data is damaged dữ liệu chỉnh sửa bị hỏng
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page dữ liệu chỉnh sửa dành cho trang {w} × {h} pt, không phải trang {pw} × {ph} pt của tệp
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} dữ liệu chỉnh sửa dành cho trang {w} × {h} pt, tức trang {pw} × {ph} pt của tệp ở tỷ lệ {scale}
|
||||
@msg its zlib compression is damaged phần nén zlib của chúng bị hỏng
|
||||
@msg its Zstandard compression is damaged phần nén Zstandard của chúng bị hỏng
|
||||
@msg it decompresses to more than {_1} MB giải nén ra hơn {_1} MB
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 3945 and column 10.
|
@@ -3861,7 +3861,8 @@ imageTrace Outline 轮廓
|
||||
@msg it has too much text 它的文字过多
|
||||
@msg its editing data doesn't say where its art is 其编辑数据未说明其图稿的位置
|
||||
@msg its editing data doesn't say where its artboard is 其编辑数据未说明其画板的位置
|
||||
@msg its editing data is for a different page 其编辑数据属于另一个页面
|
||||
@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page 其编辑数据属于 {w} × {h} pt 的页面,而非文件的 {pw} × {ph} pt 页面
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} 其编辑数据属于 {w} × {h} pt 的页面,即文件的 {pw} × {ph} pt 页面按 {scale} 比例缩放后的页面
|
||||
@msg its page has text, and its layers have no text objects to put it in 其页面中有文字,但其图层中没有可放置这些文字的文本对象
|
||||
@msg the art on them differs from the page's in {_1}% of it 其上的图稿与页面的图稿有 {_1}% 不同
|
||||
@msg the art on them differs from the page's in {_1}% of it: they come from its editing data all the same 其上的图稿与页面的图稿有 {_1}% 不同:它们仍从其编辑数据导入
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
+4
-2
@@ -610,8 +610,10 @@ layer, even where the page doesn't draw it. A file whose editing data can't be d
|
||||
pattern fills, placed files or anything else the reader doesn't read on a layer that shows, or whose layers look
|
||||
different from its page, opens as before: an EPS as its printed page, a `.ai` file from its PDF content (where plain
|
||||
groups open ungrouped), with a warning saying why. Layers look different when they draw an object the page doesn't (or
|
||||
miss one it draws), and, for an EPS whose page is the box of its art, when they print art outside it. With
|
||||
`textAs: "outlines"` a `.ai` file whose type shows opens from its PDF content, which has the type's outlines. A PDF
|
||||
miss one it draws), and, for an EPS whose page is the box of its art, when they print art outside it. A file whose
|
||||
editing data is for a page of another size opens the same way, and its warning gives both sizes in points, with the
|
||||
scale of the editing data's page to the file's page (1:10 for a tenth of its size) when their sides are in proportion.
|
||||
With `textAs: "outlines"` a `.ai` file whose type shows opens from its PDF content, which has the type's outlines. A PDF
|
||||
saved with Illustrator's editing data holds it in `AIPDFPrivateData` streams and opens from it as a `.ai` file does.
|
||||
|
||||
The document then has what the file's page doesn't print: hidden objects and layers, layers that don't print, guides and
|
||||
|
||||
@@ -692,6 +692,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
A PDF saved with Illustrator's editing data opens through it as a PDF-compatible `.ai` does, with its layers and groups and with art reaching past its page unclipped; such a PDF holds the data in `AIPDFPrivateData` streams (part of #868). A shape a PDF or `.ai` paints with a gradient (a clip path round a shading) opens as one path filled with the gradient, not a clip group round a rectangle, so Shape Builder, Live Paint and Pathfinder work on its outline (#1304).
|
||||
In a `.ai` opened from its editing data, a text object on a layer that shows and doesn't print stays on that layer, made from the file's text document, even where the page doesn't draw it (`crates/eps/src/import/tests_native.rs`). Such a `.ai` opens without the PDF part's warnings that text was kept as outlines when no outlined glyphs come in, and a warning counts the text objects that hold the page's type next to glyphs the page has only as outlines, which don't come in (`crates/engine/src/cmd/fileio/tests_aiimport.rs`). Where the art of a `.ai` or EPS opened from its editing data differs a little from the file's page, the warning gives the share of the page that differs away from type. When that share is 0.2% or less, the warning names the type and gives the share of the page that differs where the type is (`crates/eps/src/import/tests_native.rs`).
|
||||
A PDF page whose `UserUnit` (PDF 1.6) is above 1 opens at its size in points, its numbers times the `UserUnit` (one above 75,000 counts as 75,000), and `document.pdfInfo` gives its size and boxes in points too. A `.ai` whose editing data has its artboards in the units of such a page opens from that data at the page's size, with its layers, and when the layers can't be read its pages still take the artboard layout of the data, scaled the same way (part of #1482).
|
||||
When the editing data of a `.ai` or EPS is for a page of another size than the file's, the warning that its layers weren't read gives both sizes in points, and the scale of the editing data's page to the file's page (1:10 for a tenth of its size) when their sides are in proportion (#2034; `crates/eps/src/import/tests_native.rs`).
|
||||
A `.ai`, or a PDF saved with Illustrator's editing data, whose editing data can't be decompressed opens from its PDF part with a warning that its layers weren't read and why, and an export or Save As to its own path asks first (`acknowledgeLoss`), as for a file whose layers the reader can't read (`crates/eps/src/import/tests_native.rs`, `crates/engine/src/cmd/fileio/tests_aiimport.rs`).
|
||||
PDF export and `.ai` saves write a page with a side longer than 14,400 pt with a `UserUnit` (PDF 1.6), its longer side divided by 14,400 and rounded up to the next thousandth, so that no side is longer than 14,400 units (ISO 32000-1, Annex C.2); in PDF 1.3 to 1.5 files and PDF/X files such a page is written in points.
|
||||
Placed (linked) files in a `.ai`'s editing data come in as linked images in their place, each showing the low-resolution preview the file keeps of it until its file is found or relinked in the Links panel (a file found next to the document or at its path is read as the document opens). A file with them no longer falls back to its PDF part, so its guides, sublayers and hidden objects open (#1264; `crates/eps/src/import/ai/tests.rs`, `crates/engine/src/tests_links.rs`). In a file opened that way, a gradient with stops in the middle runs its whole ramp across its shape and a gradient object no longer passes its fill to the next path (#1390); text objects with an appearance keep their own text and frame, type of hidden layers stays hidden, and type on later artboards lands on its text objects (#1391); area type whose frame is too short for a line of the fallback font shows its first line, the frame made taller with a warning in the open result (#1392).
|
||||
|
||||
Reference in New Issue
Block a user