모든 문자가 같은 너비의 글꼴을 갖고 싶습니다.
예를 들어, 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
답변:
글꼴에는 문자 간격에 영향을주는 두 가지 특성 인 width 및 kerning이 있습니다. 커닝 은 두 개의 인접한 문자가 겹쳐 질 수있는시기를 결정합니다. 예를 들어, AT를 작성할 때 T 막대의 가장 왼쪽 부분은 실제로 A의 오른쪽 분기의 가장 낮은 부분의 왼쪽에 위치 할 수 있습니다. 고정 너비 글꼴은 커닝을 허용 할 수 있지만 거의 그렇지 않습니다.
어쨌든 고정 너비 글꼴을 선택하려면 다음 텍스트를 사용할 수 있습니다
다양한 글꼴을 사용하여 모양을보십시오. 처음 두 줄의 길이가 같으면 너비가 고정됩니다. 마지막 두 줄의 길이가 같으면 커닝이 없습니다. 즉, 네 줄 모두 같은 길이를 원합니다.
Windows의 Microsoft Word 2007에서 다음 글꼴은 고정 길이이며 커닝이없는 것 같습니다.
xlsfonts
X Windows 시스템이 사용 중일 때 글꼴에 대한 정보를 제공합니다 (일반적으로 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
소스 코드 에는 유사한 검사가 포함되어 있습니다.)
유즈넷에 대한 최근 게시물 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