Nossa intenção é que as opções de saída sejam tão autoexplicativas quanto possível, mas aqui estão os detalhes, "tim-tim por tim-tim":
As imagens vetorizadas que produzimos são compostas de formas, que são compostas de loops que não se autointersectam. Os loops são sequência de curvas em que cada curva começa onde a anterior termina, e a última curva termina onde a primeira começou. Produzimos linhas, arcos circulares e elípticos, além de curvas de Bézier quadráticas e cúbicas.
As formas têm exatamente um loop "positivo", definindo a área que deveria ser preenchida pela cor da forma. Em alguns casos, a forma também pode conter loops "negativos", que representam recortes que não deveriam ser preenchidos com a cor da forma. Os loops negativos devem ser estar totalmente inseridos no loop positivo da forma e não devem tocar outro loop negativo.
Para imagens de entrada qua contêm desenhos lineares ou outro tipo de geometria traçada (stroked geometry), como desenhos CAD, gráficos, diagramas técnicos e afins, é natural esperar que o produto de saída seja geometria traçada. Esse tipo de vetorização é chamado traço de linha central. No momento, não temos suporte para traçado de linha central. Portanto, todas as entradas de geometria traçada são representadas como formas preenchidas estreitas.
Note que a seção Estilo de traço refere-se ao estilo dos traços dos demarcadores que compõem as formas preenchidas. Ela não tem relação com o traçado de linha central.
Quando duas formas em uma imagem vetorial estão lado a lado, tão próximas que suas bordas coincidem exatamente, muitos mecanismos de renderização vetorial as desenharão de forma que uma linha branca estreita apareça entre elas. Embora esse seja um defeito de tais mecanismos de renderização, é tão comum que não parece que vá ser resolvido no futuro próximo.
Para contornar esse problema, nós criamos o que denominamos Preenchimento de lacunas. Sua função é desenhar uma linha estreita embaixo do limite entre as duas formas, com uma cor que é a média entre as duas cores das formas. Isso evita que o fundo seja mostrado e efetivamente resolve o problema.
Os traços que são criados com uma largura constante, independente do nível de zoom, são chamados traços não escaláveis. Esse recurso tem suporte completo no rasterizador vetorial SVG ou PNG e suporte parcial em EPS, PDF e DXF.
SVG é compatível com larguras de traços não escaláveis arbitrárias e tem suporte amplo entre os visualizadores e editores de SVG, exceto Adobe Illustrator, no qual o estilo não-escalável é ignorado e o traço é escalado pelo nível do zoom. Nosso rasterizador de vetores PNG também oferece suporte completo para traços não escaláveis.
Tanto EPS quanto PDF somente têm suporte para traço não escalável de largura mínima de visualização não especificada, o que geralmente é considerado como sendo a largura de um pixel ou menos. A Adobe oficialmente desencoraja sua utilização e os testes com o Illustrator 2023 mostram defeitos significativos em sua manipulação e estilo.
DXF também tem suporte para traços não escaláveis com uma largura mínima de visualização. Esse estilo de traço é muito utilizado em arquivos DXF.
De forma geral, recomendamos o uso de traços não escaláveis apenas em SVG, DXF e PNG.
Imagens vetoriais são compostas de formas desenhadas em uma ordem específica, em geral a ordem na qual elas aparecem no arquivo que define a imagem vetorial.
Algumas formas podem ter sua ordem de desenho alterada sem alterar a aparência da imagem vetorial. Por exemplo, considere dois pontos separados em um retângulo. O retângulo deve ser desenhado antes dos pontos, mas qualquer dos pontos pode ser desenhado antes do outro sem afetar a aparência da imagem vetorial.
Qualquer conjunto de formas cujo reordenamento interno não altera a aparência da imagem pode estar na mesma camada. As camadas precisam ser desenhadas em ordem, mas as formas dentro de uma camada podem ser reordenadas ou postas em grupos, sem alterar a aparência da imagem.
Nós oferecemos suporte para vários formatos de arquivos de exportação, mas nem todos os formatos são compatíveis com todos os recursos.
SVG 1.1 é, de longe, a versão mais comum de SVG usada atualmente. Porém, para fins dos nossos arquivos de saída, ela só difere da versão 1.0 no cabeçalho.
Nenhuma delas tem suporte formal para traços não escaláveis, que foram introduzidos no SVG Tiny 1.2 e fazem parte das especificações de SVG 2.0, ainda não publicadas. Na prática, traços não escaláveis são compatíveis com a maioria dos visualizadores e editores. Por isso, nós os oferecemos em todas as nossas saídas SVG.
O Encapsulated Postscript (EPS) é um formato legado criado pela Adobe e é usado principalmente para impressão. Esse formato não é compatível com agrupamento e transparência e tem suporte limitado para traços não escaláveis.
Atualmente, nós exportamos a versão 3 do EPS, que é a mais comum.
O Portable Document Format (PDF) da Adobe é usado principalmente como um formato de intercâmbio para documentos, mas também tem recursos gráficos de vetor razoavelmente abrangentes. O PDF não é compatível com agrupamento e tem suporte limitado para traçados não escaláveis.
Nós exportamos a versão 1.4 de PDF, a versão mais antiga compatível com transparência.
O Drawing Exchange Format (DXF) da AutoCAD é um formato de arquivo amplamente utilizado para intercâmbio de CAD. Embora a especificação DXF seja compatível com camadas (grupos) e com todos os tipos de curva disponíveis, o suporte varia consideravelmente entre os leitores de DXF.
Nós exportamos a versão AC1021 (2007) de DXF.
O formato Portable Network Graphics (PNG) de imagem raster tem suporte para transparência. PNG é um formato bitmap, não um formato vetorial, mas temos suporte para sua exportação devido ao seu uso tão generalizado para o tipo de imagem que nós produzimos.
Atualmente, não temos suporte para fatores de escala arbitrária. A saída PNG produzida por nós tem exatamente quatro vezes a largura e altura da imagem de entrada, até o limite de quatro megapixels. Esses limites serão removidos no futuro.
O processo de vetorização produz um conjunto de demarcações que define as formas presentes na imagem. O mais natural é preencher essas formas com suas respectivas cores, de forma que a imagem resultante pareça praticamente igual à entrada bitmap, mas com delimitações mais nítidas e podendo ser ampliada sem degradação.
Entretanto, algumas aplicações estão mais interessadas nos demarcadores em si. Nesse caso, talvez faça mais sentido traçar as forma ou as delimitações entre as formas.
Trace todas as curvas da forma exatamente como se fosse preenchê-la, mas com um estilo de desenho definido pelo Estilo de traço, não pelo estilo de preenchimento implícito.
Se duas formas se tocarem, a borda entre elas será traçada duas vezes, uma para cada forma.
Os recortes sempre produzem dois traços por borda. Formas sobrepostas produzem um traço entre uma forma e aquelas totalmente contidas por ela, bem como dois traços entre as formas vizinhas, se nenhuma delas contém a outra.
Traça todas as bordas entre formas uma vez.
Ao contrário de Traçar formas, que normalmente traça cada borda duas vezes (uma para cada forma de flanco), esse Estilo de desenho traça cada borda entre as formas apenas uma vez.
Ele é útil para gravação a laser, corte de vinil e outras aplicações semelhantes.
Podemos pensar nas formas de uma imagem vetorial como empilhadas por sobreposição às outras ou recortadas das outras. Nós podemos produzir os dois tipos.
Posiciona formas nos recortes nas formas embaixo. Isso significa que todas as formas formam uma só camada, sem que haja uma forma sobre a outra.
Isso simplifica o recurso de preenchimento de lacunas, pois permite que todos os traços de preenchimento de lacunas fiquem em uma só camada, abaixo de todas as formas. No entanto, isso requer mais traços de Preenchimento de lacunas porque eles são necessários quando as formas estão próximas e se tocam, à diferença da situação em que uma forma esta sobre a outra.
O tamanho do arquivo resultante também é maior, já que as curvas que especificam os recortes precisam ser incluídas.
Dependendo da imagem e das suas preferências, isso também pode facilitar ou dificultar a edição do resultado em um editor vetorial. Mais especificamente, os recortes facilitam a separação entre os componentes da imagem porque a forma visual de cada componente não depende de nenhum outro componente que poderia estar sobre ela. Por outro lado, se a intenção é manter todas as partes da imagem juntas, os recortes dificultam a edição precisa da forma de um componente, pois tal edição requer a edição correspondente no recorte sobre o qual ela está.
As formas são sobrepostas. Imagine um bolo com várias camadas no qual as camadas menores são empilhadas sobre as maiores.
De forma geral, essa opção minimiza o tamanho do arquivo e a quantidade de traços de Preenchimento de lacunas. Entretanto, ela complica o recurso de Preenchimento de lacunas, pois os traços desse recurso precisam ser intercalados entre as formas que os necessitam e a forma que os contém. Além disso, às vezes esse empilhamento também resulta em pequenos fragmentos de traços de Preenchimento de lacunas aparecerem além das formas que os necessitam. Esse problema pode ser resolvido com o uso de traços não escaláveis ou com o corte dos traços de Preenchimento de lacunas. Recomendamos usar traços não escaláveis sempre que possível.
Formas empilháveis também facilitam a edição da borda entre uma forma e a forma que está embaixo, pois a borda não é duplicada no recorte. Porém, elas podem dificultar a separação entre um componente da imagem e outro, já que a aparência visual de cada forma depende das formas empilhadas sobre ela.
Formatos de arquivos vetoriais, como SVG, aceitam reunir várias formas em grupos. Esses grupos são úteis principalmente para fins de organização e facilidade de edição, pois permitem alterar todas as formas do grupo de uma só vez.
SVG oferece suporte completo para grupos. PDF e EPS não aceitam grupos. DXF tem suporte para camadas, que são semelhantes a grupos.
Esta seção controla como as formas são agrupadas.
Agrupar formas por cor de preenchimento.
Quando o modo de Empilhamento de formas é Recorte, todas as formas de uma determinada cor formam um grupo.
De forma geral, quando o modo de Empilhamento de formas é Sobreposição, não é possível agrupar todas as formas de uma determinada cor, já que todas as partes de um grupo devem ocupar a mesma posição na ordem de desenho da imagem vetorial. Por isso, em imagens Sobrepostas, agrupamos apenas as formas de uma determinada cor que ocupam a mesma camada.
Agrupar todas as formas que têm o mesmo pai.
Se uma forma está totalmente contida em outra forma, consideramos que a forma mais externa é o Pai da forma interna. Todas as formas que não estão totalmente contidas em outra forma têm a própria imagem vetorial como pai e são reunidas em um grupo.
Agrupar formas de acordo com a ordem das camadas no desenho.
A ordem de desenho em Camadas agrupa formas cuja ordem de desenho interna pode ser alterada livremente, sem que isso altere a aparência da imagem.
Nós oferecemos suporte para identificação especial de certas formas parametrizadas, como círculos, elipses, retângulos, triângulos isósceles e estrelas, todas com ângulos de rotação e raios de canto arbitrários. A adaptação a essas formas comuns produz formas com geometria perfeita e tratamento de cantos consistente. Alguns formatos de exportação têm suporte nativo para algumas dessas formas. Nós aproveitamos esse suporte para facilitar a edição dos arquivos resultantes.
Oferecemos controle detalhado sobre os tipos de curvas que podem ser exportados. Cada formato de arquivo e algumas outras opções também têm suas próprias restrições quanto aos tipos de curvas permitidos. As opções mais restritivas são usadas.
Compatíveis com SVG, DXF e nosso rasterizador vetorial PNG, as curvas de Bézier quadráticas são definidas por dois endpoints e um único ponto de controle. A direção da tangente da curva em um endpoint é sempre paralela à linha que conecta o endpoint ao ponto de controle.
Se as curvas de Bézier quadráticas estiverem desativadas, nós recorreremos às curvas de Bézier cúbicas, aos arcos elípticos e às linhas, nessa ordem.
Compatíveis com todos os formatos de exportação, as curvas de Bézier cúbicas são definidas por dois endpoints e dois pontos de controle. A direção da tangente da curva em um endpoint é sempre paralela à linha que conecta esse endpoint ao ponto de controle correspondente.
Se as curvas de Bézier cúbicas estiverem desativadas, recorreremos às Linhas.
Compatíveis com SVG, DXF e nosso rasterizador vetorial PNG, os arcos circulares são definidos por um centro, um raio, um ângulo inicial e um ângulo de varredura.
Se os arcos circulares estiverem desativados, recorreremos aos arcos elípticos, às curvas de Bézier cúbicas e às linhas, nessa ordem.
Compatíveis com SVG, DXF e nosso rasterizador vetorial PNG, os arcos elípticos são definidos por um centro, eixos maior e menor, um ângulo de rotação, um ângulo inicial e um ângulo de varredura.
Se os arcos elípticos estiverem desativados, recorreremos às curvas de Bézier cúbicas e às linhas, nessa ordem.
Caso alguma das curvas precise ser convertida para um ou mais segmentos de linha, esta seção permite controlar a qualidade do ajuste.
Conforme mencionado anteriormente, um problema praticamente generalizado nos motores de rasterização de imagens vetoriais é que a cor de fundo seja mostrada entre formas que se tocam, mesmo que não exista uma lacuna real na geometria de base. Em geral, isso mostra linhas estreitas cortando o resultado em peças de quebra-cabeças.
Para lidar com essa questão, você pode ativar o Preenchimento de lacunas, que posiciona pequenos traços entre e atrás das formas que se tocam, com uma cor igual à cor média das duas formas em questão. Isso evita que o fundo seja mostrado.
Quando o estilo de desenho está definido como Traçar formas ou Traçar bordas, esta seção controla o estilo dos traços.