Police «Wire» (unidimensionnelle)

17

Toutes les polices dont j'ai entendu parler sont à deux dimensions : chaque glyphe est essentiellement une région à deux dimensions (un contour fermé ou des contours fermés), que le logiciel ou l'imprimante caresse ou remplit en quelque sorte en fonction des instructions données par l'utilisateur. Je voudrais savoir s'il existe des polices unidimensionnelles , où les glyphes sont décrits comme des collections de segments (que le logiciel peut caresser mais pas nécessairement remplir), pas de régions.

En d'autres termes (ou mieux, en images), ce que j'aimerais avoir, c'est la chose gauche au lieu de la droite dans l'image ci-dessous. Cela existe-t-il?

D'une lettre bidimensionnelle à une lettre unidimensionnelle

(désolé pour la photo, je sais que c'est vraiment mauvais; je viens de le faire rapidement)

Giovanni Mascellani
la source
Peut-être que nous devons répondre à graphicdesign.stackexchange.com/questions/64626/… avant de pouvoir vraiment répondre à votre question
Ryan
Quelle est votre application souhaitée pour la police? Je ne vois aucune utilité dans une police à un seul trait pour la conception, donc je suppose que vous voulez cela pour un plan ou une gravure. Sur quel programme prévoyez-vous d'utiliser la police?
DavidC
5
Il y a encore deux dimensions, il n'y en a tout simplement pas à l'intérieur: P
Zach Saucier
8
La chose la plus proche d'une police unidimensionnelle serait un code-barres.
Gerald Schneider
Juste comme idée d'une application, j'ai écrit une démo Raspberry Pi pour tracer les chemins d'un SVG sur un oscilloscope XY - cela aurait été parfait pour cela. Certes, c'est un support inhabituel (tout comme le stylo-traceur sur lequel je compte l'utiliser plus tard).
Chris H

Réponses:

23

Dans les traceurs, cela s'appelle une "police de trait", une " police de ligne unique ", une "police de gravure", une "police de lettrage technique" ou simplement une "police de traceur".

Un traceur caresse des images sur du papier à l'aide d'un stylo. Il ne peut pas remplir les images sauf en les caressant à plusieurs reprises à moins d'une largeur de plume. Les polices conçues pour être utilisées avec les traceurs contiendront donc des glyphes à un trait ("simplex"), deux traits plus ou moins parallèles ("duplex") ou trois traits ("triplex"). Les polices avec plus de traits prennent plus de temps à dessiner mais permettent plus de variation de largeur de trait dans un glyphe. L'utilisation d'un stylo trop étroit pour un glyphe à une taille donnée entraînera des écarts visibles entre les traits.

Un exemple d'une police principalement simplex est la police vectorielle Hershey . Son signe @, ses crochets [], ses accolades {}et son tilde ~sont en duplex.

Glyphes dans la police vectorielle Hershey

Si vous avez vu " blackboard bold ", c'est une police 𝕕𝕦𝕡𝕝𝕖𝕩 avec la largeur du stylet inférieure à la distance entre les traits.

GRAS dans une police serif duplex

Les bibliothèques d'imagerie de la vieille école prenaient en charge les polices de traits de la même manière qu'un traceur. Lors du rendu du texte, une application définirait la largeur et la couleur du trait avant de dessiner du texte, tout comme avant de dessiner une ligne. Cela revient à sélectionner un stylo sur un traceur.

Mais les bibliothèques d'imagerie raster modernes utilisent des polices OpenType, qui contiennent des contours TrueType ou CFF (PostScript Type 2). Les polices OpenType simulant les polices de trait contiennent à la place le contour d'un trait à une certaine largeur de ligne. Cette opération de trait peut être inversée en insérant le contour du glyphe d'une distance d'une demi-largeur de trait, sorte de l'inverse du gras algorithmique.

Damian Yerrick
la source
Bingo! Ils existent mais sont assez inutiles à moins qu'ils ne soient utilisés pour des applications BluePrints, gravure ou laser. Concevez des applications comme Adobe, Corel, etc. Vous avez même du mal à les rendre, donc elles ne sont pas très utiles pour réellement concevoir avec.
DavidC
@DavidC: Sur les plates-formes graphiques qui peuvent appliquer des transformations séparément au stylo de dessin indépendamment et à la police, les polices de bâton peuvent bien fonctionner si l'on utilise un stylo elliptique très fin et y applique une transformation pure (donnant un aspect semblable à un stylo caligraphique). Faire cela semble mieux fonctionner avec une police de type presque bâton qu'avec une police qui a une largeur de trait normale.
supercat
10

La plupart des applications d'ingénierie prennent en charge les polices avec uniquement des lignes et l'épaisseur des fournitures utilisateur. Comme le font de nombreuses machines à graver et à fraiser. Certaines polices existent bien qu'elles ne fonctionnent pas très bien dans les logiciels modernes (voire pas du tout).

C'est le problème: les moteurs de polices ont régressé depuis que nous avons déprécié PostScript. Désolé, pas de solutions faciles. Donc, on pourrait avoir toutes sortes de goodies dans la journée qui ne sont plus possibles sur la plupart des ordinateurs. Presque aucune application ne prend en charge cela, même si le présent ne fonctionnera même pas en svg, car les définitions de police svg sont obsolètes des navigateurs.

Le problème est qu'il n'y a pas de format universel pour ces polices. Et les polices elles-mêmes fonctionneront mal dans de nombreux cas. Les applications normales les traiteront bizarrement. Voir:

  • Une autre question sur le sujet des plaques de star-trek-interior où vous pouvez trouver une police comme celle-ci qui peut fonctionner sur certaines applications.

Jongware a fait un script appelé dessin de texte monoline pour illustrateur par exemple, vous pouvez l'obtenir ici:

Il est possible de créer vos propres polices de ce type en PostScript en utilisant des polices de type 3 (mais le support n'est plus large *, bien qu'illustrator puisse les utiliser dans certaines circonstances). Le support dans les applications de conception est cependant rare. Mais j'utilise cela toute la journée lorsque je fais du ostScript. Voici un exemple (police à usage spécial   éditée uniquement pour cette démo):

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 200 40
%%Title: Demo type 3 font
%%Creator: Janne Ojala
%%CreationDate:  2015-12-23
%%EndComments

% set stroking characteristics
5 setlinewidth 
1 setlinecap
1 setlinejoin

% lets define the font
10 dict dup begin
  /FontType 3 def
  /FontMatrix [.01 0 0 .01 0 0] def
  /FontBBox [-2 0 52 102] def

  /Encoding 256 array def
  0 1 255 {Encoding exch /.notdef put} for 

  Encoding
    dup (L) 0 get /L put
    dup (a) 0 get /a put
        (b) 0 get /b put

  /Metrics 4 dict def
  Metrics begin
    /.notdef 30 def
    /L 65 def
    /a 65 def
    /b 55 def
  end

  /BBox 4 dict def
  BBox begin
    /.notdef [0 0 0 0] def
    /L [0 0 75 100] def
    /a [25 0 75 100] def
    /b [25 0 65 100]  def
  end

  /CharacterDefs 4 dict def
  CharacterDefs begin
    /.notdef { } def

    /L
      { newpath
        0 100 moveto
        0 0 lineto
        50 0 lineto
        stroke
      } def 
    /a
      { newpath
        25 25 25 0 360 arc 
        50 45 moveto 
        50 0 lineto
        stroke
      } def
    /b
      { newpath
        0 100  moveto
        0 0 lineto
        40 0 40 50 17.5 arct
        40 50 0 50 17.5 arct
        0 50  lineto
        stroke
      } def
    end

  /BuildChar
    { 0 begin

        /char exch def
        /fontdict exch def

        /charname fontdict /Encoding get char get def
        fontdict begin
          Metrics charname get 0
          BBox charname get aload pop
              setcachedevice

          CharacterDefs charname get exec
        end
      end
    } def
  /BuildChar load 0 3 dict put
  /UniqueID 1 def
end

/SpecialUseOnly exch definefont pop
/special /SpecialUseOnly findfont 20 scalefont def

special setfont 

10 10 moveto

%write some text
(Lab baa baa abL) show

%%EOF

Pour l'utiliser, mettez-le simplement dans un fichier texte avec une fin EPS et faites-le glisser dans l'illustrateur ou le mot. assurez-vous qu'il n'y a pas de lignes vides avant le début. Vous pouvez modifier le texte en modifiant ce qui se trouve à l'intérieur de la parens sur la fin du formulaire sur 3 lignes. La mise en garde ici est que je n'ai défini que les caractères «L» «a» et «b».

Aperçu

Image 1 : Aperçu du programme de polices.

* C'était donc facilement possible à la fin des années 80 et au milieu des années 90, mais pas aujourd'hui. La prise en charge a été supprimée pour la plupart.

joojaa
la source
1
Pourtant, même mon script ne peut pas le faire fonctionner sans aucune épaisseur: vous devez toujours définir une épaisseur «a» aux lignes que vous dessinez. Mais, d'accord, vous pouvez le définir à n'importe quelle valeur que vous aimez, contrairement aux polices de contour qui ont une épaisseur "prédéfinie".
usr2564301
2
Une note latérale cependant, les découpeurs laser et les machines cnc et les applications cad fonctionneront sans épaisseur de ligne car l'épaisseur pour eux n'est qu'un artefact du post-traitement.
joojaa
2
C'est bien et dandy, mais ce n'est pas une police. J'ai vérifié plusieurs définitions de police et je n'ai pas encore trouvé celles qui n'incluent pas l'épaisseur / la largeur dans la définition. En conception graphique, ce n'est pas la police de tout ce que j'ai trouvé. Même @Jongware et vous reconnaissez qu'il doit y avoir une certaine épaisseur pour que cela fonctionne. Je dirais (et toutes les définitions que j'ai trouvées conviennent) que ce n'est pas une police jusqu'à ce que cela se produise. Cependant, dans la pratique, cela pourrait très bien être ce que l'OP recherche s'ils essaient simplement de tracer des points :) Je pourrais vouloir regarder Corel Draw, je sais que les fabricants de panneaux l'utilisent souvent.
Ryan
1
Ce n'est pas non plus unidimensionnel, comme demandé dans la question. Mais alors je dirais qu'une police réelle à une dimension est impossible, car une dimension vous limitera à une ligne droite dans, bien, une dimension. Vous pouvez faire l et i sans deux dimensions, mais pas grand-chose d'autre.
Janus Bahs Jacquet
3
@Ryan: c'est beau et dandy, cela peut être, mais en fin de compte, il peut exister des polices à trait unique, mais elles ne sont pas prises en charge par les technologies de police courantes.
usr2564301
8

Metafont est un langage de description utilisé pour définir les polices vectorielles.

Contrairement aux formats de police de contour plus courants (tels que TrueType ou PostScript Type 1), une police Metafont est principalement constituée de traits avec des "plumes" de largeur finie, ainsi que des régions remplies. Ainsi, plutôt que de décrire directement le contour du glyphe, un fichier Metafont décrit les chemins des plumes.

Ce que vous décrivez pourrait être implémenté comme une police Metafont avec une largeur de crayon constante.

Locoluis
la source
6

Un autre terme pour ce que vous recherchez est une "police de bâton" - il y en a un ensemble gratuit de 9 que j'ai utilisé pour la gravure CNC et laser sur http://www.mrrace.com/CamBam_Fonts/

Notez que ces polices ont tendance à mal paraître à l'écran, les zones fermées semblant souvent solides. En effet, ce sont des polices de contour techniquement invalides: chaque caractère se compose nécessairement d'une ou plusieurs boucles fermées (car les systèmes d'exploitation modernes ne prennent en charge aucun autre type de police), mais chaque boucle a une zone nulle. Ils peuvent donc ne pas vous convenir si l'objectif est autre chose que la gravure.

jasonharper
la source
Cela fonctionne bien avec Inkscape à condition de le caresser au lieu de le remplir. Merci!
Giovanni Mascellani
3

En architecture, un débutant peut dessiner des murs en lignes simples. Ceci est cependant inexact et ne peut pas exister - les murs, même minces, ont une épaisseur.

De même, votre A sur la gauche, même mince, a une épaisseur. Quelle épaisseur? Est-ce 1 pt? Est-ce 0,025 pt? Comment l'imprimante sait-elle? Nous devons le dire.

Pour répondre à votre question, non, il ne peut pas exister de police unidimensionnelle telle que vous la décrivez. Toutes les lignes doivent avoir une certaine épaisseur pour exister.

Ryan
la source
2
Je ne suis pas tout à fait d'accord: le but d'une police est de décrire des géométries liées au rendu de texte. La façon dont ces géométries doivent être rendues est un problème différent, qui n'est pas décrit par la police elle-même. Même avec les polices ordinaires décrites dans TrueType, OpenType ou ce que vous voulez, vous devez toujours décider quelle couleur, motif et quoi utiliser pour le remplissage ou le contour. Vous pouvez donc avoir une police comme celle que je dis: c'est le devoir de l'utilisateur de spécifier l'épaisseur de la ligne et les autres propriétés.
Giovanni Mascellani
2
De plus, il existe des applications dans lesquelles vous avez le concept d'une ligne indépendamment de son épaisseur. Par exemple, l'application que j'ai en tête est la gravure laser vectorielle. L'épaisseur de ce que je grave est un sous-produit de la vitesse du laser, de la puissance et des propriétés physiques du matériau que j'utilise. Il n'a pas besoin d'être connu du logiciel pilotant le graveur.
Giovanni Mascellani
2
@Ryan, ce n'est strictement pas vrai. C'est juste vrai dans un monde centré sur Adobe. Et seulement si vous voulez être content de vous. Sinon, même alors, c'est un mensonge.
joojaa
1
@immibis qui est certainement pris en compte lors de la sélection d'un matériau, d'une encre et d'une couleur, mais n'a rien à voir avec la police. Une police peut exister sur votre écran sans profondeur, mais elle ne peut pas exister sur votre écran sans une sorte de largeur.
Ryan
3
Tout le texte doit avoir une largeur de ligne lorsqu'il est dessiné, mais cette largeur n'a pas besoin d'être stockée dans la police. Il peut à la place être stocké dans le document en utilisant la police, tout comme la taille et la couleur.
Damian Yerrick