**Last month, I took a look at the new Shape Builder tool in Inkscape 1.3, which offers a very convenient way to perform various Boolean operations. Unfortunately, it also tends to create a lot of extra nodes, so for some workflows, there’s still a benefit to using the suite of Boolean operations under the Path menu. For users who wish to use those tools, I’m happy to report that Inkscape 1.2 and 1.3 both extended them a little. Before I proceed too far, a note for the pedants: I’ll refer to all these tools under the umbrella of “Boolean operations” for convenience. Technically speaking, the true Boolean operations are those that are based on Boolean algebra – a branch of mathematics named after George Boole, who formalised it in 1847. Only a few of the tools in the Path menu actually work in a strictly Boolean manner. But given that those tools are concerned with creating new shapes by combining and removing overlapping parts of multiple paths, it makes sense that other tools which achieve similar goals are grouped with them in the same menu. So for the purposes of simplicity, all the shape manipulation tools under the Path menu are Boolean operations as far as this column is concerned.** Le mois dernier, j'ai jeté un coup d'œil au nouvel outil de construction de formes (Shape Builder) dans Inkscape 1.3, qui offre un moyen très pratique d'effectuer diverses opérations booléennes. Malheureusement, il a aussi tendance à créer beaucoup de nœuds supplémentaires ; ainsi, pour certains flux de travail, il y a toujours un avantage à utiliser la suite d'opérations booléennes sous le menu Chemin. Pour les utilisateurs qui souhaitent utiliser ces outils, je suis heureux d'annoncer qu'Inkscape 1.2 et 1.3 les a tous deux un peu étendus. Avant d'aller trop loin, une remarque pour les pédants : par commodité, j'appellerai tous ces outils « opérations booléennes ». Techniquement parlant, les véritables opérations booléennes sont celles qui sont basées sur l'algèbre de Boole - une branche des mathématiques nommée d'après George Boole, qui l'a formalisée en 1847. Seuls quelques outils du menu Chemin fonctionnent de manière strictement booléenne. Mais étant donné que ces outils permettent de créer de nouvelles formes en combinant et en supprimant les parties de plusieurs chemins qui se chevauchent, il est logique que d'autres outils atteignant des objectifs similaires soient regroupés avec eux dans le même menu. Ainsi, pour des raisons de simplicité, tous les outils de manipulation de formes du menu Chemin sont des opérations booléennes en ce qui concerne cette rubrique. **This month, we’ll look at the first new addition, which was introduced in Inkscape 1.2: Path > Split Path. This is a little like the existing Path > Break Apart feature, except that it breaks paths apart in a way that probably makes more sense – and will be more useful – to most people. Let’s start with a very simple example: here I’ve used Path > Difference to cut one circle out of the center of another, creating a donut shape. I’ve then duplicated the donut, and used Path > Combine (or Path > Union) to convert the whole arrangement into a single, complex path. As a quick reminder, I use the term ‘complex path’ to refer to any path which is made up of multiple sub-paths. With the Node tool active, you can see from the image that there are four sub-paths, one for each dark-red circle, and each consisting of four nodes. Let’s suppose that a little later we decide that it would be better to separate these objects in order to move them around independently. In previous versions, a naive user might reach for Path > Break Apart, only to be rather disappointed with the result.** Ce mois-ci, nous allons examiner la première nouveauté, qui a été introduite dans Inkscape 1.2 : Chemin > Découper chemin (celui du bas). Cette fonction ressemble un peu à la fonction existante Chemin > Séparer, sauf qu'elle sépare les chemins d'une manière qui est probablement plus logique - et plus utile - pour la plupart des gens. Commençons par un exemple très simple : ici, j'ai utilisé Chemin > Différence pour découper un cercle au centre d'un autre, créant ainsi une forme de beignet. J'ai ensuite dupliqué le beignet et utilisé Chemin > Combiner (ou Chemin > Union) pour convertir l'ensemble en un seul chemin complexe. Pour rappel, j'utilise le terme « chemin complexe » pour désigner tout chemin composé de plusieurs sous-chemins. Avec l'outil Nœud actif, vous pouvez voir sur l'image qu'il y a quatre sous-chemins, un pour chaque cercle rouge foncé, et chacun composé de quatre nœuds. Supposons qu'un peu plus tard, nous décidions qu'il serait préférable de séparer ces objets afin de les déplacer indépendamment. Dans les versions précédentes, un utilisateur naïf aurait pu choisir Chemin > Séparer, mais le résultat aurait été plutôt décevant. **Break Apart reduces a complex path to a collection of individual simple paths, by breaking each sub-path out into a separate object. In this case, we end up with four separate path objects, but because the larger paths no longer have a hole in the middle, their fill obscures the fact that there are a couple of smaller paths behind. Sending the outer circles down in the z-stack makes things a little more obvious – this screenshot leaves the left-hand circles untouched, but moves the large right-hand circle to the bottom of the stack. That may have made it a bit clearer what has happened, but it doesn’t really get us to the result we wanted – two separate donuts. For that, we have to select the two circles on the left and use Path > Combine, followed by doing the same to the two circles on the right. Finally we have two complex paths, each representing a single donut, which can be moved independently.** Séparer réduit un chemin complexe à une collection de chemins simples individuels, en séparant chaque sous-chemin en un objet distinct. Dans ce cas, nous nous retrouvons avec quatre objets de chemin séparés, mais comme les plus grands chemins n'ont plus de trou au milieu, leur remplissage masque le fait qu'il y a quelques chemins plus petits derrière. L'envoi des cercles extérieurs vers le bas de la pile z rend les choses un peu plus évidentes - cette capture d'écran laisse les cercles de gauche intacts, mais déplace le grand cercle de droite vers le bas de la pile. Cela permet de comprendre un peu plus clairement ce qui s'est passé, mais cela ne nous permet pas vraiment d'obtenir le résultat que nous voulions - deux donuts séparés. Pour cela, nous devons sélectionner les deux cercles de gauche et utiliser Chemin > Combiner, puis faire de même avec les deux cercles de droite. Finalement, nous avons deux chemins complexes, chacun représentant un seul donut, qui peut être déplacé indépendamment. **In this particular case, a user who is already familiar with the behaviour of Break Apart might have chosen to duplicate the original and cut half the content out from each copy using direct node editing, or some other Boolean technique that involves creating a quick sacrificial cutting shape. But for a more complex shape with lots of sub-paths, those approaches can quickly become unwieldy. Whichever approach you take, there’s no doubt that it’s a lot of steps just to split two visually separate objects into individual complex paths. Now let’s try the same thing using Path > Split Path. Starting with our complex path containing four sub-paths, applying this function gets us directly to the desired outcome (the same as the previous screenshot), with no additional fuss. Perfect!** Dans ce cas particulier, un utilisateur déjà familiarisé avec le comportement de Séparer aurait pu choisir de dupliquer l'original et de couper la moitié du contenu de chaque copie en utilisant l'édition directe des nœuds ou une autre technique booléenne qui implique la création d'une forme de coupe sacrificielle rapide. Mais pour une forme plus complexe avec de nombreux chemins secondaires, ces approches peuvent rapidement devenir difficiles à gérer. Quelle que soit l'approche choisie, il ne fait aucun doute qu'il faut beaucoup d'étapes pour diviser deux objets visuellement distincts en chemins individuels complexes. Essayons maintenant de faire la même chose en utilisant Chemin > Découper le chemin (celui du bas). En partant de notre chemin complexe contenant quatre sous-chemins, l'application de cette fonction nous permet d'obtenir directement le résultat souhaité (le même que celui de la capture d'écran précédente), sans aucune difficulté supplémentaire. C'est parfait ! **Of course Inkscape isn’t able to read your mind to determine how you want it to split your four sub-paths, and there are still cases where Break Apart might be the better option, so it’s important to understand the logic used within this new feature. Quite simply, it breaks your path based on whether the sub-paths overlap or not. Any group of overlapping sub-paths will be split out into a new complex path. An individual sub-path that doesn’t overlap with any other sub-path will be split out into its own new simple path. The net result is that a previously complex combination of shapes will be broken up into independent objects, based (broadly) on how visually separate they are. An example with two donuts makes for a good introduction, but when would you actually want to use this feature in a real design? Perhaps the most common situation is when trying to split text (which has been converted into a path) into individual glyphs. In typographical terms, some characters have ‘counters’ – the closed shape in the middle of an ‘o’ or ‘p’. These don’t fare so well when Break Apart is used.** Bien sûr, Inkscape n'est pas capable de lire dans vos pensées pour déterminer comment vous voulez qu'il divise vos quatre sous-chemins et il y a toujours des cas où Séparer peut être la meilleure option. Il est donc important de comprendre la logique utilisée par cette nouvelle fonctionnalité. Tout simplement, elle divise votre chemin en fonction du fait que les sous-chemins se chevauchent ou non. Tout groupe de sous-chemins qui se chevauchent sera divisé en un nouveau chemin complexe. Un sous-chemin individuel qui ne se chevauche avec aucun autre sous-chemin sera divisé en un nouveau chemin simple. Le résultat net est qu'une combinaison de formes auparavant complexe sera divisée en objets indépendants, sur la base (grosso modo) de leur degré de séparation visuelle. Un exemple avec deux beignets constitue une bonne introduction, mais quand voudriez-vous utiliser cette fonctionnalité dans un vrai dessin ? La situation la plus courante est peut-être celle où l'on essaie de diviser un texte (qui a été converti en chemin) en glyphes individuels. En termes typographiques, certains caractères ont des « compteurs » - la forme fermée au milieu d'un « o » ou d'un « p ». Ces caractères ne sont pas très bien traités lorsque Séparer est utilisé. **Use Path > Split Path, however, and the result is a lot closer to what you probably wanted. Be aware, however, that it’s not perfect. Inkscape doesn’t know that this path represents characters, and Split Path just separates out the non-overlapping paths, so any glyph that is made up of non-overlapping parts will result in more than one path being created. You can see this with the ‘i’ or the ‘!’ which are each split into two separate paths and need to be re-combined manually (with Path > Combine or Path > Union). It’s still a lot less post-processing than with Break Apart, but don’t think that the new feature is a complete panacea. Another gotcha with this feature is Inkscape’s notion of what constitutes a non-overlapping path. Consider this variation on our earlier donut, this time with an additional ‘island’ in the middle.** Cependant, si vous utilisez Chemin > Découper le chemin (celui du bas), vous obtiendrez un résultat beaucoup plus proche de ce que vous souhaitiez probablement. Sachez toutefois que ce n'est pas parfait. Inkscape ne sait pas que ce chemin représente des caractères, et Découper le chemin ne fait que séparer les chemins qui ne se chevauchent pas, de sorte que tout glyphe composé de parties qui ne se chevauchent pas entraînera la création de plus d'un chemin. Vous pouvez le constater avec le « i » ou le « ! » qui sont chacun séparés en deux chemins distincts et doivent être recombinés manuellement (avec Chemin > Combiner ou Chemin > Union). C'est toujours beaucoup moins de post-traitement qu'avec Séparer, mais il ne faut pas croire que cette nouvelle fonctionnalité est une panacée. Un autre problème avec cette fonctionnalité est la notion d'Inkscape de ce qui constitue un chemin qui ne se chevauche pas. Considérez cette variation de notre beignet précédent, cette fois avec une « île » supplémentaire au milieu. **What do you think Path > Split Path will do in this case? It’s pretty clear that the nodes for the island are all inside the outer sub-path, and therefore can be considered to be overlapping. Sure enough, Split Path has no effect on this shape at all. But what about this one? This time the outer shape has a tiny gap in it on the right-hand side. The thick stroke disguises it somewhat, but it’s there. To the human eye, you might still consider the island to be ‘inside’ the shape, but, mathematically speaking, it’s not. Inkscape goes with the mathematical definition, so using Split Path results in two objects, not one. Now let’s extend that example a little further by moving the ends of the broken shape so that they cross.** Que pensez-vous que Chemin > Découper le chemin (celui du bas) fera dans ce cas ? Il est clair que les noeuds de l'île se trouvent tous à l'intérieur du sous-chemin extérieur, et peuvent donc être considérés comme se chevauchant. Bien sûr, le fractionnement du chemin n'a aucun effet sur cette forme. Mais qu'en est-il de celle-ci ? Cette fois, la forme extérieure présente un petit espace sur le côté droit. Le trait épais le dissimule quelque peu, mais il est là. À l'œil nu, on pourrait considérer que l'île se trouve « à l'intérieur » de la forme, mais mathématiquement parlant, ce n'est pas le cas. Inkscape suit la définition mathématique, donc l'utilisation de Découper le chemin donne deux objets, et non un seul. Étendons maintenant cet exemple un peu plus avant en déplaçant les deux extrémités de la forme brisée de façon qu'elles se croisent. **From a human perspective the island is most definitely inside the shape this time. But, again, in mathematical terms, the two paths are not overlapping, so Split Path results in two separate objects. All of which is to reinforce the fact that this feature is more likely to give the desired result than Break Apart, but it still needs to be treated with care to ensure it has split things the way you want, especially when there are features that could end up as separate objects even if they give the appearance of being inside a larger shape. I really wish this tool had been available a few years ago, when I was writing a weekly comic strip for my local newspaper. I created it in collaboration with Vince, a far more artistically competent friend. In order to turn the strips round quickly, he would draw the various elements of each comic separately on a sheet of paper, and I would then scan the entire sheet and trace it with Inkscape. Here’s an example of a typical character sheet, after scanning and tracing.** D'un point de vue humain, l'île se trouve cette fois à l'intérieur de la forme. Mais, encore une fois, en termes mathématiques, les deux chemins ne se chevauchent pas, de sorte que la fonction Découper le chemin produit deux objets distincts. Tout ceci renforce le fait que cette fonction est plus susceptible de donner le résultat souhaité que Séparer, mais elle doit toujours être traitée avec soin pour s'assurer qu'elle a divisé les choses comme vous le souhaitez, en particulier lorsqu'il y a des éléments qui pourraient finir comme des objets distincts même s'ils donnent l'impression d'être à l'intérieur d'une forme plus grande. J'aurais vraiment aimé que cet outil soit disponible il y a quelques années, lorsque j'écrivais une bande dessinée hebdomadaire pour mon journal local. Je l'ai créée en collaboration avec Vince, un ami beaucoup plus compétent sur le plan artistique. Afin de réaliser les bandes rapidement, il dessinait les différents éléments de chaque bande dessinée séparément sur une feuille de papier, et je scannais ensuite la feuille entière pour la tracer avec Inkscape. Voici un exemple d'une feuille de personnage typique, après numérisation et traçage. **The problem here is that Inkscape’s Trace Bitmap feature produces a single complex path for the entire traced image. In this case the path consists of over 15,000 nodes! Part of my job was therefore to create numerous duplicates of the traced image, each overlaid with a different cutting path. Path > Intersection was then used on each pair, removing all the parts that were not covered by the cutting path in each case. The final result was a separate complex path for each character or part on the sheet. So how does Path > Split Path fare when faced with a task like this? Not at all badly, it turns out. The first three images are perfectly cut out, and ready to go. The last one on the top row requires a small amount of re-combining to ensure that the shadow and the movement marks all remain with the character. The bottom row did a little worse, though it’s hard to see from this screenshot. For each head there are some small elements – a wart here, an eye there – which have been split into separate paths. These are all due to the fact that the neck is not closed off, resulting in what Inkscape sees as an open shape, much like the broken circle I presented earlier. A little re-combining fixes the issue, but in reality we would have quickly learned that, while drawing, Vince should close the end of the shape in such situations, reducing the problem going forwards. Across dozens of character sheets and pages of props and backgrounds, Split Path would have saved me many, many hours of manual path tweaking.** Le problème est que la fonction « Vectoriser un objet matriciel » d'Inkscape produit un seul chemin complexe pour l'ensemble de l'image tracée. Dans ce cas, le chemin est constitué de plus de 15 000 nœuds ! Une partie de mon travail a donc consisté à créer de nombreuses copies de l'image tracée, chacune étant recouverte d'un chemin de coupe différent. Chemin > Intersection a ensuite été utilisé sur chaque paire, en supprimant toutes les parties qui n'étaient pas couvertes par le chemin de coupe dans chaque cas. Le résultat final est un chemin complexe distinct pour chaque caractère ou partie de la feuille. Comment se comporte Chemin > Découper le chemin (celui du bas) face à une telle tâche ? Pas mal du tout, en fin de compte. Les trois premières images sont parfaitement découpées et prêtes à l'emploi. La dernière image de la rangée du haut nécessite une petite recombinaison pour s'assurer que l'ombre et les marques de mouvement restent avec le personnage. La rangée du bas a fait un peu moins bien, mais c'est difficile à voir sur cette capture d'écran. Pour chaque tête, il y a quelques petits éléments - une verrue ici, un œil là - qui ont été découpés en chemins séparés. Cela est dû au fait que le cou n'est pas fermé, ce qui donne à Inkscape une forme ouverte, un peu comme le cercle brisé que j'ai présenté plus haut. Un peu de recombinaison résout le problème, mais en réalité nous aurions rapidement appris qu'en dessinant, Vince devrait fermer l'extrémité de la forme dans de telles situations, ce qui réduirait le problème à l'avenir. Sur des dizaines de fiches de personnages et de pages d'accessoires et d'arrière-plans, Découper le chemin m'aurait permis d'économiser de très très nombreuses heures de travail à ajuster des chemins. **If you frequently work with complex paths, text-as-paths, or bitmap traces, I hope you can see how this feature might be a game-changer for your workflow. Compared with the alternatives, it will often do a better job with less complexity and confusion. Even in those cases where the results aren’t perfect, they’ll probably be more understandable to most users than the confusing mess that Break Apart often appears to make of things. Next month, I’ll continue this theme, to take a look at the new Boolean operations that were added with Inkscape 1.3.** Si vous travaillez fréquemment avec des tracés complexes, du texte sous forme de tracé ou des tracés bitmap, j'espère que vous comprendrez que cette fonctionnalité peut changer la donne pour votre flux de travail. Par rapport aux autres solutions, elle permet souvent d'obtenir de meilleurs résultats avec moins de complexité et de confusion. Même dans les cas où les résultats ne sont pas parfaits, ils seront probablement plus compréhensibles pour la plupart des utilisateurs que le désordre confus que Séparer semble souvent créer. Le mois prochain, je poursuivrai sur ce thème, en jetant un coup d'œil aux nouvelles opérations booléennes qui ont été ajoutées à Inkscape 1.3.