我听说过的所有字体都是二维的:每个字形基本上都是一个二维区域(一个封闭的轮廓或某些封闭的轮廓),软件或打印机根据用户给出的指令以某种方式对其进行描边或填充。我想知道是否存在一维字体,其中字形仅描述为段的集合(软件可以描边但不一定填充),而不是区域。
换句话说,我想拥有的是左图,而不是下图中的右图。是否存在?
(抱歉图片,我知道那真的很糟糕;我只是很快就做了)
我听说过的所有字体都是二维的:每个字形基本上都是一个二维区域(一个封闭的轮廓或某些封闭的轮廓),软件或打印机根据用户给出的指令以某种方式对其进行描边或填充。我想知道是否存在一维字体,其中字形仅描述为段的集合(软件可以描边但不一定填充),而不是区域。
换句话说,我想拥有的是左图,而不是下图中的右图。是否存在?
(抱歉图片,我知道那真的很糟糕;我只是很快就做了)
Answers:
在绘图仪中,它称为“笔划字体”,“ 单行字体 ”,“雕刻字体”,“技术字体”或“绘图仪字体”。
绘图仪使用笔将图像描画到纸上。它不能填充图像,除非通过反复抚摸它们之间的距离小于笔宽。因此,设计用于绘图仪的字体将包含带有一个笔画(“简单”),两个或更多或更少的平行笔画(“双工”)或三个笔画(“三重”)的字形。带有更多笔触的字体需要更长的绘制时间,但允许字形内笔划宽度的变化更大。对于给定大小的字形,使用太窄的笔会在笔划之间造成可见的间隙。
Hershey Vector Font是大多数单工字体的一个示例。其at符号@
,方括号[]
,花括号{}
和tilde ~
是双工的。
如果您看到“ 黑板粗体 ”,则为a字体,其笔宽小于笔划之间的距离。
老式的影像库与绘图仪几乎一样地支持笔划字体。渲染文本时,应用程序会在绘制文本之前设置笔触宽度和颜色,就像在绘制线条之前一样。这类似于在绘图仪上选择笔。
但是现代栅格影像库使用OpenType字体,其中包含TrueType或CFF(PostScript Type 2)轮廓。模拟笔划字体的OpenType字体在某些线宽处包含笔划的轮廓。可以通过将字形的轮廓插入距离笔触宽度一半的距离来逆转此笔划操作,这与算法粗体显示的效果相反。
大多数工程应用程序仅支持线条和用户耗材厚度的字体。就像许多雕刻和铣床一样。存在某些字体,尽管它们在现代软件中无法很好地工作(如果有的话)。
这是问题所在:自我们弃用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软件仍然具有此功能。
您正在寻找的另一个术语是“棒形字体”-我免费使用了其中的9种字体,可用于http://www.mrrace.com/CamBam_Fonts/上的 CNC和激光雕刻
请注意,这些字体在屏幕上看起来很差,封闭区域通常看起来很坚实。这是因为它们在技术上是无效的轮廓字体:每个字符都必须包含一个或多个闭环(因为现代OS不支持任何其他种类的字体),但是每个环的面积都为零。因此,如果目标不是雕刻,则它们可能不适合您。
在建筑中,初学者可能会将墙壁绘制为单线。尽管这是不准确的,并且不存在-甚至薄壁的壁都具有厚度。
同样,左边的A即使很细也很厚。多厚 是1pt吗?是0.025点吗?打印机如何知道?我们必须告诉它。
要回答您的问题,没有一种一维字体可以像您描述的那样存在。所有线必须具有一定的粗细才能存在。