2012-02-25 2 views
2

저는 RMagick을 사용하고 있으며 사용자가 설정 한 배경색을 사용하여 텍스트를 세로 또는 가로로 (사용자 입력에 따라 다름) 그립니다. 이상한 문제가 발생했습니다. get_type_metrics (text)는 잘못된 데이터를 반환합니다. 실제 너비/높이는 메서드에서 반환하는 것보다 작습니다.Ruby 및 RMagick : 텍스트의 실제 너비 및 높이 결정

저는 상승/하강 값으로 놀려고했지만 행운이 없었습니다. 어떤 결정 방법이 있습니까 텍스트 문자열의 너비/높이? 빈 이미지에 텍스트를 그리는 몇 가지 솔루션을 본 다음 너비 높이를 결정한 다음 전체 이미지 픽셀을 픽셀 단위로 살펴 보았지만 imho는 어리석은 리소스를 소비했습니다. 또한 PHP GD는 동일한 문제와 해결책이 없음을 발견했습니다.

P. 사용자가 배경 상자 크기를 변경할 수 있어야하므로 Draw # annotate를 사용할 수 없습니다. 내가 발견 한 것처럼

답변

3

, boundsFreeType Glyph Conventions에 설명되어 TypeMetric 구조체의 멤버와 당신의 진짜 폭 (RMagick에서) 문서화되지 않은 것이 & 텍스트의 높이가이


gc = Magick::Draw.new { ... } 
# *** setup gc with font, stroke, pointsize, ... *** THATS IMPORTANT! 
metrics = gc.get_type_metrics("your text") 
box_width = metrics.width # this one is ok by default 
box_height = (metrics.bounds.y2 - metrics.bounds.y1).round # this is the actual heihgt 
같이 결정된다