すべての文字が同じ幅のフォントが欲しいです。
たとえば、ほとんどのフォントでa W
よりも幅が広い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
よりも幅が広いi
...すべての文字が同じ幅のフォントはありますか?
'font-family'
。Droid Sans Mono',Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif
回答:
フォントには、文字の間隔に影響する2つの特性があります:widthとkerningです。カーニングは、2つの隣接する文字がオーバーラップできるタイミングを決定します。たとえば、ATを記述すると、Tバーの左端が実際にAの右ブランチの最下部の左に位置する場合があります。固定幅のフォントではカーニングが可能ですが、めったにありません。
とにかく、固定幅フォントを選択する場合は、次のテキストを使用できます
さまざまなフォントを使用して外観を確認します。最初の2行の長さが同じ場合、幅は固定されます。最後の2行の長さが同じ場合、カーニングはありません。つまり、4行すべての長さを同じにする必要があります。
Windows上のMicrosoft Word 2007では、次のフォントは固定長でカーニングなしのようです。
xlsfonts
X Windows Systemの使用中にフォントに関する情報を提供します(一般的にLinuxまたは同様のシステムで、MSWindowsではほとんどありません)。その-l
および-m
オプションは最小文字幅と最大文字幅を含むいくつかのフォントメトリックを表示します。シェルコマンドを使用すると、これらの幅を比較して固定幅フォントを検出できます。たとえば、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