내가 의사에 그것을 할 것입니다 방법 나 또한 거기에 체크를 넣어 수
function calcWidth(string text, int rows, float ratio)
let H be int with value /* how many pixels high is a row? */
let total_width be int with value 0
for each character c in string text
let total_width be total_width + pixel_width(c)
end for
let W = total_width/length(text)
/* RATIO = (H * row)/(W * col) */
/* means col = (H * row)/(W * RATIO) */
let cols be int with value (H * rows)/(W * ratio)
return cols
end function
그 5 행은 받아 들일 수없는, 그러나 6 행은 내가 5 그래서 내가 더 나은 6보다 알고, 더 나빴다 경우 이 경우 5를 반환합니다. 우리는 고정 폭 글꼴
을 알고
하자 리뷰 : 우리는 고정 폭 않았을 수도 있기 때문에
H * rows
---------- = RATIO
W * cols
지금, 우리는 알고 COLS 각 행에 대해 동일하지 않습니다. 그러나 행 수로 나눈 문자의 총 수로 cols를 근사 할 수 있습니다.
H * rows
-------------- = RATIO
W * len/rows
H * rows^2
-------------- = RATIO
W * len
이제 당신이 행을 제외하고 이러한 모든 변수를 알고, 그래서 행
이제 우리는 그 COLS 위에서 알
rows = roundUp (SQRT ( (RATIO * W * len)/h))
에 대한 해결은해야이 두 가지로 약
cols = (H * rows)/(W * ratio)
입니다 귀하의 상자에 대한 괜찮은 추측.
오류 크기 및 여백에 따라보기 위해 렌더링해야 할 수도 있고, 추가 행 또는 두 행을 올리거나 내려갈 수도 있습니다.
행이나 높이가없는 계산을 찾아야합니다. 가로 세로 비율 만. 경계 사각형의 가장 좋은 추측 너비를 계산하려고합니다. 그런 다음 단어별로 텍스트 단어를 래핑하고 높이를 계산하는 다른 함수로 전달합니다. – Skn3
@ skn3은 이러한 요청을 충족하도록 개정되었습니다. – corsiKa
이것은 효과가 있습니다. 감사합니다. – Skn3