“Wire”(一维)字体

平面设计 字体
2022-01-23 13:12:26

我听说过的所有字体都是二维的:每个字形基本上都是一个二维区域(一个闭合轮廓或一些闭合轮廓),软件或打印机根据用户给出的指令以某种方式对其进行描边或填充。我想知道是否有一维字体,其中字形被描述为段的集合(软件可以描边但不一定填充),而不是区域。

换句话说(或者更好的是,在图像中),我想要的是左图而不是下图中的右图。这存在吗?

从二维到一维字母

(对不起图片,我知道这真的很糟糕;我只是很快就做到了)

4个回答

在绘图仪中,它被称为“笔画字体”、“单行字体”、“雕刻字体”、“技术刻字字体”,或者只是“绘图仪字体”。

绘图仪使用笔在纸上描边图像。它无法填充图像,除非反复抚摸它们小于笔宽。因此,设计用于绘图仪的字体将包含一个笔画(“simplex”)、两个或多或少平行笔画(“duplex”)或三个笔画(“triplex”)的字形。具有更多笔划的字体需要更长的绘制时间,但允许字形内的笔划宽度有更多变化。对于给定大小的字形使用太窄的笔会导致笔划之间出现明显的间隙。

Hershey Vector Font是一种主要是单一字体的示例它的 at 符号@、括号[]、大括号{}和波浪号~是双工的。

Hershey 矢量字体中的字形

如果你见过“黑板粗体”,那就是𝕕𝕦𝕡𝕝𝕖𝕩字体,笔宽小于笔画间距。

双衬线字体的粗体

老式的图像库支持笔画字体的方式与绘图仪非常相似。渲染文本时,应用程序会在绘制文本之前设置笔触宽度和颜色,就像在绘制线条之前一样。这类似于在绘图仪上选择笔。

但现代光栅成像库使用 OpenType 字体,其中包含 TrueType 或 CFF(PostScript Type 2)轮廓。模拟笔画字体的 OpenType 字体改为包含某个线条宽度的笔画轮廓。可以通过将字形的轮廓插入半个笔划宽度的距离来反转这种笔划操作,有点与算法粗体相反。

大多数工程应用程序仅支持线条和用户提供的粗细字体。很多雕刻机和铣床也是如此。一些字体存在,尽管它们在现代软件中不能很好地工作(如果有的话)。

这就是问题所在:自从我们弃用 PostScript 以来,字体引擎已经倒退。抱歉,没有简单的解决方案。因此,人们可以在过去拥有在大多数计算机上不再可能的各种好东西。几乎没有应用程序支持这一点,即使存在甚至无法在 svg 中工作,因为 svg 字体定义已从浏览器中弃用。

问题是这种字体没有通用格式。在许多情况下,字体本身会出现故障。普通应用程序会将它们视为怪异。看:

  • 关于Star-trek-interior-plaques主题的另一个问题,您可以在其中找到可能适用于某些应用程序的此类字体。

Jongware 为 Illustrator 制作了一个名为 monoline text drawing 的脚本,例如,您可以在此处获取:

尽管使用类型 3 字体,但可以在 PostScript 中制作您自己的这种类型的字体(但支持不再广泛*,尽管 illustrator 在某些情况下可以使用这些字体)。但是,设计应用程序的支持很少。但实际上我在做 ostScript 时整天都在使用它。  这是一个示例(仅针对此演示编辑了特殊用途的字体):

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

要使用它,只需将其放入带有 EPS 结尾的文本文件中,然后将其拖放到 illustrator 或 word 中。确保在开始之前没有空行。您可以通过更改 3 行表单末尾括号内的内容来编辑文本。这里需要注意的是我只定义了字符'L''a'和'b'。

预习

图 1:字体程序预览。

* 所以这在 1980 年代后期和 1990 年代中期很容易实现,但不是今天。大部分支持已被删除,一些 adobe softs 仍然有这个。

Metafont是一种用于定义矢量字体的描述语言。

与更常见的轮廓字体格式(例如 TrueType 或 PostScript Type 1)不同,Metafont 字体主要由具有有限宽度“笔”的笔划以及填充区域组成。因此,Metafont 文件不是直接描述字形的轮廓,而是描述笔路径。

您所描述的可以实现为具有恒定笔宽的 Metafont 字体。

您正在寻找的另一个术语是“棒字体” - 我在http://www.mrrace.com/CamBam_Fonts/上使用了一组免费的 9 种字体,用于 CNC 和激光雕刻

请注意,这些字体在屏幕上看起来很糟糕,封闭区域通常看起来很实心。这是因为它们在技术上是无效的轮廓字体:每个字符必然包含一个或多个闭环(因为现代操作系统不支持任何其他类型的字体),但每个环的面积为零。因此,如果目标不是雕刻,它们可能不适合您。