
yhmath
수학 글꼴 항목을 디버깅하는 동안 매우 이상한 효과가 발생했습니다 . cmex10.tfm
에서 생성 cmex10.mf
하고 tfm을 pl 파일로 변환합니다.
그럼 이름을 바꾸죠오직드라이버 파일의 이름을 으로 yrcmex10.mf
바꾸고추가하다다음과 같은새로운bigdel.mf
나머지 파일에서는 아무것도 변경하지 않고 의 문자 정의 :
cmchar "\big left parenthesis";
beginchar(oct"200",8u#,rule_thickness#,2.5dh#-rule_thickness#);
adjust_fit(1.75u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"201",10u#,rule_thickness#,3.5dh#-rule_thickness#);
adjust_fit(2.25u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"202",12u#,rule_thickness#,4.5dh#-rule_thickness#);
adjust_fit(2.75u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"203",13u#,rule_thickness#,5dh#-rule_thickness#);
adjust_fit(3u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"204",15u#,rule_thickness#,6dh#-rule_thickness#);
adjust_fit(3.5u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"205",17u#,rule_thickness#,7dh#-rule_thickness#);
adjust_fit(4u#,-.25u#); left_paren(hair,stem); endchar;
cmchar "\big left parenthesis";
beginchar(oct"206",19u#,rule_thickness#,8dh#-rule_thickness#);
adjust_fit(4.5u#,-.25u#); left_paren(hair,stem); endchar;
cmex10
따라서 글꼴과 글꼴 간의 유일한 차이점은 yrcmex10
위 문자를 추가하는 것입니다.
tfm을 pl로 변환하고 diff를 만들면 변경 사항이 표시됩니다.관련이 없는glpyphs, 특히 DP
매개변수가 변경됩니다.
--- cmex10.pl 2019-03-07 09:30:01.263513678 +0900
+++ yrcmex10.pl 2019-03-07 09:52:25.578670436 +0900
@@ -1,7 +1,7 @@
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
-(CHECKSUM O 37254272422)
+(CHECKSUM O 35311171576)
(FONTDIMEN
(SLANT R 0.0)
(SPACE R 0.0)
@@ -20,85 +20,85 @@
(CHARACTER O 0
(CHARWD R 0.458336)
(CHARHT R 0.039999)
- (CHARDP R 1.160013)
+ (CHARDP R 1.135567)
(NEXTLARGER O 20)
)
(CHARACTER O 1
(CHARWD R 0.458336)
(CHARHT R 0.039999)
- (CHARDP R 1.160013)
+ (CHARDP R 1.135567)
(NEXTLARGER O 21)
)
...
이것은 매우 놀라운 일입니다. 변경되지 않은 다른 글프의 글립 크기는 변경되지 않을 것이라고 짐작했을 것입니다. 게다가 이 변화는 내가 더 많은 글리프를 추가할수록 더 커집니다.
이에 대한 설명이 있는 사람이 있나요?
답변1
MetaFont에 따르면 프로그램은 다음과 같습니다.
많은 문자가 동일한 높이, 깊이 또는 기울임꼴 수정을 갖는 것이 매우 일반적이므로 TFM 형식에서는 16개의 높이, 16개의 깊이 및 64개의 기울임꼴 수정으로 제한됩니다.
덧붙여서, width[0]=height[0]=깊이[0]= italic[0]=0 관계는 항상 유지되어야 하므로 인덱스 0은 값 0을 의미합니다.
따라서 단일 TFM 파일에는 0 외에 최대 15개의 서로 다른 깊이 값이 있을 수 있습니다. 이제 yrcmex10.pl의 깊이 값을 살펴보겠습니다.
1 (CHARDP R 0.300003)
2 (CHARDP R 0.580007)
3 (CHARDP R 0.900009)
4 (CHARDP R 1.000013)
5 (CHARDP R 1.135567)
6 (CHARDP R 1.480014)
7 (CHARDP R 1.780019)
8 (CHARDP R 2.060022)
9 (CHARDP R 2.222246)
10 (CHARDP R 2.360025)
11 (CHARDP R 2.660028)
12 (CHARDP R 2.9600315)
13 (CHARDP R 3.560038)
14 (CHARDP R 4.160044)
15 (CHARDP R 4.76005)
(을 사용하여 생성된 목록 grep 'CHARDP' yrcmex10.pl|sort|uniq|nl
)
따라서 글꼴에는 이미 최대 개수의 개별 깊이가 포함되어 있으며 이는 변경 사항을 설명합니다. 깊이는 0
was 1.160013
이지만 이 값은 위 목록의 일부가 아닙니다. 따라서 추가해야 하지만 그렇게 되면 뚜렷한 깊이가 너무 많아지게 됩니다. 그래서 MetaFont는 추가 문자를 읽을 때 TFM 파일에 모든 깊이를 저장할 수 없다는 것을 깨달았습니다. 따라서 일부 값은 반올림되어야 하고 1.135567
매우 1.160013
가까워서 이상적인 후보가 되었습니다.
이는 또한 더 많은 추가 글리프를 추가할수록 변경 사항이 더 커지는 이유를 설명합니다. 새 글리프가 다시 다른 깊이를 가지면 MetaFont가 15로 줄여야 하는 훨씬 더 뚜렷한 깊이가 있습니다. 더 큰 변화.