Czcionka „Wire” (jednowymiarowa)

17

Wszystkie czcionki, o których słyszałem, są dwuwymiarowe : każdy glif jest w zasadzie dwuwymiarowym obszarem (zamknięty kontur lub niektóre zamknięte kontury), które oprogramowanie lub drukarka w jakiś sposób gładzi lub wypełnia w zależności od instrukcji podanych przez użytkownika. Chciałbym wiedzieć, czy istnieją czcionki jednowymiarowe , w których glify są opisane tak samo jak zbiory segmentów (które oprogramowanie może obrysować, ale niekoniecznie wypełnia), a nie regionów.

Innymi słowy (lub lepiej na zdjęciach), chciałbym mieć lewą rzecz zamiast prawej na zdjęciu poniżej. Czy to istnieje?

Od litery dwuwymiarowej do jednowymiarowej

(przepraszam za zdjęcie, wiem, że jest naprawdę złe; po prostu zrobiłem to szybko)

Giovanni Mascellani
źródło
Być może musimy odpowiedzieć na graphicdesign.stackexchange.com/questions/64626/…, zanim naprawdę będziemy mogli odpowiedzieć na twoje pytanie
Ryan
Jaka jest twoja pożądana aplikacja do czcionki? Nie widzę żadnego zastosowania w czcionce jednosuwowej do projektowania, więc zakładam, że chcesz tego do projektu lub grawerowania. W jakim programie zamierzasz używać czcionki?
DavidC
5
Wciąż są dwa wymiary, po prostu nie ma ich w środku: P
Zach Saucier
8
Najbliższą jednowymiarową czcionką byłby kod kreskowy.
Gerald Schneider,
Jako pomysł na aplikację napisałem demo Raspberry Pi, aby wykreślić ścieżki SVG na oscyloskopie XY - byłoby to do tego idealne. Trzeba przyznać, że jest to niezwykłe medium (podobnie jak plotera, którego zamierzam użyć później).
Chris H

Odpowiedzi:

23

W ploterach nazywa się to „czcionką obrysu”, „ czcionką jednowierszową ”, „czcionką do grawerowania”, „czcionką z literami technicznymi” lub po prostu „czcionką plotera”.

Ploter kreśli obrazy na papierze za pomocą pióra. Nie może wypełniać obrazów, z wyjątkiem wielokrotnego głaskania ich w odległości mniejszej niż szerokość pióra. Czcionki zaprojektowane do użytku z ploterami będą zawierać glify z jednym pociągnięciem („simplex”), dwoma mniej lub bardziej równoległymi pociągnięciami („duplex”) lub trzema pociągnięciami („triplex”). Czcionki z większą liczbą pociągnięć wymagają dłuższego rysowania, ale umożliwiają większą zmienność szerokości pociągnięcia w glifie. Użycie długopisu zbyt wąskiego dla glifów o danym rozmiarze spowoduje widoczne przerwy między pociągnięciami.

Jednym z przykładów najczęściej używanej czcionki jest Hershey Vector Font . Jego znak @, nawiasy [], nawiasy klamrowe {}i tylda ~są dupleksowe.

Glify w czcionce wektorowej Hershey

Jeśli widziałeś „ pogrubioną tablicę ”, oznacza to 𝕕𝕦𝕡𝕝𝕖𝕩 czcionkę o szerokości pióra mniejszej niż odległość między pociągnięciami.

ZŁOTA w dwustronnej czcionce szeryfowej

Oldschoolowe biblioteki obrazowania obsługiwały czcionki obrysu w bardzo podobny sposób jak ploter. Podczas renderowania tekstu aplikacja ustawia szerokość i kolor obrysu przed rysowaniem tekstu, podobnie jak przed rysowaniem linii. Jest to analogiczne do wybierania pisaka w ploterze.

Jednak współczesne biblioteki obrazowania rastrowego używają czcionek OpenType, które zawierają kontury TrueType lub CFF (PostScript Type 2). Czcionki OpenType symulujące czcionki obrysu zawierają natomiast obrys obrysu na pewnej szerokości linii. Tę operację głaskania można odwrócić, wstawiając kontur glifu o odległość równą połowie szerokości kreski, co jest odwrotnością pogrubienia algorytmicznego.

Damian Yerrick
źródło
Bingo! Istnieją, ale są raczej bezużyteczne, chyba że są używane do aplikacji BluePrints, grawerowania lub lasera. Projektuj aplikacje takie jak Adobe, Corel itp. Trudno jest nawet je renderować, więc nie są zbyt przydatne do projektowania.
DavidC
@DavidC: Na platformach graficznych, które mogą stosować transformacje osobno do pióra rysunkowego niezależnie i czcionki, czcionki sztyftowe mogą działać ładnie, jeśli używa się bardzo cienkiego pisaka eliptycznego i stosuje się do niego zwykłą transformację (tworząc wygląd pióra kaligraficznego). Wydaje się, że działa to lepiej w przypadku czcionki prawie przypominającej sztyft niż w przypadku czcionki o normalnej szerokości obrysu.
supercat
10

Większość aplikacji inżynierskich obsługuje czcionki zawierające tylko linie i grubość materiałów eksploatacyjnych. Podobnie jak wiele innych maszyn do grawerowania i frezowania. Niektóre czcionki istnieją, choć nie działają bardzo dobrze we współczesnym oprogramowaniu (jeśli w ogóle).

To jest problem: silniki czcionek uległy regresji od czasu, gdy przestarzeliśmy PostScript. Niestety nie ma łatwych rozwiązań. Tak więc w ciągu dnia można mieć różnego rodzaju gadżety, które nie są już możliwe na większości komputerów. Prawie żadna aplikacja nie obsługuje tego, nawet jeśli obecne nie będą nawet działać w svg, ponieważ definicje czcionek svg są przestarzałe w przeglądarkach.

Problem polega na tym, że nie ma uniwersalnego formatu dla takich czcionek. A same czcionki w wielu przypadkach będą działać nieprawidłowo. Normalne aplikacje będą traktować je dziwnie. Widzieć:

  • A w inny pytanie na temat Star-trek-wn blaszek , gdzie można znaleźć czcionkę tak, że może działać w niektórych aplikacjach.

Jongware stworzył skrypt o nazwie rysowanie tekstu monoliny dla programu Illustrator, na przykład można go znaleźć tutaj:

Możliwe jest tworzenie własnych czcionek tego typu w PostScript przy użyciu czcionek typu 3 (ale obsługa nie jest już szeroka *, choć program Illustrator może ich użyć w pewnych okolicznościach). Obsługa aplikacji do projektowania jest jednak niewielka. Ale faktycznie używam tego przez cały dzień, kiedy robię ostScript. Oto przykład (czcionka do specjalnego użytku   edytowana tylko dla tej wersji demonstracyjnej):

%!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

Aby tego użyć, po prostu umieść go w pliku tekstowym z końcówką EPS, a następnie przeciągnij i upuść w programie Illustrator lub słowie. upewnij się, że nie ma pustych linii przed rozpoczęciem. Możesz edytować tekst, zmieniając zawartość parens na końcu 3 linii. Zastrzeżenie polega na tym, że zdefiniowałem tylko znaki „L”, „a” i „b”.

Zapowiedź

Zdjęcie 1 : Podgląd programu czcionkowego.

* Więc było to możliwe w późnych latach 80. i połowie lat 90., ale nie dzisiaj. Wsparcie zostało w większości usunięte, niektóre oprogramowanie firmy Adobe nadal to ma.

joojaa
źródło
1
Jednak nawet mój skrypt nie może sprawić, by działał bez żadnej grubości: nadal musisz ustawić grubość „a” dla rysowanych linii. Oczywiście, możesz ustawić dowolną wartość, w przeciwieństwie do czcionek konturowych, które mają „wstępnie zdefiniowaną” grubość.
usr2564301,
2
Na marginesie: wycinarki laserowe, maszyny cnc i aplikacje CAD będą działać bez grubości linii, ponieważ grubość jest dla nich tylko artefaktem przetwarzania końcowego.
joojaa,
2
W porządku i elegancko, ale to nie jest czcionka. Sprawdziłem wiele definicji czcionek i jeszcze nie znalazłem takich, które nie zawierają grubości / szerokości jako części definicji. W grafice nie jest to czcionka z niczego, co znalazłem. Nawet @Jongware i potwierdzasz, że musi istnieć pewna grubość, aby działało. Twierdziłbym (i każda znaleziona definicja zgadza się), że nie jest to czcionka, dopóki to nie nastąpi. Jednak w praktyce to bardzo dobrze może być PO, jeśli tylko próbują wykreślić punkty :) Może chcę spojrzeć na Corel Draw, wiem, że twórcy często go używają.
Ryan
1
To również nie jest jednowymiarowe, jak zadano w pytaniu. Ale powiedziałbym, że faktyczna, jednowymiarowa czcionka jest niemożliwa, ponieważ jeden wymiar ograniczy cię do linii prostej w jednym wymiarze. Możesz zrobić ja i ja bez dwóch wymiarów, ale niewiele więcej.
Janus Bahs Jacquet
3
@ Ryan: może dobrze i elegancko, ale sedno jest takie, że mogą istnieć czcionki tylko obrysy, ale nie są obsługiwane przez obecne technologie czcionek głównego nurtu.
usr2564301
8

Metafont to język opisu używany do definiowania czcionek wektorowych.

W przeciwieństwie do bardziej popularnych formatów czcionek konturowych (takich jak TrueType lub PostScript Type 1) czcionka Metafont składa się głównie z obrysów z „długopisami” o skończonej szerokości, a także z wypełnionymi regionami. Tak więc, zamiast bezpośrednio opisywać kontur glifu, plik Metafont opisuje ścieżki pióra.

To, co opisujesz, można zaimplementować jako czcionkę Metafont o stałej szerokości pisaka.

Locoluis
źródło
6

Innym terminem, którego szukasz, jest „kij czcionka” - jest bezpłatny zestaw 9 z nich, których użyłem do grawerowania CNC i laserowego na stronie http://www.mrrace.com/CamBam_Fonts/

Pamiętaj, że te czcionki wyglądają źle na ekranie, a zamknięte obszary często wyglądają na jednolite. Wynika to z faktu, że są to technicznie nieprawidłowe czcionki konturu: każdy znak musi koniecznie składać się z jednej lub więcej zamkniętych pętli (ponieważ współczesne systemy operacyjne nie obsługują żadnej innej czcionki), ale każda pętla ma zerowy obszar. Mogą zatem być nieodpowiednie dla Ciebie, jeśli celem jest coś innego niż grawerowanie.

Jasonharper
źródło
Działa poprawnie z programem Inkscape pod warunkiem, że obrysujesz go zamiast go wypełnić. Dzięki!
Giovanni Mascellani
3

W architekturze początkujący może rysować ściany jako pojedyncze linie. Jest to jednak niedokładne i nie może istnieć - ściany nawet cienkie mają grubość.

Podobnie twój A po lewej, nawet cienki, ma grubość. Jak gruby? Czy to 1pt? Czy to 0.025pt? Skąd wie drukarka? Musimy to powiedzieć.

Aby odpowiedzieć na twoje pytanie, nie może istnieć jednowymiarowa czcionka podczas jej opisywania. Wszystkie linie muszą mieć pewną grubość, aby istniały.

Ryan
źródło
2
Nie do końca się zgadzam: celem czcionki jest opisanie geometrii związanych z renderowaniem tekstu. Sposób renderowania tych geometrii to inna kwestia, której sama czcionka nie opisuje. Nawet w przypadku zwykłych czcionek opisanych w TrueType, OpenType lub co chcesz, nadal musisz zdecydować, który kolor, wzór i cokolwiek użyć do wypełnienia lub obrysu konturu. Możesz mieć czcionkę podobną do tej, którą mówię: obowiązkiem użytkownika jest określenie grubości linii i innych właściwości.
Giovanni Mascellani,
2
Ponadto, istnieje aplikacja, w której mają pojęcie linii niezależnie od jej grubości. Na przykład aplikacją, o której myślę, jest grawerowanie laserowe wektorowe. Grubość tego, co graweruję, jest produktem ubocznym prędkości lasera, mocy i właściwości fizycznych materiału, którego używam. Oprogramowanie sterujące grawerem nie musi być znane.
Giovanni Mascellani,
2
@ Ryan, jest to absolutnie nieprawda. Jest to po prostu prawda w świecie zorientowanym na Adobe. I tylko jeśli chcesz być szczęśliwy ze sobą. W przeciwnym razie nawet wtedy to kłamstwo.
joojaa,
1
@immibis, który z pewnością jest brany pod uwagę w druku przy wyborze materiału, atramentu i koloru, ale nie ma nic wspólnego z czcionką. Czcionka może istnieć na ekranie bez głębi, ale nie może istnieć na ekranie bez jakiejś szerokości.
Ryan
3
Podczas rysowania cały tekst musi mieć szerokość linii, ale ta szerokość nie musi być zapisywana w czcionce. Zamiast tego można go zapisać w dokumencie za pomocą czcionki, niezależnie od rozmiaru i koloru.
Damian Yerrick