我想要一种字体,所有字符的宽度相同。
例如,大多数字体中的a W
都比a 宽i
...是否有所有字体都具有相同宽度的字体?
'font-family'
您会获得一长串等宽字体:Droid Sans Mono',Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif
我想要一种字体,所有字符的宽度相同。
例如,大多数字体中的a W
都比a 宽i
...是否有所有字体都具有相同宽度的字体?
'font-family'
您会获得一长串等宽字体:Droid Sans Mono',Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif
Answers:
字体具有两个会影响字符间距的特征:width和kerning。字距确定两个相邻字符何时可以重叠。例如,当您编写AT时,T栏的最左部分实际上可能位于A的右分支的最下部的左侧。尽管固定宽度的字体可能允许字距调整,但这种情况很少见。
无论如何,如果要选择固定宽度的字体,可以使用以下文本
并使用各种字体查看外观。如果前两行的长度相同,则为固定宽度。如果最后两行的长度相同,则没有字距调整。即,您希望所有4行都具有相同的长度。
在Windows上的Microsoft Word 2007中,以下字体似乎是固定长度的,没有字距调整:
xlsfonts
在使用X Windows系统时(通常在Linux或类似系统上;几乎从不在MSWindows上)提供有关字体的信息。其-l
和-m
选项显示几种字体规格,包括最小字符宽度和最大字符宽度。使用shell命令,可以比较这些宽度以检测固定宽度的字体。例如,xlsfonts -lm '*fang*'
给
DIR MIN MAX EXIST DFLT PROP ASC DESC NAME
--> * 33 *119 some 8481 25 10 1 -isas-fangsong ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0
min(l,r,w,a,d) = (0,12,12,11,2)
max(l,r,w,a,d) = (0,12,12,11,2)
--> * 33 *119 some 8481 21 14 2 -isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0
min(l,r,w,a,d) = ( 0, 0,16, 0,-13)
max(l,r,w,a,d) = (12,16,16,14, 2)
对于这两种字体,最小值w等于最大值w值-一种表示12、12,另一种表示16、16,表示两者均为固定宽度字体。(注意,xlsfonts
源代码包括类似的检查。)
在usenet上我的最新文章中,这是一个checkFixed.py
自动执行比较的Python程序。它从中读取xlsfonts样式的数据行stdin
,比较w值,并stdout
在min w等于max w时打印结果。(当然,类似的程序可以写在awk
,perl
等等)
#!/usr/bin/env python
# jiw - 2016
# This program reads `xlsfonts -lm`-style lines from stdin, and tests
# for cases where the w elements of min and max tuples are the same
from sys import stdout
while True:
try:
r = raw_input()
if r[0] == '-': # Font-lines start with -->
m1 = int((raw_input().split(','))[6])
m2 = int((raw_input().split(','))[6])
if m1==m2:
print r
stdout.flush()
except:
break
例如, xlsfonts -ml | ./checkFixed.py | head -3
在我的系统上打印出来
--> 0 255 some 0 29 14 5 -bitstream-courier 10 pitch-bold-i-normal--0-0-0-0-m-0-adobe-standard
--> 0 255 some 0 29 15 5 -bitstream-courier 10 pitch-bold-i-normal--0-0-0-0-m-0-ascii-0
--> * 0 *255 some 0 29 15 5 -bitstream-courier 10 pitch-bold-i-normal--0-0-0-0-m-0-iso10646-1
在另一个示例中,xlsfonts -ml '*fixed*' | ./checkFixed.py | head -3
打印出
--> * 33 *116 some 8481 25 11 1 -jis-fixed-medium-r-normal--0-0-75-75-c-0-jisx0208.1983-0
--> * 33 *116 some 8481 21 14 2 -jis-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0
--> * 33 *116 some 8481 21 14 2 -jis-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0