이 이상한 일은 Pygame1.9.1의 글꼴 모듈에서 발생했습니다. .get_linesize()
은 글자 높이 (줄 당 높이 만 제외하고)가 1보다 큰 글꼴의 경우 1을 반환합니다. .fon
글꼴에서만 발생합니다.get_linesize()가 .fon 글꼴에 대해 1을 잘못 반환하는 이유는 무엇입니까?
여기에는 두 가지 예가 있으며 은이 작동하는 세 번째 글꼴이 제어용으로 사용됩니다. IDLE의 쉘에서 이걸 실행했지만 적절한 모듈을 가지고도 똑같은 일이 발생합니다. 어쨌든 파이 게임이 이미 초기화되었습니다. get_linesize()
미적 이유로 선 사이의 간극을 포함하기 때문에
>>> testfont = pygame.font.Font("C:/Windows/Fonts/vga850.fon", 12)
>>> testfont.get_linesize() # This one returns 1. For 'Terminal Regular'
1
>>> otherfont = pygame.font.Font("C:/Windows/Fonts/vgafix.fon", 18)
>>> otherfont.get_linesize() # This also returns 1. For 'Fixedsys Regular'
1
>>> lastfont = pygame.font.Font("C:/Windows/Fonts/OCRAStd.otf", 24)
>>> lastfont.get_linesize() # This returns the correct value. For 'OCR A Std Regular'
29
>>> textsurf = testfont.render("This is a nightmare!", True, (0,0,0))
>>> textsurf.get_size()[1] # Let's get the height of this surface...
12
>>> othersurf = otherfont.render("An inescapable nightmare!", False, (0,0,0))
>>> othersurf.get_size()[1] # This one, too. Antialiasing makes no difference.
15
>>> lastsurf = lastfont.render("You're okay, OCRA.", True, (0,0,0))
>>> lastsurf.get_size()[1] # And finally, the control...
25
상기 제어 렌더링의 높이가 조금 짧다. <Font>.size("sample string")[1]
이 올바로 작동하므로 줄 높이가 제자리를 찾지 못했습니다.
세 글꼴이 모두 올바르게 렌더링됩니다. 대신 .size('sample')[1] + some_adjustment
를 사용합니다
<Font>.get_linesize()
에 제대로 반응하지 않는 글꼴을 가진 공통점은 모두가 공유 확장 .fon
, 너무 쉬운 '솔루션'.FON 글꼴 .get_linesize()
를 사용하지 마십시오 ", 단순히이다 . " 그러나 이것은 다소 지저분하고 (여전히 더 심합니다!) 몹시 지루하고 지루하고, 이 문제의 원인은이고 이면이 글꼴을 get_linesize()
과 같이 작동시키는 방법입니다. .
필자는 파이 게임의 설명서를 살펴본 결과이 문제와 관련이 없으며 많은 웹 검색 결과도 도움이되지 않음이 입증되었습니다.
실제로 freetype으로 가려고했지만 실제로 Python1.9.1을 사용하고 있습니다. 내가 처음 모듈을 고려했을 때, 의사는 실험적이었고 예측할 수 없게 바뀔 수도 있고 모두 사라질 수도있어서 차가워 져서 혼자 남겨 두었다고했습니다. (지난 달) 시간이 바뀌었지만 업데이트해야합니다. – Augusta