“电线”(一维)字体


17

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

换句话说,我想拥有的是左图,而不是下图中的右图。是否存在?

从二维字母到一维字母

(抱歉图片,我知道那真的很糟糕;我只是很快就做了)


也许我们需要回答graphicdesign.stackexchange.com/questions/64626/…,才能真正回答您的问题
Ryan

您对字体有什么期望的应用?我看不到单笔画字体在设计中有任何用途,因此我假设您要将此用于蓝图或雕刻。您打算在什么程序上使用该字体?
DavidC

5
还有两个维度,里面没有任何东西:P
Zach Saucier 2015年

8
最接近一维字体的是条形码。
Gerald Schneider

就像一个应用程序的想法一样,我编写了一个Raspberry Pi演示程序来在XY示波器上绘制SVG的路径-这本来是完美的。诚然,这是一种不寻常的媒介(就像我以后打算使用的笔式绘图仪一样)。
克里斯H

Answers:


23

在绘图仪中,它称为“笔划字体”,“ 单行字体 ”,“雕刻字体”,“技术字体”或“绘图仪字体”。

绘图仪使用笔将图像描画到纸上。它不能填充图像,除非通过反复抚摸它们之间的距离小于笔宽。因此,设计用于绘图仪的字体将包含带有一个笔画(“简单”),两个或更多或更少的平行笔画(“双工”)或三个笔画(“三重”)的字形。带有更多笔触的字体需要更长的绘制时间,但允许字形内笔划宽度的变化更大。对于给定大小的字形,使用太窄的笔会在笔划之间造成可见的间隙。

Hershey Vector Font是大多数单工字体的一个示例。其at符号@,方括号[],花括号{}和tilde ~是双工的。

字形在好时矢量字体

如果您看到“ 黑板粗体 ”,则为a字体,其笔宽小于笔划之间的距离。

加粗双工衬线字体

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

但是现代栅格影像库使用OpenType字体,其中包含TrueType或CFF(PostScript Type 2)轮廓。模拟笔划字体的OpenType字体在某些线宽处包含笔划的轮廓。可以通过将字形的轮廓插入距离笔触宽度一半的距离来逆转此笔划操作,这与算法粗体显示的效果相反。


答对了!它们确实存在,但是除非用于BluePrint,雕刻或激光应用程序,否则它们几乎没有用。诸如Adobe,Corel等设计应用程序。即使渲染它们也很难,因此实际使用它们时并没有太多用处。
DavidC

@DavidC:在可以独立地将变换分别应用于绘图笔和字体的图形平台上,如果使用非常细的椭圆笔并对其进行纯粹的变换(产生类似于游标笔的效果),则棒形字体可以很好地工作。相比于具有正常笔划宽度的字体,使用近似棒状的字体似乎更好。
supercat 2015年

10

大多数工程应用程序仅支持线条和用户耗材厚度的字体。就像许多雕刻和铣床一样。存在某些字体,尽管它们在现代软件中无法很好地工作(如果有的话)。

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

问题是这种字体没有通用格式。而且字体本身在很多情况下都会发生故障。普通的应用程序会将它们视为怪异的。看到:

  • 关于星际迷航内饰斑块的另一个问题,您可以在其中找到可能在某些应用程序上可以使用的这种字体。

Jongware已经为illustrator创建了一个名为monoline文本绘制的脚本,例如,您可以在这里获得它:

尽管可以使用类型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软件仍然具有此功能。


1
但是,即使是我的脚本也不能在没有任何粗细的情况下使它起作用:您仍然必须为绘制的线条设置'a'粗细。但是,理所当然,您可以将其设置为任何您喜欢的值,这与具有“预定义”粗细的轮廓字体不同。
usr2564301 2015年

2
不过要注意的是,激光切割机,cnc机器和cad应用程序可以在没有线宽的情况下工作,因为它们的厚度只是后期处理的人工产物。
joojaa 2015年

2
很好,很花哨,但不是字体。我检查了字体的多个定义,但尚未找到不包含粗细/宽度作为定义一部分的任何内容。在图形设计中,这不是我发现的任何字体。即使是@Jongware,您也承认它必须要有一定的厚度才能起作用。我认为(直到我找到的每个定义都同意),直到出现这种情况,它才是字体。但是,实际上,如果他们只是想绘制点,这可能就是OP所追求的:)可能想看看Corel Draw,我知道标志制作者经常使用它。
瑞安(Ryan

1
如问题中所述,它仍然不是一维的。但是我会说实际的一维字体不可能的,因为一维会将您限制在一条直线上。您可以在没有二维的情况下进行l和i的操作,但是没有太多其他操作。
Janus Bahs Jacquet 2015年

3
@Ryan:可能不错,但最重要的是,仅笔触字体可能存在,但当前主流字体技术不支持。
usr2564301 2015年

8

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

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

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


6

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

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


只要您抚摸它而不是填充它,它就可以与Inkscape一起正常工作。谢谢!
Giovanni Mascellani '16

3

在建筑中,初学者可能会将墙壁绘制为单线。尽管这是不准确的,并且不存在-甚至薄壁的壁都具有厚度。

同样,左边的A即使很细也很厚。多厚 是1pt吗?是0.025点吗?打印机如何知道?我们必须告诉它。

要回答您的问题,没有一种一维字体可以像您描述的那样存在。所有线必须具有一定的粗细才能存在。


2
我并不完全同意:字体的目的是描述与渲染文本有关的几何形状。如何呈现这些几何形状是一个不同的问题,字体本身并未对此进行描述。即使使用TrueType,OpenType中描述的普通字体或所需字体,您仍然必须决定要使用哪种颜色,图案以及填充或轮廓描边使用的字体。因此,您可以像我说的那样拥有一种字体:指定线条的粗细和其他属性是用户的责任。
乔瓦尼·马塞拉尼

2
此外,在某些应用中,您一条与线的厚度无关的概念。例如,我想到的应用是矢量激光雕刻。我雕刻的厚度是激光速度,功率和所用材料的物理特性的副产品。驱动雕刻机的软件不需要知道它。
乔凡尼·马塞拉尼

2
@Ryan这绝对是不正确的。在以Adobe为中心的世界中,这确实是正确的。并且仅当您想对自己感到满意时。否则就算是谎言。
joojaa 2015年

1
@immibis在选择材料,墨水和颜色时确实会在打印中得到考虑,但与字体无关。字体可以自由显示在屏幕上,但没有某种宽度就不能显示在屏幕上。
瑞安(Ryan

3
绘制时,所有文本都必须具有线宽,但是此宽度不必存储在字体中。而是可以使用字体将其存储在文档中,与大小和颜色一样。
Damian Yerrick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.